Innehållsförteckning:
- Steg 1: Varning: Var försiktig med att prova det här hemma
- Steg 2: Komponenter
- Steg 6: Adress för Pi
- Steg 7: Planen
- Steg 8: Fysisk
- Steg 9: Autostart Raspberry Pi
- Steg 10: Houeston, vi har haft problem … DC -motorer är inte samma modell
- Steg 11: [TCP]: Varför Tcp och Not Secure Shell? Vad är TCP?
- Steg 12: [TCP]: Lets Make a Client
- Steg 13: Prova våra Tcp -kommandon
Video: Bygg din internetstyrda videostreamingsrobot med Arduino och Raspberry Pi: 15 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
Jag är @RedPhantom (aka LiquidCrystalDisplay / Itay), en 14 år gammal student från Israel som lär sig på Max Shein Junior High School for Advanced Science and Mathematics. Jag gör det här projektet för alla att lära av och dela!
Du kanske har tänkt för dig själv: hmm … jag är en nörd … Och mina barn vill att jag ska göra ett projekt med dem … Han ville bygga en robot. Hon ville klä upp den som en liten valp. Det är ett bra helgerprojekt!
Raspberry Pi är perfekt för varje användning: idag kommer vi att beskriva förmågan hos denna mikrodator att skapa en robot. Denna robot kan:
- Kör runt och kontrolleras via LAN (WiFi) med vilken dator som helst som är ansluten till samma WiFi -nätverk som Raspberry Pi är.
- Strömma video live med Raspberry Pi kameramodul
- Skicka sensordata med Arduino
För att se vad du behöver för det här fina ljusprojektet, läs bara nästa steg (varningar) och därefter steget Wanted: Components.
Här är GitHub -repon: GITHUB REPO BY ME
Här är projektwebbplatsen: PROJECT SITE BY ME
Steg 1: Varning: Var försiktig med att prova det här hemma
VARNING:
FÖRFATTAREN FÖR DENNA TUTORIELLA ANTAGNINGAR DU HAR RÄCKLIGT KUNSKAP OM ELEKTRICITET OCH GRUNDLÄGGANDE ANVÄNDNING AV ELEKTRISK UTRUSTNING. OM DU INTE ÄR FÖRSIKTIG OCH INTE FÖLJER INSTRUKTIONERNA I DENNA HANDBOK KAN DU: SKADA ELEKTRONISK UTRUSTNING, BRÄNNA DIG SELV ELLER BRÄNNA. Var försiktig och använd sunt förnuft. Om du inte har den kunskap som krävs för denna handledning (lödning, grunderna i elektronik), utför gärna med en person som gör det. Tack.
DENNA INSTRUKTABELS FÖRESKRIVARE BORTTAGER ALLT ANSVAR FRÅN SJÄLV FÖR SKADA ORSAKAD ELLER Tappad egendom ELLER FYSISK SKADA. ANVÄND SUNT FÖRNUFT
Steg 2: Komponenter
Innan vi värmer upp lödkolven måste vi gå igenom vad som ska kopplas till vad. Jag gjorde detta enkla diagram (MS Paint sviker mig aldrig) som beskriver var vissa delar finns i roboten.
Bilden är byggd så att du kan zooma in och se i full upplösning och läsa texten.
Steg 6: Adress för Pi
Arduino pratar med Pi enligt planen. Och Pi pratar med datorn, så hur fungerar allt detta?
Låt oss titta på vår anslutningsinitieringssekvens:
- Raspberry Pi startar
- Arduino börjar
- Raspberry Pi startar TCP Client. Den skjuter ut sin IP -adress via en LED.
- Raspberry Pi startar seriell kommunikationstjänst och ansluter till Arduino
Därför har vi etablerat någon form av kommunikation:
Dator Raspberry Pi Arduino
Jag har använt Visual Basic. NET (Microsoft Visual Studio 2013 Community) för att skriva programmet som pratar med Raspberry Pi och Python för att skriva Arduino/Raspberry Pi -protokollet.
Allt du behöver göra för att veta din Pi IP -adress är att ansluta den till en HDMI -skärm, logga in på skalet och skriva kommandot:
värdnamn -I
Steg 7: Planen
Nu när vi har Pi: s IP -adress kommer vi att SSH in i den (SSH är Secure Shell - vi ansluter på distans till Linux -skalet) och skriver en fil som visar serverns IP -adress. Pi, vid start kommer också att göra det och skriva porten den lyssnar på. Här kommer jag bara att ge några exempel från koden men den är tillgänglig för nedladdning från detta steg och från GitHub -grenen som jag har skapat. Detaljer om det senare.
Det fungerar så här:
- RPi startar.
- RPi startar Tcp -programmet på sin lokala IP och en utsedd port.
- RPI börjar strömma video
- RPI stängs av.
Steg 8: Fysisk
Nu är vi redo att börja fysiskt bygga det hela. Om du inte har läst steg 1 (varningstext och licensiering) gör det innan du fortsätter. Jag ansvarar inte för eventuella skador. Och i tveksamma fall får denna robot inte användas för militära ändamål om det inte är en zombie -apokalyps. Och även då använda sunt förnuft.
Det föreslås att du läser instruktionerna lyssna i läslistan.
Ladda ner anslutningsschemat från steget "Anslutningar".
MOTORER
De motorer du har köpt ser förmodligen ut så här, och det är OK om de inte gör det: om de bara har två ledningar (svart och rött i de flesta fall) borde det fungera. Leta upp deras datablad online för att se deras spänning och ström. Ställ gärna frågor i kommentarsfältet. Jag har alltid läst dem.
H-BRIDGE
Jag har aldrig arbetat med en H-Bridge tidigare. Jag googlade lite och hittade en bra instruerbar förklaring av principerna för ett HB. Du kan titta dit också (se Steg för läslista) och haka din också. Jag kommer inte att förklara mycket. Du kan läsa där och veta allt du borde om denna krets.
LED
Denna lilla lampa kan driva från logisk spänning bara för att den nästan inte kräver någon ström och en spänning på 3V-5V 4mA-18mA. Frivillig.
ARDUINO
Arduino kommer att få signaler och kommandon via seriell anslutning från Raspberry Pi. Vi använder Arduino för att styra våra motorer eftersom Raspberry Pi inte kan mata ut analoga värden via GPIO.
Steg 9: Autostart Raspberry Pi
Varje gång du startar Raspberry Pi måste du ange användarnamn och lösenord. Vi vill inte göra det för ibland kan vi bara inte ansluta ett tangentbord till Pi, så vi kommer att följa dessa steg från denna handledning för att automatiskt starta programmet som förbereder Pi. Om det kommer att fastna i en loop kan vi alltid Ctrl+C för att avbryta det.
- sudo crontab -e
- Och sedan kommer vi att ange kommandot som lägger till den filen till auto-strartup i cronhanteraren.
Vi kommer att kalla filen pibot.sh som ger kommandon för att starta alla typer av pythonskript för att styra roboten. Låt oss gå igenom det: (Vi sudo med gardin -Python -program för att låta programmet komma åt GPIO)
raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | cvlc -vvv stream: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264
Koden som gör allt arbete på sidan av pi kommer att kallas upon_startup.sh.
Det är ett enkelt skalskript som kör allt.
Steg 10: Houeston, vi har haft problem … DC -motorer är inte samma modell
Jag har redan testat H-bron och det fungerar bra, men när jag kopplar in motorerna som jag fick från robotplattformen beställde jag online de två motorerna svänger i olika hastigheter och ger olika ljud. Jag bytte gas till 100% på motorerna. Båda kunde inte springa med sin maximala kapacitet.
Det verkar som om det här är två olika motorer. Den ena har ett större vridmoment som är bra för den här typen av robot men den andra skulle bara inte flytta roboten. Så det vänder sig i cirklar.
Vid det här laget är det seriella programmet på Arduino som fungerar helt bra men Tcp -servern på datorn och Tcp -klienten på Pi är inte kodade ännu. Jag måste slutföra detta bidrag för tävlingen. Vad gör jag?
- Först tredubblar jag spänningen för motorerna. Databladet sa att 3V, 6V inte flyttade dem. Då är det 9V. Jag anslöt teo -batterier parallellt för att fördubbla strömmen och spänningen förblir densamma.
- Har jag andra motorer som passar till fästet på plattformen? Kanske kan jag se om de är liknande modeller.
- Jag kan ersätta Servos om chokladen verkligen träffar fläkten.
Skolan började. Jag får se vad jag ska göra.
Obs: Varför i helvete skriver jag de problem jag stöter på här? Så om du är mindre erfaren och har samma problem vet du också vad du ska göra.
Lösningen:
Så jag har gjort ett nytt test. Jag har anpassat skillnaden i hastighet i Arduino -koden.
OBS: motorerna kan snurra i olika hastigheter för dig! Ändra värdena i Arduino -skissen.
Steg 11: [TCP]: Varför Tcp och Not Secure Shell? Vad är TCP?
Jag har två förklaringar till varför man använder Tcp och inte SSH för P. C. - Pi -kommunikation.
- För det första är SSH (Secure Shell, se Förklaringar) avsett att starta kommandon från en fjärrdator. Att få Pi att svara med information vi vill ha är svårare eftersom vårt enda alternativ att analysera data är genom tuff och tråkig strängbehandling.
- För det andra vet vi redan hur vi använder SSH och vi vill lära oss fler sätt att kommunicera mellan enheter i denna handledning.
TCP, eller Transmission Control Protocol, är ett kärnprotokoll för Internet Protocol Suite. Det har sitt ursprung i den första nätverksimplementeringen där det kompletterade Internet Protocol (IP). Därför kallas hela sviten TCP/IP. TCP tillhandahåller tillförlitlig, beställd och felkontrollerad leverans av en ström av oktetter mellan applikationer som körs på värdar som kommunicerar över ett IP-nätverk.
(Från Wikipedia)
Så TCP -proffsen är:
- Säkra
- Snabb
- Fungerar var som helst i ett nätverk
- Ger metoder för att kontrollera korrekt dataöverföring
- Flödeskontroll: har skydd om datasändaren skickar data för snabbt för att klienten ska kunna registrera och bearbeta.
Och nackdelarna är:
- I TCP kan du inte sända (Skicka data till alla enheter i ett nätverk) och multicast (samma men lite olika- ger varje enhet sändning som en server).
- Fel i ditt program och operativsystems bibliotek (som själva hanterar TCP -kommunikationen, din router gör nästan ingenting utom att ansluta de två [eller fler] enheterna)
Varför inte använda UDP, kan du fråga? Tja, till skillnad från TCP, ser UDP inte till att din klient får data innan han skickar mer. Som att skicka ett mejl och inte veta om klienten tar emot det. Dessutom är UDP mindre säker. För mer information, läs det här inlägget från Stack Exchange Super User
Denna artikel är bra och rekommenderas.
Steg 12: [TCP]: Lets Make a Client
Klienten (Raspberry Pi i vårt fall), som tar emot data från servern (vår dator i vårt fall) kommer att få data att skicka till Pi (seriella kommandon som kommer att utföras på Arduino) och ta emot data tillbaka (sensoravläsningar och feedback direkt från Arduino. Schemat som bifogas visar förhållandet mellan de tre.
Python Wiki TcpCommunication-artikeln visar att det är så enkelt att göra sådan kommunikation med några koderader med den inbyggda sockelmodulen. Vi kommer att ha ett program på datorn och ett annat program på Pi.
Vi kommer att arbeta med avbrott. Läs mer i steget Förklaringar om dem. Läs också om buffertar. Nu kan vi läsa data vi har med data = s.recv (BUFFER_SIZE) men det kommer att vara hur många tecken vi har definierat med tomma bett. Kan vi använda avbrott? En annan fråga: kommer bufferten att vara tom eller väntar det på att servern ska skicka mer data, i vilket fall servern/klienten kommer att ta ett timeout -undantag?
Låt oss ta itu med den i taget. Innan vi gör det har jag letat upp den här Wikipedia -artikeln som listar använda TCP- och UDP -portar. Efter en snabb titt har jag bestämt att detta projekt kommer att kommunicera på port 12298 eftersom det inte används av operativsystemet och lokala tjänster.
Steg 13: Prova våra Tcp -kommandon
För att se om vi kan använda avbrott kan vi skapa en enkel klient och en server med Python -kommandoraden. Jag kommer att göra det i följande steg:
- Starta ett program som skickar en text via Tcp i en loop genom en gardinport
- Starta ett annat program (parallellt) som läser all text i en loop och skriver ut det på skärmen.
Endast delar av programmet visas. Alla program som körs med Python 3. Alla dessa program är att skicka det seriella kommandot från tangentbordet på PC -användaren till Arduino via Pi.
- SBcontrolPC.py - Körs på datorn. Startar en TCP -anslutning på den lokala adressen och på den angivna porten (jag använder port 12298, se föregående steg varför)
- SBcontrolPi.py - Körs på Pi. Läser dess buffert varje halv sekund (0,5 sekunder). Startar ett skalskript som hanterar saker som videoströmning etc.
Rekommenderad:
Den internetstyrda bubbelmaskinen: 4 steg (med bilder)
Internetstyrd bubbelmaskin: Alla vet att det är väldigt roligt att blåsa bubblor, men det kan vara hårt arbete. Vi kan lösa detta problem genom att helt enkelt bygga en internetstyrd bubbelmaskin, delegera ansträngningen samtidigt som du får alla fördelar. För slutenvården kan du kontrollera
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Bygg en riktig klocka som slår till din dator och en brandsläckare som slår: 3 steg (med bilder)
Bygg en riktig klocka som slår till din dator och en brandsläckare som slår: en mässingsklocka, ett litet relä några fler saker och en riktig klocka kan slå timmar på skrivbordet. Även om detta projekt körs på Windows och Mac OS X, jag bestämde mig för att installera Ubuntu Linux på en dator som jag hittade i papperskorgen och arbeta med det: jag hade aldrig
Bygg din egen butlerrobot !!! - Handledning, foton och video: 58 steg (med bilder)
Bygg din egen butlerrobot !!! - Handledning, foton och video: EDIT: Mer information om mina projekt kolla in min nya hemsida: narobo.comJag konsulterar även för robotik, mekatronik och specialeffekter/produkter. Kolla in min hemsida - narobo.com för mer information. Har alltid velat ha en butlerrobot som pratar med dig
Xmas-box: Arduino/ioBridge Internetstyrda julbelysning och musikshow: 7 steg
Xmas-box: Arduino/ioBridge Internet Controlled Christmas Lights and Music Show: Mitt xmas-box-projekt består av ett internet kontrollerat julbelysning och musikshow. En jul låt kan begäras online som sedan läggs i kö och spelas i den ordning den begärdes. Musiken överförs på en FM -stat