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, Novembar
Anonim
Image
Image
Mobilni robotski automobil
Mobilni robotski automobil

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

Rad ovdje razvijaju dvije osobe (jedna u Njemačkoj i jedna u SAD-u) kao pokušaj da se krene dalje od 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.

Zasnovan je na ESP32-kameri-robotu-FPV-ulazu nastavnika koji se može instruktirati i modificiran tako da uključuje senzor udaljenosti, dozator za tretiranje i mogućnost "kontrole s bilo kojeg mjesta na svijetu", pod uvjetom da imate donekle stabilnu internetsku vezu.

Supplies

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

Mobilni robotski automobil

  • Breadboard
  • 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 dozatora čipova, Uno će imati dovoljno pinova)
  • (3) 9V baterije (imajte ih još nekoliko jer ćete ih isprazniti otklanjanjem greš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
  • L298N Vozač motora
  • (3) LED diode (bilo koje boje)
  • (3) Otpornici od 220 ohma

Dozator za čips

  • (2) SG90 servo uređaji
  • Karton / Karton

Joystick

  • Arduino Uno
  • Joystick Module
  • Mini ploča, (1) LED, (1) otpornik od 220 ohma (opcionalno)

Ostalo

Puno žica za preskakanje ploča, dodatni karton / kartonTrakavice, škare, ravnalo / mjerna traka, mali odvijač Philips, mali odvijač s ravnom glavom

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 akcija se izvodi tako što Arduino MEGA prima naredbe putem serijske komunikacije, poslane s ESP32-CAM-a. Dok ESP32 pruža prijenos uživo kamerom za kontrolu robota, njegova druga funkcija je upravljanje bežičnom vezom između robota i poslužitelja, čime se korisnicima omogućuje kontrola s bilo kojeg mjesta 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 se kretati prema naprijed, unatrag itd. Budući da daljinsko upravljanje putem interneta ovisi o mnogim vanjskim faktorima, uključujući veliku latenciju, lošu kvalitetu prijenosa, pa čak i prekide 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 korištenje regulatora napajanja za napajanje iz baterije (pogledajte dijagram ožičenja).

Korak 2: Mobilni robotski automobil - električni dijagram

Mobilni robotski automobil - shema
Mobilni robotski automobil - shema

Provest ć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 matičnu ploču kako bismo lakše povezali napajanje i zajedničko tlo. Nakon što ponovno organiziramo žice, spojite senzor udaljenosti i popravite 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"). Povežite 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 dodajemo 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 opsegu 115200. Na osnovu primljenog bajta, automobil će se kretati naprijed, nazad, lijevo, desno itd. Slanjem visokog ili niskog napona na motore za kontrolu smjera, 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 sa 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 wifi -u. 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

ESP32 kôd 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". Kliknite Instaliraj.
  5. Sada bi trebao biti instaliran dodatak ESP32. Za provjeru vratite se na Arduino IDE i idite na Tools> Board i odaberite "ESP32 Wrover Module".
  6. Ponovo 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 ovo 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 kartonske kutije s 2 servo pogona montirana unutra, 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

Iako može biti zabavno upravljati robotom pomoću tipkovnice, još je zabavnije i intuitivnije koristiti joystick, gdje robot reagira izravno na temelju smjera u kojem pritisnete. Budući da se ovaj robot aktivira pritiskom na tipku snimljenu na web stranici, potreban nam je joystick za oponašanje tastature. Na ovaj način korisnici bez džojstika i dalje mogu upravljati robotom direktno sa tastature, ali drugi mogu koristiti džojstik.

Za ovo smo imali samo Arduino Uno koji nema mogućnost korištenja biblioteke, pa smo ga programirali izravno koristeći USB protokol poznat pod imenom Ažuriranje firmvera uređaja (DFU) koji omogućava bljeskanje arduina s generičkim USB HID firmverom za tipkovnicu. Drugim riječima, kada je arduino priključen na USB više se ne prepoznaje kao arduino već kao tastatura!

Korak 12: Joystick - električni dijagram

Joystick - električni dijagram
Joystick - električni dijagram

Evo kako smo povezali upravljačku palicu.

Korak 13: Joystick - Emulator tastature

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

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

  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 bili sigurni da je ovo ispravan uređaj.
  4. Nakon što ste pronašli Arduino Uno u Upravitelju uređaja, kliknite desnim gumbom miša i odaberite svojstva> Upravljački program> Ažuriraj upravljački program> Pregledaj softver za upravljački program na mom računaru> Dopusti mi da izaberem sa popisa dostupnih upravljačkih programa na svom računaru> Imaj disk> Prebaci na datoteku "atmel_usb_dfu.inf" i odaberite je. Ovo bi trebalo biti u mapi u kojoj je instaliran vaš Atmel FLIP programator. Na mom računaru 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, ponovo ga uključite.

  1. Otvorite FLIP
  2. Resetirajte Arduino Uno kratkim priključivanjem napajanja na masu.
  3. Kliknite 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 File> Load Hex File> i učitajte datoteku Arduino-usbserial-uno.hex
  6. U prozoru FLIP trebali biste vidjeti tri odjeljka: Operacijski tok, FLASH informacije o međuspremniku i ATmega16U2. U toku operacija potvrdite okvire za brisanje, program i provjeru, a zatim kliknite Pokreni.
  7. Kada se ovaj proces završi, kliknite Pokreni aplikaciju u odjeljku ATmega16U2.
  8. Uključite ciklus arduina tako što ćete ga isključiti iz računara i ponovo ga uključiti.
  9. Resetirajte Arduino Uno kratkim priključivanjem napajanja na masu.
  10. Otvorite Arduino IDE i postavite datoteku JoyStickControl_Code.ino na ploču.
  11. Uključite ciklus arduina tako što ćete ga isključiti iz računara i ponovo ga uključiti.
  12. Resetirajte arduino kratkim priključivanjem napajanja na masu.
  13. Vratite se na FLIP, provjerite da li odabir uređaja kaže Atmega16U2
  14. Pritisnite Odaberi medij komunikacije i odaberite USB.
  15. Idite na File> Load Hex File> i učitajte datoteku Arduino-keyboard-0.3.hex
  16. U prozoru FLIP trebali biste vidjeti tri odjeljka: Operacijski tok, FLASH informacije o međuspremniku i ATmega16U2. U toku operacija potvrdite okvire za brisanje, program i provjeru, a zatim kliknite Pokreni.
  17. Kada se ovaj proces završi, kliknite Pokreni aplikaciju u odjeljku ATmega16U2.
  18. Uključite ciklus arduina tako što ćete ga isključiti iz računara i ponovo ga uključiti.
  19. Sada, kada odete u Upravitelj uređaja, trebao bi biti novi HID uređaj sa tastaturom ispod Tastature.
  20. Otvorite bilježnicu ili bilo koji uređivač teksta i počnite pomicati joystick. Trebali biste vidjeti upisivanje brojeva!

Ako želite promijeniti kôd u Arduino skici, na primjer pisanjem 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 tastature zasnovan je na ovom vodiču od Michaela 24. juna 2012.

Korak 14: Mrežna komunikacija

Mrežna komunikacija
Mrežna komunikacija

Da bismo primali video stream i slali naredbe robotu s bilo kojeg mjesta na svijetu, potreban nam je način dobivanja podataka na ESP32-CAM i sa njega. 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 sa ESP32-CAM-a i javnog servera (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 / joysticka (testirano na Chromeu)

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

Javni server Za pristup svemu na internetu možete pokrenuti server sa 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 na „Ponovo učitaj“

I … sve je spremno!

Odricanje od odgovornosti: Ovaj radni proces umrežavanja je brz i jednostavan, ali 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đe se preporučuje da dodate neki sigurnosni mehanizam za kontrolu pristupa.

Korak 15: Sve zajedno

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

Preporučuje se: