Kazalo:

Robot za virtualno prisotnost: 15 korakov
Robot za virtualno prisotnost: 15 korakov

Video: Robot za virtualno prisotnost: 15 korakov

Video: Robot za virtualno prisotnost: 15 korakov
Video: World's Largest FREE WILL Debate w/ Top Physicists & Philosophers 2024, November
Anonim
Image
Image
Mobilni avtomobilski robot
Mobilni avtomobilski robot

Ta mobilni robot komunicira s svojim fizičnim okoljem in predstavlja "virtualno prisotnost" osebe, ki ga upravlja na daljavo. Do njega lahko dostopa vsakdo, kjer koli na svetu, da si razdeli dobrote in se igra z vami.

To delo razvijata dve osebi (ena v Nemčiji in ena v ZDA) kot poskus preseganja tradicionalnih sredstev internetne komunikacije z ustvarjanjem fizičnega vmesnika za oddaljeno interakcijo. Ker COVID-19 še naprej vpliva na svet in so vsi odgovorni za omejevanje fizične izpostavljenosti ljudi, poskušamo vrniti oprijemljivo povezavo, ki je del fizične interakcije.

Temelji na ESP32-Camera-Robot-FPV-Teacher-Entry Instructable in spremenjeni tako, da vključuje senzor razdalje, razdeljevalec zdravil in možnost "nadzora od kjer koli na svetu", če imate nekoliko stabilno internetno povezavo.

Zaloge

Projekt ima štiri glavne dele - mobilni robot, razdelilnik čipov, igralno palico in nastavitev omrežne komunikacije.

Mobilni avtomobilski robot

  • Ogledna plošča
  • 2 Kolesni pogonski motor in komplet robotskih podvozjev (vključuje kolesa, enosmerne motorje, montažno ploščo in vijake)
  • Arduino Mega 2560 (če gradite brez senzorja razdalje ali razdelilnika čipov, bo Uno imel dovolj zatičev)
  • (3) 9V baterije (imejte jih še nekaj, saj jih boste odpravili pri odpravljanju napak)
  • LM2596 Napajalni modul DC/DC Buck 3A regulator (ali podoben)
  • ESP32-CAM modul Wifi
  • FT232RL FTDI Serijski pretvornik USB v TTL (za programiranje ESP32-CAM)
  • HC-SR04 Ultrazvočni senzor razdalje
  • L298N Gonilnik motorja
  • (3) LED (katere koli barve)
  • (3) 220 ohmski upori

Dozator za čips

  • (2) Servomotorji SG90
  • Karton / Karton

Igralna palica

  • Arduino Uno
  • Modul igralne palice
  • Mini plošča, (1) LED, (1) 220 ohmski upor (neobvezno)

Drugo

Veliko skakalnih žic za lesene plošče Dodatni karton / karton Trak ŠkarjeRavnilo / merilni trakMalen izvijač Philips Majhen ploski izvijač

Potrpežljivost =)

Korak: Mobilni robot avto

Podvozje Robot Car služi kot mobilna platforma z Arduino MEGA kot glavnim mikrokrmilnikom, ki poganja motorje, bere vrednosti senzorjev in aktivira servomotorje. Večina dejanj se izvede tako, da Arduino MEGA po serijski komunikaciji prejme ukaze, poslane iz ESP32-CAM. Medtem ko ESP32 omogoča prenos kamere v živo za nadzor robota, je njegova druga funkcija upravljanje brezžične povezave med robotom in strežnikom, kar uporabnikom omogoča upravljanje z vsega sveta. ESP32 prejema ukaze s spletne strani s pritiskom na tipko in jih kot vrednosti char pošlje v Arduino MEGA. Na podlagi prejete vrednosti bo avto šel naprej, nazaj itd. Ker je daljinsko upravljanje prek interneta odvisno od številnih zunanjih dejavnikov, vključno z veliko zakasnitvijo, slabo kakovostjo toka in celo odklopi, je vgrajen senzor razdalje, ki preprečuje, da bi se robot zrušil v predmete.*Zaradi visokih in nihajočih potreb po moči čipa ESP32 je za uporabo z napajanjem iz akumulatorja priporočljiv regulator napajanja (glejte diagram ožičenja).

2. korak: Mobilni robotski avto - vezje

Mobilni robotski avtomobil - vezje
Mobilni robotski avtomobil - vezje

Vodili vas bomo skozi sestavo tega postopka.

Korak: Mobilni robotski avtomobil - montaža (motorji)

Mobilni robotski avtomobil - montaža (motorji)
Mobilni robotski avtomobil - montaža (motorji)

Ko sestavite ohišje 2WD, začnemo s povezovanjem motorjev in akumulatorja na Arduino MEGA prek gonilnika L298N.

4. korak: Mobilni robotski avtomobil - montaža (senzor razdalje)

Mobilni robot - montaža (senzor razdalje)
Mobilni robot - montaža (senzor razdalje)

Ker je za povezovanje kar nekaj komponent, dodajmo osnovo, da lahko lažje povežemo napajanje in deljena tla. Ko ponovno organiziramo žice, povežemo senzor razdalje in ga pritrdimo na sprednji strani robota.

5. korak: Mobilni robotski avtomobil - montaža (ESP32 CAM)

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

Nato priključite modul ESP32-CAM in ga pritrdite poleg senzorja razdalje blizu sprednjega dela robota. Ne pozabite, da ta precej lahka komponenta potrebuje lastno baterijo in regulator DC.

Korak 6: Mobilni robotski avtomobil - montaža (razpršilnik čipov)

Mobilni robot avtomobil - montaža (razpršilnik čipov)
Mobilni robot avtomobil - montaža (razpršilnik čipov)

Zdaj pa dodajmo razdeljevalec čipov (več o tem v razdelku »Razpršilnik čipov«). Povežite dva servomotorja v skladu z diagramom Fritzing in razdelilnik pritrdite na rep robota.

Korak 7: Mobilni robotski avto - montaža (piškotki!)

Mobilni robot - montaža (piškotki!)
Mobilni robot - montaža (piškotki!)

Nazadnje v dozirnik dodamo priboljške!

8. korak: Mobilni robotski avto - Arduino koda

RobotCar_Code je koda, ki jo boste morali naložiti na Arduino Mega.

Takole deluje: Arduino posluša bajte, ki jih pošlje iz ESP32 po serijski komunikaciji na pasu 115200. Na podlagi prejetega bajta se bo avto premikal naprej, nazaj, levo, desno itd. Tako, da bo motorjem poslal visoko ali nizko napetost za nadzor smeri, pa tudi spremenljivko PWM med 0-255 za nadzor hitrosti. Da bi se izognili trkom, ta koda bere tudi vrednosti, ki prihajajo iz senzorja razdalje, in če je razdalja manjša od določenega praga, se robot ne premakne naprej. Nazadnje, če Arduino prejme ukaz za točenje poslastice, bo aktiviral servomotorje v razdelilniku čipov.

9. korak: Mobilni robotski avtomobil - koda ESP32

ESP32 omogoča komunikacijo med strežnikom in Arduinom prek Wi -Fi -ja. Programiran je ločeno od Arduina in ima svojo kodo:

  • ESP32_Code.ino je koda, s katero ESP32 pošilja podatke v Arduino
  • app_httpd.cpp je koda, ki je potrebna za privzeti spletni strežnik ESP32 in nastavi funkcijo za poslušanje pritiskov tipk. Dobro za odpravljanje napak in testiranje na lokalnem wifiju. Ne uporablja se za komunikacijo zunaj lokalnega omrežja.
  • camera_index.h je html koda za privzeto spletno aplikacijo
  • camera_pins.h definira nožice, odvisno od modela ESP32

Koda ESP32 uporablja knjižnico Wifi in dodatek ESP32, ki ju je mogoče namestiti v Arduino IDE tako:

  1. V Arduino IDE pojdite na Datoteka> Nastavitve
  2. Nato na zavihku Nastavitve pod URL -jem dodatnega upravitelja plošč vnesite naslednje "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Zdaj odprite upravitelja plošč in pojdite na Orodja> deska> Upravitelj plošč in poiščite ESP32 tako, da vnesete »ESP32«
  4. Videti bi morali "esp32 by Espressif Systems". Kliknite Namesti.
  5. Zdaj je treba namestiti dodatek ESP32. Če želite preveriti, se vrnite v Arduino IDE in pojdite na Orodja> Kartica in izberite »ESP32 Wrover Module«.
  6. Ponovno pojdite na Orodja> Hitrost nalaganja in nastavite na "115200".
  7. Nazadnje pojdite na Orodja> Shema particij in nastavite na "Ogromna aplikacija (3 MB brez OTA/1 MB SPIFFS)
  8. Ko to dokončate, priporočam, da sledite tej vadnici RandomNerdTutorials, ki podrobno razlaga, kako dokončati nastavitev ESP32 in naložiti kodo s programerjem FTDI Programiranje ESP32

10. korak: Razpršilnik za čips

Dozator za čips
Dozator za čips

Dozator za čips je poceni dodatek k mobilnemu robotu, ki lahko vpliva na lokalno okolje in komunicira z ljudmi / živalmi tako, da pusti okusno poslastico. Sestavljen je iz zunanje škatle iz kartona z dvema servomotorjema, pa tudi iz notranje kartuše iz kartona, v kateri so shranjeni predmeti (na primer sladkarije ali pasji priboljški). En servo deluje kot vrata, drugi pa potisne izdelek ven.

*Vse mere so v milimetrih

11. korak: igralna palica

Igralna palica
Igralna palica

Čeprav je upravljanje robota s tipkovnico lahko zabavno, je uporaba krmilne palice še bolj zabavna in intuitivna, kjer robot reagira neposredno glede na smer, ki jo pritisnete. Ker se ta robot aktivira s pritiski tipk, zabeleženimi na spletni strani, smo za posnemanje tipkovnice potrebovali krmilno palčko. Na ta način lahko uporabniki brez krmilne palice še vedno upravljajo robota neposredno s tipkovnice, drugi pa lahko uporabljajo krmilno palčko.

V ta namen smo imeli samo Arduino Uno, ki nima možnosti uporabe knjižnice, zato smo ga programirali neposredno z uporabo protokola USB, znanega kot Posodobitev vdelane programske opreme naprave (DFU), ki omogoča, da se arduino utripa z generično strojno programsko opremo USB HID.. Z drugimi besedami, ko je arduino priključen na USB, se ne prepozna več kot arduino, ampak kot tipkovnica!

12. korak: Krmilna palica - vezje

Joystick - vezje
Joystick - vezje

Evo, kako smo priklopili igralno palico.

Korak: Joystick - Emulator tipkovnice

Če želite, da vaš Arduino Uno posnema tipkovnico, morate neposredno programirati čip Atmega16u2 na Arduinu prek ročne posodobitve vdelane programske opreme naprave (DFU). Naslednji koraki bodo opisali postopek za računalnik z operacijskim sistemom Windows in upamo, da se boste izognili nekaterim težavam, na katere smo naleteli.

Prvi korak je ročni zapis gonilnika Atmel usb v Arduino, tako da je prepoznan kot USB in ne kot Arduino, kar mu omogoča bliskanje s programerjem FLIP.

  1. Prenesite Atmelov programer FLIP od tukaj
  2. Priključite svoj Arduino Uno
  3. Pojdite v Upravitelj naprav in poiščite Arduino. To bo pod COM ali neznana naprava. Priključite in izklopite, da zagotovite, da je to prava naprava.
  4. Ko v upravitelju naprav najdete Arduino Uno, ga kliknite z desno miškino tipko in izberite lastnosti> Gonilnik> Posodobi gonilnik> Prebrskaj moj računalnik za programsko opremo gonilnika> Naj izberem s seznama gonilnikov, ki so na voljo v mojem računalniku> Najdi disk> Poišči datoteko "atmel_usb_dfu.inf" in jo izberite. To bi moralo biti v mapi, kjer je bil nameščen vaš programer Atmel FLIP. V mojem računalniku je tukaj: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Namestite gonilnik
  6. Zdaj se vrnite v Upravitelj naprav, kjer bi morali videti "Atmel USB naprave" z Arduino Uno, ki je zdaj označen kot ATmega16u2!

Zdaj, ko računalnik prepozna Arduino Uno kot napravo USB, ga lahko s programerjem FLIP utripamo s tremi ločenimi datotekami in ga spremenimo v tipkovnico.

Če ste po prvem delu odklopili Arduino Uno, ga znova priključite.

  1. Odprite FLIP
  2. Ponastavite Arduino Uno tako, da na kratko priključite napajanje na ozemljitev.
  3. Kliknite Izbor naprave (ikona kot mikročip) in izberite ATmega16U2
  4. Kliknite Izberi medij za komunikacijo (ikona, kot je USB kabel) in izberite USB. Če ste prvi del pravilno izpolnili, bi morali drugi sivi gumbi postati uporabni.
  5. Pojdite na Datoteka> Naloži šestnajstiško datoteko> in naložite datoteko Arduino-usbserial-uno.hex
  6. V oknu FLIP bi morali videti tri razdelke: Operacijski tok, Informacije o vmesnem pomnilniku FLASH in ATmega16U2. V poteku operacij potrdite polja za Izbriši, Program in Preveri in kliknite Zaženi.
  7. Ko se ta postopek zaključi, kliknite Zaženi aplikacijo v razdelku ATmega16U2.
  8. Vklopite arduino tako, da ga odklopite iz računalnika in ga znova priključite.
  9. Ponastavite Arduino Uno tako, da na kratko priključite napajanje na ozemljitev.
  10. Odprite Arduino IDE in naložite datoteko JoyStickControl_Code.ino na ploščo.
  11. Vklopite cikel arduina tako, da ga odklopite iz računalnika in ga znova priključite.
  12. Ponastavite arduino tako, da na kratko priključite napajanje na ozemljitev.
  13. Vrnite se na FLIP in se prepričajte, da na izbiri naprave piše Atmega16U2
  14. Kliknite Izberi medij za komunikacijo in izberite USB.
  15. Pojdite na Datoteka> Naloži šestnajstiško datoteko> in naložite datoteko Arduino-keyboard-0.3.hex
  16. V oknu FLIP bi morali videti tri razdelke: Operacijski tok, Informacije o vmesnem pomnilniku FLASH in ATmega16U2. V poteku operacij potrdite polja za Izbriši, Program in Preveri, nato kliknite Zaženi.
  17. Ko se ta postopek zaključi, kliknite Zaženi aplikacijo v razdelku ATmega16U2.
  18. Vklopite arduino tako, da ga odklopite iz računalnika in ga znova priključite.
  19. Zdaj, ko greste v Upravitelj naprav, bi morala biti pod Tipkovnice nova naprava HID tipkovnice.
  20. Odprite beležnico ali kateri koli urejevalnik besedil in začnite premikati krmilno palčko. Videti bi morali vnos številk!

Če želite spremeniti kodo v skici Arduino, na primer pisati nove ukaze na igralno palico, jo boste morali vsakič utripati z vsemi tremi datotekami.

Nekaj koristnih povezav: Arduino DFUAtLibUsbDfu.dll ni mogoče najti

Ta emulator tipkovnice temelji na tej vadnici Michaela 24. junija 2012.

14. korak: Omrežna komunikacija

Omrežna komunikacija
Omrežna komunikacija

Za sprejem videotoka in pošiljanje ukazov robotu od koder koli po svetu potrebujemo način pridobivanja podatkov v ESP32-CAM in iz njega. To poteka v dveh delih: upravljalnik povezav v lokalnem omrežju in javni strežnik. Če želite to narediti, prenesite tri datoteke:

  • Handlers.py: posreduje informacije iz ESP32-CAM in javnega strežnika (preizkušeno na Pythonu 3.8)
  • Flask_app.py: določa, kako se vaša aplikacija odziva na dohodne zahteve.
  • Robot_stream.html: upodobi video v brskalniku in posluša ukaze prek tipkovnice / igralne palice (preizkušeno v Chromu)

Upravljavec povezave To lahko kodirate neposredno v app_httpd.cpp, vendar za lažje odpravljanje napak uporabljamo skript Python, ki se izvaja v računalniku, povezanem v isto omrežje. Odprite handlers.py in posodobite naslov IP in uporabniško ime na svoje in pripravljeni ste. Tok se bo začel, ko zaženete to datoteko.

Javni strežnik Za dostop do vsega v internetu lahko zaženete strežnik s PaaS po vaši izbiri. Na pythonanywhere (PA) nastavitev traja manj kot 5 minut:

  1. Prijavite se za račun in se prijavite
  2. Pojdite na zavihek »Splet« in pritisnite »Dodaj novo spletno aplikacijo«, izberite Flask in Python 3.6
  3. Kopirajte flask_app.py v imenik /mysite
  4. Kopirajte robot_stream.html v imenik /mysite /templates
  5. Kliknite »Ponovno naloži«

In … vse je pripravljeno!

Izjava o omejitvi odgovornosti: Ta potek dela v omrežju je hiter in preprost, vendar zelo daleč od idealnega. RTMP ali vtičnice bi bile bolj primerne za pretakanje, vendar niso podprte v PA in zahtevajo nekaj izkušenj z omrežjem in nastavitvijo strežnika. Priporočljivo je tudi, da dodate nekaj varnostnega mehanizma za nadzor dostopa.

Korak 15: Vse skupaj

Zdaj vklopite svojega robota, zaženite handlers.py v računalniku (povezan z istim omrežjem kot robot) in robota lahko upravljate iz brskalnika glede na URL, ki ste ga nastavili od koder koli želite. (npr.

Priporočena: