Indholdsfortegnelse:

Virtuel tilstedeværelsesrobot: 15 trin
Virtuel tilstedeværelsesrobot: 15 trin

Video: Virtuel tilstedeværelsesrobot: 15 trin

Video: Virtuel tilstedeværelsesrobot: 15 trin
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, November
Anonim
Image
Image
Mobil robotbil
Mobil robotbil

Denne mobile robot interagerer med dens fysiske omgivelser ved at repræsentere den "virtuelle tilstedeværelse" af den person, der fjernstyrer den. Det kan tilgås af alle, hvor som helst i verden, for at uddele godbidder og lege med dig.

Arbejdet her er udviklet af to personer (en i Tyskland og en i USA) som et forsøg på at bevæge sig ud over traditionelle midler til internetbaseret kommunikation ved at oprette en fysisk grænseflade til fjerninteraktion. Da COVID-19 fortsat påvirker verden, og alle er ansvarlige for at begrænse vores fysiske eksponering for mennesker, forsøger vi at bringe den håndgribelige forbindelse tilbage, der er en del af fysisk interaktion.

Det er baseret på ESP32-Camera-Robot-FPV-Teacher-Entry Instructable og modificeret til at omfatte afstandssensor, behandlingsdispenser og "kontrol fra hvor som helst i verden" -funktionen, forudsat at du har en noget stabil internetforbindelse.

Forbrugsvarer

Projektet har 4 hoveddele - en mobil robotbil, en chipdispenser, et joystick og opsætning af netværkskommunikation.

Mobil robotbil

  • Brødbræt
  • 2 -hjulsdrevsmotor og chassisrobotsæt (inkluderer hjul, DC -motorer, monteringsbræt og skruer)
  • Arduino Mega 2560 (hvis du bygger uden afstandssensor eller Chip Dispenser, vil en Uno have stifter nok)
  • (3) 9V batterier (har et par mere i nærheden, da du vil tømme dem fejlfinding)
  • LM2596 Strømforsyningsmodul DC/DC Buck 3A Regulator (eller lignende)
  • ESP32-CAM Wifi-modul
  • FT232RL FTDI USB til TTL seriel konverter (til programmering af ESP32-CAM)
  • HC-SR04 ultralydsafstandssensor
  • L298N motor driver
  • (3) LED'er (enhver farve)
  • (3) 220 Ohm modstande

Chip Dispenser

  • (2) SG90 Servoer
  • Pap / pap

Joystick

  • Arduino Uno
  • Joystick -modul
  • Mini brødbræt, (1) LED, (1) 220 Ohm modstand (valgfrit)

Andet

Masser af brødbræt -jumperwire Ekstra karton / papTapeTakselskærestål / målebåndSmå Philips skruetrækkerSmå fladskruetrækker

Tålmodighed =)

Trin 1: Mobil robotbil

Robotbilchassiset fungerer som en mobil platform, med en Arduino MEGA som den vigtigste mikrokontroller, der driver motorerne, læser sensorværdier og aktiverer servoerne. De fleste handlinger udføres ved at få Arduino MEGA til at modtage kommandoer via seriel kommunikation, sendt fra ESP32-CAM. Selvom ESP32 leverer kameraets livestream til at styre robotten, er dens anden funktion at styre en trådløs forbindelse mellem robotten og serveren, hvilket gør det muligt for brugerne at styre den overalt i verden. ESP32 modtager kommandoer fra websiden via tastetryk og sender dem til Arduino MEGA som char værdier. Baseret på den modtagne værdi vil bilen gå fremad, baglæns osv. Fordi fjernbetjening via internettet er afhængig af mange eksterne faktorer, herunder høj latenstid, dårlig strømkvalitet og endda afbrydelser, er der indbygget en afstandssensor for at forhindre robotten i at gå ned. *På grund af de høje og svingende strømkrav til ESP32 -chippen anbefales en strømforsyningsregulator til brug med batteristrøm (se ledningsdiagram).

Trin 2: Mobil robotbil - kredsløbsdiagram

Mobil robotbil - kredsløbsdiagram
Mobil robotbil - kredsløbsdiagram

Vi vil guide dig gennem samling af dette trin for trin.

Trin 3: Mobil robotbil - samling (motorer)

Mobil robotbil - samling (motorer)
Mobil robotbil - samling (motorer)

Når du har samlet 2WD -chassiset, starter vi med at forbinde motorerne og batteriet til Arduino MEGA gennem L298N -driveren.

Trin 4: Mobil robotbil - samling (afstandssensor)

Mobil robotbil - samling (afstandssensor)
Mobil robotbil - samling (afstandssensor)

Da der er en del komponenter, der skal tilsluttes, kan vi tilføje et brødbræt, så vi lettere kan forbinde strøm og fælles jord. Når vi har reorganiseret ledningerne, skal du tilslutte afstandssensoren og reparere den foran på robotten.

Trin 5: Mobil robotbil - samling (ESP32 CAM)

Mobil robotbil - samling (ESP32 CAM)
Mobil robotbil - samling (ESP32 CAM)

Tilslut derefter ESP32-CAM-modulet, og fix det ved siden af afstandssensoren nær fronten af robotten. Husk, at denne temmelig strømhungrende komponent kræver sit eget batteri og en DC-regulator.

Trin 6: Mobil robotbil - Montering (Chip Dispenser)

Mobil robotbil - samling (chipdispenser)
Mobil robotbil - samling (chipdispenser)

Lad os nu tilføje chip-dispenseren (mere om dette i afsnittet "Chip Dispenser"). Tråd de to servoer op i henhold til Fritzing -diagrammet, og fastgør dispenseren ved halen på robotten.

Trin 7: Mobil robotbil - samling (cookies!)

Mobil robotbil - samling (cookies!)
Mobil robotbil - samling (cookies!)

Endelig tilføjer vi godbidder til dispenseren!

Trin 8: Mobil robotbil - Arduino -kode

RobotCar_Code er den kode, du skal indlæse på Arduino Mega.

Sådan fungerer det: Arduino lytter til bytes, der sendes fra ESP32 via seriel kommunikation på 115200 -båndet. Baseret på den modtagne byte vil bilen bevæge sig fremad, bagud, venstre, højre osv. Ved at sende enten en HØJ eller LAV spænding til motorerne for at styre retningen, samt en PWM-variabel mellem 0-255 for at styre hastigheden. For at undgå kollisioner læser denne kode også de værdier, der kommer ind fra afstandssensoren, og hvis afstanden er mindre end en specificeret tærskel, vil robotten ikke bevæge sig fremad. Endelig, hvis Arduino modtager en kommando om at aflevere en godbid, vil den aktivere servoerne i Chip Dispenser.

Trin 9: Mobil robotbil - ESP32 -kode

ESP32 giver mulighed for kommunikation mellem serveren og Arduino via Wifi. Den er programmeret separat fra Arduino og har sin egen kode:

  • ESP32_Code.ino er koden for ESP32 til at sende oplysninger til Arduino
  • app_httpd.cpp er den kode, der er nødvendig for standard ESP32 webserver og indstiller funktionen til at lytte efter tastetryk. God til fejlfinding og test på lokal wifi. Det bruges ikke til kommunikation uden for det lokale netværk.
  • camera_index.h er html -koden til standardwebprogrammet
  • camera_pins.h definerer stifterne afhængigt af ESP32 -modellen

ESP32-koden bruger Wifi-biblioteket samt ESP32-tilføjelsen, som kan installeres i Arduino IDE ved at følge disse trin:

  1. I Arduino IDE skal du gå til Filer> Indstillinger
  2. Indtast derefter følgende under fanen Indstillinger under Yderligere Boards Manager -URL "https://dl.espressif.com/dl/package_esp32_index.json"
  3. Åbn nu Boards Manager og gå til Værktøjer> Board> Boards Manager og søg efter ESP32 ved at skrive "ESP32"
  4. Du skal se "esp32 by Espressif Systems". Klik på Installer.
  5. Nu skal ESP32-tilføjelsen installeres. For at kontrollere gå tilbage til Arduino IDE og gå til Værktøjer> Board og vælg "ESP32 Wrover Module".
  6. Gå igen til Værktøjer> Uploadhastighed og indstil den til "115200".
  7. Til sidst skal du gå til Værktøjer> Partitionsskema og indstille det til "Kæmpe APP (3MB No OTA/1MB SPIFFS)
  8. Når du har gennemført dette, anbefaler jeg at følge denne vejledning af RandomNerdTutorials, der detaljeret forklarer, hvordan du afslutter opsætningen af ESP32 og uploader kode med FTDI -programmereren Programmering af ESP32

Trin 10: Chip Dispenser

Chip Dispenser
Chip Dispenser

Chip Dispenser er en billig tilføjelse til den mobile robot, der gør det muligt at påvirke det lokale miljø og interagere med mennesker / dyr ved at efterlade en velsmagende godbid. Den består af en udvendig kartonæske med 2 servoer monteret indeni, samt en indvendig kartonpatron, der kan genstande (f.eks. Slik eller hundegodter) dispenseres. Den ene servo fungerer som en port, mens den anden skubber emnet ud.

*Alle dimensioner er i millimeter

Trin 11: Joystick

Joystick
Joystick

Selvom det kan være sjovt at styre en robot med tastaturet, er det endnu sjovere og mere intuitivt at bruge et joystick, hvor robotten reagerer direkte baseret på den retning, du skubber. Da denne robot aktiveres via tastetryk registreret på websiden, havde vi brug for vores joystick til at efterligne et tastatur. På denne måde kan brugere uden joystick stadig styre robotten direkte fra et tastatur, men andre kan bruge joysticket.

Til dette havde vi kun en Arduino Uno, som ikke har mulighed for at bruge biblioteket, så vi programmerede det direkte ved hjælp af en USB -protokol kendt som Device Firmware Update (DFU), som gør det muligt at blinke arduinoen med en generisk USB HID -tastatur firmware. Med andre ord, når arduinoen er tilsluttet usb'en, genkendes den ikke længere som en arduino, men som et tastatur!

Trin 12: Joystick - kredsløbsdiagram

Joystick - kredsløbsdiagram
Joystick - kredsløbsdiagram

Sådan har vi forbundet joysticket.

Trin 13: Joystick - tastaturemulator

For at din Arduino Uno kan efterligne et tastatur, skal du direkte programmere Atmega16u2 -chippen på Arduino via en Manuel Device Firmware Update (DFU). Følgende trin beskriver processen for en Windows -maskine og forhåbentlig hjælper dig med at undgå nogle af de problemer, vi løb ind i.

Det første trin er at manuelt skrive Atmel usb -driveren til Arduino, så den genkendes som en USB og ikke en Arduino, som gør det muligt at blinke med FLIP -programmøren.

  1. Download Atmels FLIP -programmer herfra
  2. Tilslut din Arduino Uno
  3. Gå til Enhedshåndtering og find Arduino. Det vil være under COM eller Ukendt enhed. Slut den til og ud for at sikre, at dette er den korrekte enhed.
  4. Når du har fundet Arduino Uno i Enhedshåndtering, skal du højreklikke på den og vælge egenskaber> Driver> Opdater driver> Gennemse min computer efter driversoftware> Lad mig vælge fra en liste over tilgængelige drivere på min computer> Har disk> Gennemse til fil "atmel_usb_dfu.inf", og vælg den. Dette skal være i den mappe, hvor din Atmel FLIP Programmer blev installeret. På min computer er den her: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Installer driveren
  6. Gå nu tilbage til Enhedshåndtering, du skal se en "Atmel USB -enheder" med Arduino Uno nu mærket som en ATmega16u2!

Nu hvor computeren genkender Arduino Uno som en USB -enhed, kan vi bruge FLIP -programmereren til at blinke den med 3 separate filer og gøre den til et tastatur.

Hvis du tog stikket til din Arduino Uno efter den første del, skal du tilslutte den igen.

  1. Åbn FLIP
  2. Nulstil Arduino Uno ved kortvarigt at forbinde strøm til jorden.
  3. Klik på Device Selection (ikon som en mikrochip), og vælg ATmega16U2
  4. Klik på Vælg et kommunikationsmedium (ikon som en usb -ledning), og vælg USB. Hvis du udfyldte den første del korrekt, skulle de andre gråtonede knapper blive brugbare.
  5. Gå til Filer> Indlæs hexfil> og upload filen Arduino-usbserial-uno.hex
  6. I FLIP -vinduet skal du se tre sektioner: Operations Flow, FLASH Buffer Information og ATmega16U2. Marker afkrydsningsfelterne for sletning, program og verificering i operationsflowet, og klik derefter på Kør.
  7. Når denne proces er fuldført, skal du klikke på Start ansøgning i afsnittet ATmega16U2.
  8. Sæt stikket i gang for arduinoen ved at tage den ud af computeren og tilslutte den igen.
  9. Nulstil Arduino Uno ved kort at tilslutte strøm til jorden.
  10. Åbn Arduino IDE og upload filen JoyStickControl_Code.ino til tavlen.
  11. Stik cyklus arduino ved at trække stikket fra computeren og tilslutte den igen.
  12. Nulstil arduinoen ved kort at forbinde strøm til jorden.
  13. Gå tilbage til FLIP, sørg for at Device Selection siger Atmega16U2
  14. Klik på Vælg et kommunikationsmedium, og vælg USB.
  15. Gå til Filer> Indlæs hexfil> og upload filen Arduino-keyboard-0.3.hex
  16. I FLIP -vinduet skal du se tre sektioner: Operations Flow, FLASH Buffer Information og ATmega16U2. Marker afkrydsningsfelterne for sletning, program og verificering i operationsflowet, og klik derefter på Kør.
  17. Når denne proces er fuldført, skal du klikke på Start ansøgning i afsnittet ATmega16U2.
  18. Sæt stikket i gang for arduinoen ved at tage den ud af computeren og tilslutte den igen.
  19. Når du nu går til Enhedshåndtering, skulle der være en ny HID -tastaturenhed under tastaturer.
  20. Åbn en notesblok eller en hvilken som helst tekstredigerer, og begynd at flytte joysticket. Du skulle se tal blive skrevet!

Hvis du vil ændre koden i Arduino -skitsen, f.eks. Skrive nye kommandoer til joysticket, skal du blinke den med alle 3 filer hver gang.

Nogle nyttige links: Arduino DFUAtLibUsbDfu.dll ikke fundet

Denne tastaturemulator er baseret på denne vejledning af Michael den 24. juni 2012.

Trin 14: Netværkskommunikation

Netværkskommunikation
Netværkskommunikation

For at modtage videostream og sende kommandoer til robotten hvor som helst i verden, har vi brug for en måde at hente data til og fra ESP32-CAM. Dette gøres i to dele, en forbindelseshåndterer på dit lokale netværk og en offentlig server. Download de tre filer for at opnå dette:

  • Handlers.py: videresender oplysninger fra ESP32-CAM og den offentlige server (testet på Python 3.8)
  • Flask_app.py: definerer, hvordan din app reagerer på indgående anmodninger.
  • Robot_stream.html: gengiver video i din browser og lytter efter kommandoer via tastatur / joystick (testet i Chrome)

Connection HandlerDu kan kode dette direkte i app_httpd.cpp, men for lettere fejlfinding bruger vi et Python -script, der kører på en pc, der er forbundet til det samme netværk. Åbn handlers.py og opdater IP -adressen og brugernavnet til dit eget, og du er klar til at gå. Strømmen starter, når du kører denne fil.

Offentlig server For at få adgang til alt på internettet kan du starte en server med en PaaS efter eget valg. På pythonanywhere (PA) opsætning tager dette mindre end 5 minutter:

  1. Tilmeld dig en konto og log ind
  2. Gå til fanen "Web", og tryk på "Tilføj en ny webapp", vælg Kolbe og Python 3.6
  3. Kopier flask_app.py til /mysite bibliotek
  4. Kopier robot_stream.html til /mysite /templates bibliotek
  5. Klik på "Genindlæs"

Og … du er klar!

Ansvarsfraskrivelse: Denne netværksarbejde er hurtig og enkel, men meget langt fra ideel. RTMP eller sockets ville være mere passende til streaming, men de understøttes ikke på PA og kræver en vis erfaring med netværk og serveropsætning. Det anbefales også, at du tilføjer en sikkerhedsmekanisme til at kontrollere adgangen.

Trin 15: Sæt det hele sammen

Tænd nu din robot, kør handlers.py på en computer (forbundet til det samme netværk som robotten), og du kan styre robotten fra en browser baseret på den url, du har angivet, hvor som helst du vil. (f.eks.

Anbefalede: