Tartalomjegyzék:

Virtuális jelenlét robot: 15 lépés
Virtuális jelenlét robot: 15 lépés

Videó: Virtuális jelenlét robot: 15 lépés

Videó: Virtuális jelenlét robot: 15 lépés
Videó: planeTALK | Detlef CARIUS "Der Pilotenflüsterer" (24 subtitle-languages) 2024, November
Anonim
Image
Image
Mobil robotkocsi
Mobil robotkocsi

Ez a mobil robot kölcsönhatásba lép fizikai környezetével azáltal, hogy képviseli a távolról irányító személy "virtuális jelenlétét". Bárki elérheti, bárhol a világon, hogy finomságokat adjon és játsszon veled.

Az itteni munkát két ember (egy Németországban és egy az Egyesült Államokban) fejleszti, hogy megkíséreljenek túllépni az internetes kommunikáció hagyományos eszközein egy fizikai felület létrehozásával a távoli interakcióhoz. Mivel a COVID-19 továbbra is befolyásolja a világot, és mindenki felelős azért, hogy korlátozzuk fizikai expozíciónkat az emberekben, megpróbáljuk visszahozni azt a kézzelfogható kapcsolatot, amely a fizikai interakció része.

Az ESP32-Camera-Robot-FPV-Teacher-Entry utasításon alapul, és úgy van módosítva, hogy tartalmazza a távolságérzékelőt, a kezelő adagolót és a "bárhonnan a világon" lehetőséget, feltéve, hogy valamennyire stabil internetkapcsolata van.

Kellékek

A projekt 4 fő részből áll - egy mobil robotkocsiból, egy forgácsadagolóból, egy joystickból és a hálózati kommunikáció beállításából.

Mobil robotkocsi

  • Kenyeretábla
  • 2 kerékhajtású motor és alváz robotkészlet (kerekeket, egyenáramú motorokat, szerelőlapot és csavarokat tartalmaz)
  • Arduino Mega 2560 (ha a távolságérzékelő vagy a forgácsadagoló nélkül épít, az Uno -nak elegendő csapja lesz)
  • (3) 9 V -os elemek (tartson még néhányat körül, mert lemeríti a hibakeresést)
  • LM2596 Tápegység DC/DC Buck 3A szabályozó (vagy hasonló)
  • ESP32-CAM Wifi modul
  • FT232RL FTDI USB-TTL soros átalakító (az ESP32-CAM programozásához)
  • HC-SR04 ultrahangos távolságérzékelő
  • L298N motorvezérlő
  • (3) LED -ek (bármilyen színben)
  • (3) 220 ohmos ellenállások

Forgácsadagoló

  • (2) SG90 szervók
  • Karton / karton

Joystick

  • Arduino Uno
  • Joystick modul
  • Mini kenyértábla, (1) LED, (1) 220 ohmos ellenállás (opcionális)

Egyéb

Sok kenyérpult jumper huzal Extra karton / karton Szalag Olló Vonalzó / Mérőszalag Kicsi Philips csavarhúzó Kicsi laposfejű csavarhúzó

Türelem =)

1. lépés: Mobil robotkocsi

A Robot Car alváz mobil platformként szolgál, az Arduino MEGA a fő mikrovezérlő, amely hajtja a motorokat, leolvassa az érzékelők értékeit és működteti a szervókat. A legtöbb műveletet úgy hajtják végre, hogy az Arduino MEGA soros kommunikáción keresztül fogadja a parancsokat, amelyeket az ESP32-CAM küld. Míg az ESP32 biztosítja a kamera élő közvetítését a robot vezérléséhez, másik funkciója a robot és a szerver közötti vezeték nélküli kapcsolat kezelése, ezáltal lehetővé téve a felhasználók számára, hogy a világ bármely pontjáról vezéreljék azt. Az ESP32 billentyűlenyomással kap parancsokat a weblapról, és char értékként elküldi azokat az Arduino MEGA -nak. A kapott érték alapján az autó előre, hátra, stb. Mivel az interneten keresztül történő távvezérlés sok külső tényezőtől függ, beleértve a magas késleltetést, a gyenge adatminőséget és még a lekapcsolásokat is, egy távolságérzékelőt tartalmaz, hogy megakadályozza a robot ütközését *Az ESP32 chip magas és ingadozó energiaigénye miatt a tápegység -szabályozó használata ajánlott akkumulátorral (lásd a kapcsolási rajzot).

2. lépés: Mobil robotkocsi - áramköri diagram

Mobil robotkocsi - áramkör diagram
Mobil robotkocsi - áramkör diagram

Lépésről lépésre végigvezetjük Önt ennek összeállításán.

3. lépés: Mobil robotkocsi - összeszerelés (motorok)

Mobil robotkocsi - összeszerelés (motorok)
Mobil robotkocsi - összeszerelés (motorok)

A 2WD alváz összeszerelése után először a motorokat és az akkumulátort csatlakoztassuk az Arduino MEGA -hoz az L298N meghajtón keresztül.

4. lépés: Mobil robotkocsi - összeszerelés (távolságérzékelő)

Mobil robotkocsi - összeszerelés (távolságérzékelő)
Mobil robotkocsi - összeszerelés (távolságérzékelő)

Mivel elég sok komponenst kell csatlakoztatni, adjunk hozzá egy kenyértáblát, így könnyebben csatlakoztathatjuk az áramot és a közös földet. Miután újraszerveztük a vezetékeket, csatlakoztassuk a távolságérzékelőt, és rögzítsük a robot elején.

5. lépés: Mobil robotkocsi összeszerelése (ESP32 CAM)

Mobil robotkocsi összeszerelése (ESP32 CAM)
Mobil robotkocsi összeszerelése (ESP32 CAM)

Ezután csatlakoztassa az ESP32-CAM modult, és rögzítse azt a távolságérzékelő mellett a robot eleje közelében. Ne feledje, hogy ez az energiaigényes alkatrész saját akkumulátort és egyenáramú szabályozót igényel.

6. lépés: Mobil robotkocsi - összeszerelés (forgácsadagoló)

Mobil robotkocsi - összeszerelés (forgácsadagoló)
Mobil robotkocsi - összeszerelés (forgácsadagoló)

Most tegyük hozzá a forgácsadagolót (erről bővebben a "Forgácsadagoló" részben). Csatlakoztassa a két szervót a Fritzing -diagram szerint, és rögzítse az adagolót a robot farokánál.

7. lépés: Mobil robotkocsi - összeszerelés (cookie -k!)

Mobil robotkocsi - összeszerelés (sütik!)
Mobil robotkocsi - összeszerelés (sütik!)

Végül csemegéket adunk az adagolóhoz!

8. lépés: Mobil robotkocsi - Arduino kód

A RobotCar_Code a kód, amelyet be kell töltenie az Arduino Mega -ra.

Így működik: az Arduino hallgatja az ESP32 -ből a 115200 sávon soros kommunikáción keresztül küldött bájtokat. A kapott bájt alapján az autó előre, hátra, balra, jobbra stb. Mozog, ha HIGH vagy LOW feszültséget küld a motoroknak az irányítás irányítására, valamint egy PWM 0-255 közötti változót a sebesség szabályozására. Az ütközések elkerülése érdekében ez a kód a távolságérzékelőből érkező értékeket is beolvassa, és ha a távolság kisebb, mint egy meghatározott küszöb, a robot nem mozdul előre. Végül, ha az Arduino parancsot kap egy finomság kiadására, akkor aktiválja a szervókat a Chip adagolóban.

9. lépés: Mobil robotkocsi - ESP32 kód

Az ESP32 lehetővé teszi a kommunikációt a szerver és az Arduino között Wifi -n keresztül. Az Arduino -tól külön van programozva, és saját kóddal rendelkezik:

  • Az ESP32_Code.ino az ESP32 kódja, amely információt küld az Arduino -nak
  • Az app_httpd.cpp az alapértelmezett ESP32 webszerverhez szükséges kód, és állítsa be a funkciót a billentyűlenyomások figyelésére. Jó a hibakereséshez és a helyi wifi teszteléséhez. Nem használják a helyi hálózaton kívüli kommunikációra.
  • A camera_index.h az alapértelmezett webalkalmazás html -kódja
  • A camera_pins.h határozza meg a csapokat az ESP32 modelltől függően

Az ESP32 kód a Wifi könyvtárat és az ESP32 bővítményt használja, amelyek az alábbi lépések végrehajtásával telepíthetők az Arduino IDE-be:

  1. Az Arduino IDE -ben lépjen a Fájl> Beállítások menüpontra
  2. Ezután a Beállítások lapon a További táblák kezelője URL alatt írja be a következőt: "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Most nyissa meg a Fórumkezelőt, és lépjen az Eszközök> Tábla> Fórumkezelő menübe, és keresse meg az ESP32 -t az "ESP32" begépelésével
  4. Látnia kell az "esp32 by Espressif Systems" -t. Kattintson a Telepítés gombra.
  5. Most telepíteni kell az ESP32 bővítményt. Az ellenőrzéshez térjen vissza az Arduino IDE -hez, és lépjen az Eszközök> Tábla menübe, és válassza az "ESP32 Wrover Module" lehetőséget.
  6. Ismét lépjen az Eszközök> Feltöltési sebesség menüpontra, és állítsa "115200" értékre.
  7. Végül lépjen az Eszközök> Partíciós rendszer menüpontba, és állítsa "Hatalmas APP -ra (3 MB nem OTA/1 MB SPIFFS)"
  8. Miután befejezte ezt, javaslom, hogy kövesse a RandomNerdTutorials bemutatóját, amely részletesen elmagyarázza, hogyan kell befejezni az ESP32 beállítását és feltölteni a kódot az FTDI programozó segítségével.

10. lépés: Forgácsadagoló

Forgácsadagoló
Forgácsadagoló

A Chip Adagoló egy olcsó kiegészítője a mobil robotnak, amely lehetővé teszi, hogy befolyásolja a helyi környezetet és kölcsönhatásba lépjen az emberekkel / állatokkal egy finom csemegét hagyva. Ez egy kartondobozból készült külső dobozból áll, amelybe 2 szervó van felszerelve, valamint egy belső kartonpatronból, amelyben az elemek (például cukorka vagy kutyacsemegék) tárolhatók. Az egyik szervó kapuként működik, míg a másik kitolja az elemet.

*Minden méret milliméterben értendő

11. lépés: Joystick

Joystick
Joystick

Bár szórakoztató lehet robotot irányítani a billentyűzettel, még szórakoztatóbb és intuitívabb a joystick használata, ahol a robot közvetlenül reagál a nyomott irány alapján. Mivel ezt a robotot a weboldalon rögzített gombnyomásokkal működtetjük, szükségünk volt a joystickunkra a billentyűzet emulálásához. Így a joystick nélküli felhasználók továbbra is közvetlenül a billentyűzetről irányíthatják a robotot, de mások is használhatják a joystickot.

Ehhez csak egy Arduino Uno -val rendelkeztünk, amely nem tudja használni a könyvtárat, ezért közvetlenül az USB -protokoll segítségével programoztuk, amely Device Firmware Update (DFU) néven ismert, és lehetővé teszi az arduino általános USB HID billentyűzet firmware -rel történő villogását.. Más szóval, amikor az arduino -t csatlakoztatja az usb -hez, akkor azt már nem arduino -ként ismeri fel, hanem billentyűzetként!

12. lépés: Joystick - áramkör diagram

Joystick - áramkör diagram
Joystick - áramkör diagram

Így kapcsoltuk be a joystickot.

13. lépés: Joystick - Billentyűzet -emulátor

Annak érdekében, hogy az Arduino Uno billentyűzetet emuláljon, közvetlenül be kell programoznia az Atmega16u2 chipet az Arduino -n egy kézi eszköz firmware -frissítésen (DFU) keresztül. A következő lépések leírják a Windows gépek folyamatát, és remélhetőleg segítenek elkerülni néhány problémát, amelyekbe belefutottunk.

Az első lépés az Atmel usb illesztőprogram manuális írása az Arduino -hoz, hogy az USB -ként, és ne Arduino -ként legyen felismerve, ami lehetővé teszi, hogy a FLIP programozóval villogjon.

  1. Töltse le az Atmel FLIP programozóját innen
  2. Csatlakoztassa az Arduino Uno készüléket
  3. Lépjen az Eszközkezelőbe, és keresse meg az Arduino -t. COM vagy ismeretlen eszköz alatt lesz. Dugja be és ki, hogy megbizonyosodjon arról, hogy ez a megfelelő eszköz.
  4. Miután megtalálta az Arduino Uno eszközt az Eszközkezelőben, kattintson rá jobb gombbal, és válassza a Tulajdonságok> Illesztőprogram> Illesztőprogram frissítése> Tallózás a számítógépen illesztőprogram -szoftvert> Engedélyezzen, hogy a számítógépen elérhető illesztőprogramok listájából válasszon> Legyen lemez> Tallózás a fájlt "atmel_usb_dfu.inf", és válassza ki. Ennek abban a mappában kell lennie, ahová az Atmel FLIP programozót telepítette. A számítógépemen ez van: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Telepítse az illesztőprogramot
  6. Most térjen vissza az Eszközkezelőhöz, és látnia kell egy "Atmel USB -eszközt" az Arduino Uno -val, amely most ATmega16u2 címkével van ellátva!

Most, hogy a számítógép felismeri az Arduino Uno -t USB -eszközként, használhatjuk a FLIP programozót, hogy három különálló fájllal villanjunk, és billentyűzetté alakítsuk.

Ha az első rész után kihúzta az Arduino Uno -t, csatlakoztassa újra.

  1. Nyissa meg a FLIP -et
  2. Állítsa alaphelyzetbe az Arduino Uno készüléket úgy, hogy rövid ideig csatlakoztatja a tápellátást a földhöz.
  3. Kattintson az Eszközválasztás elemre (ikon, mint egy mikrochip), majd válassza az ATmega16U2 lehetőséget
  4. Kattintson a Kommunikációs eszköz kiválasztása (ikon, mint egy USB -kábel), majd válassza az USB lehetőséget. Ha az első részt helyesen töltötte ki, a többi szürke gomb használhatóvá válik.
  5. Lépjen a Fájl> Hexafájl betöltése> menüpontra, és töltse fel az Arduino-usbserial-uno.hex fájlt
  6. A FLIP ablakban három részt kell látnia: Műveleti folyamat, FLASH puffer információ és ATmega16U2. A Műveletek folyamatában jelölje be a Törlés, Programozás és Ellenőrzés négyzeteket, majd kattintson a Futtatás gombra.
  7. Miután ez a folyamat befejeződött, kattintson az Alkalmazás indítása elemre az ATmega16U2 szakaszban.
  8. Dugja be az arduino ciklusát, húzza ki a számítógépből, és csatlakoztassa újra.
  9. Állítsa alaphelyzetbe az Arduino Uno készüléket úgy, hogy rövid ideig csatlakoztatja a tápellátást a földhöz.
  10. Nyissa meg az Arduino IDE -t, és töltse fel a táblára a JoyStickControl_Code.ino fájlt.
  11. Dugja be az arduino ciklusát, húzza ki a számítógépből, majd csatlakoztassa újra.
  12. Állítsa vissza az arduino -t úgy, hogy rövid ideig csatlakoztatja a tápellátást a földhöz.
  13. Térjen vissza a FLIP -hez, és győződjön meg arról, hogy az Eszközválasztás felirat Atmega16U2
  14. Kattintson a Kommunikációs médium kiválasztása elemre, és válassza az USB lehetőséget.
  15. Lépjen a Fájl> Hexafájl betöltése> menüpontra, és töltse fel az Arduino-keyboard-0.3.hex fájlt
  16. A FLIP ablakban három részt kell látnia: Műveleti folyamat, FLASH puffer információ és ATmega16U2. A Műveletek folyamatában jelölje be a Törlés, Programozás és Ellenőrzés négyzeteket, majd kattintson a Futtatás gombra.
  17. Miután ez a folyamat befejeződött, kattintson az Alkalmazás indítása elemre az ATmega16U2 szakaszban.
  18. Dugja be az arduino ciklusát, húzza ki a számítógépből, és csatlakoztassa újra.
  19. Most, amikor az Eszközkezelőbe megy, új HID billentyűzet -eszköznek kell lennie a Billentyűzetek alatt.
  20. Nyisson meg egy jegyzettömböt vagy bármilyen szövegszerkesztőt, és mozgassa a joystickot. Látnia kell a beírt számokat!

Ha módosítani szeretné az Arduino vázlat kódját, például új parancsokat szeretne írni a joystickra, akkor mind a 3 fájllal villognia kell.

Néhány hasznos link: Arduino DFUAtLibUsbDfu.dll nem található

Ez a billentyűzetemulátor Michael ezen oktatóanyagán alapul, 2012. június 24 -én.

14. lépés: Hálózati kommunikáció

Hálózati kommunikáció
Hálózati kommunikáció

Ahhoz, hogy a világ bármely pontjáról videofolyamokat fogadhassunk és parancsokat küldhessünk a robotnak, szükségünk van arra, hogy adatokat vigyünk az ESP32-CAM-ba és onnan. Ez két részből áll: egy kapcsolatkezelő a helyi hálózaton és egy nyilvános szerver. Ennek eléréséhez töltse le a három fájlt:

  • Handlers.py: az ESP32-CAM és a nyilvános szerver információit továbbítja (Python 3.8-on tesztelve)
  • Flask_app.py: meghatározza, hogy az alkalmazás hogyan reagál a bejövő kérésekre.
  • Robot_stream.html: megjeleníti a videót a böngészőben, és parancsokat hallgat a billentyűzeten / joystickon keresztül (Chrome -on tesztelve)

Ezt közvetlenül kódolhatja az app_httpd.cpp fájlban, de a könnyebb hibakeresés érdekében Python -parancsfájlt használunk, amely ugyanahhoz a hálózathoz csatlakoztatott számítógépen fut. Nyissa meg a handlers.py fájlt, és frissítse az IP -címet és a felhasználónevet a sajátjára, és készen áll. Az adatfolyam elindul a fájl futtatásakor.

Nyilvános szerver Ahhoz, hogy mindent elérhessen az interneten, elindíthat egy szervert az Ön által választott PaaS segítségével. A pythonanywhere (PA) beállítása kevesebb, mint 5 percet vesz igénybe:

  1. Regisztráljon egy fiókot, és jelentkezzen be
  2. Lépjen a „Web” fülre, és nyomja meg az „Új webes alkalmazás hozzáadása” gombot, válassza a Lombik és Python 3.6 lehetőséget
  3. Másolja a flask_app.py fájlt a /mysite könyvtárba
  4. Másolja a robot_stream.html fájlt a /mysite /templates könyvtárba
  5. Kattintson az „Újratöltés” gombra

És… készen állsz!

Jogi nyilatkozat: Ez a hálózati munkafolyamat gyors és egyszerű, de nagyon távol áll az ideáltól. Az RTMP vagy az aljzatok megfelelőbbek lennének a streaminghez, de ezeket a PA nem támogatja, és némi tapasztalatot igényel a hálózatépítésben és a szerver beállításában. Azt is javasoljuk, hogy adjon hozzá valamilyen biztonsági mechanizmust a hozzáférés szabályozásához.

15. lépés: Összerakás

Most kapcsolja be a robotot, futtassa a handlers.py fájlt egy számítógépen (ugyanahhoz a hálózathoz csatlakozik, mint a robot), és bárhonnan, bárhonnan vezérelheti a robotot a beállított URL alapján. (pl.

Ajánlott: