INHOUDSOPGAWE:
- Voorrade
- Stap 1: Mobiele robotmotor
- Stap 2: Mobiele robotmotor - kringdiagram
- Stap 3: Mobiele robotmotor - samestelling (motors)
- Stap 4: Mobiele robotmotor - samestelling (afstandsensor)
- Stap 5: Mobiele robotmotor - samestelling (ESP32 CAM)
- Stap 6: Mobiele robotmotor - samestelling (skyfdispenser)
- Stap 7: Mobiele robotmotor - samestelling (koekies!)
- Stap 8: Mobiele robotmotor - Arduino -kode
- Stap 9: Mobiele robotmotor - ESP32 -kode
- Stap 10: Chip Dispenser
- Stap 11: joystick
- Stap 12: joystick - stroombaan diagram
- Stap 13: joystick - sleutelbordemulator
- Stap 14: Netwerkkommunikasie
- Stap 15: Alles saamvoeg
Video: Virtuele teenwoordigheidsrobot: 15 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
Hierdie mobiele robot reageer op sy fisiese omgewing deur die 'virtuele teenwoordigheid' van die persoon wat dit op afstand beheer, voor te stel. Dit is beskikbaar vir almal, oral in die wêreld, om lekkernye uit te deel en met u te speel.
Die werk hier word ontwikkel deur twee mense (een in Duitsland en een in die VSA) as 'n poging om verder te gaan as die tradisionele manier van internetgebaseerde kommunikasie deur 'n fisiese koppelvlak vir afstandinteraksie te skep. Aangesien COVID-19 die wêreld steeds beïnvloed en almal verantwoordelik is vir die beperking van ons fisiese blootstelling aan mense, probeer ons om die tasbare verbinding wat deel uitmaak van fisiese interaksie terug te bring.
Dit is gebaseer op die ESP32-Camera-Robot-FPV-Teacher-Entry Instructable en aangepas om afstandsensor, behandeldispenser en "beheer van oral ter wêreld" -funksie in te sluit, mits u 'n ietwat stabiele internetverbinding het.
Voorrade
Die projek het vier hoofonderdele - 'n mobiele robotmotor, 'n skyfdispenser, 'n joystick en 'n netwerk -kommunikasie -opstelling.
Mobiele robotmotor
- Broodbord
- 2 -wielaangedrewe motor en onderstel -robotstel (insluitend wiele, gelykstroommotore, monteerbord en skroewe)
- Arduino Mega 2560 (as u bou sonder die afstandsensor of die chip -dispenser, sal 'n Uno genoeg penne hê)
- (3) 9V -batterye (hou nog 'n paar by, want u kan die ontfouting uitlaat)
- LM2596 Kragtoevoer Module DC/DC Buck 3A Regulator (of soortgelyk)
- ESP32-CAM Wifi-module
- FT232RL FTDI USB na TTL Serial Converter (vir die programmering van die ESP32-CAM)
- Ultrasoniese afstandsensor HC-SR04
- L298N motorbestuurder
- (3) LED's (enige kleur)
- (3) 220 Ohm weerstande
Chip Dispenser
- (2) SG90 Servos
- Karton / karton
Joystick
- Arduino Uno
- Joystick -module
- Mini broodbord, (1) LED, (1) 220 Ohm weerstand (opsioneel)
Ander
Baie brooddraaddraaddrade Ekstra karton / karton Tape Skêr Liniaal / meetband Klein Philips -skroewedraaier Klein platkopskroewedraaier
Geduld =)
Stap 1: Mobiele robotmotor
Die Robot Car-onderstel dien as 'n mobiele platform, met 'n Arduino MEGA as die belangrikste mikrobeheerder wat die motors dryf, sensorwaardes lees en die servo's aktiveer. Die meeste aksies word uitgevoer deur die Arduino MEGA opdragte te laat ontvang via seriële kommunikasie, gestuur vanaf die ESP32-CAM. Terwyl ESP32 kamera lewendige stroom bied om die robot te beheer, is die ander funksie daarvan om 'n draadlose verbinding tussen die robot en die bediener te bestuur, sodat gebruikers dit van oral in die wêreld kan beheer. Die ESP32 ontvang opdragte vanaf die webbladsy met die druk op die toets en stuur dit na die Arduino MEGA as char -waardes. Op grond van die ontvangde waarde, sal die motor vorentoe, agtertoe, ens. Omdat afstandsbediening via internet afhang van baie eksterne faktore, insluitend hoë vertraging, swak stroomkwaliteit en selfs ontkoppelings, word 'n afstandsensor ingebou om te voorkom dat die robot neerstort. *As gevolg van die hoë en wisselende kragbehoeftes van die ESP32 -chip, word 'n kragtoevoerreguleerder aanbeveel vir gebruik met batterykrag (sien bedradingsdiagram).
Stap 2: Mobiele robotmotor - kringdiagram
Ons lei u stap -vir -stap bymekaar.
Stap 3: Mobiele robotmotor - samestelling (motors)
Nadat u die 2WD -onderstel bymekaargemaak het, begin ons deur die motors en die battery met die Arduino MEGA deur die L298N -bestuurder aan te sluit.
Stap 4: Mobiele robotmotor - samestelling (afstandsensor)
Aangesien daar 'n hele paar komponente is om aan te sluit, laat ons 'n broodbord byvoeg, sodat ons die krag en gedeelde grond makliker kan koppel. Nadat ons die drade herorganiseer het, verbind ons die afstandsensor en maak dit voor in die robot.
Stap 5: Mobiele robotmotor - samestelling (ESP32 CAM)
Koppel vervolgens die ESP32-CAM-module en bevestig dit langs die afstandsensor naby die voorkant van die robot. Onthou dat hierdie komponent wat nogal kragtig is, 'n eie battery en 'n GS-reguleerder benodig.
Stap 6: Mobiele robotmotor - samestelling (skyfdispenser)
Laat ons nou die chip-dispenser byvoeg (meer hieroor in die afdeling "Chip Dispenser"). Draai die twee servo's op volgens die Fritzing -diagram en maak die dispenser vas aan die stert van die robot.
Stap 7: Mobiele robotmotor - samestelling (koekies!)
Laastens voeg ons lekkernye by die resep!
Stap 8: Mobiele robotmotor - Arduino -kode
RobotCar_Code is die kode wat u op die Arduino Mega moet laai.
Dit is hoe dit werk: die Arduino luister na grepe wat vanaf die ESP32 via seriële kommunikasie op die 115200 -band gestuur word. Op grond van die ontvangte byte, sal die motor vorentoe, agtertoe, links, regs, ens. Beweeg deur óf 'n HOOG óF LAAG spanning na die motors te stuur om die rigting te beheer, sowel as 'n PWM-veranderlike tussen 0-255 om die spoed te beheer. Om botsings te voorkom, lees hierdie kode ook die waardes wat van die afstandsensor inkom, en as die afstand minder as 'n gespesifiseerde drempel is, sal die robot nie vorentoe beweeg nie. Laastens, as die Arduino 'n opdrag ontvang om 'n lekkerny uit te gee, sal dit die servo's in die Chip Dispenser aktiveer.
Stap 9: Mobiele robotmotor - ESP32 -kode
Die ESP32 maak voorsiening vir kommunikasie tussen die bediener en Arduino via Wifi. Dit is apart van die Arduino geprogrammeer en het sy eie kode:
- ESP32_Code.ino is die kode vir ESP32 om inligting na die Arduino te stuur
- app_httpd.cpp is die kode wat nodig is vir die standaard ESP32 -webbediener en stel die funksie in om te luister na sleutelborde. Goed vir ontfouting en toetsing op plaaslike wifi. Dit word nie gebruik vir kommunikasie buite die plaaslike netwerk nie.
- camera_index.h is die html -kode vir die standaard webtoepassing
- camera_pins.h definieer die penne, afhangende van die ESP32 -model
Die ESP32-kode gebruik die Wifi-biblioteek sowel as die ESP32-byvoeging, wat in die Arduino IDE geïnstalleer kan word deur die volgende stappe te volg:
- Gaan in die Arduino IDE na File> Preferences
- Voer dan die volgende "https://dl.espressif.com/dl/package_esp32_index.json" in op die oortjie Instellings onder Addisionele bestuurders -URL.
- Maak nou die direksiebestuurder oop en gaan na gereedskap> bord> direksiebestuurder en soek die ESP32 deur "ESP32" te tik
- U moet 'esp32 by Espressif Systems' sien. Klik op Installeer.
- Nou moet die ESP32-byvoeging geïnstalleer word. Gaan terug na die Arduino IDE en gaan na Tools> Board en kies die "ESP32 Wrover Module".
- Gaan weer na Tools> Upload Speed en stel dit op "115200".
- Gaan laastens na Tools> Partition Scheme en stel dit op "Enorme app (3 MB geen OTA/1 MB SPIFFS)
- Sodra u dit voltooi het, beveel ek aan dat u hierdie tutoriaal volg deur RandomNerdTutorials wat in detail verduidelik hoe u die opstel van die ESP32 kan voltooi en die kode kan oplaai met die FTDI -programmeerder.
Stap 10: Chip Dispenser
Die Chip Dispenser is 'n goedkoop toevoeging tot die mobiele robot sodat dit die plaaslike omgewing kan beïnvloed en met mense / diere kan omgaan deur 'n heerlike lekkerny te laat. Dit bestaan uit 'n kartondoos met twee servo's aan die binnekant, sowel as 'n kartonpatroon aan die binnekant wat items (soos lekkergoed of hondehappies) kan weggee. Die een servo dien as 'n hek terwyl die ander die item uitstoot.
*Alle afmetings is in millimeter
Stap 11: joystick
Alhoewel dit pret kan wees om 'n robot met die sleutelbord te beheer, is dit nog meer pret en intuïtief om 'n joystick te gebruik, waar die robot direk reageer op grond van die rigting wat u druk. Aangesien hierdie robot geaktiveer word deur middel van sleutelborde wat op die webblad opgeteken is, het ons ons joystick nodig gehad om 'n sleutelbord na te boots. Op hierdie manier kan gebruikers sonder 'n joystick die robot steeds direk vanaf 'n sleutelbord beheer, maar ander kan die joystick gebruik.
Hiervoor het ons slegs 'n Arduino Uno gehad wat nie die biblioteek kan gebruik nie, dus het ons dit direk geprogrammeer met behulp van 'n USB -protokol wat bekend staan as Device Firmware Update (DFU), wat die arduino laat flits met 'n generiese USB HID -sleutelbord firmware. Met ander woorde, as die arduino in die usb gekoppel is, word dit nie meer herken as 'n arduino nie, maar as 'n sleutelbord!
Stap 12: joystick - stroombaan diagram
Hier is hoe ons die joystick vasgemaak het.
Stap 13: joystick - sleutelbordemulator
Om jou Arduino Uno 'n sleutelbord na te boots, moet jy die Atmega16u2 -chip op die Arduino direk programmeer via 'n Manual Device Firmware Update (DFU). Die volgende stappe sal die proses vir 'n Windows -masjien beskryf, en hopelik kan u u help om probleme te vermy.
Die eerste stap is om die Atmel usb -bestuurder handmatig aan die Arduino te skryf, sodat dit erken word as 'n USB en nie 'n Arduino nie, wat dit moontlik maak om met die FLIP -programmeerder te flits.
- Laai Atmel se FLIP -programmeerder hier af
- Koppel u Arduino Uno
- Gaan na Device Manager en vind die Arduino. Dit sal onder COM of Onbekende toestel wees. Koppel dit aan en uit om te verseker dat dit die regte toestel is.
- As u die Arduino Uno in die Toestelbestuurder gevind het, klik met die rechtermuisknop daarop en kies eienskappe> Bestuurder> Bestuurder bywerk> Blaai deur my rekenaar vir bestuurdersagteware> Laat ek kies uit 'n lys beskikbare bestuurders op my rekenaar> Skyf hê> Blaai na die lêer "atmel_usb_dfu.inf" en kies dit. Dit moet in die gids wees waar u Atmel FLIP -programmeerder geïnstalleer is. Op my rekenaar is dit hier: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
- Installeer die bestuurder
- Gaan nou terug na die apparaatbestuurder, u moet 'n "Atmel USB -toestelle" sien met die Arduino Uno wat nou gemerk is as 'n ATmega16u2!
Noudat die rekenaar die Arduino Uno as 'n USB -toestel herken, kan ons die FLIP -programmeerder gebruik om dit met 3 aparte lêers te flits en dit in 'n sleutelbord te verander.
As u die Arduino Uno ná die eerste deel ontkoppel het, koppel dit weer aan.
- Maak FLIP oop
- Stel die Arduino Uno terug deur die krag kort aan die aarde te koppel.
- Klik op Apparaatkeuse (ikoon soos 'n mikroskyfie) en kies ATmega16U2
- Klik op Kies 'n kommunikasiemedium (ikoon soos 'n usb -koord) en kies USB. As u die eerste deel korrek voltooi het, moet die ander grys knoppies bruikbaar word.
- Gaan na File> Laai Hex File> en laai die lêer Arduino-usbserial-uno.hex op
- In die FLIP -venster moet u drie afdelings sien: Operations Flow, FLASH Buffer Information en ATmega16U2. Merk die blokkies in die operasionele vloei vir Erase, Program en Verify, en klik dan op Run.
- Sodra hierdie proses voltooi is, klik op Start Application in die ATmega16U2 -afdeling.
- Koppel die arduino deur die stekker uit die rekenaar te koppel en weer aan te sluit.
- Stel die Arduino Uno terug deur die krag kort aan die aarde te koppel.
- Maak die Arduino IDE oop en laai die lêer JoyStickControl_Code.ino op die bord op.
- Koppel die arduino aan deur die stekker uit die rekenaar te koppel en weer aan te sluit.
- Stel die arduino terug deur die krag kort op die grond te koppel.
- Gaan terug na FLIP, maak seker dat Device Selection Atmega16U2 sê
- Klik op Kies 'n kommunikasiemedium en kies USB.
- Gaan na File> Laai Hex File> en laai die lêer Arduino-keyboard-0.3.hex op
- In die FLIP -venster moet u drie afdelings sien: Operations Flow, FLASH Buffer Information en ATmega16U2. Merk die blokkies in die operasionele vloei vir Erase, Program en Verify, en klik dan op Run.
- Sodra hierdie proses voltooi is, klik op Start Application in die ATmega16U2 -afdeling.
- Koppel die arduino deur die stekker uit die rekenaar te koppel en weer aan te sluit.
- As u nou na Toestelbestuurder gaan, behoort daar 'n nuwe HID -sleutelbordtoestel onder sleutelborde te wees.
- Maak 'n notaboek of 'n teksredakteur oop en begin die joystick beweeg. U moet getalle sien tik!
As u die kode in die Arduino -skets wil verander, byvoorbeeld om nuwe opdragte aan die joystick te skryf, moet u dit elke keer met al drie lêers flits.
'N Paar nuttige skakels: Arduino DFUAtLibUsbDfu.dll nie gevind nie
Hierdie sleutelbordemulator is gebaseer op hierdie tutoriaal deur Michael op 24 Junie 2012.
Stap 14: Netwerkkommunikasie
Om videostroom te ontvang en opdragte na die robot te stuur vanaf enige plek in die wêreld, benodig ons 'n manier om data van en na die ESP32-CAM te kry. Dit word in twee dele gedoen, 'n verbindingshanteerder op u plaaslike netwerk en 'n openbare bediener. Laai die drie lêers af om dit te bereik:
- Handlers.py: herlei inligting van ESP32-CAM en die openbare bediener (getoets op Python 3.8)
- Flask_app.py: definieer hoe u app op inkomende versoeke reageer.
- Robot_stream.html: lewer video in u blaaier en luister na opdragte via die sleutelbord / joystick (getoets in Chrome)
U kan dit direk in app_httpd.cpp kodeer, maar vir 'n makliker ontfouting gebruik ons 'n Python -skrip wat op 'n rekenaar gekoppel is wat aan dieselfde netwerk gekoppel is. Maak handlers.py oop en werk die IP -adres en gebruikersnaam op na u eie, en u is gereed. Die stroom sal begin wanneer u hierdie lêer uitvoer.
Openbare bediener Om toegang tot alles op die internet te verkry, kan u 'n bediener begin met 'n PaaS van u keuse. Op pythonanywhere (PA) neem dit minder as 5 minute om dit op te stel:
- Teken in vir 'n rekening en meld aan
- Gaan na die oortjie "Web" en klik op "Voeg 'n nuwe webapp by", kies Flask en Python 3.6
- Kopieer flask_app.py in /mysite -gids
- Kopieer robot_stream.html in die gids /mysite /templates
- Klik op "Herlaai"
En … jy is reg!
Disclaimer: hierdie netwerkstroom is vinnig en eenvoudig, maar baie ver van ideaal. RTMP of voetstukke is meer geskik vir streaming, maar dit word nie op PA ondersteun nie en vereis ondervinding met netwerk en bedieneropstelling. Dit word ook aanbeveel dat u 'n veiligheidsmeganisme byvoeg om toegang te beheer.
Stap 15: Alles saamvoeg
Skakel nou u robot aan, voer handlers.py uit op 'n rekenaar (gekoppel aan dieselfde netwerk as die robot), en u kan die robot vanaf 'n blaaier beheer, gebaseer op die url wat u instel vanaf waar u ook al wil. (bv.
Aanbeveel:
Virtuele wegkruipspeletjie: 3 stappe
Virtuele wegkruipspel: Ons kleinkinders hou daarvan om wegkruipertjie te speel, maar hulle het nie regtig baie goeie plekke binne nie. Ek het besluit om 'n virtuele wegkruipertjie-speletjie te maak, sodat hulle steeds die plesier van die jag kan geniet. In my weergawe sal 'n mens 'n item met 'n RF -ontvanger verberg en
Virtuele drukmeter deel 1: 4 stappe
Virtuele manometer Deel 1 .: Manometers word in nywerhede soos olievelde gebruik. Ek het baie keer in my daaglikse werk drukmeters gebruik, veral met hidrouliese masjiene. En ek het gewonder hoe kan ek 'n virtuele drukmeter maak. Hierdie projek is 'n 2-par
Virtuele realiteit op Raspberry Pi met BeYourHero !: 19 stappe (met foto's)
Virtuele realiteit op Raspberry Pi met BeYourHero!: Welkom by " Wees jou held " projek! Ek hoop dat u gereed is om die volgende generasie onderdompeling in Virtual Reality aan te gaan! Hierdie projek gee u volledige gebaarbeheer oor enige virtuele held wat u wil, met 'n eenvoudige stel goedkoop toestelle met behulp van
Virtuele loergat: 4 stappe (met foto's)
Virtuele kykgat: Daar is 'n geskatte 770 miljoen bewakingskameras regoor die wêreld. Sommige van hulle het nog steeds hul standaard wagwoord, wat dit maklik toeganklik maak vir almal wat 'n internetverbinding het
Virtuele Makey Makey Met Kras: 4 stappe
Virtual Makey Makey With Scratch: Welkom by die Virtual Makey Makey v1.0 Scratch -uitgawe Ek het hierdie Virtual Makey Makey Simulator geskep as 'n manier om studente voor te stel aan Makey Makey wat nie toegang tot 'n Makey Makey het tydens Afstandsonderrig nie