Indholdsfortegnelse:

RasbperryPi bil med FPV kamera. Kontrol med webbrowser: 31 trin (med billeder)
RasbperryPi bil med FPV kamera. Kontrol med webbrowser: 31 trin (med billeder)

Video: RasbperryPi bil med FPV kamera. Kontrol med webbrowser: 31 trin (med billeder)

Video: RasbperryPi bil med FPV kamera. Kontrol med webbrowser: 31 trin (med billeder)
Video: BTT GTR v1.0/M5 v1.0 - TMC2208 UART 2024, Juli
Anonim
Image
Image

Vi bygger en 4 -hjulet bil - styretøjet ligner en tank - for at dreje den ene side af hjulene vil rotere med anden hastighed end den anden. Ved bilen placeres kameraet på en særlig holder, hvor vi kan ændre kameraposition. Robotten styres af webbrowser (chrome eller firefox på skrivebordet eller firefox på mobiltelefon), i browseren, Vi får kameravideo (med kun 200 ms forsinkelse), og fra browseren kan vi styre bilens bevægelser og kameraposition. For at gøre kommunikationen lettere har jeg brugt app.remoteme.org -systemet, der arbejder også ud af boksen med at styre denne slags biler, så du behøver ikke at skrive din egen kode, men selvfølgelig kan du ændre scripts tilføje nye muligheder osv.

Inden du slutter strøm til dit printkort, skal du dobbelttjekke alle forbindelser

Trin 1: Nogle oplysninger om App.remoteme.org

Systemet har tre dele

  • webapplikation - når du er vært for dine kontrolwebsider, og den forbinder al kommunikation
  • rasbperryPi -program - program, der sender video, styr dine python -scripts
  • biblioteker, hvor du finder definitioner på klasse, funktioner

Remoteme.org er systemhurtig Du forbinder alle dine enheder sammen. Du kan hoste dine websider der, se dine tilsluttede enheder. Remoteme.org -systemet blev skabt til at hjælpe dig med at begynde at lave dine projekter, uden at bekymre dig om protokolkommunikation, hovedideen er at sende binære meddelelser mellem forskellige enheder, f.eks. En webside, RasbeprryPI, arduino og scripts.

Fra den anden side giver Remoteme.org dig fuld kontrol over dine filer, du kan let ændre den ved at skrive din egen funktionalitet

På denne vejledning vil jeg vise dig, hvordan du laver et fantastisk projekt uden at skrive nogen kode.

I slutningen af denne vejledning har jeg lagt nyttige links, som hjælper dig med at forstå remoteme.org -systemet.

Trin 2: Hvad er der brug for:

Hvad skal der til
Hvad skal der til
Hvad skal der til
Hvad skal der til
  • Hindbær PI Zero W
  • Dedikeret kamera
  • Adafruit 16 -kanals 12 -bit PWM/Servo Driver - I2C interface - PCA9685 eller dens klon
  • To servomekanismer kompatible med kameraholderen
  • Kameraholder
  • Batterier - I tutorial to muligheder for tilslutning
  • H -bro TB6612FNG, til styring af hjulspeer
  • PCB ørnefiler Det er let at gøre det termisk overførselsmetode DC-DC
  • Step Down Converter Module DC
  • Robotkasse

Trin 3: Forbindelser

Forbindelser
Forbindelser

Hindbær pi kontrol servomekanisme gennem PWM -modul og motorhastighed ved H -bro, som er forbundet til RasbperryPi -ben, PWM -indgang til H -bro genereres af det samme modul, som jeg brugte til servoer (hvilke dele, jeg nævner ovenfor, er ikke nødvendige logiske omformere)

Trin 4: PCB

PCB
PCB
PCB
PCB

Du kan downloade PCB -ørnefiler herfra Stier er fede, så det er let at lave det ved termisk overførselsmetode

Trin 5: PCB -udgange

PCB -udgange
PCB -udgange
PCB -udgange
PCB -udgange
  1. PWM -indgang til drivmotorer Skal tilsluttes PWM -modul 15. og 16. ben (tjek grønt rektangel på billede af PWM -modul)
  2. Strømindgang til drivmotorer (tjek hvilken maksimal spænding dine motorer kan arbejde med)
  3. Strøm til RasbperryPi og PWM -modul - skal være præcis
  4. Drivmotorudgange (der er to udgange, fordi vi vil parre drivmotorer)
  5. Servomekanismer magt - også Du skal kontrollere, hvilken spænding der er god for dem
  6. Jumper sin nuværende strøm fra 5. input vil også drive motorer, så du behøver ikke at tilslutte noget til input 2
  7. Jumper, hvis den findes RasbperryPi får strøm fra 3. input - før du sætter jumper her, skal du kontrollere, om forbindelserne er OK - du vil ikke brænde din RPi
  8. Lad lodde her kabler, da vi ikke har brug for logiske konvertere

Trin 6: Sådan fungerer det

På RasbperryPi er der python script, der bruger to biblioteker

  • import RPi. GPIO som GPIO-til ben 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM-notation), der er forbundet til H-broen
  • import Adafruit_PCA9685 til PWM -modul

Rpi-benene er forbundet som følger 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) og kontroltilstand for H-broen (fremad, bagud, stop, kort pause). H -broen har også brug for to PWM -signaler, så vi kan styre hastighed eller motorrotation. Fordi vi ved projektet allerede har PWM -controller (bruges til servo), vil vi også bruge det til at generere PWM til H bridge.

PWM -modul bruger I2C kommunikationsprotokol. Jeg har brugt at arbejde ud af kassen Adafruit_PCA9685. bibliotek

Trin 7: Bilmontering - Hjul

Bilmontering - Hjul
Bilmontering - Hjul
Bilmontering - Hjul
Bilmontering - Hjul

Vi starter med at forbinde drivmotorer til bilkasse. Venstre/sidemotorer forbindes sammen, og begge parres, tilsluttes et strømkabel, som senere vil blive forbundet til printkort. Vigtig bemærkning ved tilslutning af motorer skal hjul på hver side rotere i samme retning.

Trin 8: Strøm (AA -genopladelige batterier) Mulighed 1/2

Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2
Strøm (AA -genopladelige batterier) Mulighed 1/2

Jeg vil skrive to muligheder for magt Bil første er fra 10xAA genoplade batterier Til sidst billede har jeg tegnet af røde farver jumpere, der skal sættes.

Trin 9: Strøm (Li-Po 7,2V batterier) Mulighed 2/2

Strøm (Li-Po 7,2V batterier) Mulighed 2/2
Strøm (Li-Po 7,2V batterier) Mulighed 2/2
Strøm (Li-Po 7,2V batterier) Mulighed 2/2
Strøm (Li-Po 7,2V batterier) Mulighed 2/2

Og den anden mulighed er 7,2 LI-PO batteri. I dette tilfælde fik vi 3 spændinger - 5v til Rpi og modul, 6V til servoer og direkte fra batterier 7,2 volt til drivmotorer. Jeg var nødt til at bruge to trin ned moduler

Mulighed 2 med LI-PO er bedre:

  • Batterier har større kapacitet - bilen kører længere
  • Større spænding for drivmotorer - bilen kører hurtigere
  • Mindre sandsynlighed for, at efter drivmotorer begynder at lokalisere, kan vi få et stort spændingsfald og RPI genstarter.

Trin 10: Lodning

Lodning
Lodning
Lodning
Lodning
Lodning
Lodning
Lodning
Lodning

Jeg har på PCB sat nogle afstandsstykker til PWM -modul. Der er ikke noget at skrive bare tjek billeder, hvordan man lodder alt sammen

Trin 11: Kamera

Kamera
Kamera

vi forbinder kameraet, her er skrevet, hvordan man centrerer servomekanismer, før de monteres i kameraholderen, men den korteste måde er forsigtigt manuelt at kontrollere maksimal rotationsposition og indstille servoer i midterposition. Disse centrerede servomekanismer sætter vi i kameraholderen i midterpositionen (kameraet peger lige frem som på billedet)

Trin 12: Sammensætning af bildele

At sætte bildele sammen
At sætte bildele sammen
At sætte bildele sammen
At sætte bildele sammen
At sætte bildele sammen
At sætte bildele sammen

Til PCB har jeg lavet et lille plexiglasbord

Trin 13: App.remoteme.org -konfiguration

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

Jeg har brugt et gratis app.remoteme.org -system, det hjælper dig med at oprette forbindelser, og det har allerede scripts, som vi har brug for

På dette instruktive vil jeg bare vise trin for trin, hvad der skal gøres for at få bilkørsel (her finder du flere detaljer)

  • Syng op på https://app.remoteme.org efter tilmelding Du bliver automatisk logget ind
  • Åbn fanen Token til venstre, klik derefter på "nyt token" angiv et navn, og klik på OK, Vi har lige oprettet nyt token (billede på skærmen)
  • i dette eksempel er tokenværdien: ~ 1_ & p@+BNnZ@A+x8 (din vil være anderledes;))

Trin 14: RasbperryPi -konfiguration

RasbperryPi -konfiguration
RasbperryPi -konfiguration

på spartelkonsol (her hvordan du konfigurerer vores RPi tænd kamera I2c kommunikation)

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

cd -fjernbetjening

python3.5 install.py

  • Instalator stiller os nogle spørgsmål til alt, hvad vi svarer [Y] es og bekræfter med [enter]
  • når installationen vil bede om token, indsætter vi (shift+insert) token kopieret fra applikationen og Enter
  • navnet f.eks. Rpi
  • deviceId 1 Indtast
  • efter installation - kør program

./runme.sh

Trin 15: Kontrol af forbindelser

Kontrol af forbindelser
Kontrol af forbindelser

Lad os gå tilbage til

På fanen enheder ser vi vores tilsluttede RPi (grønt linkikon betyder, at RPi er tilsluttet lige nu)

Trin 16: Tilføjelse af Python Script

Tilføjelse af Python Script
Tilføjelse af Python Script
Tilføjelse af Python Script
Tilføjelse af Python Script

Nu tilføjer vi python script, det er allerede på skabelonerne, så vi behøver ikke at programmere noget.

Åbn RasbperryPi -menuen under fanen enheder, og vælg "Tilføj eksternt script".

Når nyt vindue vises, skal du give oplysninger som på billedet ovenfor

Glem ikke at vælge skabelon "car4wd". Efter disse trin tilføjer remoteme.org python -script til vores RasbperryPi og genstarter det

Trin 17: Kontroller, om Python -script blev tilføjet med succes

Kontrol af, om Python -script blev tilføjet med succes
Kontrol af, om Python -script blev tilføjet med succes

På fanen enheder skal der tilføjes en ny python -scriptenhed, og dens deviceId er 2. På denne enheds id -webside sender beskeder til at styre bilen

Trin 18: Tilføjelse af webside til Control Car

Tilføjelse af webside til Control Car
Tilføjelse af webside til Control Car

på fanen enheder klik på "Ny" og derefter på "webside". Vi tilføjer lige en anden enhed - webside vil vi bruge den til at styre vores bil. Og fordi vi brugte skabelonen "car4wdDesktop" på websiden, er filer allerede næsten klar til brug

Trin 19: Konfigurer websidenhed til at styre bil 1/2

Konfigurer websidenhed til at styre bil 1/2
Konfigurer websidenhed til at styre bil 1/2

Udvid websiden på fanen enhed, og klik på index.html og derefter Åbn

Trin 20: Konfigurer websidenhed til at styre bil 2/2

Konfigurer websidenhed til at styre bil 2/2
Konfigurer websidenhed til at styre bil 2/2

Vinduet vises, så skal vi angive deviceId af vores python -script ved vores case deviceId er 2. Lad os ændre det sted, der vises på billedet

Trin 21: Åbn Car Control Center

Åbn bilkontrolcenter
Åbn bilkontrolcenter
Åbn bilkontrolcenter
Åbn bilkontrolcenter

Nu er det tid til at åbne vores side og se, hvordan den fungerer. På enhedsfanen skal du klikke på index.html og derefter "Åbn i ny fane" For at få vist video -forhåndsvisning Du skal bruge chrome- eller Firefox -browser, andre browser understøtter ikke webRTC fuldt ud

Trin 22: Kamerakonfiguration 1/2

Kamerakonfiguration 1/2
Kamerakonfiguration 1/2

Når vi flytter musen ved videoområdet, skal kameraet ændre position, og det skal fungere nøjagtigt som i FPS -spil. Det vil sandsynligvis ikke bevæge sig korrekt

Trin 23: Kamerakonfiguration 2/2

Kamerakonfiguration 2/2
Kamerakonfiguration 2/2

Åbn script.js (fanen enheder udvid websiden, klik derefter på script.js og åbn derefter) og find det sted, jeg viste på skærmen

i min sags centerposition er 560 og 430, og bevægelsesområdet er for begge aksier 200

Du skal eksperimentere med disse tal, så du får kamerapositionens centrum og glatte bevægelser, hvis du brugte denne vejledning, skal du bare kopiere indsatte givne værdier

Trin 24: Kørsel 1/2

Kørsel 1/2
Kørsel 1/2

Hvis du trykker på pil op på tastaturet, skal målere ændre position, og bilen skal køre. Hvis du trykker på "op" -pilen, og bilen drejer, skal du tilføje/fjerne minus på steder på skærmen.

Efter denne operation efter at have ramt "op" pilen skal bilen køre fremad og pil ned skal bilen køre baglæns.

Trin 25: Kørsel 2/2

Kørsel 2/2
Kørsel 2/2

Drej nu - tryk på venstre pil, hvis bilen drejer til højre Du skal vende kabler (se billedet ovenfor)

Hvis du lodder disse kabler Du kan ændre det på script.jsjust ændre rækkefølge for at sende motorers hastighed, Før:

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));

og nu skal du lege med minusser som et skridt før for at få det til at fungere korrekt;). Som du sikkert har bemærket efter at have ramt op, kører bilen ikke med fuld hastighed for at få bilen til at bevæge sig hurtigere, bare slip hurtigt pilen op, når den er i maksimal position og tryk og hold den igen

Trin 26: Hvordan fungerer det

Websiden sender 9.-byte beskedbeskeder til python script i format:

  • 1 byte en byte heltalværdi 1
  • 2 bytes heltal X kameraposition
  • 2 bytes heltal Y kameraposition
  • 1 byte helt tal venstre motortilstand (3 = bagud, 1 = fremad, 2 = stop)
  • 1 byte helt tal venstre motorhastighed
  • 1 byte heltal højre motortilstand (3 = bagud, 1 = fremad, 2 = stop)
  • 1 byte helt tal højre motorhastighed

afsendelse af besked foretages i script.js -filen ved funktionen "sendNow ()"

på RasbperryPi får python.py denne besked i funktion "onUserMessage"

Du kan tjekke det ud og spille lidt, så du ved, hvad der foregår.

klassefunktionsbeskrivelse her

Trin 27: Tablet, mobilstyring

Tablet, mobilstyring
Tablet, mobilstyring

Vi tilføjer ny webside eksakt som vi gjorde tidligere, men nu vælger vi skabelon "car4wdMobile"

Dernæst konfigurerer vi alt i script.js, som vi gjorde for desktop -kontrolwebside Meddelelsesformatet er nøjagtig det samme, så vi ikke behøver at ændre python.py -script.

Trin 28: Åbn side på mobiltelefon

Åbn side ved mobiltelefon
Åbn side ved mobiltelefon
Åbn side ved mobiltelefon
Åbn side ved mobiltelefon

I stedet for at logge ind på din konto fra mobilen skal du bare scanne QR anymous url.

detaljer om QR her

Hvis din mobilstyring fungerer, når RPi og mobil er på den samme wifi, men ikke gør det, hvis du bruger mobilt internet, så skal du tilføje turn -server, hvordan gør jeg det, jeg har skrevet her

Trin 29: Tilføjelse af Turn Server

Tilføjelse af Turn Server
Tilføjelse af Turn Server
Tilføjelse af Turn Server
Tilføjelse af Turn Server
Tilføjelse af Turn Server
Tilføjelse af Turn Server

Nogle gange (når du står bag NAT eller nogle firewallindstillinger) kan du ikke forbinde din robot fra et andet netværk, så er din robot tilsluttet. Det er ikke et stort problem, og så skal du tilføje turn server.

Jeg har testet server fra XIRSYS -firma (det er gratis til udviklerbrug), og jeg vil vise, hvordan jeg konfigurerer turn -server ved hjælp af XIRSYS -system

Tilmeld:

global.xirsys.net/dashboard/signup

klik derefter på "plus" for at tilføje applikation

til højre under "static turn credentials" Du har alle de data, du har brug for. Kopier den til filen webrtc_streamer.conf for at gøre det, gå til

udvide RaspberryPi deivces

klik på filen webrtc_streamer.conf

klik på åben

og tilføj oplysninger

turn_server = turn_username =

turn_credential =

efter du har afsluttet redigeringen Du skal have noget som skærmen.

klik derefter på Gem og genstart You Rpi, ved at klikke på menuen på RasbperryPi -enheden, og vælg genstart

Efter at RPi -programmet er genstartet Du kan se videoeksempel på din mobiltelefon, selvom du bruger mobilt internet.

Trin 30: Mobilstyring

Mobilstyring
Mobilstyring

i cirkel 1 placerer vi venstre tommelfinger, ved 2 højre - behøver ikke at være præcis på dette punkt - websiden indstiller nulposition lige efter at du har berørt skærmen, og ved at flytte dine tommelfingre (venstre kørsel, højre kameraposition) Du kan styre din bil

Trin 31: Resumé

Jeg håber, at du kunne lide denne vejledning, som jeg skrev før i denne vejledning er flere detaljer om, hvordan den fungerer under emhætten.

nogle links:

remoteme.org - remoteme.org hjemmeside der finder du dokumentationer og selvstudier

FB fanpage - Facebook fanpage nyeste information om remoteme.org

Youtube - nogle videoer af projekt, selvstudier

Skål, Maciek

Anbefalede: