Innholdsfortegnelse:

RasbperryPi -bil med FPV -kamera. Kontroll av nettleser: 31 trinn (med bilder)
RasbperryPi -bil med FPV -kamera. Kontroll av nettleser: 31 trinn (med bilder)

Video: RasbperryPi -bil med FPV -kamera. Kontroll av nettleser: 31 trinn (med bilder)

Video: RasbperryPi -bil med FPV -kamera. Kontroll av nettleser: 31 trinn (med bilder)
Video: I BOUGHT MY DREAM BIKE! + Face Reveal Again? 2024, Juli
Anonim
Image
Image

Vi skal bygge 4 -hjulet bil - styringen vil være lik som i en tank - for å snu den ene siden av hjulene vil rotere med annen hastighet enn den andre. Ved bilen vil det bli plassert kamera på spesiell holder der vi kan endre kameraposisjon. Roboten vil bli kontrollert av nettleser (chrome eller firefox på skrivebordet, eller firefox på mobiltelefon), i nettleseren, Vi får kameravideo (med bare 200 ms forsinkelse), og fra nettleseren kan vi kontrollere bilens bevegelser og kameraposisjon. For å gjøre kommunikasjonen enklere Jeg har brukt app.remoteme.org -systemet, det er også arbeid ut av boksen for å kontrollere denne typen biler, så du trenger ikke å skrive din egen kode, men selvfølgelig kan du endre skript legge til nye muligheter osv.

Før du kobler strøm til kretskortet, vennligst dobbeltsjekk alle tilkoblinger

Trinn 1: Litt informasjon om App.remoteme.org

Systemet har tre deler

  • webapplikasjon - når du er vert for kontrollnettstedene dine og den kobler all kommunikasjon
  • rasbperryPi -program - program som sender video, administrer python -skriptene dine
  • biblioteker der du finner definisjoner av klasse, funksjoner

Remoteme.org er systemhurtig Du kobler alle enhetene dine sammen. Du kan være vertskap for Deres websider, se de tilkoblede enhetene dine. Remoteme.org -systemet ble laget for å hjelpe deg med å begynne å lage dine prosjekter, uten å bekymre deg for protokollkommunikasjon, hovedideen er å sende binære meldinger mellom forskjellige enheter, for eksempel websider, RasbeprryPI, arduino og skript.

På den annen side gir Remoteme.org deg full kontroll over filene dine. Du kan enkelt endre den ved å skrive din egen funksjonalitet

På denne opplæringen vil jeg vise deg hvordan du lager et fantastisk prosjekt uten å skrive noen kode.

På slutten av denne opplæringen har jeg lagt til nyttige lenker som hjelper deg å forstå remoteme.org -systemet.

Trinn 2: Hva er nødvendig:

Hva er nødvendig
Hva er nødvendig
Hva er nødvendig
Hva er nødvendig
  • Bringebær PI Zero W
  • Dedikert kamera
  • Adafruit 16 -kanals 12 -biters PWM/servodriver - I2C -grensesnitt - PCA9685 eller dens klon
  • To servomekanismer kompatible med kameraholderen
  • Kameraholder
  • Batterier - I opplæringen to muligheter for tilkobling
  • H bro TB6612FNG, for å kontrollere hjulspeer
  • PCB-ørnefiler Det er enkelt å gjøre det termisk overføringsmetode DC-DC
  • Step Down Converter Module DC
  • Robotetui

Trinn 3: Tilkoblinger

Tilkoblinger
Tilkoblinger

Raspberry pi -kontrollservomekanisme gjennom PWM -modul og motorhastighet ved H -bro som er koblet til RasbperryPi -pinner, PWM -inngang til H -bro genereres av den samme modulen jeg brukte for servoer (hvilke deler jeg nevner ovenfor, er ikke nødvendig med noen logiske omformere)

Trinn 4: PCB

PCB
PCB
PCB
PCB

Du kan laste ned PCB -ørnefiler herfra Baner er fete, så det er enkelt å lage det med termisk overføringsmetode

Trinn 5: PCB -utganger

PCB -utganger
PCB -utganger
PCB -utganger
PCB -utganger
  1. PWM -inngang for drivmotorer Bør kobles til PWM -modulens 15. og 16. pinner (sjekk grønt rektangel på bildet av PWM -modulen)
  2. Strøminngang for drivmotorer (sjekk hvilken maksimal spenning motorene dine kan jobbe med)
  3. Strøm for RasbperryPi og PWM -modulen - må være nøyaktig
  4. Drivmotorutganger (det er to utganger fordi vi vil koble drivmotorer)
  5. Servomekanismer makt - også Du må sjekke hvilken spenning som er bra for dem
  6. Jumper sin nåværende effekt fra femte inngang vil også drive motorer, så du trenger ikke koble noe til inngang 2
  7. Hopper hvis den er tilstede RasbperryPi vil være strøm fra tredje inngang - før du setter jumper her, sjekk om tilkoblingene er OK - Du vil ikke brenne RPi
  8. La lodde her kabler siden vi ikke trenger logiske omformere

Trinn 6: Hvordan det fungerer

På RasbperryPi er det python -script som bruker to biblioteker

  • importer RPi. GPIO som GPIO-for pinner 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM-notasjon) som er koblet til H-broen
  • importer Adafruit_PCA9685 for PWM -modul

Rpi-pinner er koblet til som følger 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) og kontrollmodus for H-broen (forover, bakover, stopp, kort pause). H bridge trenger også to PWM -signaler slik at vi kan kontrollere hastighet eller motorrotasjon. Fordi vi i prosjektet allerede har PWM -kontroller (brukt til servo), vil vi også bruke den til å generere PWM for H bridge.

PWM -modulen bruker I2C kommunikasjonsprotokoll. Jeg har brukt å jobbe ut av esken Adafruit_PCA9685. bibliotek

Trinn 7: Bilmontering - Hjul

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

Vi starter med å koble drivmotorer til bilhuset. Venstre/sidemotorer kobles sammen, og begge kobles til en strømkabel som senere vil bli koblet til kretskort. VIKTIG merknad mens motorene kobles til, må hjulene på hver side rotere i samme retning.

Trinn 8: Strøm (AA -lade batterier) Alternativ 1/2

Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2
Strøm (AA -ladebatterier) Alternativ 1/2

Jeg vil skrive to muligheter for kraft Bilen første er fra 10xAA lade batterier. Til slutt har jeg tegnet av røde farger, hoppere som må settes.

Trinn 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

Og det andre alternativet er 7,2 LI-PO batteri. I dette tilfellet fikk vi 3 spenninger - 5v For Rpi og modul, 6V for servoer og direkte fra batterier 7,2 volt for drivmotorer. Jeg måtte bruke to trinn ned moduler

Alternativ 2 med LI-PO er bedre:

  • Batterier har større kapasitet - bilen vil kjøre lenger
  • Større spenning for drivmotorer - bilen vil kjøre raskere
  • Mindre sannsynlighet for at etter at motorer begynner å finne, kan vi få stort spenningsfall og RPI starter på nytt.

Trinn 10: Lodding

Lodding
Lodding
Lodding
Lodding
Lodding
Lodding
Lodding
Lodding

Jeg har satt på noen avstandsstykker på PCB for PWM -modul. Det er ingenting å skrive bare sjekk ut bilder hvordan du lodder alt sammen

Trinn 11: Kamera

Kamera
Kamera

vi kobler til kameraet, her er skrevet hvordan man sentrerer servomekanismer før montering i kameraholderen, men den korteste måten er å forsiktig manuelt kontrollere maksimal rotasjonsposisjon og sette servoer i midtposisjon. Disse sentrerte servomekanismene setter vi inn i kameraholderen i senterposisjonen (kameraet peker rett frem som på bildet)

Trinn 12: Sett sammen bildeler

Å sette bildeler sammen
Å sette bildeler sammen
Å sette bildeler sammen
Å sette bildeler sammen
Å sette bildeler sammen
Å sette bildeler sammen

Til PCB har jeg laget et lite plexiglassbord

Trinn 13: App.remoteme.org -konfigurasjon

App.remoteme.org -konfigurasjon
App.remoteme.org -konfigurasjon

Jeg har brukt et gratis app.remoteme.org -system, det hjelper deg med å lage tilkoblinger, og det har allerede skript som vi trenger

På dette instruktive, vil jeg bare vise trinn for trinn hva som bør gjøres for å få bilkjøring (her finner du flere detaljer)

  • Syng opp på https://app.remoteme.org etter registrering Du blir automatisk logget på
  • åpne kategorien Token til venstre, klikk deretter på "nytt token" gi et navn og klikk OK, Vi har nettopp opprettet nytt token (bilde på skjermen)
  • i dette eksemplet er tokenverdien: ~ 1_ & p@+BNnZ@A+x8 (din vil være annerledes;))

Trinn 14: RasbperryPi -konfigurasjon

RasbperryPi -konfigurasjon
RasbperryPi -konfigurasjon

på kittkonsoll (her hvordan du konfigurerer vår RPi slå på kamera I2c kommunikasjon)

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

fjernkontroll av cd

python3.5 install.py

  • Instalator vil stille oss noen spørsmål for alt vi svarer [Y] es og bekrefte med [enter]
  • når installasjonen vil be om token limer vi inn (shift+insert) token kopiert fra programmet og Enter
  • navnet for eksempel Rpi
  • deviceId 1 Skriv inn
  • etter installasjon - kjør programmet

./runme.sh

Trinn 15: Kontrollere tilkoblinger

Kontrollerer tilkoblinger
Kontrollerer tilkoblinger

La oss gå tilbake til

På fanen enheter vil vi se vår tilkoblede RPi (grønt lenkeikon betyr at RPi er tilkoblet akkurat nå)

Trinn 16: Legge til Python Script

Legger til Python Script
Legger til Python Script
Legger til Python Script
Legger til Python Script

Nå vil vi legge til python -script, det er allerede på malene, så vi trenger ikke å programmere noe.

I kategorien enheter åpner du RasbperryPi -menyen og velger "Legg til eksternt skript".

Når nytt vindu vises, gi informasjon som på bildet ovenfor

Ikke glem å velge mal "car4wd". Etter disse trinnene vil remoteme.org legge til python -script til RasbperryPi og starte det på nytt

Trinn 17: Kontroller om Python -skript ble lagt til med hell

Sjekker om Python -skript ble lagt til med hell
Sjekker om Python -skript ble lagt til med hell

På fanen enheter bør det legges til ny python -skriptenhet, og enhetens ID er 2. På denne enhets -ID -siden vil sendes meldinger for å styre bilen

Trinn 18: Legge til webside i Control Car

Legger til webside i Control Car
Legger til webside i Control Car

i kategorien enheter klikker du "Ny" og deretter "Webside". Vi legger bare til en annen enhet - websiden vi vil bruke den til å kontrollere bilen vår. Og fordi vi brukte malen "car4wdDesktop" på nettsiden er filer allerede nesten klare til bruk

Trinn 19: Konfigurer websidenheten til å styre bilen 1/2

Konfigurer websiden til å kontrollere bilen 1/2
Konfigurer websiden til å kontrollere bilen 1/2

Utvid websiden på kategorien enhet, og klikk på index.html og deretter Åpne

Trinn 20: Konfigurer websidenheten til å styre bil 2/2

Konfigurer websiden til å styre bil 2/2
Konfigurer websiden til å styre bil 2/2

Vinduet vises, så må vi oppgi deviceId av python -skriptet vårt på case -enheten. Id er 2. La oss endre stedet som vises på bildet

Trinn 21: Åpne Car Control Center

Åpne bilkontrollsenter
Åpne bilkontrollsenter
Åpne bilkontrollsenter
Åpne bilkontrollsenter

Nå er det på tide å åpne siden vår og se hvordan den fungerer. På enhetsfanen klikker du index.html og deretter "Åpne i ny fane" For å få forhåndsvisninger av video Du må bruke Chrome eller Firefox nettleser, andre nettleser støtter ikke webRTC fullt ut

Trinn 22: Kamerakonfigurasjon 1/2

Kamerakonfigurasjon 1/2
Kamerakonfigurasjon 1/2

Når vi flytter musen på videoområdet, bør kameraet endre posisjon, og det skal fungere akkurat som i FPS -spill. Det vil sannsynligvis ikke bevege seg riktig

Trinn 23: Kamerakonfigurasjon 2/2

Kamerakonfigurasjon 2/2
Kamerakonfigurasjon 2/2

Åpne script.js (kategorien enheter utvid nettsiden, klikk deretter på script.js og åpne deretter) og finn stedet jeg viste på skjermen

i min senterposisjon er 560 og 430 og bevegelsesområdet er for begge aksene 200

Du må eksperimentere med disse tallene, slik at du får kameraposisjonssenter og jevne bevegelser. Hvis du brukte denne opplæringen, kopierer du bare inngitte verdier

Trinn 24: Kjøring 1/2

Kjører 1/2
Kjører 1/2

Hvis du trykker på pil opp på tastaturet, måler måle posisjoner og bilen skal kjøre. Hvis du trykker på "opp" -pilen og bilen svinger, må du legge til/fjerne minus på steder på skjermen.

Etter denne operasjonen etter å ha truffet "opp" pilen skal bilen kjøre foran og nedover pilen bilen skal kjøre bakover.

Trinn 25: Kjøring 2/2

Kjører 2/2
Kjører 2/2

Nå svinger - treffer venstre pil hvis bilen svinger til høyre Du må snu kabler (sjekk bildet ovenfor)

Hvis du lodder disse kablene Du kan endre det på script.jsjust endre rekkefølge for å sende motorhastighet, 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));

etter:

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 nå må du leke med minuser som et skritt før for å få det til å fungere riktig;). Som du sikkert la merke til etter at pilen har slått opp, kjører bilen ikke med full hastighet for å få bilen til å bevege seg raskere, bare slipp opp pilen når den er i maksimal posisjon og trykk og hold den igjen

Trinn 26: Hvordan fungerer det

Nettsiden sender melding om 9. byte til python-script i format:

  • 1 byte ett byte heltall verdi 1
  • 2 byte heltall X kameraposisjon
  • 2 byte heltall Y kameraposisjon
  • 1 byte heltall venstre motormodus (3 = bakover, 1 = fremover, 2 = stopp)
  • 1 byte heltall motorhastighet
  • 1 byte heltall høyre motormodus (3 = bakover, 1 = fremover, 2 = stopp)
  • 1 byte heltall høyre motorhastighet

sendemeldingen blir laget i script.js -filen ved funksjonen "sendNow ()"

på RasbperryPi får python.py denne meldingen i funksjon "onUserMessage"

Du kan sjekke det ut og spille litt, slik at du vet hva som skjer.

beskrivelse av klassefunksjoner her

Trinn 27: Nettbrett, mobilstyring

Nettbrett, mobilstyring
Nettbrett, mobilstyring

Vi legger til ny webside eksakt som vi gjorde forrige gang, men nå velger vi malen "car4wdMobile"

Deretter konfigurerer vi alt i script.js som vi gjorde for desktop control webpage Meldingsformatet er nøyaktig det samme, slik at vi ikke trenger å endre python.py script.

Trinn 28: Åpne side på mobiltelefon

Åpne siden på mobiltelefonen
Åpne siden på mobiltelefonen
Åpne siden på mobiltelefonen
Åpne siden på mobiltelefonen

I stedet for å logge på kontoen din fra mobilen, er det bare å skanne QR anymous url.

detaljer om QR her

Hvis mobilkontrollen din fungerer når RPi og mobil er på samme wifi, men ikke hvis du bruker mobilt internett, må du legge til en server, hvordan gjør jeg det jeg har skrevet her

Trinn 29: Legge til Turn Server

Legger til Turn Server
Legger til Turn Server
Legger til Turn Server
Legger til Turn Server
Legger til Turn Server
Legger til Turn Server

Noen ganger (når du står bak NAT eller noen brannmurinnstillinger) kan du ikke koble roboten din fra et annet nettverk, så er roboten din tilkoblet. Det er ikke et stort problem, og da må du legge til turn -server.

Jeg har testet server fra XIRSYS -firmaet (det er gratis for utviklerbruk), og jeg vil vise hvordan du konfigurerer turn -server ved hjelp av XIRSYS -system

registrere:

global.xirsys.net/dashboard/signup

klikk deretter "pluss" for å legge til applikasjon

til høyre under "static turn credentials" Du har alle dataene du trenger. Kopier den til filen webrtc_streamer.conf for å gjøre det, gå til

utvide RaspberryPi -enheter

klikk på filen webrtc_streamer.conf

klikk på åpne

og legge til informasjon

turn_server = turn_username =

turn_credential =

etter at du har avsluttet redigeringen Du bør ha noe som skjermen.

klikk deretter på Lagre og start You Rpi på nytt, ved å klikke på menyen på RasbperryPi -enheten og velge omstart

Etter at RPi -programmet er startet på nytt Du kan se forhåndsvisning av video på mobiltelefonen din selv om du bruker mobilt internett.

Trinn 30: Mobilstyring

Mobilstyring
Mobilstyring

i sirkel 1 plasserer vi venstre tommel, 2 til høyre - trenger ikke å være nøyaktig på dette punktet - websiden vil sette nullposisjon like etter at du har berørt skjermen, og ved å flytte tommelen (venstre kjøring, høyre kameraposisjon) Du kan kontrollere din bil

Trinn 31: Oppsummering

Jeg håper du likte denne opplæringen, som jeg skrev før i denne opplæringen er flere detaljer om hvordan det fungerer under hetten.

noen lenker:

remoteme.org - hjemmesiden til remoteme.org der Du finner dokumentasjoner og opplæringsprogrammer

FB fanpage - Facebook fanpage nyeste informasjon om remoteme.org

Youtube - noen videoer av prosjektet, opplæringsprogrammer

Jubel, Maciek

Anbefalt: