Innholdsfortegnelse:

Virtuell tilstedeværelsesrobot: 15 trinn
Virtuell tilstedeværelsesrobot: 15 trinn

Video: Virtuell tilstedeværelsesrobot: 15 trinn

Video: Virtuell tilstedeværelsesrobot: 15 trinn
Video: KUKA.PalletTech Palletizing Software Webinar 2024, November
Anonim
Image
Image
Mobil robotbil
Mobil robotbil

Denne mobile roboten samhandler med sine fysiske omgivelser, ved å representere den "virtuelle tilstedeværelsen" til personen som fjernkontrollerer den. Den kan nås av alle, hvor som helst i verden, for å dele godbiter og leke med deg.

Arbeidet her er utviklet av to personer (en i Tyskland og en i USA) som et forsøk på å gå utover tradisjonelle metoder for internettbasert kommunikasjon ved å lage et fysisk grensesnitt for ekstern interaksjon. Ettersom COVID-19 fortsetter å påvirke verden, og alle er ansvarlige for å begrense vår fysiske eksponering for mennesker, prøver vi å bringe tilbake den håndgripelige forbindelsen som er en del av fysisk interaksjon.

Den er basert på ESP32-Camera-Robot-FPV-Teacher-Entry Instructable og modifisert for å inkludere avstandssensor, behandlingsdispenser og "kontroll fra hvor som helst i verden" -funksjon, forutsatt at du har en noe stabil internettforbindelse.

Rekvisita

Prosjektet har fire hoveddeler - en mobil robotbil, en brikkedispenser, en joystick og et nettverkskommunikasjonsoppsett.

Mobil robotbil

  • Brødbrett
  • 2 -hjulsdrevsmotor og chassis -robotsett (inkluderer hjul, likestrømsmotorer, monteringsbrett og skruer)
  • Arduino Mega 2560 (hvis du bygger uten avstandssensor eller Chip Dispenser vil en Uno ha nok pinner)
  • (3) 9V batterier (ha noen flere rundt, da du tapper dem for feilsøking)
  • LM2596 Strømforsyningsmodul DC/DC Buck 3A Regulator (eller lignende)
  • ESP32-CAM Wifi-modul
  • FT232RL FTDI USB til TTL seriell omformer (for programmering av ESP32-CAM)
  • HC-SR04 ultralydavstandssensor
  • L298N motor driver
  • (3) LED (alle farger)
  • (3) 220 Ohm motstander

Chip Dispenser

  • (2) SG90 servoer
  • Kartong / papp

Styrespak

  • Arduino Uno
  • Joystick -modul
  • Mini brødbrett, (1) LED, (1) 220 Ohm motstand (valgfritt)

Annen

Massevis av ledninger for brødbrettbrett Ekstra papp / pappTapeSaksHåndtak / målebåndLiten Philips skrutrekkerLiten flatskrutrekker

Tålmodighet =)

Trinn 1: Mobil robotbil

Robotbil-chassiset fungerer som en mobil plattform, med en Arduino MEGA som den viktigste mikrokontrolleren som driver motorene, leser sensorverdier og aktiverer servoene. De fleste handlingene utføres ved at Arduino MEGA mottar kommandoer via seriell kommunikasjon, sendt fra ESP32-CAM. Selv om ESP32 leverer kamerastrøm for å kontrollere roboten, er den andre funksjonen å administrere en trådløs forbindelse mellom roboten og serveren, og lar derfor brukerne kontrollere den fra hvor som helst i verden. ESP32 mottar kommandoer fra nettsiden via tastetrykk og sender dem til Arduino MEGA som røykeverdier. Basert på mottatt verdi vil bilen gå fremover, bakover osv. Fordi fjernkontroll via internett er avhengig av mange eksterne faktorer, inkludert høy latens, dårlig strømkvalitet og til og med frakoblinger, er en avstandssensor innarbeidet for å hindre roboten i å krasje. *På grunn av de høye og svingende strømkravene til ESP32 -brikken anbefales det en strømforsyningsregulator for bruk med batteristrøm (se koblingsskjema).

Trinn 2: Mobil robotbil - kretsdiagram

Mobil robotbil - kretsdiagram
Mobil robotbil - kretsdiagram

Vi vil lede deg gjennom sammensetningen av dette trinn for trinn.

Trinn 3: Mobil robotbil - Montering (motorer)

Mobil robotbil - montering (motorer)
Mobil robotbil - montering (motorer)

Etter at du har montert 2WD -chassiset, starter vi med å koble motorene og batteriet til Arduino MEGA gjennom L298N -driveren.

Trinn 4: Mobil robotbil - Montering (avstandssensor)

Mobil robotbil - montering (avstandssensor)
Mobil robotbil - montering (avstandssensor)

Siden det er ganske mange komponenter å koble til, la oss legge til et brødbrett, slik at vi lettere kan koble til strøm og delt bakken. Etter at vi har organisert ledningene på nytt, kobler du avstandssensoren og fikser den foran på roboten.

Trinn 5: Mobil robotbil - Montering (ESP32 CAM)

Mobil robotbil - montering (ESP32 CAM)
Mobil robotbil - montering (ESP32 CAM)

Koble deretter til ESP32-CAM-modulen, og fest den ved siden av avstandssensoren nær fronten av roboten. Husk at denne ganske kraftsultne komponenten krever sitt eget batteri og en DC-regulator.

Trinn 6: Mobil robotbil - Montering (Chip Dispenser)

Mobil Robotbil - Montering (Chip Dispenser)
Mobil Robotbil - Montering (Chip Dispenser)

La oss legge til chip-dispenseren (mer om dette i "Chip Dispenser" -delen). Koble de to servoene i henhold til Fritzing -diagrammet, og fest dispenseren i halen på roboten.

Trinn 7: Mobilrobotbil - Montering (informasjonskapsler!)

Mobil robotbil - montering (informasjonskapsler!)
Mobil robotbil - montering (informasjonskapsler!)

Til slutt legger vi godbiter til dispenseren!

Trinn 8: Mobil robotbil - Arduino -kode

RobotCar_Code er koden du må laste på Arduino Mega.

Slik fungerer det: Arduino lytter til byte som sendes fra ESP32 via seriell kommunikasjon på 115200 -båndet. Basert på mottatt byte, vil bilen bevege seg fremover, bakover, venstre, høyre etc. ved å sende enten en HØY eller LAV spenning til motorene for å kontrollere retningen, samt en PWM-variabel mellom 0-255 for å kontrollere hastigheten. For å unngå kollisjoner leser denne koden også verdiene som kommer inn fra avstandssensoren, og hvis avstanden er mindre enn en spesifisert terskel, vil roboten ikke bevege seg fremover. Til slutt, hvis Arduino mottar en kommando om å dele ut en godbit, vil den aktivere servoene i Chip Dispenser.

Trinn 9: Mobil robotbil - ESP32 -kode

ESP32 gir mulighet for kommunikasjon mellom serveren og Arduino via Wifi. Den er programmert separat fra Arduino, og har sin egen kode:

  • ESP32_Code.ino er koden for ESP32 for å sende informasjon til Arduino
  • app_httpd.cpp er koden som er nødvendig for standard ESP32 webserver og angi at funksjonen skal lytte etter tastetrykk. Bra for feilsøking og testing på lokalt wifi. Den brukes ikke til kommunikasjon utenfor det lokale nettverket.
  • camera_index.h er html -koden for standardwebprogrammet
  • camera_pins.h definerer pinnene avhengig av ESP32 -modellen

ESP32-koden bruker både Wifi-biblioteket og ESP32-tillegget, som kan installeres i Arduino IDE ved å følge disse trinnene:

  1. I Arduino IDE går du til Fil> Innstillinger
  2. Skriv deretter inn "https://dl.espressif.com/dl/package_esp32_index.json" i kategorien Innstillinger under Tilleggsstyringsleder -URL.
  3. Åpne nå Boards Manager og gå til Tools> Board> Boards Manager og søk etter ESP32 ved å skrive "ESP32"
  4. Du bør se "esp32 av Espressif Systems". Klikk på Installer.
  5. Nå bør ESP32-tillegget installeres. For å sjekke, gå tilbake til Arduino IDE og gå til Verktøy> Brett og velg "ESP32 Wrover Module".
  6. Gå igjen til Verktøy> Last opp hastighet og sett den til "115200".
  7. Til slutt, gå til Verktøy> Partisjonsskjema og sett det til "Stor APP (3 MB Ingen OTA/1 MB SPIFFS)
  8. Når du har fullført dette, anbefaler jeg å følge denne opplæringen av RandomNerdTutorials som forklarer i detalj hvordan du fullfører konfigureringen av ESP32 og laster opp kode med FTDI -programmereren Programmering av ESP32

Trinn 10: Chip Dispenser

Chip Dispenser
Chip Dispenser

Chip Dispenser er et billig tillegg til den mobile roboten, slik at den kan påvirke det lokale miljøet og samhandle med mennesker / dyr ved å legge igjen en velsmakende godbit. Den består av en utvendig eske av kartong med 2 servoer montert inni, samt en innvendig pappkassett som inneholder ting (slik som godteri eller godbiter) for å dosere. Den ene servoen fungerer som en port mens den andre skyver varen ut.

*Alle dimensjoner er i millimeter

Trinn 11: Joystick

Styrespak
Styrespak

Selv om det kan være morsomt å kontrollere en robot med tastaturet, er det enda morsommere og mer intuitivt å bruke en joystick, der roboten reagerer direkte basert på retningen du skyver. Siden denne roboten aktiveres via tastetrykk som er registrert på websiden, trengte vi joysticken for å etterligne et tastatur. På denne måten kan brukere uten joystick fortsatt styre roboten direkte fra et tastatur, men andre kan bruke joysticken.

For dette hadde vi bare en Arduino Uno som ikke har muligheten til å bruke biblioteket, så vi programmerte det direkte ved hjelp av en USB -protokoll kjent som Device Firmware Update (DFU) som gjør at arduinoen kan blinke med en generisk USB HID -tastaturfastvare. Med andre ord, når arduinoen er koblet til usb, gjenkjennes den ikke lenger som en arduino, men som et tastatur!

Trinn 12: Joystick - kretsdiagram

Joystick - Kretsdiagram
Joystick - Kretsdiagram

Her er hvordan vi koblet sammen joysticken.

Trinn 13: Joystick - Tastaturemulator

For at din Arduino Uno skal etterligne et tastatur, må du programmere Atmega16u2 -brikken direkte på Arduino via en manuell enhets fastvareoppdatering (DFU). Følgende trinn vil beskrive prosessen for en Windows -maskin, og forhåpentligvis hjelpe deg med å unngå noen av problemene vi løp inn i.

Det første trinnet er å manuelt skrive Atmel usb -driveren til Arduino, slik at den blir gjenkjent som en USB og ikke en Arduino som gjør at den kan blinkes med FLIP -programmereren.

  1. Last ned Atmels FLIP -programmerer herfra
  2. Koble til Arduino Uno
  3. Gå til Enhetsbehandling og finn Arduino. Det vil være under COM eller Ukjent enhet. Koble den inn og ut for å sikre at dette er riktig enhet.
  4. Når du har funnet Arduino Uno i Enhetsbehandling, høyreklikker du på den og velger egenskaper> Driver> Oppdater driver> Bla gjennom datamaskinen etter driverprogramvare> La meg velge fra en liste over tilgjengelige drivere på datamaskinen> Har disk> Bla til filen "atmel_usb_dfu.inf" og velg den. Dette bør være i mappen der Atmel FLIP -programmereren ble installert. På min datamaskin er den her: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Installer driveren
  6. Gå tilbake til Enhetsbehandling. Du bør se en "Atmel USB -enheter" med Arduino Uno nå merket som en ATmega16u2!

Nå som datamaskinen gjenkjenner Arduino Uno som en USB -enhet, kan vi bruke FLIP -programmereren til å blinke den med 3 separate filer og gjøre den om til et tastatur.

Hvis du koblet fra Arduino Uno etter den første delen, kobler du den til igjen.

  1. Åpne FLIP
  2. Tilbakestill Arduino Uno ved å koble strømmen til bakken kort.
  3. Klikk på Enhetsvalg (ikon som en mikrochip) og velg ATmega16U2
  4. Klikk på Velg et kommunikasjonsmedium (ikon som en USB -kabel) og velg USB. Hvis du fullførte den første delen riktig, bør de andre gråtonede knappene bli brukbare.
  5. Gå til File> Load Hex File> og last opp filen Arduino-usbserial-uno.hex
  6. I FLIP -vinduet skal du se tre seksjoner: Operations Flow, FLASH Buffer Information og ATmega16U2. Merk av i boksene for Slett, Program og Verifiser i Operasjonsflyt, og klikk deretter Kjør.
  7. Når denne prosessen er fullført, klikker du på Start applikasjon i ATmega16U2 -delen.
  8. Koble til arduinoen ved å koble den fra datamaskinen og koble den til igjen.
  9. Tilbakestill Arduino Uno ved å koble strømmen til bakken kort.
  10. Åpne Arduino IDE og last opp filen JoyStickControl_Code.ino til brettet.
  11. Koble til arduinoen ved å koble den fra datamaskinen og koble den til igjen.
  12. Tilbakestill arduinoen ved å koble strømmen til bakken kort.
  13. Gå tilbake til FLIP, sørg for at Device Selection sier Atmega16U2
  14. Klikk på Velg et kommunikasjonsmedium og velg USB.
  15. Gå til File> Load Hex File> og last opp filen Arduino-keyboard-0.3.hex
  16. I FLIP -vinduet skal du se tre seksjoner: Operations Flow, FLASH Buffer Information og ATmega16U2. Merk av i boksene for Slett, Program og Verifiser i Operasjonsflyt, og klikk deretter Kjør.
  17. Når denne prosessen er fullført, klikker du på Start applikasjon i ATmega16U2 -delen.
  18. Koble til arduinoen ved å koble den fra datamaskinen og koble den til igjen.
  19. Når du går til Enhetsbehandling, bør det være en ny HID -tastaturenhet under Tastatur.
  20. Åpne en notisblokk eller en hvilken som helst tekstredigerer og begynn å flytte styrespaken. Du bør se tall skrives inn!

Hvis du vil endre koden i Arduino -skissen, for eksempel skrive nye kommandoer til styrespaken, må du blinke den med alle 3 filene hver gang.

Noen nyttige lenker: Arduino DFUAtLibUsbDfu.dll ikke funnet

Denne tastaturemulatoren er basert på denne opplæringen av Michael 24. juni 2012.

Trinn 14: Nettverkskommunikasjon

Nettverkskommunikasjon
Nettverkskommunikasjon

For å motta videostrøm og sende kommandoer til roboten fra hvor som helst i verden, trenger vi en måte å hente data til og fra ESP32-CAM. Dette gjøres i to deler, en tilkoblingsbehandling på ditt lokale nettverk og en offentlig server. Last ned de tre filene for å oppnå dette:

  • Handlers.py: videresender informasjon fra ESP32-CAM og den offentlige serveren (testet på Python 3.8)
  • Flask_app.py: definerer hvordan appen din reagerer på innkommende forespørsler.
  • Robot_stream.html: gjengir video i nettleseren din og lytter etter kommandoer via tastatur / joystick (testet på Chrome)

Du kan kode dette direkte i app_httpd.cpp, men for enklere feilsøking bruker vi et Python -skript som kjører på en PC som er koblet til det samme nettverket. Åpne handlers.py og oppdater IP -adressen og brukernavnet til ditt eget, så er du klar. Strømmen starter når du kjører denne filen.

Offentlig server For å få tilgang til alt på internett kan du starte en server med en PaaS etter eget valg. På pythonanywhere (PA) setter dette opp mindre enn 5 minutter:

  1. Registrer deg for en konto og logg inn
  2. Gå til "Web" -fanen og klikk "Legg til en ny webapp", velg Flask og Python 3.6
  3. Kopier flask_app.py til /mysite -katalogen
  4. Kopier robot_stream.html til /mysite /templates -katalogen
  5. Klikk "Last inn på nytt"

Og … du er klar!

Ansvarsfraskrivelse: Denne nettverksarbeidsflyten er rask og enkel, men veldig langt fra ideell. RTMP eller sockets ville være mer passende for streaming, men de støttes ikke på PA og krever litt erfaring med nettverk og serveroppsett. Det anbefales også at du legger til en sikkerhetsmekanisme for å kontrollere tilgangen.

Trinn 15: Sett alt sammen

Slå på roboten din, kjør handlers.py på en datamaskin (koblet til samme nettverk som roboten), og du kan styre roboten fra en nettleser basert på nettadressen du angir fra hvor du vil. (f.eks.

Anbefalt: