Obsah:

Robot virtuálnej prítomnosti: 15 krokov
Robot virtuálnej prítomnosti: 15 krokov

Video: Robot virtuálnej prítomnosti: 15 krokov

Video: Robot virtuálnej prítomnosti: 15 krokov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Image
Image
Mobilné robotické auto
Mobilné robotické auto

Tento mobilný robot interaguje so svojim fyzickým prostredím tým, že predstavuje „virtuálnu prítomnosť“osoby, ktorá ho ovláda na diaľku. Prístup k nemu má ktokoľvek, kdekoľvek na svete, aby vám mohol rozdávať maškrty a hrať sa s vami.

Prácu tu vyvíjajú dvaja ľudia (jeden v Nemecku a jeden v USA) ako pokus posunúť sa za hranice tradičných spôsobov internetovej komunikácie vytvorením fyzického rozhrania pre vzdialenú interakciu. Keďže COVID-19 naďalej ovplyvňuje svet a každý je zodpovedný za obmedzenie nášho fyzického kontaktu s ľuďmi, snažíme sa obnoviť hmatateľné spojenie, ktoré je súčasťou fyzickej interakcie.

Je založený na pokynoch ESP32-Camera-Robot-FPV-Teacher-Entry Instructable a upravený tak, aby zahŕňal snímač vzdialenosti, automat na ošetrenie a „ovládanie odkiaľkoľvek na svete“za predpokladu, že máte trochu stabilné internetové pripojenie.

Zásoby

Projekt má 4 hlavné časti - mobilné robotické auto, dávkovač čipov, joystick a nastavenie sieťovej komunikácie.

Mobilné robotické auto

  • Breadboard
  • Robotická súprava motora a podvozku s 2 kolesami (obsahuje kolesá, jednosmerné motory, montážnu dosku a skrutky)
  • Arduino Mega 2560 (ak budete stavať bez snímača vzdialenosti alebo dávkovača čipov, bude mať Uno dostatok pinov)
  • (3) 9V batérie (nechajte ich niekoľko ďalších, pretože ich vybíjate pri ladení)
  • LM2596 Napájací modul DC/DC Buck 3A regulátor (alebo podobný)
  • Wifi modul ESP32-CAM
  • FT232RL FTDI Sériový prevodník USB na TTL (na programovanie ESP32-CAM)
  • Ultrazvukový snímač vzdialenosti HC-SR04
  • Ovládač motora L298N
  • (3) LED diódy (akejkoľvek farby)
  • (3) 220 ohmové odpory

Dávkovač čipov

  • (2) Serva SG90
  • Kartón / Kartón

Joystick

  • Arduino Uno
  • Modul joysticku
  • Mini Breadboard, (1) LED, (1) Rezistor 220 Ohm (voliteľné)

Iné

Veľa prepojovacích drôtov na chlebovú dosku Extra kartón / lepenka Páska Nožnice Pravítko / meracia páska Malý skrutkovač Philips Malý plochý skrutkovač

Trpezlivosť =)

Krok 1: Mobilný robotický automobil

Podvozok Robot Car slúži ako mobilná platforma, pričom Arduino MEGA ako hlavný mikro-ovládač poháňa motory, číta hodnoty senzorov a aktivuje servá. Väčšina akcií sa vykonáva tak, že Arduino MEGA prijíma príkazy prostredníctvom sériovej komunikácie odosielanej z ESP32-CAM. Aj keď ESP32 poskytuje živý prenos z kamery na ovládanie robota, jeho ďalšou funkciou je správa bezdrôtového pripojenia medzi robotom a serverom, čo umožňuje používateľom ovládať ho odkiaľkoľvek na svete. ESP32 prijíma príkazy z webovej stránky stlačením klávesu a odosiela ich do Arduino MEGA ako hodnoty char. Na základe prijatej hodnoty pôjde auto dopredu, dozadu atď. Pretože diaľkové ovládanie cez internet závisí od mnohých vonkajších faktorov vrátane vysokej latencie, zlej kvality streamu a dokonca aj odpojení, je integrovaný snímač vzdialenosti, aby robot nepadol. do predmetov.*Vzhľadom na vysoké a kolísavé požiadavky na výkon čipu ESP32 sa odporúča používať regulátor napájania z batérie (pozri schému zapojenia).

Krok 2: Mobilný robotický automobil - schéma zapojenia

Mobilné robotické auto - schéma zapojenia
Mobilné robotické auto - schéma zapojenia

Krok za krokom vás prevedieme montážou.

Krok 3: Mobilný robotický automobil - zostava (motory)

Mobilné robotické auto - zostava (motory)
Mobilné robotické auto - zostava (motory)

Potom, čo zostavíte šasi 2WD, začneme pripojením motorov a batérie k Arduino MEGA prostredníctvom ovládača L298N.

Krok 4: Mobilný robotický automobil - montáž (snímač vzdialenosti)

Mobilný robotický automobil - zostava (snímač vzdialenosti)
Mobilný robotický automobil - zostava (snímač vzdialenosti)

Pretože je k dispozícii pomerne veľa komponentov na pripojenie, pridajme dosku, aby sme mohli jednoduchšie pripojiť napájanie a zdieľanú zem. Potom, čo znova usporiadame vodiče, pripojte snímač vzdialenosti a upevnite ho v prednej časti robota.

Krok 5: Mobilný robotický automobil - zostava (ESP32 CAM)

Mobilný robotický automobil - zostava (ESP32 CAM)
Mobilný robotický automobil - zostava (ESP32 CAM)

Potom pripojte modul ESP32-CAM a pripevnite ho k senzoru vzdialenosti v blízkosti prednej časti robota. Pamätajte si, že tento dosť energeticky náročný komponent vyžaduje vlastnú batériu a DC regulátor.

Krok 6: Mobilný robotický automobil - montáž (dávkovač čipov)

Mobilné robotické auto - zostava (dávkovač čipov)
Mobilné robotické auto - zostava (dávkovač čipov)

Teraz pridáme dávkovač čipov (viac o tom v časti „Dávkovač čipov“). Pripojte dve servá podľa Fritzingovho diagramu a pripevnite dávkovač k chvostu robota.

Krok 7: Mobilný robotický automobil - montáž (súbory cookie!)

Mobilné robotické auto - montáž (súbory cookie!)
Mobilné robotické auto - montáž (súbory cookie!)

Nakoniec do dávkovača pridáme maškrty!

Krok 8: Mobilný robotický automobil - kód Arduino

RobotCar_Code je kód, ktorý budete musieť načítať do Arduino Mega.

Funguje to takto: Arduino počúva bajty, ktoré sú odosielané z ESP32 prostredníctvom sériovej komunikácie v pásme 115200. Na základe prijatého bajtu sa auto bude pohybovať dopredu, dozadu, doľava, doprava atď. Odoslaním buď VYSOKÉHO alebo NÍZKEHO napätia do motorov na ovládanie smeru, ako aj premennej PWM medzi 0-255 na ovládanie rýchlosti. Aby sa zabránilo kolíziám, tento kód tiež číta hodnoty prichádzajúce zo snímača vzdialenosti a ak je vzdialenosť menšia ako špecifikovaná prahová hodnota, robot sa nepohne dopredu. Nakoniec, ak Arduino dostane príkaz na vydanie maškrty, aktivuje serva v dávkovači čipov.

Krok 9: Mobilný robotický automobil - kód ESP32

ESP32 umožňuje komunikáciu medzi serverom a Arduino prostredníctvom Wifi. Programuje sa oddelene od Arduina a má svoj vlastný kód:

  • ESP32_Code.ino je kód pre ESP32 na odosielanie informácií do Arduina
  • app_httpd.cpp je kód potrebný pre predvolený webový server ESP32 a nastavuje funkciu na počúvanie stlačení klávesov. Dobré na ladenie a testovanie na miestnej wifi. Neslúži na komunikáciu mimo lokálnej siete.
  • camera_index.h je html kód pre predvolenú webovú aplikáciu
  • camera_pins.h definuje kolíky v závislosti od modelu ESP32

Kód ESP32 používa knižnicu Wifi a tiež doplnok ESP32, ktorý je možné nainštalovať do Arduino IDE podľa týchto krokov:

  1. V Arduino IDE prejdite na Súbor> Predvoľby
  2. Potom na karte Nastavenia v časti Adresa URL doplnkového ovládača zadajte nasledujúci príkaz „https://dl.espressif.com/dl/package_esp32_index.json“
  3. Teraz otvorte Správcu dosiek a prejdite na Nástroje> Doska> Správca dosiek a vyhľadajte ESP32 zadaním „ESP32“
  4. Mali by ste vidieť „esp32 od spoločnosti Espressif Systems“. Kliknite na Inštalovať.
  5. Teraz by mal byť nainštalovaný doplnok ESP32. Ak to chcete skontrolovať, vráťte sa do Arduino IDE a prejdite na Nástroje> Doska a vyberte „Modul ESP32 Wrover“.
  6. Znova prejdite na Nástroje> Rýchlosť odovzdávania a nastavte ho na „115200“.
  7. Nakoniec prejdite na Nástroje> Schéma oddielov a nastavte ho na „Obrovská aplikácia (3 MB bez OTA/1 MB SPIFFS)
  8. Akonáhle to dokončíte, odporúčam nasledovať tento návod RandomNerdTutorials, ktorý podrobne vysvetľuje, ako dokončiť nastavenie ESP32 a nahrať kód pomocou programátora FTDI Programovanie ESP32

Krok 10: Dávkovač čipov

Dávkovač čipov
Dávkovač čipov

Dávkovač čipov je lacný doplnok k mobilnému robotovi, ktorý mu umožňuje ovplyvniť miestne prostredie a interagovať s ľuďmi / zvieratami, pričom zanechá chutnú pochúťku. Skladá sa z vonkajšej škatule z lepenky s dvoma servami namontovanými vo vnútri, ako aj z vnútornej lepenkovej kazety, do ktorej sa dajú vydávať položky (napríklad sladkosti alebo psie maškrty). Jedno servo funguje ako brána, zatiaľ čo druhé tlačí položku von.

*Všetky rozmery sú v milimetroch

Krok 11: Joystick

Joystick
Joystick

Aj keď môže byť ovládanie robota pomocou klávesnice zábavné, ešte zábavnejšie a intuitívnejšie je používanie joysticku, kde robot reaguje priamo podľa smeru, ktorým tlačíte. Pretože sa tento robot ovláda pomocou stlačení kláves zaznamenaných na webovej stránke, potrebovali sme náš joystick na emuláciu klávesnice. Používatelia bez joysticku tak môžu stále ovládať robota priamo z klávesnice, ostatní však môžu používať joystick.

Na to sme mali iba Arduino Uno, ktoré nemá možnosť používať knižnicu, preto sme ho naprogramovali priamo pomocou protokolu USB známeho ako Device Firmware Update (DFU), ktorý umožňuje arduino flashovať pomocou generického firmvéru klávesnice USB HID. Inými slovami, keď je arduino zapojené do USB, už nie je rozpoznané ako arduino, ale ako klávesnica!

Krok 12: Joystick - schéma zapojenia

Joystick - schéma zapojenia
Joystick - schéma zapojenia

Tu je návod, ako sme zapojili joystick.

Krok 13: Joystick - emulátor klávesnice

Aby vaše Arduino Uno mohlo emulovať klávesnicu, musíte čip Ardeaino 16u2 na Arduine naprogramovať priamo prostredníctvom manuálnej aktualizácie firmvéru zariadenia (DFU). Nasledujúce kroky popíšu proces pre počítač so systémom Windows a dúfajme, že vám pomôžu vyhnúť sa niektorým problémom, s ktorými sme sa stretli.

Prvým krokom je manuálne zapísanie ovládača USB Atmel do Arduina, aby bol rozpoznaný ako USB, a nie ako Arduino, ktorý mu umožní blikať pomocou programátora FLIP.

  1. Stiahnite si Atmel's FLIP Programmer odtiaľto
  2. Pripojte svoje Arduino Uno
  3. Prejdite do Správcu zariadení a nájdite Arduino. Bude pod COM alebo Neznáme zariadenie. Pripojte ho a odpojte, aby ste sa uistili, že je to správne zariadenie.
  4. Akonáhle nájdete Arduino Uno v Správcovi zariadení, kliknite naň pravým tlačidlom myši a zvoľte vlastnosti> Ovládač> Aktualizovať ovládač> V počítači vyhľadať softvér ovládača> Nechám si vybrať zo zoznamu dostupných ovládačov v počítači> Z diskety> Prejsť na súbor "atmel_usb_dfu.inf" a vyberte ho. To by malo byť v priečinku, kde bol nainštalovaný váš Atmel FLIP Programmer. Na mojom počítači je tu: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Nainštalujte ovládač
  6. Teraz sa vráťte do Správcu zariadení, mali by ste vidieť „zariadenia Atmel USB“s Arduino Uno, ktoré je teraz označené ako ATmega16u2!

Teraz, keď počítač rozpozná Arduino Uno ako zariadenie USB, môžeme pomocou programátora FLIP nahrať 3 samostatné súbory a zmeniť ich na klávesnicu.

Ak ste odpojili Arduino Uno po prvej časti, znova ho zapojte.

  1. Otvorte FLIP
  2. Resetujte Arduino Uno krátkym pripojením napájania k zemi.
  3. Kliknite na položku Výber zariadenia (ikona ako mikročip) a vyberte ATmega16U2
  4. Kliknite na položku Vybrať komunikačné médium (ikona ako kábel USB) a vyberte položku USB. Ak ste správne dokončili prvú časť, ostatné sivé tlačidlá by mali byť použiteľné.
  5. Prejdite na Súbor> Načítať hexadecimálny súbor> a nahrajte súbor Arduino-usbserial-uno.hex
  6. V okne FLIP by ste mali vidieť tri sekcie: Operations Flow, FLASH Buffer Information a ATmega16U2. V toku činností začiarknite políčka Vymazať, Programovať a Overiť a potom kliknite na položku Spustiť.
  7. Po dokončení tohto procesu kliknite na položku Spustiť aplikáciu v sekcii ATmega16U2.
  8. Zapojte arduino do zásuvky a odpojte ho od počítača a znova ho zapojte.
  9. Resetujte Arduino Uno krátkym pripojením napájania k zemi.
  10. Otvorte Arduino IDE a nahrajte súbor JoyStickControl_Code.ino na dosku.
  11. Zapnite arduino tak, že ho odpojíte od počítača a znova zapojíte.
  12. Resetujte arduino krátkym pripojením napájania k zemi.
  13. Vráťte sa na stránku FLIP a uistite sa, že Výber zariadenia hovorí Atmega16U2
  14. Kliknite na položku Vybrať komunikačné médium a vyberte položku USB.
  15. Prejdite na Súbor> Načítať hexadecimálny súbor> a nahrajte súbor Arduino-keyboard-0.3.hex
  16. V okne FLIP by ste mali vidieť tri sekcie: Operations Flow, FLASH Buffer Information a ATmega16U2. V toku činností začiarknite políčka Vymazať, Programovať a Overiť a potom kliknite na položku Spustiť.
  17. Po dokončení tohto procesu kliknite na položku Spustiť aplikáciu v sekcii ATmega16U2.
  18. Zapojte arduino do zásuvky a odpojte ho od počítača a znova ho zapojte.
  19. Keď teraz prejdete do Správcu zariadení, v časti Klávesnice by malo byť nové zariadenie klávesnice HID.
  20. Otvorte poznámkový blok alebo ľubovoľný textový editor a začnite pohybovať joystickom. Mali by ste vidieť zadávané čísla!

Ak chcete zmeniť kód v náčrte Arduino, napríklad písať nové príkazy na joystick, budete ho musieť zakaždým blikať so všetkými 3 súbormi.

Niekoľko užitočných odkazov: Arduino DFUAtLibUsbDfu.dll nebol nájdený

Tento emulátor klávesnice je založený na tomto návode od Michaela z 24. júna 2012.

Krok 14: Sieťová komunikácia

Sieťová komunikácia
Sieťová komunikácia

Na prijímanie video streamu a odosielanie príkazov robotovi z ľubovoľného miesta na svete potrebujeme spôsob získavania údajov z a do ESP32-CAM. To sa deje v dvoch častiach, obsluhe pripojenia vo vašej lokálnej sieti a verejnom serveri. Na tento účel stiahnite tri súbory:

  • Handlers.py: prenáša informácie z ESP32-CAM a verejného servera (testované na Pythone 3.8)
  • Flask_app.py: definuje, ako vaša aplikácia reaguje na prichádzajúce požiadavky.
  • Robot_stream.html: vykresľuje video vo vašom prehliadači a počúva príkazy pomocou klávesnice / joysticku (testované v prehliadači Chrome)

Môžete to kódovať priamo v app_httpd.cpp, ale na jednoduchšie ladenie používame skript Python spustený na počítači pripojenom k rovnakej sieti. Otvorte handlers.py a aktualizujte IP adresu a používateľské meno na svoje vlastné a môžete ísť. Stream sa spustí, keď spustíte tento súbor.

Verejný server Na prístup k všetkému na internete môžete spustiť server s PaaS podľa vlastného výberu. Na pythonanywhere (PA) toto nastavenie trvá menej ako 5 minút:

  1. Zaregistrujte sa a vytvorte si účet
  2. Prejdite na kartu „Web“a kliknite na „Pridať novú webovú aplikáciu“, zvoľte Flask a Python 3.6
  3. Skopírujte súbor flask_app.py do adresára /mysite
  4. Skopírujte robot_stream.html do adresára /mysite /templates
  5. Kliknite na „Znova načítať“

A … ste pripravení!

Vylúčenie zodpovednosti: Tento pracovný postup v sieti je rýchly a jednoduchý, ale veľmi vzdialený od ideálu. Na streamovanie by boli vhodnejšie RTMP alebo zásuvky, ale nie sú podporované na PA a vyžadujú si určité skúsenosti so sieťou a nastavením servera. Odporúča sa tiež pridať nejaký mechanizmus zabezpečenia na ovládanie prístupu.

Krok 15: Dajte to všetko dohromady

Teraz zapnite robota, spustite handlers.py na počítači (pripojenom k rovnakej sieti ako robot) a robota môžete ovládať z prehliadača na základe adresy URL, ktorú nastavíte, kdekoľvek chcete. (napr.

Odporúča: