Obsah:

Robot virtuální přítomnosti: 15 kroků
Robot virtuální přítomnosti: 15 kroků

Video: Robot virtuální přítomnosti: 15 kroků

Video: Robot virtuální přítomnosti: 15 kroků
Video: Jaký problém mohou být virtuální přítelkyně pro společnost? - Reakce na video od @tohlejesegment 2024, Listopad
Anonim
Image
Image
Mobilní robotické auto
Mobilní robotické auto

Tento mobilní robot interaguje se svým fyzickým okolím tím, že představuje „virtuální přítomnost“osoby, která jej ovládá na dálku. Může k němu mít přístup kdokoli, kdekoli na světě, aby vám mohl rozdávat pamlsky a hrát si s vámi.

Dílo zde vyvíjejí dva lidé (jeden v Německu a jeden v USA) jako pokus o posun nad rámec tradičních prostředků internetové komunikace vytvořením fyzického rozhraní pro vzdálenou interakci. Protože COVID-19 nadále ovlivňuje svět a každý je zodpovědný za omezení naší fyzické expozice lidem, snažíme se obnovit hmatatelné spojení, které je součástí fyzické interakce.

Je založen na instrukci ESP32-Camera-Robot-FPV-Teacher-Entry Instructable a upraven tak, aby zahrnoval senzor vzdálenosti, dávkovač pamlsků a schopnost „ovládání odkudkoli na světě“za předpokladu, že máte poněkud stabilní připojení k internetu.

Zásoby

Projekt má 4 hlavní části - mobilní robotický vůz, dávkovač čipů, joystick a nastavení síťové komunikace.

Mobilní robotické auto

  • Prkénko
  • Robotická sada motoru a podvozku 2 kol (obsahuje kola, stejnosměrné motory, montážní desku a šrouby)
  • Arduino Mega 2560 (pokud budete stavět bez snímače vzdálenosti nebo dávkovače čipů, bude mít Uno dostatek pinů)
  • 3) 9V baterie
  • Modul napájecího zdroje LM2596 Regulátor DC/DC Buck 3A (nebo podobný)
  • Wifi modul ESP32-CAM
  • FT232RL FTDI Sériový převodník USB na TTL (pro programování ESP32-CAM)
  • Ultrazvukový snímač vzdálenosti HC-SR04
  • Ovladač motoru L298N
  • (3) LED diody (libovolná barva)
  • (3) 220 ohmové odpory

Dávkovač čipů

  • (2) Serva SG90
  • Karton / lepenka

Joystick

  • Arduino Uno
  • Modul joysticku
  • Mini Breadboard, (1) LED, (1) 220 Ohm rezistor (volitelně)

jiný

Spousta propojovacích drátů na lepenku Extra karton / lepenka Páska Nůžky Pravítko / měřicí páska Malý šroubovák Philips Malý plochý šroubovák

Trpělivost =)

Krok 1: Mobilní robotické auto

Podvozek Robot Car slouží jako mobilní platforma, přičemž Arduino MEGA jako hlavní mikrořadič pohání motory, čte hodnoty senzorů a aktivuje serva. Většina akcí se provádí tak, že Arduino MEGA přijímá příkazy prostřednictvím sériové komunikace odesílané z ESP32-CAM. Zatímco ESP32 poskytuje kamerový živý přenos pro ovládání robota, jeho další funkcí je správa bezdrátového spojení mezi robotem a serverem, což umožňuje uživatelům ovládat jej odkudkoli na světě. ESP32 přijímá příkazy z webové stránky stisknutím klávesy a odesílá je do Arduino MEGA jako hodnoty char. Na základě přijaté hodnoty auto pojede vpřed, vzad atd. Protože dálkové ovládání přes internet závisí na mnoha vnějších faktorech, včetně vysoké latence, špatné kvality streamu a dokonce i odpojení, je integrován senzor vzdálenosti, aby robot nepadl do předmětů.*Vzhledem k vysokým a kolísavým požadavkům na napájení čipu ESP32 se doporučuje použít regulátor napájení pro napájení z baterie (viz schéma zapojení).

Krok 2: Mobilní robotické auto - schéma zapojení

Mobilní robot auto - schéma zapojení
Mobilní robot auto - schéma zapojení

Provedeme vás krok za krokem sestavením tohoto.

Krok 3: Mobilní robotické auto - montáž (motory)

Mobilní robotické auto - montáž (motory)
Mobilní robotické auto - montáž (motory)

Poté, co sestavíte podvozek 2WD, začneme připojením motorů a baterie k Arduino MEGA prostřednictvím ovladače L298N.

Krok 4: Mobilní robotický vůz - montáž (snímač vzdálenosti)

Mobilní robotické auto - montáž (snímač vzdálenosti)
Mobilní robotické auto - montáž (snímač vzdálenosti)

Jelikož je k připojení celkem dost komponent, přidejme prkénko, abychom mohli snáze připojit napájení a sdílenou zem. Poté, co znovu uspořádáme vodiče, připojíme snímač vzdálenosti a upevníme jej v přední části robota.

Krok 5: Mobilní robotický vůz - montáž (ESP32 CAM)

Mobilní robotické auto - montáž (ESP32 CAM)
Mobilní robotické auto - montáž (ESP32 CAM)

Poté připojte modul ESP32-CAM a připevněte jej k senzoru vzdálenosti poblíž přední části robota. Pamatujte, že tato součást, která má velký výkon, vyžaduje vlastní baterii a stejnosměrný regulátor.

Krok 6: Mobilní robotické auto - montáž (dávkovač čipů)

Mobilní robotické auto - montáž (dávkovač čipů)
Mobilní robotické auto - montáž (dávkovač čipů)

Nyní přidejme dávkovač čipů (více o tom v sekci „Dávkovač čipů“). Připojte dvě serva podle Fritzingova diagramu a připevněte dávkovač na zadní část robota.

Krok 7: Mobilní robotický vůz - montáž (cookies!)

Mobilní robotické auto - montáž (cookies!)
Mobilní robotické auto - montáž (cookies!)

Nakonec přidáme do dávkovače pamlsky!

Krok 8: Mobilní robotické auto - kód Arduino

RobotCar_Code je kód, který budete muset načíst do Arduino Mega.

Funguje to takto: Arduino poslouchá bajty, které jsou odesílány z ESP32 přes sériovou komunikaci v pásmu 115200. Na základě přijatého bajtu se auto bude pohybovat vpřed, vzad, vlevo, vpravo atd. Odesláním buď VYSOKÉHO nebo NÍZKÉHO napětí do motorů pro ovládání směru, jakož i proměnné PWM mezi 0-255 pro ovládání rychlosti. Aby se zabránilo kolizím, tento kód také čte hodnoty přicházející ze snímače vzdálenosti a pokud je vzdálenost menší než zadaná prahová hodnota, robot se nepohne vpřed. A konečně, pokud Arduino dostane příkaz vydat pamlsek, aktivuje serva v dávkovači čipů.

Krok 9: Mobilní robotický vůz - kód ESP32

ESP32 umožňuje komunikaci mezi serverem a Arduino přes Wifi. Je naprogramován odděleně od Arduina a má svůj vlastní kód:

  • ESP32_Code.ino je kód pro ESP32 pro odesílání informací do Arduina
  • app_httpd.cpp je kód potřebný pro výchozí webový server ESP32 a nastavuje funkci pro naslouchání stisknutí kláves. Dobré pro ladění a testování na místní wifi. Nepoužívá se pro komunikaci mimo místní síť.
  • camera_index.h je html kód pro výchozí webovou aplikaci
  • camera_pins.h definuje piny v závislosti na modelu ESP32

Kód ESP32 používá knihovnu Wifi a také doplněk ESP32, který lze do Arduino IDE nainstalovat následujícím způsobem:

  1. V Arduino IDE přejděte na Soubor> Předvolby
  2. Poté na kartě Nastavení v části Adresa URL správce dalších desek zadejte následující „https://dl.espressif.com/dl/package_esp32_index.json“
  3. Nyní otevřete Správce desek a přejděte na Nástroje> Deska> Správce desek a vyhledejte ESP32 zadáním "ESP32"
  4. Měli byste vidět „esp32 by Espressif Systems“. Klikněte na Instalovat.
  5. Nyní by měl být nainstalován doplněk ESP32. Chcete -li zkontrolovat, vraťte se zpět do IDE Arduino a přejděte do nabídky Nástroje> Deska a vyberte „Modul ESP32 Wrover“.
  6. Opět přejděte na Nástroje> Rychlost nahrávání a nastavte ji na „115200“.
  7. Nakonec přejděte na Nástroje> Schéma oddílů a nastavte jej na „Obrovská aplikace (3 MB bez OTA/1 MB SPIFFS)
  8. Jakmile to dokončíte, doporučuji následovat tento tutoriál od RandomNerdTutorials, který podrobně vysvětluje, jak dokončit nastavení ESP32 a nahrát kód pomocí programátoru FTDI Programování ESP32

Krok 10: Dávkovač čipů

Dávkovač čipů
Dávkovač čipů

Dávkovač čipů je levný doplněk mobilního robota, který mu umožňuje ovlivňovat místní prostředí a komunikovat s lidmi / zvířaty tím, že zanechá chutnou pochoutku. Skládá se z vnější lepenkové krabice se 2 servy namontovanými uvnitř, stejně jako z vnitřní lepenkové kazety, do které se dají dávkovat předměty (například bonbóny nebo pamlsky pro psy). Jedno servo funguje jako brána, zatímco druhé vytlačuje položku ven.

*Všechny rozměry jsou v milimetrech

Krok 11: Joystick

Joystick
Joystick

I když může být zábavné ovládat robota pomocí klávesnice, je ještě zábavnější a intuitivnější používat joystick, kde robot reaguje přímo podle směru, kterým tlačíte. Protože se tento robot ovládá pomocí stisknutí kláves zaznamenaných na webové stránce, potřebovali jsme náš joystick k emulaci klávesnice. Tímto způsobem mohou uživatelé bez joysticku stále ovládat robota přímo z klávesnice, ale ostatní mohou používat joystick.

K tomu jsme měli pouze Arduino Uno, které nemá schopnost používat knihovnu, takže jsme ho naprogramovali přímo pomocí protokolu USB známého jako Device Firmware Update (DFU), který umožňuje arduino blikat pomocí generického firmwaru klávesnice USB HID. Jinými slovy, když je arduino zapojeno do USB, již není rozpoznáno jako arduino, ale jako klávesnice!

Krok 12: Joystick - schéma zapojení

Joystick - schéma zapojení
Joystick - schéma zapojení

Zde je návod, jak jsme zapojili joystick.

Krok 13: Joystick - emulátor klávesnice

Aby mohl váš Arduino Uno emulovat klávesnici, musíte přímo na Arduinu naprogramovat čip Atmega16u2 prostřednictvím manuální aktualizace firmwaru zařízení (DFU). Následující kroky budou popisovat postup pro počítač se systémem Windows a snad vám pomohou vyhnout se některým problémům, na které jsme narazili.

Prvním krokem je ruční zápis ovladače Atmel USB do Arduina, aby byl rozpoznán jako USB, a ne jako Arduino, což umožňuje jeho flashování pomocí FLIP programátoru.

  1. Stáhněte si Atmel's FLIP Programmer odtud
  2. Připojte své Arduino Uno
  3. Přejděte do Správce zařízení a najděte Arduino. Bude pod COM nebo Neznámým zařízením. Připojte jej a odpojte, abyste se ujistili, že je to správné zařízení.
  4. Jakmile najdete Arduino Uno ve Správci zařízení, klikněte na něj pravým tlačítkem a vyberte vlastnosti> Ovladač> Aktualizovat ovladač> Procházet můj počítač pro software ovladače> Dovolte mi vybrat si ze seznamu dostupných ovladačů v mém počítači> Z diskety> Procházet na soubor "atmel_usb_dfu.inf" a vyberte jej. To by mělo být ve složce, kde byl nainstalován váš Atmel FLIP Programmer. Na mém počítači je zde: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Nainstalujte ovladač
  6. Nyní se vraťte do Správce zařízení, měli byste vidět „Atmel USB Devices“s Arduino Uno nyní označeným jako ATmega16u2!

Nyní, když počítač rozpozná Arduino Uno jako zařízení USB, můžeme pomocí FLIP Programmeru flashovat 3 samostatné soubory a přeměnit je na klávesnici.

Pokud jste Arduino Uno odpojili po prvním dílu, zapojte jej zpět.

  1. Otevřete FLIP
  2. Resetujte Arduino Uno krátkým připojením napájení k zemi.
  3. Klikněte na Výběr zařízení (ikona jako mikročip) a vyberte ATmega16U2
  4. Klikněte na Vybrat komunikační médium (ikona jako USB kabel) a vyberte USB. Pokud jste správně dokončili první část, měla by být použitelná další šedá tlačítka.
  5. Přejděte na Soubor> Načíst hex soubor> a nahrajte soubor Arduino-usbserial-uno.hex
  6. V okně FLIP byste měli vidět tři sekce: Operations Flow, FLASH Buffer Information a ATmega16U2. V toku operací zaškrtněte políčka Vymazat, Programovat a Ověřit, poté klikněte na Spustit.
  7. Jakmile se tento proces dokončí, klikněte na Spustit aplikaci v sekci ATmega16U2.
  8. Plug arduino zapojte tak, že jej odpojíte od počítače a znovu zapojíte.
  9. Resetujte Arduino Uno krátkým připojením napájení k zemi.
  10. Otevřete Arduino IDE a nahrajte soubor JoyStickControl_Code.ino na desku.
  11. Plug arduino zapojte tak, že jej odpojíte od počítače a znovu zapojíte.
  12. Resetujte arduino krátkým připojením napájení k zemi.
  13. Vraťte se na FLIP a ujistěte se, že Device Selection říká Atmega16U2
  14. Klikněte na Vybrat komunikační médium a vyberte USB.
  15. Přejděte na Soubor> Načíst hex soubor> a nahrajte soubor Arduino-keyboard-0.3.hex
  16. V okně FLIP byste měli vidět tři sekce: Operations Flow, FLASH Buffer Information a ATmega16U2. V toku operací zaškrtněte políčka Vymazat, Programovat a Ověřit, poté klikněte na Spustit.
  17. Jakmile se tento proces dokončí, klikněte na Spustit aplikaci v sekci ATmega16U2.
  18. Plug arduino zapojte tak, že jej odpojíte od počítače a znovu zapojíte.
  19. Nyní, když přejdete do Správce zařízení, mělo by být nové Klávesnicové zařízení HID v části Klávesnice.
  20. Otevřete poznámkový blok nebo libovolný textový editor a začněte pohybovat joystickem. Měli byste vidět zadávání čísel!

Pokud chcete změnit kód v náčrtu Arduino, například psát nové příkazy na joystick, budete jej muset pokaždé blikat se všemi 3 soubory.

Několik užitečných odkazů: Arduino DFUAtLibUsbDfu.dll nebyl nalezen

Tento emulátor klávesnice je založen na tomto tutoriálu od Michaela 24. června 2012.

Krok 14: Síťová komunikace

Síťová komunikace
Síťová komunikace

Abychom mohli přijímat video stream a odesílat příkazy robotovi odkudkoli na světě, potřebujeme způsob, jak dostat data do a ze systému ESP32-CAM. To se provádí ve dvou částech, obsluze připojení ve vaší místní síti a veřejném serveru. Chcete -li toho dosáhnout, stáhněte tři soubory:

  • Handlers.py: předává informace z ESP32-CAM a veřejného serveru (testováno na Pythonu 3.8)
  • Flask_app.py: definuje, jak vaše aplikace reaguje na příchozí požadavky.
  • Robot_stream.html: vykresluje video ve vašem prohlížeči a poslouchá příkazy pomocí klávesnice / joysticku (testováno na Chromu)

Connection Handler Můžete to kódovat přímo v app_httpd.cpp, ale pro snadnější ladění používáme skript Python spuštěný na PC připojeném ke stejné síti. Otevřete handlers.py a aktualizujte IP adresu a uživatelské jméno na své vlastní a můžete začít. Stream se spustí, když spustíte tento soubor.

Veřejný server Chcete -li mít přístup ke všemu na internetu, můžete spustit server s PaaS podle vašeho výběru. Na pythonanywhere (PA) nastavení trvá méně než 5 minut:

  1. Zaregistrujte si účet a přihlaste se
  2. Přejděte na kartu „Web“a klikněte na „Přidat novou webovou aplikaci“, vyberte Flask a Python 3.6
  3. Zkopírujte soubor flask_app.py do adresáře /mysite
  4. Zkopírujte soubor robot_stream.html do adresáře /mysite /templates
  5. Klikněte na „Znovu načíst“

A … jste připraveni!

Disclaimer: Tento pracovní postup v síti je rychlý a jednoduchý, ale velmi daleko od ideálu. Pro streamování by byly vhodnější RTMP nebo sokety, ale nejsou podporovány na PA a vyžadují určité zkušenosti se sítí a nastavením serveru. Doporučuje se také přidat nějaký mechanismus zabezpečení pro řízení přístupu.

Krok 15: Dát to všechno dohromady

Nyní zapněte robota, spusťte handlers.py na počítači (připojeném ke stejné síti jako robot) a robota můžete ovládat z prohlížeče na základě adresy URL, kterou nastavíte odkudkoli. (např.

Doporučuje: