Obsah:

Kamerový robot ESP32 - FPV: 6 krokov
Kamerový robot ESP32 - FPV: 6 krokov

Video: Kamerový robot ESP32 - FPV: 6 krokov

Video: Kamerový robot ESP32 - FPV: 6 krokov
Video: СПОСОБЫ РЕАЛИЗАЦИИ МАШИННОГО ЗРЕНИЯ В ПРОЕКТАХ УЧЕНИКОВ КРУЖКОВ ПО РОБОТОТЕХНИКЕ 2024, Júl
Anonim
Image
Image
Kamerový robot ESP32 - FPV
Kamerový robot ESP32 - FPV
Kamerový robot ESP32 - FPV
Kamerový robot ESP32 - FPV

Modul kamery ESP32 je lacné a výkonné PLC. Obsahuje dokonca aj rozpoznávanie tváre!

Postavme robota z pohľadu prvej osoby, ktorého ovládate prostredníctvom palubného webového rozhrania!

Tento projekt používa modul Geekcreit ESP32 s kamerou OV2640. Je založený na module AIThinker.

Existuje mnoho rôznych klonov kamier ESP32. Niektoré fungujú, niektoré nie. Navrhoval by som, aby ste použili ten istý modul, ktorý som použil ja, aby ste mali dobrú príležitosť byť úspešní.

Robot funguje nasledovne.

ESP32 vysiela do vašej siete webovú adresu, ktorá zobrazuje stream živého videa s niektorými zaškrtávacími políčkami na ovládanie niektorých funkcií kamery. Prijíma tiež stlačenia klávesov odoslané na webovú stránku z klávesnice, ktoré sú smerovými príkazmi pre robota. Možno budete chcieť postaviť štít joysticku USB, aby ste mohli robota riadiť joystickom, a nie písať príkazy na klávesnici.

Keď ESP32 prijme stlačenie klávesov, postúpi tieto bajty Arduino Nano, ktoré potom poháňa motory, aby sa robot rozhýbal.

Tento projekt je stredne vysokej náročnosti. Nájdite si čas.

Začnime!

Zásoby

  • Modul kamery ESP -32 s kamerou OV2640 - odporúčam produkt Geekcreit
  • Externá zacvakávacia anténa pre ESP-32 na maximalizáciu sily signálu
  • Arduino Nano
  • Arduino Leonardo pre modul Joystick (potrebujeme emuláciu klávesnice USB, ktorú poskytuje Leonardo)
  • Generický modul joysticku
  • L293D Quad H-mostíkový čip
  • Kryt Buck DC-DC s výstupom 5 V na napájanie ESP32
  • Sériový adaptér FTDI na programovanie ESP32
  • Generický podvozok robota s dvoma prevodovými motormi - akýkoľvek podvozok bude fungovať. Odporúčajú sa 3 až 6V motory
  • 2 x 7,4 V 1300 mAh LiPo batérie (alebo podobné) na napájanie ESP32 a motorov
  • 1 x 9V batéria na napájanie Arduino Nano

Krok 1: Naprogramujte kameru ESP32

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

Pripojte svoju kameru ESP32 pomocou adaptéra k adaptéru FTDI nasledovne:

FTDI ESP32

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

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

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

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

Okrem toho pripojte pin IO0 („eye-oh-zero“) k GND. Musíte to urobiť, aby ste ESP32 uviedli do režimu programovania.

Rozbaľte súbor esp32CameraWebRobotforInstructable.zip.

V tomto projekte sú 4 súbory:

esp32CameraWebRobotforInstructable.ino je skica Arduino.

ap_httpd.cpp je kód, ktorý spravuje webový server a zaoberá sa nastavením funkcií fotoaparátu z webovej stránky a prijímaním stlačení klávesov z webovej stránky.

camera_index.h obsahuje kód HTML/JavaScript pre webovú aplikáciu ako bajtové polia. Úprava webovej aplikácie je nad rámec tohto projektu. Neskôr priložím odkaz, ako upraviť HTML/JavaScript.

camera_pins.h je hlavičkový súbor týkajúci sa konfigurácie pinov kamery ESP32.

Ak chcete prepnúť ESP32 do programovacieho režimu, musíte pripojiť IO0 („eye-oh-zero“) k zemi.

Spustite Arduino IDE a prejdite na Nástroje/Dosky/Správca dosiek. Vyhľadajte súbor esp32 a nainštalujte si knižnicu esp32.

Otvorte projekt vo svojom Arduino IDE.

Do riadkov zvýraznených na obrázku vyššie zadajte ID siete a heslo vášho smerovača. Uložte projekt.

Prejdite do ponuky Nástroje a vykonajte výbery, ako je znázornené na obrázku vyššie.

Doska: ESP32 Wrover

Rýchlosť nahrávania: 115200

Schéma oddielov: „Obrovská aplikácia (3 MB bez OTA)“

a vyberte port, ku ktorému je pripojený váš adaptér FTDI.

Kliknite na tlačidlo „Nahrať“.

Teraz niekedy ESP32 nezačne nahrávať. Buďte pripravení stlačiť tlačidlo RESET na zadnej strane ESP32, keď sa vám počas nahrávania začnú zobrazovať znaky … --- … v konzole. Potom sa začne nahrávať.

Keď na konzole uvidíte „stlačte RST“, odovzdanie je dokončené.

ODPOJTE IO0 od zeme. Odpojte vedenie 3,3 V medzi adaptérom FTDI a ESP32.

Kamera ESP32 vyžaduje na správnu funkciu veľa prúdu. Pripojte 5V 2A napájací adaptér k pinom 5V a GND na ESP32.

Otvorte sériový monitor, nastavte prenosovú rýchlosť na 115200 a sledujte, ako sa ESP32 reštartuje. Nakoniec sa vám zobrazí adresa URL servera.

Prejdite do prehliadača a zadajte adresu URL. Keď sa webová stránka načíta, kliknite na tlačidlo „Spustiť streamovanie“a živé video prenos by sa mal začať. Ak kliknete na začiarkavacie políčko „Floodlight“, mala by sa rozsvietiť dióda LED integrovaného blesku. Pozor! JE TO JASNÉ!

Krok 2: Zostavte robota

Zostavte robota
Zostavte robota

Potrebujete dvojkolesový podvozok robota. Každý to urobí. Zostavte podvozok podľa pokynov výrobcu.

Potom zapojte robota podľa schémy. Pripojenia batérie zatiaľ nechajte.

L293D sa používa na ovládanie motorov. Všimnite si, že polovičný zárez na čipe je K ESP32.

Na ovládanie dvoch motorov je na Arduine spravidla potrebných 6 pinov.

Tento robot vyžaduje iba 4 piny a stále plne funguje.

Piny 1 a 9 sú pripojené k 5V zdroju Arduina, takže sú trvalo VYSOKÉ. Zapojenie robota týmto spôsobom znamená, že na ovládanie motorov potrebujeme na Arduine o dva piny menej.

V smere dopredu sú VSTUPNÉ piny nastavené na NÍZKU a kolíky modulácie pulznej vlny motora sú nastavené na hodnoty medzi 0 a 255, pričom 0 znamená OFF a 255 znamená maximálnu rýchlosť.

V opačnom smere sú VSTUPNÉ piny nastavené na VYSOKÉ a hodnoty PWM sú obrátené. 0 znamená maximálnu rýchlosť a 255 znamená vypnuté.

Rozbaľte a nahrajte skicu ArduinoMotorControl do Arduino Nano.

Krok 3: AHOJ! Počkaj! Prečo potrebujem Arduino Nano?

Pravdepodobne si myslíte: „Hej! Na kamere ESP32 sú k dispozícii najmenej 4 piny IO. Prečo ich nemôžem použiť na ovládanie motorov?“

Je pravda, že na ESP32 sú kolíky nasledovne:

IO0 - potrebné na uvedenie ESP32 do programovacieho režimu

IO2 - k dispozícii

IO4 - Flash LED

IO12, IO13, IO14, IO15, IO16 - ďalšie piny GPIO.

Ak do ESP32 načítate základný náčrt na ovládanie pinov pomocou príkazov PWM, fungujú.

Akonáhle však vo svojich náčrtkoch aktivujete knižnice CAMERA, tieto piny už nebudú k dispozícii.

Najjednoduchšie je použiť Nano na ovládanie motorov pomocou PWM a odosielať príkazy z ESP32 sériovou komunikáciou cez jeden vodič (ESP32 U0T k Arduino Rx0) a GND. Veľmi jednoduché.

Krok 4: Pripojte joystick USB (voliteľné)

Robota môžete riadiť odoslaním stlačení klávesov na webovú stránku nasledovne:

8 - Vpred

9 - Vpred vpravo

7 - Vpred vľavo

4 - Otočiť doľava

5 - Zastavte sa

1 - Spätný chod doľava

2 - Spätný chod

3 - Spiatočka vpravo.

Náčrt joysticku USB prevádza vstupy joysticku na stlačenia klávesov a odosiela ich do webového rozhrania, ktoré ich presmeruje do Arduina na riadenie robota.

Pripojte joystick k Arduino LEONARDO nasledovne:

Leonardo Joystick

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

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

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

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

Otvorte skicu usbJoyStick, vyberte dosku Arduino Leonardo a nahrajte ju do Leonarda.

Ak to chcete otestovať, stačí otvoriť v počítači textový editor, kliknúť myšou v okne a začať pohybovať joystickom. V okne by ste mali vidieť hodnoty od 1 do 9

Krok 5: JAZĎME

Nájdite si čas a skontrolujte zapojenie, aby ste sa presvedčili, že je všetko v poriadku.

Ďalej zapojte batérie nasledovne.

1. Zapnite kameru ESP32. Spustenie webového servera trvá niekoľko sekúnd.

2. Zapnite Arduino Nano.

3. Zapnite motory.

Spustite prehliadač a prejdite na adresu URL pre ESP32.

Kliknite na tlačidlo Spustiť streamovanie.

Kliknite myšou kamkoľvek na obrazovku prehliadača, aby sa teraz zaostrovalo na obrazovku.

Začnite riadiť svojho robota pomocou joysticku (alebo klávesnice).

Zistil som, že predvolená veľkosť rámca funguje dobre pri vysielaní živého videa pomerne citlivo cez WiFi. Keď však zvýšite veľkosť snímok, stream bude nejasný, pretože sa pokúšate vysielať väčšie obrázky.

Ide o náročný projekt, ktorý vám dáva príležitosť začať pracovať so živým streamovaním videa a riadiť robota cez WiFi. Dúfam, že vás to bavilo!

HNED TERAZ A VYROBTE NIEČO ÚŽASNÉ!

Aktualizácia z januára 2020 - Na posledných fotografiách je konečná verzia robota, tvrdo spájkovaná a bezpečne namontovaná na podvozku.

Tri prepínače umiestnené vpredu sú nasledujúce:

Vľavo - batéria motora

Stred - batéria Arduino

Vpravo - batéria fotoaparátu ESP32

Mohol by som použiť jednu veľkú batériu s niektorými transformátormi typu boost (používam jednu pre ESP32-je v pravom dolnom rohu fotografie z predného pohľadu), ale kvôli jednoduchosti ponechám iba 3 batérie.

Robot teraz na prístupovom bode

Považujem za ťažkopádne predvádzať tohto robota mimo svojho domova, pretože mi sieť školských podnikov neumožňuje pripojiť k nemu webový server robotov. Ako riešenie som vykonal výskum použitia funkcie Access Point na webovom serveri ESP32. Na to, aby ESP32 vysielalo vlastnú IP adresu, vyžaduje si to trochu práce, ale vyžaduje to pomerne minimálne zmeny v hlavnom náčrte robota. Nie je to také výkonné ako vyhradený vysokorýchlostný wifi hub (niekedy visí, ak sa pohybujete príliš rýchlo), ale funguje to celkom dobre a teraz môžem robot predviesť kdekoľvek chcem, bez toho, aby som ho musel pripájať k sieti! Keď robot uvediete do prevádzky, skúste ho previesť na prístupový bod sami!

Krok 6: Podrobnosti o úprave kódu HTML/Javascript pre webový server

Nie je to potrebné, ale mal som niekoľko žiadostí.

Tento dokument Google som poskytol podrobnosti o tom, ako používať CyberChef na prevod tam a späť medzi HTML/Javascript a reprezentáciami bajtových polí v súbore camera_index.h.

Odporúča: