Innehållsförteckning:
- Tillbehör
- Steg 1: Mobil robotbil
- Steg 2: Mobilrobot - kretsdiagram
- Steg 3: Mobil robotbil - Montering (motorer)
- Steg 4: Mobil robotbil - Montering (avståndssensor)
- Steg 5: Mobil robotbil - Montering (ESP32 CAM)
- Steg 6: Mobilrobotbil - Montering (Chip Dispenser)
- Steg 7: Mobilrobotbil - Montering (kakor!)
- Steg 8: Mobilrobotbil - Arduino -kod
- Steg 9: Mobilrobot - ESP32 -kod
- Steg 10: Chipdispenser
- Steg 11: Joystick
- Steg 12: Joystick - kretsdiagram
- Steg 13: Joystick - Keyboard Emulator
- Steg 14: Nätverkskommunikation
- Steg 15: Sätta ihop allt
Video: Virtual Presence Robot: 15 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
Den här mobila roboten interagerar med sin fysiska omgivning genom att representera den "virtuella närvaron" för den person som styr den på distans. Det kan nås av vem som helst, var som helst i världen, att avge godis och leka med dig.
Arbetet här utvecklas av två personer (en i Tyskland och en i USA) som ett försök att gå bortom traditionella sätt för internetbaserad kommunikation genom att skapa ett fysiskt gränssnitt för fjärranslutning. Eftersom COVID-19 fortsätter att påverka världen och alla är ansvariga för att begränsa vår fysiska exponering för människor, försöker vi få tillbaka den påtagliga kopplingen som är en del av fysisk interaktion.
Den är baserad på ESP32-Camera-Robot-FPV-Teacher-Entry Instructable och modifierad för att inkludera distanssensor, behandlingsdispenser och "kontroll från var som helst i världen", förutsatt att du har en något stabil internetuppkoppling.
Tillbehör
Projektet har fyra huvuddelar - en mobil robotbil, en chipdispenser, en joystick och konfiguration av nätverkskommunikation.
Mobil robotbil
- Bakbord
- 2 -hjulsdriven motor och chassirobot -kit (inkluderar hjul, likströmsmotorer, monteringsbräda och skruvar)
- Arduino Mega 2560 (om du bygger utan avståndssensorn eller Chip Dispenser kommer en Uno att ha tillräckligt med stift)
- (3) 9V -batterier (har några fler runt, eftersom du kommer att tömma dem felsökning)
- LM2596 Strömförsörjningsmodul DC/DC Buck 3A Regulator (eller liknande)
- ESP32-CAM Wifi-modul
- FT232RL FTDI USB till TTL seriell omvandlare (för programmering av ESP32-CAM)
- HC-SR04 ultraljudsavståndssensor
- L298N motorförare
- (3) lysdioder (valfri färg)
- (3) 220 Ohm motstånd
Chip Dispenser
- (2) SG90 Servos
- Kartong / kartong
Joystick
- Arduino Uno
- Joystick -modul
- Mini -brödbräda, (1) LED, (1) 220 Ohm motstånd (tillval)
Övrig
Massor av brödbräda -bygelstrådar Extra kartong / kartong Tejp Saxar Linjal / måttband Liten Philips skruvmejsel Liten platt skruvmejsel
Tålamod =)
Steg 1: Mobil robotbil
Robotbilchassit fungerar som en mobil plattform, med en Arduino MEGA som huvudmikrokontroller som driver motorerna, läser sensorvärden och aktiverar servon. De flesta åtgärder utförs genom att få Arduino MEGA att ta emot kommandon via seriell kommunikation, skickad från ESP32-CAM. Medan ESP32 tillhandahåller kameraström för att styra roboten, är dess andra funktion att hantera en trådlös anslutning mellan roboten och servern, så att användarna kan styra den var som helst i världen. ESP32 tar emot kommandon från webbsidan via knapptryckning och skickar dem till Arduino MEGA som char -värden. Baserat på det mottagna värdet kommer bilen att gå framåt, bakåt etc. Eftersom fjärrkontroll via internet är beroende av många externa faktorer, inklusive hög latens, dålig strömkvalitet och till och med frånkopplingar, är en avståndssensor integrerad för att hindra roboten från att krascha. *På grund av de höga och fluktuerande strömkraven för ESP32 -chipet rekommenderas en strömförsörjningsregulator för användning med batteri (se kopplingsschema).
Steg 2: Mobilrobot - kretsdiagram
Vi guidar dig genom att sätta ihop detta steg för steg.
Steg 3: Mobil robotbil - Montering (motorer)
När du har monterat 2WD -chassit börjar vi med att ansluta motorerna och batteriet till Arduino MEGA genom L298N -drivrutinen.
Steg 4: Mobil robotbil - Montering (avståndssensor)
Eftersom det finns en hel del komponenter att ansluta, låt oss lägga till en brödbräda, så att vi lättare kan ansluta ström och delad mark. När vi har omorganiserat trådarna ansluter du avståndssensorn och fixar den på framsidan av roboten.
Steg 5: Mobil robotbil - Montering (ESP32 CAM)
Anslut sedan ESP32-CAM-modulen och fixa den bredvid avståndssensorn nära robotens framsida. Kom ihåg att denna ganska kraftfulla komponent kräver ett eget batteri och en DC-regulator.
Steg 6: Mobilrobotbil - Montering (Chip Dispenser)
Låt oss nu lägga till chip-dispensern (mer om detta i avsnittet "Chip Dispenser"). Koppla upp de två servon enligt Fritzing -diagrammet och fixera dispensern i svansen på roboten.
Steg 7: Mobilrobotbil - Montering (kakor!)
Slutligen lägger vi till godis i dispensern!
Steg 8: Mobilrobotbil - Arduino -kod
RobotCar_Code är koden du måste ladda på Arduino Mega.
Så här fungerar det: Arduino lyssnar på byte som skickas från ESP32 via seriell kommunikation på 115200 -bandet. Baserat på den mottagna byten kommer bilen att gå framåt, bakåt, vänster, höger etc. genom att skicka antingen en hög eller låg spänning till motorerna för att styra riktning, samt en PWM-variabel mellan 0-255 för att styra hastigheten. För att undvika kollisioner läser denna kod också värdena som kommer in från avståndssensorn och om avståndet är mindre än ett specificerat tröskelvärde kommer roboten inte att gå framåt. Slutligen, om Arduino får ett kommando för att avge en godbit, kommer den att aktivera servon i Chip Dispenser.
Steg 9: Mobilrobot - ESP32 -kod
ESP32 möjliggör kommunikation mellan servern och Arduino via Wifi. Den är programmerad separat från Arduino och har sin egen kod:
- ESP32_Code.ino är koden för ESP32 för att skicka information till Arduino
- app_httpd.cpp är koden som behövs för standard ESP32 -webbservern och ställ in funktionen för att lyssna efter knapptryckningar. Bra för felsökning och testning på lokalt wifi. Det används inte för kommunikation utanför det lokala nätverket.
- camera_index.h är html -koden för standardwebbprogrammet
- camera_pins.h definierar stiften beroende på ESP32 -modellen
ESP32-koden använder Wifi-biblioteket samt ESP32-tillägget, som kan installeras i Arduino IDE genom att följa dessa steg:
- I Arduino IDE går du till Arkiv> Inställningar
- På fliken Inställningar under Ytterligare Boards Manager -URL anger du följande "https://dl.espressif.com/dl/package_esp32_index.json"
- Öppna nu Boards Manager och gå till Verktyg> Board> Boards Manager och sök efter ESP32 genom att skriva "ESP32"
- Du bör se "esp32 av Espressif Systems". Klicka på Installera.
- Nu ska tillägget ESP32 installeras. För att kontrollera gå tillbaka till Arduino IDE och gå till Verktyg> Board och välj "ESP32 Wrover Module".
- Återigen går du till Verktyg> Överföringshastighet och ställer in den på "115200".
- Slutligen, gå till Verktyg> Partitionsschema och ställ in det till "Enorm APP (3MB No OTA/1MB SPIFFS)
- När du har slutfört detta rekommenderar jag att du följer denna handledning av RandomNerdTutorials som förklarar i detalj hur man slutför konfigureringen av ESP32 och laddar upp koden med FTDI -programmeraren Programmering av ESP32
Steg 10: Chipdispenser
Chip Dispenser är ett billigt tillägg till den mobila roboten som gör att den kan påverka den lokala miljön och interagera med människor / djur genom att lämna en godbit. Den består av en ytterkartong av kartong med 2 servon monterade inuti, samt en inre kartongkassett som rymmer föremål (som godis eller godis) att avge. En servo fungerar som en grind medan den andra skjuter ut objektet.
*Alla mått är i millimeter
Steg 11: Joystick
Även om det kan vara roligt att styra en robot med tangentbordet, är det ännu roligare och intuitivare att använda en joystick, där roboten reagerar direkt utifrån den riktning du trycker på. Eftersom denna robot aktiveras via knapptryckningar som spelats in på webbsidan behövde vi vår joystick för att efterlikna ett tangentbord. På så sätt kan användare utan en joystick fortfarande styra roboten direkt från ett tangentbord, men andra kan använda joysticken.
För detta hade vi bara en Arduino Uno som inte har möjlighet att använda biblioteket så vi programmerade det direkt med ett USB -protokoll som kallas Device Firmware Update (DFU) som gör att arduino kan blinkas med en generisk USB HID -tangentbordsprogramvara. Med andra ord, när arduino är ansluten till usb erkänns den inte längre som en arduino utan som ett tangentbord!
Steg 12: Joystick - kretsdiagram
Här är hur vi kopplade ihop joysticken.
Steg 13: Joystick - Keyboard Emulator
För att din Arduino Uno ska kunna emulera ett tangentbord måste du direkt programmera Atmega16u2 -chipet på Arduino via en manuell uppdatering av firmware (DFU). Följande steg kommer att beskriva processen för en Windows -maskin och förhoppningsvis hjälpa dig att undvika några av de problem vi stötte på.
Det första steget är att manuellt skriva Atmel usb -drivrutinen till Arduino så att den känns igen som en USB och inte en Arduino som gör att den kan blinkas med FLIP -programmeraren.
- Ladda ner Atmels FLIP -programmerare härifrån
- Anslut din Arduino Uno
- Gå till Enhetshanteraren och hitta Arduino. Det kommer att finnas under COM eller Okänd enhet. Anslut den till och ut för att säkerställa att detta är rätt enhet.
- När du har hittat Arduino Uno i Enhetshanteraren högerklickar du på den och väljer egenskaper> Drivrutin> Uppdatera drivrutin> Bläddra i min dator efter drivrutinsprogramvara> Låt mig välja från en lista med tillgängliga drivrutiner på min dator> Har disk> Bläddra till filen "atmel_usb_dfu.inf" och välj den. Detta bör finnas i mappen där din Atmel FLIP -programmerare installerades. På min dator är den här: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
- Installera drivrutinen
- Gå nu tillbaka till Enhetshanteraren, du bör se en "Atmel USB -enheter" med Arduino Uno nu märkt som en ATmega16u2!
Nu när datorn känner igen Arduino Uno som en USB -enhet kan vi använda FLIP -programmeraren för att blinka den med tre separata filer och göra den till ett tangentbord.
Om du kopplade ur din Arduino Uno efter den första delen, anslut den igen.
- Öppna FLIP
- Återställ Arduino Uno genom att kort ansluta ström till jord.
- Klicka på Enhetsval (ikon som ett mikrochip) och välj ATmega16U2
- Klicka på Välj ett kommunikationsmedium (ikon som en USB -kabel) och välj USB. Om du slutförde den första delen korrekt bör de andra gråtonade knapparna bli användbara.
- Gå till Arkiv> Ladda hexfil> och ladda upp filen Arduino-usbserial-uno.hex
- I FLIP -fönstret bör du se tre avsnitt: Operations Flow, FLASH Buffer Information och ATmega16U2. Markera rutorna för Radera, Program och Verifiera i operationsflödet och klicka sedan på Kör.
- När denna process är klar klickar du på Starta applikationen i avsnittet ATmega16U2.
- Koppla in arduino genom att koppla ur den från datorn och ansluta den igen.
- Återställ Arduino Uno genom att kort ansluta ström till jord.
- Öppna Arduino IDE och ladda upp filen JoyStickControl_Code.ino till styrelsen.
- Koppla in arduino genom att koppla ur den från datorn och ansluta den igen.
- Återställ arduino genom att kort ansluta ström till jord.
- Gå tillbaka till FLIP, se till att Device Selection säger Atmega16U2
- Klicka på Välj ett kommunikationsmedium och välj USB.
- Gå till Arkiv> Ladda hexfil> och ladda upp filen Arduino-keyboard-0.3.hex
- I FLIP -fönstret bör du se tre avsnitt: Operations Flow, FLASH Buffer Information och ATmega16U2. Markera rutorna för Radera, Program och Verifiera i operationsflödet och klicka sedan på Kör.
- När den här processen är klar klickar du på Starta applikationen i avsnittet ATmega16U2.
- Koppla in arduino genom att koppla ur den från datorn och ansluta den igen.
- Nu när du går till Enhetshanteraren borde det finnas en ny HID -tangentbordsenhet under Tangentbord.
- Öppna en anteckningsblock eller någon textredigerare och börja flytta joysticken. Du borde se siffror skrivas!
Om du vill ändra koden i Arduino -skissen, till exempel skriva nya kommandon till joysticken, måste du blinka den med alla tre filerna varje gång.
Några användbara länkar: Arduino DFUAtLibUsbDfu.dll hittades inte
Den här tangentbordsemulatorn är baserad på denna handledning av Michael den 24 juni 2012.
Steg 14: Nätverkskommunikation
För att ta emot videoström och skicka kommandon till roboten var som helst i världen behöver vi ett sätt att få data till och från ESP32-CAM. Detta görs i två delar, en anslutningshanterare i ditt lokala nätverk och en offentlig server. Ladda ner de tre filerna för att uppnå detta:
- Handlers.py: vidarebefordrar information från ESP32-CAM och den offentliga servern (testad på Python 3.8)
- Flask_app.py: definierar hur din app svarar på inkommande förfrågningar.
- Robot_stream.html: återger video i din webbläsare och lyssnar efter kommandon via tangentbord / joystick (testad i Chrome)
Anslutningshanterare Du kan koda detta direkt i app_httpd.cpp, men för enklare felsökning använder vi ett Python -skript som körs på en dator som är ansluten till samma nätverk. Öppna handlers.py och uppdatera IP -adressen och användarnamnet till ditt eget, så är du redo att gå. Strömmen startar när du kör den här filen.
Offentlig server För att komma åt allt på internet kan du starta en server med en PaaS efter eget val. På pythonanywhere (PA) -inställningen tar det mindre än 5 minuter:
- Registrera dig för ett konto och logga in
- Gå till fliken "Web" och klicka på "Lägg till en ny webbapp", välj Flask och Python 3.6
- Kopiera flask_app.py till /mysite -katalogen
- Kopiera robot_stream.html till katalogen /mysite /templates
- Klicka på "Ladda om"
Och … du är klar!
Friskrivningsklausul: Detta nätverksarbete är snabbt och enkelt men väldigt långt ifrån perfekt. RTMP eller sockets skulle vara mer lämpade för streaming, men de stöds inte på PA och kräver viss erfarenhet av nätverk och serverinställningar. Det rekommenderas också att du lägger till en säkerhetsmekanism för att kontrollera åtkomst.
Steg 15: Sätta ihop allt
Slå nu på din robot, kör handlers.py på en dator (ansluten till samma nätverk som roboten), och du kan styra roboten från en webbläsare baserat på webbadressen du ställer in var du vill. (t.ex.
Rekommenderad:
Zigbee Bed Presence Detector: 8 steg
Zigbee Bed Presence Detector: För en tid nu letade jag efter ett sätt att upptäcka när vi ligger i sängen. Detta för att använda denna information till Homeassistant. Med denna information kan jag göra automatiseringar för att släcka lampor på natten eller till exempel aktivera ett larmsystem i mitt
Virtual Hide-and-Seek Game: 3 steg
Virtuellt göm-och-sök-spel: Våra barnbarn älskar att leka göm-och-sök men de har inte riktigt många bra ställen inomhus. Jag bestämde mig för att göra ett virtuellt göm-och-sök-spel så att de fortfarande kunde ha jakten roligt. I min version döljer man ett objekt med en RF -mottagare och
Nintendo VIRTUAL BOY - Reparation av de los LCD och alimentation för USB: 7 steg
Nintendo VIRTUAL BOY - Reparation av de Los LCD Y Alimentación Por USB .: ¡ Bienvenidos and Elartisans! En este tutorial tutorials a reparar los LCD and la fuente de alimentaci ó n de la Nintendo Virtual Boy. Se quer é; är visitar nuestro canal de Youtube: https://youtu.be/8
Home Presence Simulator och säkerhetskontrollenhet: 6 steg (med bilder)
Home Presence Simulator och Security Control Device: Detta projekt låter oss simulera närvaro och upptäcka rörelser i vårt hem.Vi kan konfigurera ett nätverk av enheter som är installerade i olika rum i vårt hem som alla styrs av en huvudenhet.Detta projekt kombinerar dessa funktioner på en enda d
Bed Presence Sensor With SONOFF: 8 steg (med bilder)
Bed Presence Sensor With SONOFF: Välkommen till denna handledning! Om du aldrig blinkade en sonoff med tasmota bör du först lära dig att göra det och sedan är det bara du som kan bygga det. Om du inte känner till sonof