Obsah:

Kamerový robot ESP32 - FPV: 6 kroků
Kamerový robot ESP32 - FPV: 6 kroků

Video: Kamerový robot ESP32 - FPV: 6 kroků

Video: Kamerový robot ESP32 - FPV: 6 kroků
Video: 01. Arduino - dlaczego NIE? a jeśli TAK to JAK? (wady i zalety płytek arduino) 2024, Červenec
Anonim
Image
Image
Kamerový robot ESP32 - FPV
Kamerový robot ESP32 - FPV
Kamerový robot ESP32 - FPV
Kamerový robot ESP32 - FPV

Modul kamery ESP32 je levné a výkonné PLC. Obsahuje dokonce i rozpoznávání obličeje!

Pojďme postavit robota z pohledu první osoby, kterého řídíte prostřednictvím integrovaného webového rozhraní!

Tento projekt využívá modul Geekcreit ESP32 s kamerou OV2640. Je založen na modulu AIThinker.

Existuje mnoho různých klonů kamer ESP32. Některé fungují, některé ne. Navrhoval bych, abyste použili stejný modul, který jsem použil já, abyste měli dobrou příležitost být úspěšní.

Robot pracuje následovně.

ESP32 vysílá do vaší sítě webovou adresu URL, která zobrazuje stream živého videa s některými zaškrtávacími políčky pro ovládání některých funkcí kamery. Přijímá také stisknutí kláves odeslaných na webovou stránku z klávesnice, což jsou směrové příkazy pro robota. Možná budete chtít postavit USB joystickový štít, abyste mohli řídit robota joystickem, místo abyste zadávali příkazy z klávesnice.

Když ESP32 přijme stisknutí kláves, předá tyto bajty Arduino Nano, které pak pohání motory, aby se robot rozhýbal.

Tento projekt je středně vysoké obtížnosti. Prosím dej si na čas.

Začněme!

Zásoby

  • Modul kamery ESP -32 s kamerou OV2640 - doporučil bych produkt Geekcreit
  • Externí zaklapávací anténa pro ESP-32 pro maximalizaci síly signálu
  • Arduino Nano
  • Arduino Leonardo pro modul Joystick (potřebujeme emulaci USB klávesnice, kterou poskytuje Leonardo)
  • Obecný modul joysticku
  • L293D Quad H-můstkový čip
  • DC-DC Buck Coverter s 5V výstupem pro napájení ESP32
  • Sériový adaptér FTDI pro programování ESP32
  • Obecný robotický podvozek se dvěma převodovými motory - jakýkoli podvozek bude fungovat. Doporučují se 3 až 6V motory
  • 2 x 7,4 V 1300 mAh LiPo baterie (nebo podobné) pro napájení ESP32 a motorů
  • 1 x 9V baterie pro napájení Arduino Nano

Krok 1: Naprogramujte kameru ESP32

Naprogramujte kameru ESP32
Naprogramujte kameru ESP32
Naprogramujte kameru ESP32
Naprogramujte kameru ESP32

Pomocí propojovacího pole připojte kameru ESP32 k adaptéru FTDI následujícím způsobem:

FTDI ESP32

3,3V ----------- 3,3V

GND ----------- GND

TX ----------- U0R

Rx ----------- U0T

Kromě toho připojte pin IO0 („eye-oh-zero“) k GND. Musíte to udělat, aby se ESP32 přepnul do režimu programování.

Rozbalte soubor esp32CameraWebRobotforInstructable.zip.

V tomto projektu jsou 4 soubory:

esp32CameraWebRobotforInstructable.ino je skica Arduina.

ap_httpd.cpp je kód, který spravuje webový server a zabývá se nastavením funkcí fotoaparátu z webové stránky a přijímáním stisknutí kláves z webové stránky.

camera_index.h obsahuje kód HTML/JavaScript pro webovou aplikaci jako bajtová pole. Úpravy webové aplikace přesahují rámec tohoto projektu. Později přidám odkaz, jak upravit HTML/JavaScript.

camera_pins.h je soubor záhlaví týkající se konfigurace pinů kamery ESP32.

Chcete-li přepnout ESP32 do programovacího režimu, musíte připojit IO0 („oko-oh-nula“) k zemi.

Spusťte Arduino IDE a přejděte do Nástroje/Desky/Správce desek. Vyhledejte esp32 a nainstalujte knihovnu esp32.

Otevřete projekt ve svém Arduino IDE.

Vložte síťové ID SVÉHO routeru a SVÉ heslo do řádků zvýrazněných na výše uvedeném obrázku. Uložte projekt.

Přejděte do nabídky Nástroje a proveďte výběr, jak je znázorněno na obrázku výše.

Deska: ESP32 Wrover

Rychlost nahrávání: 115200

Schéma oddílů: „Obrovská aplikace (3 MB bez OTA)“

a vyberte port, ke kterému je připojen váš adaptér FTDI.

Klikněte na tlačítko „Nahrát“.

Nyní někdy ESP32 nezačne nahrávat. Buďte tedy připraveni stisknout tlačítko RESET na zadní straně ESP32, až se vám během nahrávání začnou na konzole objevovat znaky … --- … Poté se začne nahrávat.

Když na konzole uvidíte „stiskněte RST“, nahrávání je dokončeno.

ODPOJTE IO0 od země. Odpojte vedení 3,3 V mezi adaptérem FTDI a ESP32.

Kamera ESP32 vyžaduje hodně proudu, aby dobře fungovala. Připojte 5V 2A napájecí adaptér k pinům 5V a GND na ESP32.

Otevřete Serial Monitor, nastavte přenosovou rychlost na 115200 a sledujte, jak se ESP32 restartuje. Nakonec uvidíte adresu URL serveru.

Přejděte do prohlížeče a zadejte adresu URL. Když se web načte, klikněte na tlačítko „Spustit streamování“a živý přenos videa by měl začít. Pokud kliknete na zaškrtávací políčko „Floodlight“, měla by se rozsvítit kontrolka LED na palubní desce. Dávej si pozor! JE TO JASNÉ!

Krok 2: Sestavte robota

Postavte robota
Postavte robota

Potřebujete podvozek dvoukolového robota. Každý to udělá. Sestavte podvozek podle pokynů výrobce.

Poté zapojte robota podle schématu. Ponechejte zatím připojení baterie.

L293D se používá k ovládání motorů. Všimněte si, že poloviční zářez na čipu je K ESP32.

K ovládání dvou motorů je na Arduinu obvykle zapotřebí 6 pinů.

Tento robot vyžaduje pouze 4 piny a stále plně funguje.

Piny 1 a 9 jsou připojeny ke zdroji 5V Arduina, takže jsou trvale VYSOKÉ. Zapojení robota tímto způsobem znamená, že k ovládání motorů potřebujeme na Arduinu o dva piny méně.

V dopředných směrech jsou piny INPUT nastaveny na LOW a piny modulace pulzní vlny motoru jsou nastaveny na hodnoty mezi 0 a 255, přičemž 0 znamená OFF a 255 znamená maximální rychlost.

V opačných směrech jsou vstupy INPUT nastaveny na HIGH a hodnoty PWM jsou obráceny. 0 znamená maximální rychlost a 255 znamená vypnuto.

Rozbalte a nahrajte skicu ArduinoMotorControl do Arduino Nano.

Krok 3: AHOJ! Počkej! Proč potřebuji Arduino Nano?

Pravděpodobně si říkáte: „Hej! Na kameře ESP32 jsou k dispozici nejméně 4 IO piny. Proč je nemohu použít k ovládání motorů?“

Je pravda, že na ESP32 jsou kolíky následující:

IO0 - potřeba k uvedení ESP32 do programovacího režimu

IO2 - k dispozici

IO4 - Flash LED

IO12, IO13, IO14, IO15, IO16 - další GPIO piny.

Pokud do ESP32 načtete základní skicu, abyste mohli piny ovládat pomocí příkazů PWM, fungují.

Jakmile však ve svých skicách aktivujete knihovny CAMERA, tyto piny již nebudou k dispozici.

Nejjednodušší je tedy použít Nano k ovládání motorů pomocí PWM a odeslat příkazy z ESP32 sériovou komunikací přes jeden vodič (ESP32 U0T k Arduino Rx0) a GND. Velmi jednoduché.

Krok 4: Připojte USB joystick (volitelně)

Robota můžete řídit odesláním stisknutí kláves na webovou stránku následujícím způsobem:

8 - Vpřed

9 - Vpřed vpravo

7 - Vpřed vlevo

4 - Otočit doleva

5 - Zastavte se

1 - Zpět vlevo

2 - Zpět

3 - Obrácení doprava.

Náčrt joysticku USB převádí vstupy joysticku na stisknutí kláves a odesílá je do webového rozhraní, které je přeposílá do Arduina k řízení robota.

Joystick připojte k Arduino LEONARDO následujícím způsobem:

Leonardo Joystick

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

Otevřete skicu usbJoyStick, jako desku vyberte Arduino Leonardo a nahrajte ji do Leonarda.

Pokud to chcete vyzkoušet, stačí otevřít v počítači textový editor, kliknout myší v okně a začít pohybovat joystickem. V okně byste měli vidět hodnoty od 1 do 9

Krok 5: JEZDĚME

Udělejte si čas a projděte kabeláž, abyste se ujistili, že je vše v pořádku.

Dále připojte baterie následujícím způsobem.

1. Zapněte kameru ESP32. Ke spuštění webového serveru potřebujete několik sekund.

2. Zapněte Arduino Nano.

3. Zapněte motory.

Spusťte prohlížeč a přejděte na adresu URL pro ESP32.

Klikněte na tlačítko Spustit streamování.

Klikněte myší někam na obrazovku prohlížeče, aby se nyní zaměřila na obrazovku.

Začněte řídit svého robota pomocí joysticku (nebo klávesnice).

Zjistil jsem, že výchozí velikost rámečku funguje dobře pro vysílání živého videa poměrně responzivně přes WiFi. Jak však zvětšíte velikost rámce, stream bude trhanější, protože se pokoušíte vysílat větší obrázky.

Jedná se o náročný projekt, který vám dává příležitost začít pracovat s živým streamováním videa a řídit robota přes WiFi. Doufám, že vás to bavilo!

HNED TEĎ UDĚLEJTE NĚCO ÚŽASNÉHO!

Aktualizace z ledna 2020 - poslední fotografie ukazují finální verzi robota, pevně připájenou a bezpečně připevněnou k podvozku.

Tři přední spínače jsou následující:

Vlevo - napájecí baterie motoru

Střed - baterie Arduino

Vpravo - baterie fotoaparátu ESP32

Mohl bych použít jednu velkou baterii s některými transformátory buck-boost (používám jednu pro ESP32-je to v pravém dolním rohu fotografie zepředu), ale kvůli jednoduchosti ponechávám pouze 3 baterie.

Robot nyní na přístupovém bodu

Považuji za těžkopádné předvádět tohoto robota mimo můj domov, protože síť mých školních podniků mi nedovoluje připojit k němu webový server robotů. Jako řešení jsem provedl průzkum používání funkce přístupového bodu webového serveru ESP32. Aby ESP32 vysílalo vlastní IP adresu, vyžaduje to trochu práce, ale vyžaduje to poměrně minimální změny v hlavním náčrtu robota. Není to tak výkonné jako vyhrazený vysokorychlostní wifi hub (někdy visí, pokud se pohybujete příliš rychle), ale funguje to docela dobře a nyní mohu předvést robota kdekoli chci, aniž bych ho musel připojovat k síti! Jakmile robot začne fungovat, zkuste jej převést na přístupový bod sami!

Krok 6: Podrobnosti o tom, jak upravit kód HTML/Javascript pro webový server

Není to nutné, ale měl jsem několik žádostí.

Poskytl jsem tomuto dokumentu Google podrobnosti o tom, jak používat CyberChef k převodu tam a zpět mezi HTML/Javascript a reprezentacemi bajtových polí v souboru camera_index.h.

Doporučuje: