Sadržaj:

Robot za virtualnu prisutnost: 15 koraka
Robot za virtualnu prisutnost: 15 koraka

Video: Robot za virtualnu prisutnost: 15 koraka

Video: Robot za virtualnu prisutnost: 15 koraka
Video: КНДР: туристу из США «дали» 15 лет каторги за сорванный плакат (новости) 2024, Studeni
Anonim
Image
Image
Mobilni robotski automobil
Mobilni robotski automobil

Ovaj mobilni robot komunicira sa svojim fizičkim okruženjem, predstavljajući "virtualnu prisutnost" osobe koja daljinski upravlja njime. Svakome, bilo gdje u svijetu, može pristupiti kako bi izdao poslastice i igrao se s vama.

Ovdje su rad razvile dvije osobe (jedna u Njemačkoj i jedna u SAD-u) kao pokušaj prelaska izvan tradicionalnih sredstava internetske komunikacije stvaranjem fizičkog sučelja za udaljenu interakciju. Kako COVID-19 nastavlja utjecati na svijet, a svi su odgovorni za ograničavanje naše fizičke izloženosti ljudima, pokušavamo vratiti opipljivu vezu koja je dio fizičke interakcije.

Temelji se na ESP32-Camera-Robot-FPV-Teacher-Entry Instructable i modificiranom tako da uključuje senzor udaljenosti, dozator za tretiranje i "kontrolu s bilo kojeg mjesta na svijetu", pod uvjetom da imate donekle stabilnu internetsku vezu.

Pribor

Projekt se sastoji od 4 glavna dijela - mobilnog robotskog automobila, dozatora čipova, upravljačke palice i postavljanja mrežne komunikacije.

Mobilni robotski automobil

  • Oglasna ploča
  • Motor s pogonom na 2 kotača i komplet robota za šasiju (uključuje kotače, istosmjerne motore, montažnu ploču i vijke)
  • Arduino Mega 2560 (ako gradite bez senzora udaljenosti ili raspršivača čipova, Uno će imati dovoljno pinova)
  • (3) 9V baterije (imajte ih još nekoliko jer ćete ih isprazniti otklanjanjem pogrešaka)
  • LM2596 Modul napajanja DC/DC Buck 3A regulator (ili slično)
  • ESP32-CAM Wifi modul
  • FT232RL FTDI Serijski pretvarač USB u TTL (za programiranje ESP32-CAM)
  • HC-SR04 Ultrazvučni senzor udaljenosti
  • Vozač motora L298N
  • (3) LED diode (bilo koje boje)
  • (3) Otpornici od 220 ohma

Dozator za čips

  • (2) Servomotori SG90
  • Karton / karton

Joystick

  • Arduino Uno
  • Modul joystick
  • Mini Breadboard, (1) LED, (1) 220 Ohm otpornik (izborno)

Ostalo

Puno žica za premošćivanje krušne ploče Dodatni karton / kartonTrakaviceŠkareVoljesnik / Mjerna trakaMali Philips odvijačMali ravni odvijač

Strpljenje =)

Korak 1: Mobilni robotski automobil

Šasija Robot Car služi kao mobilna platforma, s Arduino MEGA-om kao glavnim mikrokontrolerom koji pokreće motore, čita vrijednosti senzora i aktivira servo pogone. Većina radnji izvodi se tako da Arduino MEGA prima naredbe putem serijske komunikacije, poslane s ESP32-CAM-a. Dok ESP32 omogućuje prijenos uživo kamerom za upravljanje robotom, njegova druga funkcija je upravljanje bežičnom vezom između robota i poslužitelja, pa korisnicima omogućuje kontrolu nigdje u svijetu. ESP32 prima naredbe s web stranice pritiskom na tipku i šalje ih u Arduino MEGA kao char vrijednosti. Na temelju primljene vrijednosti automobil će ići naprijed, natrag itd. Budući da daljinsko upravljanje putem interneta ovisi o mnogim vanjskim čimbenicima, uključujući visoku latenciju, lošu kvalitetu prijenosa, pa čak i prekid veze, ugrađen je senzor udaljenosti koji sprječava pad robota. u objekte.*Zbog visokih i promjenjivih zahtjeva za snagom ESP32 čipa, preporučuje se regulator napajanja za korištenje s napajanjem iz baterije (pogledajte dijagram ožičenja).

Korak 2: Mobilni robotski automobil - shema

Mobilni robotski automobil - shema
Mobilni robotski automobil - shema

Proći ćemo vas kroz sastavljanje ovog koraka po korak.

Korak 3: Mobilni robotski automobil - montaža (motori)

Mobilni robotski automobil - montaža (motori)
Mobilni robotski automobil - montaža (motori)

Nakon što sastavite 2WD šasiju, počinjemo povezivanjem motora i baterije na Arduino MEGA preko upravljačkog programa L298N.

Korak 4: Mobilni robotski automobil - montaža (senzor udaljenosti)

Mobilni robotski automobil - montaža (senzor udaljenosti)
Mobilni robotski automobil - montaža (senzor udaljenosti)

Kako postoji dosta komponenti za povezivanje, dodajmo ploču za lakše povezivanje napajanja i zajedničkog uzemljenja. Nakon što ponovno organiziramo žice, spojimo senzor udaljenosti i popravimo ga ispred robota.

Korak 5: Mobilni robotski automobil - montaža (ESP32 CAM)

Mobilni robotski automobil - montaža (ESP32 CAM)
Mobilni robotski automobil - montaža (ESP32 CAM)

Zatim spojite ESP32-CAM modul i pričvrstite ga pored senzora udaljenosti blizu prednje strane robota. Upamtite da ova komponenta koja troši mnogo energije zahtijeva vlastitu bateriju i DC regulator.

Korak 6: Mobilni robotski automobil - montaža (dozator za čips)

Mobilni robotski automobil - montaža (dozator za čips)
Mobilni robotski automobil - montaža (dozator za čips)

Sada dodajmo dozator za čips (više o tome u odjeljku "Dozator za čips"). Spojite dva servo motora prema Fritzing dijagramu i pričvrstite dozator na rep robota.

Korak 7: Mobilni robotski automobil - montaža (kolačići!)

Mobilni robotski automobil - montaža (kolačići!)
Mobilni robotski automobil - montaža (kolačići!)

Na kraju dodamo poslastice u dozator!

Korak 8: Mobilni robotski automobil - Arduino kod

RobotCar_Code je kod koji ćete morati učitati na Arduino Mega.

Evo kako to funkcionira: Arduino sluša bajtove koji se šalju s ESP32 putem serijske komunikacije na pojasu 115200. Na temelju primljenog bajta, automobil će se kretati naprijed, natrag, lijevo, desno itd. Slanjem visokog ili niskog napona na motore za upravljanje smjerom, kao i PWM varijablu između 0-255 za kontrolu brzine. Kako bi se izbjegli sudari, ovaj kôd također čita vrijednosti koje dolaze s senzora udaljenosti, a ako je udaljenost manja od zadanog praga, robot se neće pomaknuti naprijed. Na kraju, ako Arduino primi naredbu za izdavanje poslastice, aktivirat će servosisteme u dozatoru za čips.

Korak 9: Mobilni robotski automobil - ESP32 kod

ESP32 omogućuje komunikaciju između poslužitelja i Arduina putem Wi -Fi -ja. Programiran je odvojeno od Arduina i ima svoj kod:

  • ESP32_Code.ino je kod za ESP32 za slanje informacija na Arduino
  • app_httpd.cpp je kôd potreban za zadani ESP32 web poslužitelj i postavio funkciju da sluša pritiske tipki. Dobro za ispravljanje pogrešaka i testiranje na lokalnom wifiju. Ne koristi se za komunikaciju izvan lokalne mreže.
  • camera_index.h je html kôd za zadanu web aplikaciju
  • camera_pins.h definira pinove ovisno o modelu ESP32

Kôd ESP32 koristi Wifi biblioteku, kao i dodatak ESP32, koji se može instalirati u Arduino IDE slijedeći ove korake:

  1. U Arduino IDE idite na Datoteka> Postavke
  2. Zatim na kartici Postavke pod URL -om Dodatnog upravitelja ploča unesite sljedeće "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Sada otvorite Upravitelj ploča i idite na Alati> Ploča> Upravitelj ploča i potražite ESP32 upisivanjem "ESP32"
  4. Trebali biste vidjeti "esp32 by Espressif Systems". Pritisnite Instaliraj.
  5. Sada bi trebao biti instaliran dodatak ESP32. Za provjeru vratite se na Arduino IDE i idite na Alati> Ploča i odaberite "ESP32 Wrover Module".
  6. Ponovno idite na Alati> Brzina prijenosa i postavite je na "115200".
  7. Na kraju, idite na Alati> Shema particija i postavite je na "Ogromna aplikacija (3 MB bez OTA/1 MB SPIFFS)
  8. Nakon što to dovršite, preporučujem da slijedite ovaj vodič putem RandomNerdTutorials koji detaljno objašnjava kako dovršiti postavljanje ESP32 i učitati kôd pomoću programatora FTDI Programiranje ESP32

Korak 10: Dozator za čips

Dozator za čips
Dozator za čips

Dozator za čips jeftin je dodatak mobilnom robotu koji mu omogućuje utjecaj na lokalno okruženje i interakciju s ljudima / životinjama ostavljajući ukusnu poslasticu. Sastoji se od vanjske kutije od kartona s 2 servo upravljača, kao i unutarnje kartonske patrone u kojoj se drže predmeti (poput slatkiša ili poslastica za pse) za izdavanje. Jedan servo djeluje kao kapija dok drugi gura predmet van.

*Sve dimenzije su u milimetrima

Korak 11: Joystick

Joystick
Joystick

Premda može biti zabavno upravljati robotom pomoću tipkovnice, još je zabavnije i intuitivnije koristiti joystick, gdje robot izravno reagira ovisno o smjeru u kojem pritisnete. Budući da se ovaj robot aktivira pritiskom tipki snimljenih na web stranici, trebao nam je joystick za oponašanje tipkovnice. Na ovaj način korisnici bez upravljačke palice i dalje mogu upravljati robotom izravno s tipkovnice, ali drugi mogu koristiti joystick.

Za to smo imali samo Arduino Uno koji nema mogućnost korištenja biblioteke pa smo ga programirali izravno pomoću USB protokola poznatog kao Device Firmware Update (DFU) koji omogućuje bljeskanje arduina s generičkim USB HID firmverom tipkovnice. Drugim riječima, kada je arduino priključen na USB više se ne prepoznaje kao arduino već kao tipkovnica!

Korak 12: Joystick - kružni dijagram

Joystick - shema kruga
Joystick - shema kruga

Evo kako smo povezali upravljačku palicu.

Korak 13: Joystick - Emulator tipkovnice

Da bi vaš Arduino Uno oponašao tipkovnicu, morate izravno programirati čip Atmega16u2 na Arduinu putem ručnog ažuriranja firmvera uređaja (DFU). Sljedeći koraci opisat će postupak za Windows stroj i nadamo se da će vam pomoći da izbjegnete neke probleme na koje smo naišli.

Prvi korak je ručno upisivanje USB upravljačkog programa Atmel u Arduino tako da se prepozna kao USB, a ne Arduino što mu omogućuje fleširanje s FLIP programatorom.

  1. Preuzmite Atmelov FLIP programer odavde
  2. Priključite svoj Arduino Uno
  3. Idite u Upravitelj uređaja i pronađite Arduino. Bit će pod COM ili Nepoznati uređaj. Uključite ga i isključite kako biste provjerili je li to ispravan uređaj.
  4. Nakon što ste pronašli Arduino Uno u Upravitelju uređaja, desnom tipkom miša kliknite ga i odaberite svojstva> Upravljački program> Ažuriraj upravljački program> Pregledaj moje računalo za softver upravljačkog programa> Dopustite mi da izaberem s popisa dostupnih upravljačkih programa na svom računalu> Imaj disk> Pregledaj na datoteku "atmel_usb_dfu.inf" i odaberite je. To bi trebalo biti u mapi u kojoj je instaliran vaš Atmel FLIP programator. Na mom računalu je ovdje: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Instalirajte upravljački program
  6. Sada se vratite na Upravitelj uređaja i trebali biste vidjeti "Atmel USB uređaje" s Arduino Uno sada označenim kao ATmega16u2!

Sada kada računalo prepoznaje Arduino Uno kao USB uređaj, pomoću FLIP programatora možemo ga prebrisati s 3 zasebne datoteke i pretvoriti u tipkovnicu.

Ako ste isključili Arduino Uno nakon prvog dijela, ponovno ga uključite.

  1. Otvorite FLIP
  2. Resetirajte Arduino Uno kratkim priključivanjem napajanja na masu.
  3. Pritisnite Odabir uređaja (ikona poput mikročipa) i odaberite ATmega16U2
  4. Pritisnite Odaberi medij za komunikaciju (ikona poput USB kabela) i odaberite USB. Ako ste ispravno izvršili prvi dio, ostali sivi gumbi trebali bi postati upotrebljivi.
  5. Idite na Datoteka> Učitaj šesterokutnu datoteku> i prenesite datoteku Arduino-usbserial-uno.hex
  6. U prozoru FLIP trebali biste vidjeti tri odjeljka: Operacijski tijek, FLASH informacije o međuspremniku i ATmega16U2. U tijeku operacija potvrdite okvire za brisanje, programiranje i provjeru, a zatim kliknite Pokreni.
  7. Nakon što ovaj proces završi, kliknite Pokreni aplikaciju u odjeljku ATmega16U2.
  8. Uključite arduino tako da ga isključite iz računala i ponovo ga uključite.
  9. Resetirajte Arduino Uno kratkim priključivanjem napajanja na masu.
  10. Otvorite Arduino IDE i prenesite datoteku JoyStickControl_Code.ino na ploču.
  11. Uključite arduino tako da ga isključite iz računala i ponovo ga uključite.
  12. Resetirajte arduino kratkim priključivanjem napajanja na masu.
  13. Vratite se na FLIP, pazite da odabir uređaja kaže Atmega16U2
  14. Pritisnite Odaberi medij za komunikaciju i odaberite USB.
  15. Idite na File> Load Hex File> i učitajte datoteku Arduino-keyboard-0.3.hex
  16. U FLIP prozoru trebali biste vidjeti tri odjeljka: Operacijski tijek, FLASH informacije o međuspremniku i ATmega16U2. U tijeku operacija potvrdite okvire za brisanje, programiranje i provjeru, a zatim kliknite Pokreni.
  17. Nakon što ovaj proces završi, kliknite Pokreni aplikaciju u odjeljku ATmega16U2.
  18. Uključite arduino tako da ga isključite iz računala i ponovno ga uključite.
  19. Sada kada odete u Upravitelj uređaja trebao bi se nalaziti novi HID uređaj s tipkovnicom ispod Tipkovnice.
  20. Otvorite bilježnicu ili bilo koji uređivač teksta i počnite pomicati navigacijsku tipku. Trebali biste vidjeti upisivanje brojeva!

Ako želite promijeniti kôd u Arduino skici, na primjer pisanje novih naredbi na joystick, morat ćete ga svaki put prebrisati sa sve 3 datoteke.

Neke korisne veze: Arduino DFUAtLibUsbDfu.dll nije pronađen

Ovaj emulator tipkovnice temelji se na ovom vodiču Michaela 24. lipnja 2012.

Korak 14: Mrežna komunikacija

Mrežna komunikacija
Mrežna komunikacija

Za primanje videotoka i slanje naredbi robotu s bilo kojeg mjesta na svijetu potreban nam je način dobivanja podataka na i s ESP32-CAM-a. To se radi u dva dijela, rukovatelju veze na vašoj lokalnoj mreži i javnom poslužitelju. Preuzmite tri datoteke da biste to postigli:

  • Handlers.py: prenosi informacije s ESP32-CAM-a i javnog poslužitelja (testirano na Pythonu 3.8)
  • Flask_app.py: definira kako vaša aplikacija reagira na dolazne zahtjeve.
  • Robot_stream.html: prikazuje videozapis u vašem pregledniku i sluša naredbe putem tipkovnice / upravljačke palice (testirano na Chromeu)

Rukovalac vezeTo možete kodirati izravno u app_httpd.cpp, ali za lakše otklanjanje pogrešaka koristimo Python skriptu koja radi na računalu spojenom na istu mrežu. Otvorite handlers.py i ažurirajte IP adresu i korisničko ime za svoje i spremni ste za rad. Stream će započeti kada pokrenete ovu datoteku.

Javni poslužitelj Za pristup svemu na internetu možete pokrenuti poslužitelj s PaaS -om po vašem izboru. Na pythonanywhere (PA) postavljanje traje manje od 5 minuta:

  1. Prijavite se za račun i prijavite se
  2. Idite na karticu "Web" i pritisnite "Dodaj novu web aplikaciju", odaberite Flask i Python 3.6
  3. Kopirajte flask_app.py u /mysite direktorij
  4. Kopirajte robot_stream.html u /mysite /templates direktorij
  5. Kliknite "Ponovo učitaj"

I … sve je spremno!

Odricanje od odgovornosti: Ovaj radni proces umrežavanja je brz i jednostavan, ali vrlo daleko od idealnog. RTMP ili utičnice bili bi prikladniji za streaming, ali nisu podržani na PA -u i zahtijevaju određeno iskustvo s umrežavanjem i postavljanjem poslužitelja. Također se preporučuje da dodate neki sigurnosni mehanizam za kontrolu pristupa.

Korak 15: Sve spojite

Sada uključite robota, pokrenite handlers.py na računalu (spojenom na istu mrežu kao i robot) i možete upravljati robotom iz preglednika na temelju URL -a koji ste postavili s bilo kojeg mjesta koje želite. (npr.

Preporučeni: