Innehållsförteckning:

RasbperryPi -bil med FPV -kamera. Kontroll med webbläsare: 31 steg (med bilder)
RasbperryPi -bil med FPV -kamera. Kontroll med webbläsare: 31 steg (med bilder)

Video: RasbperryPi -bil med FPV -kamera. Kontroll med webbläsare: 31 steg (med bilder)

Video: RasbperryPi -bil med FPV -kamera. Kontroll med webbläsare: 31 steg (med bilder)
Video: Превратите свой Raspberry Pi Pico в ПЛК Mitsubishi FX1N 2024, November
Anonim
Image
Image

Vi kommer att bygga 4wd bil - styrningen kommer att likna den som i en tank - för att vända ena sidan av hjulen kommer att rotera med annan hastighet än den andra. Vid bilen kommer kameran att placeras på en speciell hållare där vi kan ändra kameraposition. Roboten kommer att styras av webbläsare (krom eller firefox på skrivbordet eller firefox på mobiltelefon), i webbläsaren, Vi kommer att få kameravideo (med endast 200ms latens), och från webbläsaren kan vi styra bilens rörelser och kameraposition. För att göra kommunikationen enklare har jag använt app.remoteme.org -systemet, det fungerar också ur rutan för att styra den här typen av bilar, så du behöver inte skriva din egen kod, men självklart kan du ändra skript lägga till nya möjligheter etc.

Kontrollera alla anslutningar innan du ansluter ström till ditt kretskort

Steg 1: Lite information om App.remoteme.org

Systemet har tre delar

  • webbapplikation - när du är värd för dina kontrollwebbsidor och den länkar all kommunikation
  • rasbperryPi -program - program som skickar video, hanterar dina python -skript
  • bibliotek där du hittar klass, funktioner definitioner

Remoteme.org är systemsnabb Du länkar alla dina enheter ihop, du kan vara värd för dina webbsidor, se dina anslutna enheter. Remoteme.org -systemet har gjorts för att hjälpa dig att börja göra dina projekt, utan att oroa dig för protokollkommunikation, huvudidén är att skicka binära meddelanden mellan olika enheter, till exempel en webbsida, RasbeprryPI, arduino och skript.

Å andra sidan ger Remoteme.org dig full kontroll över dina filer, du kan enkelt ändra den genom att skriva din egen funktionalitet

I den här handledningen kommer jag att visa dig hur du gör ett fantastiskt projekt som är allmänt utan att skriva någon kod.

I slutet av denna handledning har jag lagt till användbara länkar som hjälper dig att förstå remoteme.org -systemet.

Steg 2: Vad behövs:

Vad behövs
Vad behövs
Vad behövs
Vad behövs
  • Hallon PI Zero W
  • Dedikerad kamera
  • Adafruit 16 -kanals 12 -bitars PWM/Servodrivrutin - I2C -gränssnitt - PCA9685 eller dess klon
  • Två servomekanismer kompatibla med kamerahållaren
  • Kamerahållare
  • Batterier - I handledning finns två anslutningsmöjligheter
  • H -brygga TB6612FNG, för att styra hjulspiren
  • PCB-örnfiler Det är enkelt att göra det värmeöverföringsmetod DC-DC
  • Step Down Converter Module DC
  • Robotfodral

Steg 3: Anslutningar

Anslutningar
Anslutningar

Raspberry pi -styrservomekanism genom PWM -modul och motorhastighet med H -brygga som är ansluten till RasbperryPi -stift, PWM -ingång till H -brygga genereras av samma modul som jag använde för servon (vilka delar jag nämner ovan behövs inga logiska omvandlare)

Steg 4: PCB

PCB
PCB
PCB
PCB

Du kan ladda ner PCB -örnfiler härifrån Banor är feta så det är enkelt att göra det genom termisk överföringsmetod

Steg 5: PCB -utgångar

PCB -utgångar
PCB -utgångar
PCB -utgångar
PCB -utgångar
  1. PWM -ingång för drivmotorer Bör anslutas till PWM -modulens 15: e och 16: e stift (kontrollera grön rektangel vid PWM -modulbild)
  2. Effektingång för drivmotorer (kontrollera vilken högsta spänning dina motorer kan arbeta med)
  3. Effekt för RasbperryPi och PWM -modulen - måste vara exakt
  4. Drivmotorutgångar (det finns två utgångar eftersom vi kommer att koppla drivmotorer)
  5. Servomekanismer kraft - också Du måste kontrollera vilken spänning som är bra för dem
  6. Bygelns nuvarande effekt från femte ingången kommer också att driva motorer så du behöver inte ansluta någonting till ingång 2
  7. Bygel om den finns RasbperryPi kommer att vara ström från tredje ingången - innan du sätter bygeln här, kontrollera om anslutningarna är OK - du vill inte bränna din RPi
  8. Låt oss löda här kablar eftersom vi inte behöver logiska omvandlare

Steg 6: Hur det fungerar

På RasbperryPi finns det python -skript som använder två bibliotek

  • importera RPi. GPIO som GPIO-för stift 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM-notation) som är anslutna till H-bron
  • importera Adafruit_PCA9685 för PWM -modul

Rpi-stift är anslutna enligt följande 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) och kontrolläge för H-bron (framåt, bakåt, stopp, kort paus). H -bron behöver också två PWM -signaler så att vi kan styra hastighet eller motorrotation. Eftersom vi i projektet redan har PWM -controller (används för servo) kommer vi också att använda den för att generera PWM för H bridge.

PWM -modul använder I2C -kommunikationsprotokoll. Jag har använt träningslådan Adafruit_PCA9685. bibliotek

Steg 7: Bilmontering - hjul

Bilmontering - hjul
Bilmontering - hjul
Bilmontering - hjul
Bilmontering - hjul

Vi börjar med att ansluta drivmotorer till bilväska. Vänster/sidomotorer kopplas ihop, och båda paras, ansluter till någon strömkabel som senare kommer att anslutas till kretskort. Viktigt att tänka på när hjulmotorerna på varje sida ansluts måste rotera åt samma håll.

Steg 8: Ström (AA -laddningsbatterier) Alternativ 1/2

Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2
Ström (AA -laddningsbatterier) Alternativ 1/2

Jag kommer att skriva två möjligheter till kraft Bilen först är från 10xAA ladda batterier. Till sist har jag ritat av röda färger hoppare som måste sättas.

Steg 9: Ström (Li-Po 7,2V batterier) Alternativ 2/2

Ström (Li-Po 7,2V batterier) Alternativ 2/2
Ström (Li-Po 7,2V batterier) Alternativ 2/2
Ström (Li-Po 7,2V batterier) Alternativ 2/2
Ström (Li-Po 7,2V batterier) Alternativ 2/2

Och det andra alternativet är 7,2 LI-PO-batteri. I det här fallet fick vi 3 spänningar - 5v för Rpi och modul, 6V för servon och direkt från batterier 7,2 volt för drivmotorer. Jag var tvungen att använda två steg ned moduler

Alternativ 2 med LI-PO är bättre:

  • Batterier har större kapacitet - bilen kommer att köra längre
  • Större spänning för drivmotorer - bilen kommer att köra snabbare
  • Mindre sannolikhet att efter att drivmotorerna har börjat lokalisera kan vi få ett stort spänningsfall och RPI startar om.

Steg 10: Lödning

Lödning
Lödning
Lödning
Lödning
Lödning
Lödning
Lödning
Lödning

Jag har lagt några distanser för PWM -modul på PCB. Det finns inget att skriva bara kolla bilder hur man lödar ihop allt

Steg 11: Kamera

Kamera
Kamera

vi ansluter kameran, här är skrivet hur man centrerar servomekanismer innan de monteras i kamerahållaren, men det kortaste sättet är att försiktigt manuellt kontrollera maximal rotationsposition och ställa servon i mittläge. Dessa centrerade servomekanismer sätter vi i kamerahållaren i mittläget (kameran pekar rakt fram som på fotot)

Steg 12: Sätta ihop bildelar

Att sätta ihop bildelar
Att sätta ihop bildelar
Att sätta ihop bildelar
Att sätta ihop bildelar
Att sätta ihop bildelar
Att sätta ihop bildelar

Till PCB har jag gjort ett litet plexiglasbord

Steg 13: App.remoteme.org -konfiguration

App.remoteme.org -konfiguration
App.remoteme.org -konfiguration

Jag har använt gratis app.remoteme.org -system, det hjälper dig att skapa anslutningar, och det har redan skript som vi behöver

På denna instruerbara, kommer jag bara att visa steg för steg vad som bör göras för att göra bilkörning (här hittar du mer information)

  • Sjung upp på https://app.remoteme.org efter registrering Du loggas in automatiskt
  • öppna fliken Token till vänster, klicka sedan på "ny token" ge ett namn och klicka på OK, Vi har just skapat ny token (bild på skärmen)
  • i det här exemplet är tokenvärdet: ~ 1_ & p@+BNnZ@A+x8 (ditt kommer att vara annorlunda;))

Steg 14: RasbperryPi -konfiguration

RasbperryPi -konfiguration
RasbperryPi -konfiguration

på spackelkonsol (här hur du ställer in vår RPi -aktivering av kamera I2c -kommunikation)

git -klon git: //github.com/remoteme/remoteme.git

cd remoteme

python3.5 install.py

  • Instalator kommer att ställa oss några frågor för allt vi svarar [Y] es och bekräfta med [enter]
  • när installationen kommer att be om token klistrar vi in (skift+infoga) token kopierat från programmet och Enter
  • namnet till exempel Rpi
  • deviceId 1 Ange
  • efter installationen - kör programmet

./runme.sh

Steg 15: Kontrollera anslutningar

Kontrollerar anslutningar
Kontrollerar anslutningar

Låt oss gå tillbaka till

På fliken enheter ser vi vår anslutna RPi (grön länkikon betyder att RPi är ansluten just nu)

Steg 16: Lägga till Python Script

Lägger till Python Script
Lägger till Python Script
Lägger till Python Script
Lägger till Python Script

Nu lägger vi till python -skript, det finns redan vid mallarna så vi behöver inte programmera någonting.

Öppna RasbperryPi -menyn på fliken enheter och välj "Lägg till externt skript".

När ett nytt fönster visas, ge information enligt bilden ovan

Glöm inte att välja mall "car4wd". Efter det här steget kommer remoteme.org att lägga till python -skript till vår RasbperryPi och starta om det

Steg 17: Kontrollera om Python -skript har lagts till framgångsrikt

Kontrollerar om Python Script har lagts till framgångsrikt
Kontrollerar om Python Script har lagts till framgångsrikt

På fliken enheter bör en ny python -skriptenhet läggas till, och dess deviceId är 2. På den här enhets -id -webbsidan skickas meddelanden för att styra bilen

Steg 18: Lägga till webbsida i Control Car

Lägger till webbsida i Control Car
Lägger till webbsida i Control Car

på fliken enheter, klicka på "Ny" och sedan på "Webbsida". Vi lägger bara till en annan enhet - webbsida vi kommer att använda den för att styra vår bil. Och eftersom vi använde mallen "car4wdDesktop" på webbsidan är filer redan nästan klara att användas

Steg 19: Konfigurera webbsidan för att styra bilen 1/2

Konfigurera webbsidan för att styra bilen 1/2
Konfigurera webbsidan för att styra bilen 1/2

Expandera webbsidan på fliken enhet och klicka på index.html och sedan på Öppna

Steg 20: Konfigurera webbsidan för att styra bilen 2/2

Konfigurera webbsidan för att styra bilen 2/2
Konfigurera webbsidan för att styra bilen 2/2

Fönstret visas då måste vi tillhandahålla deviceId av vårt python -skript vid vårt case deviceId är 2. Låt oss ändra platsen som visas i bilden

Steg 21: Öppna Car Control Center

Öppna bilkontrollcenter
Öppna bilkontrollcenter
Öppna bilkontrollcenter
Öppna bilkontrollcenter

Nu är det dags att öppna vår sida och se hur det fungerar. På enhetsfliken klickar du index.html och sedan "Öppna i ny flik" För att få förhandsgranskning av video Du måste använda Chrome- eller Firefox -webbläsaren, andra webbläsare stöder inte webRTC helt

Steg 22: Kamerakonfiguration 1/2

Kamerakonfiguration 1/2
Kamerakonfiguration 1/2

När vi flyttar musen vid videoområdet bör kameran ändra position och den ska fungera precis som i FPS -spel. Det kommer förmodligen inte att röra sig korrekt

Steg 23: Kamerakonfiguration 2/2

Kamerakonfiguration 2/2
Kamerakonfiguration 2/2

Öppna script.js (fliken enheter expandera webbsidan klicka sedan på script.js och öppna sedan) och hitta platsen jag visade på skärmen

vid mitt fodral är mittläget 560 och 430 och rörelseomfånget är för båda axlarna 200

Du måste experimentera med dessa siffror så att du får kamerapositionens mitt och smidiga rörelser. Om du använde den här självstudien kopierar du bara in klistrade givna värden

Steg 24: Kör 1/2

Kör 1/2
Kör 1/2

Om du trycker upp pilen på tangentbordet bör mätare ändra position och bilen ska köra. Om du trycker på "upp" -pilen och bilen svänger måste du lägga till/ta bort minus på platser på skärmen.

Efter denna operation efter att ha träffat”upp” pilen ska bilen köra framåt och nedåt pilen bilen ska köra bakåt.

Steg 25: Kör 2/2

Kör 2/2
Kör 2/2

Nu svänger - slå vänsterpil om bilen svänger åt höger Du måste vända kablar (kolla bilden ovan)

Om du lödar dessa kablar Du kan ändra den på script.jsjust ändra ordning för att skicka motorns hastighet, innan:

pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ())); pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed ()*255));

pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));

pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed ()*255));

efter:

pos = putByte (ret, pos, carController.getMotorMode (-carController.getLeftSideSpeed ()));

pos = putByte (ret, pos, Math.abs (carController.getLeftSideSpeed ()*255));

pos = putByte (ret, pos, carController.getMotorMode (carController.getRightSideSpeed ()));

pos = putByte (ret, pos, Math.abs (carController.getRightSideSpeed ()*255));

och nu måste du spela med minus som ett steg innan för att få det att fungera korrekt;). Som du antagligen märkte efter att pilen träffades kör inte bilen med full hastighet för att få bilen att gå snabbare bara släpp upp pilen när den är i maxläge och tryck och håll kvar den igen

Steg 26: Hur fungerar det

Webbsidan skickar 9: e bytes meddelande till python script i format:

  • 1 byte ett byte heltal 1
  • 2 bytes heltal X kameraposition
  • 2 bytes heltal Y kameraposition
  • 1 byte heltal vänster motorläge (3 = bakåt, 1 = framåt, 2 = stopp)
  • 1 byte heltal vänster motorvarvtal
  • 1 byte heltal höger motorläge (3 = bakåt, 1 = framåt, 2 = stopp)
  • 1 byte heltal höger motorvarvtal

sändningsmeddelande görs i script.js -filen vid funktionen "sendNow ()"

på RasbperryPi får python.py detta meddelande i funktion "onUserMessage"

Du kan kolla upp det och spela lite så att du vet vad som händer.

klassfunktionsbeskrivning här

Steg 27: Surfplatta, mobilstyrning

Surfplatta, mobilstyrning
Surfplatta, mobilstyrning

Vi lägger till ny webbsida precis som vi gjorde tidigare men nu väljer vi mall "car4wdMobile"

Därefter konfigurerar vi allt i script.js som vi gjorde för skrivbordskontrollwebbsida Meddelandeformatet är exakt samma så att vi inte behöver ändra python.py -skriptet.

Steg 28: Öppna sidan på mobiltelefonen

Öppna sidan på mobiltelefonen
Öppna sidan på mobiltelefonen
Öppna sidan på mobiltelefonen
Öppna sidan på mobiltelefonen

Istället för att logga in på ditt konto från mobilen är det bara att skanna QR anymous url.

detaljer om QR här

Om din mobilkontroll fungerar när RPi och mobil är på samma wifi men inte om du använder mobilt internet måste du lägga till turn server, hur gör jag det jag har skrivit här

Steg 29: Lägga till Turn Server

Lägger till Turn Server
Lägger till Turn Server
Lägger till Turn Server
Lägger till Turn Server
Lägger till Turn Server
Lägger till Turn Server

Ibland (när du ligger bakom NAT eller vissa brandväggsinställningar) kan du inte ansluta din robot från ett annat nätverk då är din robot ansluten. Det är ingen stor fråga och då måste du lägga till turn server.

Jag har testat server från XIRSYS -företaget (det är gratis för utvecklaranvändning) och jag kommer att visa hur jag konfigurerar turn server med XIRSYS -system

Registrera:

global.xirsys.net/dashboard/signup

klicka sedan på "plus" för att lägga till applikation

till höger under "static turn credentials" Du har all data du behöver. Kopiera den till filen webrtc_streamer.conf för att göra det, gå till

expandera RaspberryPi -enheter

klicka på filen webrtc_streamer.conf

klicka på öppna

och lägg till information

turn_server = turn_username =

turn_credential =

efter att du slutat redigera Du borde ha något som på skärmen.

klicka sedan på Spara och starta om din Rpi, genom att klicka på menyn på RasbperryPi -enheten och välj starta om

Efter att RPi -programmet startats om Du kan se förhandsgranskning av video på din mobiltelefon även om du använder mobilt internet.

Steg 30: Mobilstyrning

Mobilstyrning
Mobilstyrning

i cirkel 1 placerar vi vänster tumme, vid 2 höger - behöver inte vara exakt vid dessa punkter - webbsidan ställer in nolläget precis efter att du har pekat på skärmen och genom att flytta tummarna (vänster körning, höger kameraposition) Du kan styra din bil

Steg 31: Sammanfattning

Jag hoppas att du gillade den här självstudien, som jag skrev tidigare i denna handledning finns mer information om hur det fungerar under huven.

några länkar:

remoteme.org - remoteme.org hemsida där Du hittar dokumentationer och självstudier

FB fanpage - Facebook fanpage nyaste information om remoteme.org

Youtube - några filmer av projekt, självstudier

Skål, Maciek

Rekommenderad: