Sisukord:

RasbperryPi auto koos FPV kaameraga. Juhtimine veebibrauseri kaudu: 31 sammu (piltidega)
RasbperryPi auto koos FPV kaameraga. Juhtimine veebibrauseri kaudu: 31 sammu (piltidega)

Video: RasbperryPi auto koos FPV kaameraga. Juhtimine veebibrauseri kaudu: 31 sammu (piltidega)

Video: RasbperryPi auto koos FPV kaameraga. Juhtimine veebibrauseri kaudu: 31 sammu (piltidega)
Video: Урок 12. Настройка Raspberry Pi для квадрокоптера 2024, November
Anonim
Image
Image

Ehitame 4wd auto - roolimine on sarnane nagu paagis - rataste ühe külje pööramine pöörleb erineva kiirusega kui teine. Auto juurde pannakse kaamera spetsiaalsele hoidikule, kus saame kaamera asukohta muuta. Robotit kontrollib veebibrauser (lauaarvutis Chrome või Firefox või mobiiltelefonis Firefox), brauseris saame kaameraga videot (ainult 200 ms latentsusaega) ning brauserist saame kontrollida auto liikumist ja kaamera asend. Suhtlemise hõlbustamiseks olen kasutanud süsteemi app.remoteme.org, kus on ka seda tüüpi autode juhtimine, nii et te ei pea oma koodi kirjutama, kuid muidugi saate skripte muuta uued võimalused jne.

Enne PCB -ga toite ühendamist kontrollige kindlasti kõiki ühendusi

Samm 1: Teavet App.remoteme.org kohta

Süsteem koosneb kolmest osast

  • veebirakendus - kui hostite oma kontrollveebilehti ja see seob kogu suhtluse
  • programm rasbperryPi - programm, mis saadab videot, haldab teie pythoni skripte
  • teegid, kust leiate klassi, funktsioonide definitsioonid

Remoteme.org on süsteemi kiire. Linkite kõik oma seadmed omavahel, saate seal oma veebisaite majutada, vaadata ühendatud seadmeid. Süsteem Remoteme.org on loodud selleks, et aidata teil alustada oma projektide tegemist, muretsemata protokollisuhtluse pärast, peamine idee on saata binaarsõnumeid erinevate seadmete, näiteks veebilehtede, RasbeprryPI, arduino ja skriptide vahel.

Teisest küljest annab Remoteme.org teile täieliku kontrolli oma failide üle, saate seda hõlpsalt muuta, kirjutades oma funktsioone

Selles õpetuses näitan teile, kuidas teha mõni äge projekt ilma koodi kirjutamata.

Selle õpetuse lõpus olen pannud kasulikke linke, mis aitavad teil remoteme.org süsteemi mõista.

2. samm: mida on vaja:

Mida on vaja
Mida on vaja
Mida on vaja
Mida on vaja
  • Vaarika PI Zero W
  • Spetsiaalne kaamera
  • Adafruit 16 -kanaliline 12 -bitine PWM/servo draiver - I2C liides - PCA9685 või selle kloon
  • Kaks servomehhanismi ühilduvad kaamerahoidjaga
  • Kaamerahoidja
  • Patareid - Õpetuses kaks ühendamisvõimalust
  • H sild TB6612FNG, rattaotsiku juhtimiseks
  • PCB kotkafailid Seda on lihtne muuta soojusülekande meetodiks DC-DC
  • Alandage muunduri moodul DC
  • Robotiümbris

Samm: ühendused

Ühendused
Ühendused

Vaarika pi juhtimisservo mehhanism PWM -mooduli kaudu ja mootori kiirus H -silla kaudu, mis on ühendatud RasbperryPi tihvtidega, PWM -sisendi H -sillale genereerib sama moodul, mida kasutasin servode jaoks (milliseid osi ma eespool mainisin, pole loogikamuundureid vaja)

Samm: PCB

PCB
PCB
PCB
PCB

Siit saate PCB kotka faile alla laadida. Teed on paksud, nii et seda on lihtne soojusülekande meetodil teha

Samm: PCB väljundid

PCB väljundid
PCB väljundid
PCB väljundid
PCB väljundid
  1. PWM -sisend ajamimootoritele Tuleb ühendada PWM -mooduli 15. ja 16. tihvtiga (kontrollige rohelist ristkülikut PWM -mooduli pildil)
  2. Jõuallikas ajamimootoritele (kontrollige, millise maksimaalse pingega teie mootorid töötavad)
  3. RasbperryPi ja PWM mooduli toide - peab olema täpselt
  4. Ajammootori väljundid (on kaks väljundit, kuna ühendame ajamimootorid paariks)
  5. Servomehhanismide võimsus - samuti peate kontrollima, milline pinge neile sobib
  6. Jumper praegune võimsus viiendast sisendist käivitab ka mootoreid, nii et pole vaja sisendiga 2 midagi ühendada
  7. Jumper, kui see on olemas RasbperryPi saab toidet kolmandast sisendist - enne hüppaja siia panemist kontrollige, kas ühendused on korras - te ei soovi oma RPi põletada
  8. Jootame siin kaableid, kuna me ei vaja loogikamuundureid

6. samm: kuidas see töötab

RasbperryPi -l on pythoni skript, mis kasutab kahte raamatukogu

  • importige RPi. GPIO GPIO-na-tihvtide 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM märge) jaoks, mis on ühendatud H-sillaga
  • importige PWM -mooduli jaoks Adafruit_PCA9685

RPI tihvtid on ühendatud järgmiselt 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) ja H-silla juhtimisrežiim (edasi, tagasi, seiskamine, lühike paus). H -sild vajab ka kahte PWM -signaali, et saaksime juhtida kiirust või mootori pöörlemist. Kuna projekti käigus on meil juba PWM -kontroller (kasutatakse servo jaoks), kasutame seda ka H -silla jaoks PWM -i genereerimiseks.

PWM moodul kasutab I2C sideprotokolli. Olen kasutanud karbist välja töötamist Adafruit_PCA9685. raamatukogu

7. samm: auto kokkupanek - rattad

Auto kokkupanek - rattad
Auto kokkupanek - rattad
Auto kokkupanek - rattad
Auto kokkupanek - rattad

Alustame ajamimootorite ühendamisest autoümbrisega. Vasakpoolsed/külgmised mootorid ühenduvad omavahel ja mõlemad ühendatakse mõne toitekaabliga, mis hiljem ühendatakse trükkplaadiga. Oluline märkus mootorite ühendamisel peavad kummalgi küljel rattad pöörlema samas suunas.

8. samm: toide (AA -laadimispatareid) Valik 1/2

Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2
Toide (AA -laadimispatareid) Valik 1/2

Kirjutan kaks võimsusvõimalust Auto esimene on 10xAA laadimispatareidest. Viimasel pildil olen joonistanud punased värvid, mis tuleb panna.

9. samm: toide (7,2 V Li-Po akud) Valik 2/2

Toide (7,2 V Li-Po akud) Valik 2/2
Toide (7,2 V Li-Po akud) Valik 2/2
Toide (7,2 V Li-Po akud) Valik 2/2
Toide (7,2 V Li-Po akud) Valik 2/2

Ja teine võimalus on 7,2 LI-PO aku. Sel juhul saime 3 pinget - 5v Rpi ja mooduli jaoks, 6V servodele ja otse akudest 7,2 volti ajamimootoritele. Pidin kasutama kahte astmelist moodulit

Variant 2 koos LI-PO-ga on parem:

  • Patareid on suurema mahutavusega - auto sõidab kauem
  • Suurem pinge ajamimootoritele - auto sõidab kiiremini
  • Väiksem tõenäosus, et pärast ajamimootorite paiknemist võib meil olla tohutu pingelangus ja RPI taaskäivitub.

10. samm: jootmine

Jootmine
Jootmine
Jootmine
Jootmine
Jootmine
Jootmine
Jootmine
Jootmine

Panin PCB -le mõned PWM -mooduli vahekaugused. Pole midagi kirjutada, vaadake pilte, kuidas kõike kokku joota

11. samm: kaamera

Kaamera
Kaamera

me ühendame kaamera, siin on kirjutatud, kuidas servomehhanisme tsentreerida enne kaamerahoidikusse paigaldamist, kuid lühim viis on maksimaalse pöörlemisasendi õrn käsitsi kontrollimine ja servode seadmine keskasendisse. Need tsentreeritud servomehhanismid panime kaamerahoidikusse keskmisesse asendisse (kaamera osutab otse edasi nagu fotol)

12. samm: autode osade kokku panemine

Autode osade kokku panemine
Autode osade kokku panemine
Autode osade kokku panemine
Autode osade kokku panemine
Autode osade kokku panemine
Autode osade kokku panemine

PCB jaoks olen teinud väikese pleksiklaasist laua

Samm 13: App.remoteme.org seadistamine

App.remoteme.org seadistamine
App.remoteme.org seadistamine

Olen kasutanud tasuta app.remoteme.org süsteemi, mis aitab teil ühendusi luua ja sellel on juba vajalikud skriptid

Selles juhendis näitan ma samm -sammult, mida tuleks autosõidu tegemiseks teha (siit leiate lisateavet)

  • Laulge pärast registreerumist saidil https://app.remoteme.org. Teid logitakse automaatselt sisse
  • avage vasakul vahekaart Token, seejärel klõpsake „uus žetoon”, andke mõni nimi ja klõpsake nuppu OK, lõime just uue märgi (pilt ekraanil)
  • selles näites on sümboolne väärtus: ~ 1_ & p@+BNnZ@A+x8 (teie oma on erinev;))

14. samm: RasbperryPi seadistamine

RasbperryPi konfiguratsioon
RasbperryPi konfiguratsioon

kittkonsoolis (siit saate teada, kuidas seadistada meie RPi, lülitage kaamera I2c side sisse)

git kloon git: //github.com/remoteme/remoteme.git

cd kaugseade

python3.5 install.py

  • Instalator esitab meile mõned küsimused kõigi vastuste korral ja kinnitab [enter]
  • kui installimine küsib märki, kleepime (vahetus+sisestamine) rakendusest kopeeritud märgi ja sisestusklahvi
  • nimi näiteks Rpi
  • deviceId 1 Sisestage
  • pärast installimist - käivitage programm

./runme.sh

Samm: ühenduste kontrollimine

Ühenduste kontrollimine
Ühenduste kontrollimine

Läheme tagasi saidile

Vahekaardil Seadmed näeme meie ühendatud RPi (roheline lingiikoon tähendab, et RPi on praegu ühendatud)

16. samm: Pythoni skripti lisamine

Pythoni skripti lisamine
Pythoni skripti lisamine
Pythoni skripti lisamine
Pythoni skripti lisamine

Nüüd lisame pythoni skripti, mis on juba mallide juures, nii et me ei pea midagi programmeerima.

Avage seadmete vahekaardil RasbperryPi menüü ja valige "Lisa väline skript".

Kui ilmub uus aken, esitage teave nagu ülaltoodud pildil

Ärge unustage valida malli "car4wd". Pärast neid samme lisab remoteme.org meie RasbperryPi -le pythoni skripti ja taaskäivitab selle

17. samm: kontrollige, kas Pythoni skript on edukalt lisatud

Kontrollimine, kas Pythoni skript on edukalt lisatud
Kontrollimine, kas Pythoni skript on edukalt lisatud

Vahekaardile Seadmed tuleks lisada uus pythoni skriptiga seade ja selle seadme ID on 2. Selle seadme ID veebisait saadab sõnumeid auto juhtimiseks

18. samm: veebisaidi lisamine auto juhtimisse

Veebilehe lisamine juhtimisautole
Veebilehe lisamine juhtimisautole

seadmete vahekaardil klõpsake "Uus" ja seejärel "Veebileht". Lisame lihtsalt teise seadme - veebilehe, mida kasutame oma auto juhtimiseks. Ja kuna me kasutasime veebilehel malli "car4wdDesktop", on failid juba peaaegu kasutamiseks valmis

19. samm: seadistage veebisaidi seade auto juhtimiseks 1/2

Veebilehe seadme seadistamine auto juhtimiseks 1/2
Veebilehe seadme seadistamine auto juhtimiseks 1/2

Laiendage vahekaardil Seade WebPage ja klõpsake index.html ning seejärel Ava

Samm 20: seadistage WebPage'i seade auto juhtimiseks 2/2

Veebilehe seadme seadistamine auto juhtimiseks 2/2
Veebilehe seadme seadistamine auto juhtimiseks 2/2

Ilmub aken, siis peame esitama seadme puldi skripti deviceId meie puhul deviceId on 2. Muudame pildil näidatud kohta

Samm: avage auto juhtimiskeskus

Avage Auto juhtimiskeskus
Avage Auto juhtimiskeskus
Avage Auto juhtimiskeskus
Avage Auto juhtimiskeskus

Nüüd on aeg avada meie leht ja vaadata, kuidas see töötab. Vahekaardil Seade klõpsake nuppu index.html ja seejärel „Ava uuel vahelehel“Video eelvaate saamiseks peate kasutama Chrome'i või Firefoxi brauserit, teiste brauser ei toeta täielikult webRTC -d

22. samm: kaamera konfiguratsioon 1/2

Kaamera konfiguratsioon 1/2
Kaamera konfiguratsioon 1/2

Kui liigutame hiirt videopiirkonnas, peaks kaamera asendit muutma ja see peaks toimima täpselt nagu FPS -mängudes. Tõenäoliselt ei liigu see õigesti

Samm 23: Kaamera seadistamine 2/2

Kaamera konfiguratsioon 2/2
Kaamera konfiguratsioon 2/2

Avage script.js (vahekaart Seadmed laiendage veebilehte, seejärel klõpsake käsku script.js, seejärel avage) ja leidke koht, mida ekraanil näitasin

minu juhtumi keskpunktis on 560 ja 430 ning liigutuste ulatus on mõlema telje jaoks 200

Peate nende numbritega katsetama, et saaksite kaamera positsiooni keskpunkti ja sujuvat liikumist. Kui kasutasite seda õpetust, kopeerige lihtsalt kleebitud antud väärtused

24. samm: sõitmine 1/2

Sõitmine 1/2
Sõitmine 1/2

Kui vajutate klaviatuuril ülesnoolt, peaksid näidikud asendit muutma ja auto peaks sõitma. Kui vajutate "üles" noolt ja auto pöörleb, peate ekraani kohtades miinuse lisama/eemaldama.

Pärast seda toimingut peaks pärast ülesnoolt vajutamist auto sõitma ette ja alla noolega auto tagasi.

25. samm: sõitmine 2/2

Sõitmine 2/2
Sõitmine 2/2

Nüüd pöörates - vajutage vasakule noolele, kui auto pöörab paremale. Peate kaablid ümber pöörama (vaadake ülaltoodud pilti)

Kui joote need kaablid, saate seda muuta saidil script.js. Lihtsalt muutke mootorite kiiruse saatmise järjekorda, enne:

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

pärast:

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

ja nüüd peate mängima miinustega, nagu üks samm enne, et see korralikult töötaks;). Nagu te ilmselt märkasite pärast löögiklaasi üles sõitmist, ei sõida auto täiskiirusel, et auto kiiremini liikuda, vaid vabastage ülesnool, kui see on maksimaalses asendis ja hoidke seda uuesti all

26. samm: kuidas see töötab

Veebileht saadab 9-baidiseid sõnumeid pythoni skripti vormingus:

  • 1 bait üks bait täisarv 1
  • 2 baiti täisarv X kaamera asukoht
  • 2 baiti täisarvuline Y kaamera asukoht
  • 1 bait täisarv vasak mootorirežiim (3 = tagasi, 1 = edasi, 2 = seiskamine)
  • 1 bait täisarv vasakpoolne mootori kiirus
  • 1 bait täisarvuline parempoolne mootorirežiim (3 = tagasi, 1 = edasi, 2 = seiskamine)
  • 1 bait täisarv parem mootori kiirus

sõnum saadetakse failis script.js funktsioonis "sendNow ()"

aadressil RasbperryPi saab python.py selle sõnumi funktsiooni "onUserMessage"

Saate seda vaadata ja natuke mängida, nii et teate, mis toimub.

klassi funktsioonide kirjeldus siin

27. samm: tahvelarvuti, mobiilne juhtimine

Tahvelarvuti, mobiilne juhtimine
Tahvelarvuti, mobiilne juhtimine

Lisame uue veebisaidi suurepäraselt nagu eelmisel korral, kuid nüüd valime malli "car4wdMobile"

Järgmisena konfigureerime kõik skriptis.js, nagu tegime töölaua juhtimise veebilehe puhul. Sõnumivorming on täpselt sama, nii et me ei pea skripti python.py muutma.

Samm: avage leht mobiiltelefonis

Avage leht mobiiltelefonis
Avage leht mobiiltelefonis
Avage leht mobiiltelefonis
Avage leht mobiiltelefonis

Mobiiltelefonilt oma kontole sisselogimise asemel skannige lihtsalt anonüümne QR -aadress.

QR -i üksikasjad leiate siit

Kui teie mobiilikontroll töötab, kui RPi ja mobiil on samal wifi -l, kuid ei tööta, kui kasutate mobiilset internetti, peate lisama pöördeserveri, kuidas seda teha, olen siin kirjutanud

Samm 29: Turn Serveri lisamine

Turn Serveri lisamine
Turn Serveri lisamine
Turn Serveri lisamine
Turn Serveri lisamine
Turn Serveri lisamine
Turn Serveri lisamine

Mõnikord (kui olete NAT -i või mõne tulemüüri sätte taga) ei saa te oma robotit teisest võrgust ühendada, siis on teie robot ühendatud. See pole suur probleem ja siis peate lisama pöördeserveri.

Olen testinud XIRSYS ettevõtte serverit (see on arendajatele tasuta kasutamiseks) ja näitan, kuidas pöördserverit XIRSYS süsteemi abil konfigureerida

Registreeri:

global.xirsys.net/dashboard/signup

seejärel klõpsake rakenduse lisamiseks "pluss"

paremal "Staatilise pöörde mandaat" all Teil on kõik vajalikud andmed. Selleks kopeerige see faili webrtc_streamer.conf, minge aadressile

laiendada RaspberryPi deivse

klõpsake faili webrtc_streamer.conf

klõpsake avatud

ja lisage teavet

turn_server = turn_username =

turn_credential =

pärast redigeerimise lõpetamist peaks ekraanil olema midagi sarnast.

seejärel klõpsake nuppu Salvesta ja taaskäivitage You Rpi, klõpsates RasbperryPi seadme menüül ja seejärel taaskäivitage

Pärast RPi programmi taaskäivitamist näete oma mobiiltelefonis video eelvaadet isegi siis, kui kasutate mobiilset internetti.

30. samm: mobiilne juhtimine

Mobiilne juhtimine
Mobiilne juhtimine

ringil 1 asetame vasaku pöidla, 2 paremale - ei pea olema täpselt selles kohas - veebileht seab kohe pärast puuteekraani puudutamist nulli ja pöidlaid liigutades (vasakpoolne sõit, kaamera parem asend) sinu Auto

31. samm: kokkuvõte

Loodan, et teile meeldis see õpetus, nagu ma selles õpetuses varem kirjutasin, on rohkem teavet selle kohta, kuidas see kapoti all töötab.

mõned lingid:

remoteme.org - saidi remoteme.org koduleht Leiate dokumentatsiooni ja õpetusi

FB fännileht - Facebooki fännilehe uusim teave remoteme.org kohta

Youtube - mõned projektivideod, õpetused

Tervist, Maciek

Soovitan: