Kazalo:

Avto RasbperryPi s FPV kamero. Nadzor s spletnim brskalnikom: 31 korakov (s slikami)
Avto RasbperryPi s FPV kamero. Nadzor s spletnim brskalnikom: 31 korakov (s slikami)

Video: Avto RasbperryPi s FPV kamero. Nadzor s spletnim brskalnikom: 31 korakov (s slikami)

Video: Avto RasbperryPi s FPV kamero. Nadzor s spletnim brskalnikom: 31 korakov (s slikami)
Video: Yahboom Raspbot AI Vision Robot Car with FPV camera for Raspberry Pi 4B 2024, November
Anonim
Image
Image

Izdelali bomo štirikolesni avtomobil - krmiljenje bo podobno kot v rezervoarju - za obračanje ene strani koles se bo vrtelo z različno hitrostjo kot druga. Pri avtu bo kamera nameščena na posebnem nosilcu, kjer lahko spremenimo položaj kamere. Robota bo nadzoroval spletni brskalnik (chrome ali firefox na namizju ali firefox na mobilnem telefonu), v brskalniku bomo dobili video posnetek s kamero (z le 200 ms zakasnitve), iz brskalnika pa lahko nadzorujemo gibanje avtomobila in položaj kamere. Za lažjo komunikacijo sem uporabil sistem app.remoteme.org, za tovrstne avtomobile pa je pripravljeno tudi upravljanje, zato vam ni treba pisati lastne kode, seveda pa lahko spremenite skripte nove možnosti itd.

Preden priključite napajanje na tiskano vezje, dvakrat preverite vse povezave

1. korak: Nekaj informacij o App.remoteme.org

Sistem ima tri dele

  • webapplication - ko gostite svoje nadzorne spletne strani in povezujejo vso komunikacijo
  • rasbperryPi program - program, ki pošilja videoposnetke, upravlja vaše python skripte
  • knjižnice, kjer najdete razrede, definicije funkcij

Remoteme.org je sistemsko hiter. Povežete vse svoje naprave skupaj, tam lahko gostite svoje spletne strani, si ogledate povezane naprave. Sistem Remoteme.org je bil ustvarjen, da vam pomaga začeti ustvarjati svoje projekte, ne da bi skrbeli za komunikacijo po protokolih, glavna ideja je pošiljanje binarnih sporočil med različnimi napravami, kot so spletne strani, RasbeprryPI, arduino in skripti.

Po drugi strani vam Remoteme.org daje popoln nadzor nad vašimi datotekami. Lahko ga preprosto spremenite tako, da napišete svojo lastno funkcionalnost

Na tej vadnici vam bom pokazal, kako narediti neverjeten projekt skoraj brez pisanja kode.

Na koncu te vadnice sem dal uporabne povezave, ki vam bodo pomagale razumeti sistem remoteme.org.

2. korak: Kaj je potrebno:

Kaj je potrebno
Kaj je potrebno
Kaj je potrebno
Kaj je potrebno
  • Malina PI Zero W
  • Namenska kamera
  • 16 -kanalni 12 -bitni PWM/servo gonilnik Adafruit - vmesnik I2C - PCA9685 ali njegov klon
  • Dva servo mehanizma, združljiva z držalom kamere
  • Držalo za fotoaparat
  • Baterije - V vadnici dve možnosti povezave
  • H most TB6612FNG, za krmiljenje kolesca
  • Datoteke PCB eagle Enostaven je način toplotnega prenosa DC-DC
  • Step Down pretvorniški modul DC
  • Ohišje robota

3. korak: Povezave

Povezave
Povezave

Servo mehanizem za krmiljenje Raspberry pi preko PWM modula in hitrosti motorja s H mostom, ki je povezan z zatiči RasbperryPi, vhod PWM na H most se ustvari z istim modulom, ki sem ga uporabil za servomotorje (ki jih omenjam zgoraj, niso potrebni nobeni logični pretvorniki)

4. korak: PCB

PCB
PCB
PCB
PCB

Od tu lahko prenesete datoteke PCB eagle. Poti so debele, zato jih je enostavno narediti s toplotno metodo prenosa

5. korak: Izhodi iz tiskanega vezja

PCB izhodi
PCB izhodi
PCB izhodi
PCB izhodi
  1. Vhod PWM za pogonske motorje je treba povezati s 15 -im in 16 -im zatičem modula PWM (zeleni pravokotnik preverite na sliki modula PWM)
  2. Vhodna moč pogonskih motorjev (preverite, s kakšno največjo napetostjo lahko delujejo vaši motorji)
  3. Napajanje za modul RasbperryPi in PWM - mora biti natančno
  4. Izhodi pogonskih motorjev (obstajata dva izhoda, ker bomo združili pogonske motorje)
  5. Moč servo mehanizmov - prav tako morate preveriti, katera napetost je zanje dobra
  6. Skakalnik, ki ima trenutno moč s 5. vhoda, bo poganjal tudi motorje, zato ni treba ničesar priključiti na vhod 2
  7. Mostiček, če je prisoten RasbperryPi bo napajal iz tretjega vhoda - preden postavite mostiček sem, preverite, ali so povezave v redu - ne želite zapisati svojega RPi
  8. Tu lahko spajkamo kable, saj ne potrebujemo logičnih pretvornikov

6. korak: Kako bo delovalo

V RasbperryPi obstaja skript python, ki uporablja dve knjižnici

  • uvoz RPi. GPIO kot GPIO-za zatiče 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (zapis BCM), ki so povezani s H mostom
  • uvozite Adafruit_PCA9685 za PWM modul

Zatiči Rpi so povezani na naslednji način: 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) in način upravljanja mostu H (naprej, nazaj, zaustavitev, kratek premor). H most potrebuje tudi dva signala PWM, da lahko nadzorujemo hitrost ali vrtenje motorja. Ker pri projektu že imamo krmilnik PWM (uporabljen za servo), ga bomo uporabili tudi za generiranje PWM za H most.

Modul PWM uporablja komunikacijski protokol I2C. Uporabil sem že pripravljen Adafruit_PCA9685. knjižnica

7. korak: Sestavljanje avtomobila - kolesa

Sestavljanje avtomobilov - kolesa
Sestavljanje avtomobilov - kolesa
Sestavljanje avtomobilov - kolesa
Sestavljanje avtomobilov - kolesa

Začeli bomo s priključitvijo pogonskih motorjev na ohišje avtomobila. Levi/stranski motor se povežeta skupaj in oba para povežeta z napajalnim kablom, ki bo kasneje priključen na tiskano vezje. Pomembno opozorilo pri priključitvi motornih koles na vsaki strani se mora vrteti v isto smer.

8. korak: Napajanje (baterije za polnjenje AA) Možnost 1/2

Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2
Napajanje (polnilne baterije AA) Možnost 1/2

Napisal bom dve možnosti napajanja Avto prvi je iz 10xAA polnilnih baterij Nazadnje sem narisal skakalce rdečih barv, ki jih je treba postaviti.

9. korak: Napajanje (Li-Po 7.2V baterije) Možnost 2/2

Napajanje (Li-Po 7.2V baterije) Možnost 2/2
Napajanje (Li-Po 7.2V baterije) Možnost 2/2
Napajanje (Li-Po 7.2V baterije) Možnost 2/2
Napajanje (Li-Po 7.2V baterije) Možnost 2/2

Druga možnost je baterija 7,2 LI-PO. V tem primeru imamo 3 napetosti - 5 V za Rpi in modul, 6 V za servomotorje in neposredno iz baterij 7,2 V za pogonske motorje. Moral sem uporabiti dva koraka navzdol

Druga možnost z LI-PO je boljša:

  • Baterije imajo večjo kapaciteto - avto bo vozil dlje
  • Večja napetost pogonskih motorjev - avto bo vozil hitreje
  • Manjša verjetnost, da bi po zagonu motorjev lahko prišlo do velikega padca napetosti in ponovnega zagona RPI.

10. korak: Spajkanje

Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje
Spajkanje

Na PCB sem dal nekaj distančnikov za PWM modul. Ni kaj pisati, samo poglejte slike, kako vse skupaj spajkati

11. korak: Kamera

Kamera
Kamera

povežemo kamero, tukaj je napisano, kako centrirati servo mehanizme pred namestitvijo v držalo kamere, vendar je najkrajša pot, da nežno ročno preverite največji položaj vrtenja in nastavite servomotorje v srednji položaj. Te centrirane servo mehanizme vstavimo v nosilec fotoaparata v srednjem položaju (kamera kaže naravnost kot na fotografiji)

Korak 12: Sestavljanje avtomobilskih delov

Sestavljanje avtomobilskih delov
Sestavljanje avtomobilskih delov
Sestavljanje avtomobilskih delov
Sestavljanje avtomobilskih delov
Sestavljanje avtomobilskih delov
Sestavljanje avtomobilskih delov

Za tiskano vezje sem naredil majhno mizo iz pleksi stekla

Korak: Konfiguracija aplikacije App.remoteme.org

App.remoteme.org Konfiguracija
App.remoteme.org Konfiguracija

Uporabil sem brezplačen sistem app.remoteme.org, ki vam pomaga pri vzpostavljanju povezav in že ima skripte, ki jih potrebujemo

Na tem navodilu bom le korak za korakom pokazal, kaj je treba narediti za vožnjo avtomobila (tukaj boste našli več podrobnosti)

  • Pojdite na https://app.remoteme.org po prijavi Samodejno boste prijavljeni
  • odprite zavihek Žeton na levi, nato kliknite »nov žeton«, vnesite ime in kliknite V redu. Pravkar smo ustvarili nov žeton (slika na zaslonu)
  • v tem primeru je vrednost žetona: ~ 1_ & p@+BNnZ@A+x8 (vaša bo drugačna;))

Korak 14: Konfiguracija RasbperryPi

Konfiguracija RasbperryPi
Konfiguracija RasbperryPi

na konzoli kit (tukaj, kako nastaviti RPi, vklopite komunikacijo kamere I2c)

git clone git: //github.com/remoteme/remoteme.git

cd daljinski upravljalnik

python3.5 install.py

  • Namestitveni program nam bo zastavil nekaj vprašanj za vse odgovore [Y] in potrdil z [enter]
  • ko bo namestitev zahtevala žeton, prilepimo (shift+insert) žeton, kopiran iz aplikacije, in Enter
  • ime na primer Rpi
  • deviceId 1 Vnesite
  • po namestitvi - zaženite program

./runme.sh

Korak: Preverite povezave

Preverjanje povezav
Preverjanje povezav

Vrnimo se na

Na zavihku naprave bomo videli naš povezani RPi (zelena ikona povezave pomeni, da je RPi trenutno povezan)

Korak 16: Dodajanje skripta Python

Dodajanje skripta Python
Dodajanje skripta Python
Dodajanje skripta Python
Dodajanje skripta Python

Zdaj bomo dodali skript python, ki je že pri predlogih, zato nam ni treba ničesar programirati.

Na zavihku naprave odprite meni RasbperryPi in izberite »Dodaj zunanji skript«.

Ko se prikaže novo okno, vnesite podatke, kot je na zgornji sliki

Ne pozabite izbrati predloge "car4wd". Po teh korakih bo remoteme.org v naš RasbperryPi dodal skript python in ga znova zagnal

17. korak: Preverite, ali je bil Python Script uspešno dodan

Preverjanje, ali je bil skript Python uspešno dodan
Preverjanje, ali je bil skript Python uspešno dodan

Na zavihku naprave je treba dodati novo skriptno napravo python in njen ID naprave je 2. V to spletno stran ID naprave bodo poslana sporočila za nadzor avtomobila

18. korak: Dodajanje spletne strani v nadzor avtomobila

Dodajanje spletne strani v Control Car
Dodajanje spletne strani v Control Car

na zavihku naprave kliknite »Novo« in nato »Spletna stran«. Dodamo samo še eno napravo - spletno stran, ki jo bomo uporabili za nadzor našega avtomobila. Ker smo na spletni strani uporabili predlogo "car4wdDesktop", so datoteke že skoraj pripravljene za uporabo

Korak 19: Konfigurirajte napravo WebPage za nadzor avtomobila 1/2

Konfigurirajte napravo WebPage za nadzor avtomobila 1/2
Konfigurirajte napravo WebPage za nadzor avtomobila 1/2

Razširite spletno stran na zavihku naprave in kliknite index.html in nato Odpri

20. korak: Konfigurirajte napravo WebPage za nadzor avtomobila 2/2

Konfigurirajte napravo WebPage za nadzor avtomobila 2/2
Konfigurirajte napravo WebPage za nadzor avtomobila 2/2

Odpre se okno, ki ga moramo v našem primeru vnesti deviceId našega python skripta

21. korak: Odprite Center za nadzor avtomobila

Odprite Center za nadzor avtomobila
Odprite Center za nadzor avtomobila
Odprite Center za nadzor avtomobila
Odprite Center za nadzor avtomobila

Zdaj je čas, da odpremo našo stran in pogledamo, kako deluje. Na zavihku naprave kliknite index.html in nato "Odpri na novem zavihku" Za predogled videa Uporabiti morate brskalnik chrome ali firefox, drugi brskalnik ne podpira v celoti webRTC

Korak: Konfiguracija kamere 1/2

Konfiguracija kamere 1/2
Konfiguracija kamere 1/2

Ko premikamo miško na video območju, bi morala kamera spremeniti položaj in bi morala delovati tako kot v igrah FPS. Verjetno se ne bo pravilno premaknilo

23. korak: Konfiguracija kamere 2/2

Konfiguracija kamere 2/2
Konfiguracija kamere 2/2

Odprite script.js (zavihek naprave razširite spletno stran, kliknite na script.js, nato odprite) in poiščite mesto, ki sem ga prikazal na zaslonu

v mojem primeru je srednji položaj 560 in 430, obseg gibov pa za obe osi 200

S temi številkami morate eksperimentirati, da dobite središče položaja kamere in gladke premike. Če ste uporabili to vadnico, samo kopirajte prilepljene vrednosti

24. korak: Vožnja 1/2

Vožnja 1/2
Vožnja 1/2

Če pritisnete puščico navzgor na tipkovnici, morajo merilniki spremeniti položaj in avto naj vozi. Če pritisnete puščico navzgor in se avto obrne, morate na mestih na zaslonu dodati/odstraniti minus.

Po tem postopku po pritisku puščice navzgor mora avto voziti naprej in puščica navzdol mora voziti nazaj.

Korak 25: Vožnja 2/2

Vožnja 2/2
Vožnja 2/2

Zdaj zavijte - pritisnite puščico levo, če avto zavije desno Morate prevrniti kable (preverite zgornjo sliko)

Če ste spajkali te kable, jih lahko spremenite na script.js, samo spremenite vrstni red pošiljanja hitrosti motorjev, prej:

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

po:

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

in zdaj se morate z minusi, kot je en korak prej, za pravilno delovanje;). Kot ste verjetno opazili po puščici navzgor, avto ne vozi s polno hitrostjo, da bi se avto hitreje gibal, samo hitro spustite puščico navzgor, ko je v največjem položaju in ponovno pritisnite in pridržite

Korak 26: Kako deluje

Spletna stran pošilja sporočila z devetimi bajti v skript python v obliki:

  • 1 bajt enobajtno celo število 1
  • 2 -bajtni položaj cele kamere X
  • 2 -bajtni celi Y položaj kamere
  • 1 -bajtni celoštevni način levega motorja (3 = nazaj, 1 = naprej, 2 = zaustavitev)
  • 1 bajt celo število hitrosti levega motorja
  • 1 -bajtni celoštevilčni način desnega motorja (3 = nazaj, 1 = naprej, 2 = ustavitev)
  • 1 bajtova cela številka desne hitrosti motorja

pošiljanje sporočila poteka v datoteki script.js pri funkciji "sendNow ()"

na RasbperryPi python.py dobi to sporočilo v funkciji "onUserMessage"

Lahko preverite in se malo igrate, da boste vedeli, kaj se dogaja.

opis funkcij razreda tukaj

Korak 27: Tablični računalnik, mobilno krmiljenje

Tablični računalnik, mobilno krmiljenje
Tablični računalnik, mobilno krmiljenje

Skrbno dodajamo novo spletno stran, tako kot prejšnjič, zdaj pa izbiramo predlogo "car4wdMobile"

Nato v script.js konfiguriramo vse, kar smo naredili za spletno stran za nadzor namizja. Oblika sporočila je popolnoma enaka, zato nam ni treba spreminjati skripta python.py.

Korak: Odprite stran na mobilnem telefonu

Odprite stran na mobilnem telefonu
Odprite stran na mobilnem telefonu
Odprite stran na mobilnem telefonu
Odprite stran na mobilnem telefonu

Namesto da se prijavite v svoj račun z mobilnega telefona, samo preglejte QR poljuben URL.

podrobnosti o QR tukaj

Če vaš mobilni nadzor deluje, ko sta RPi in mobile na istem wifiju, vendar ne deluje, če uporabljate mobilni internet, morate dodati strežnik turn, kako to storiti, sem napisal tukaj

Korak 29: Dodajanje strežnika Turn

Dodajanje strežnika Turn
Dodajanje strežnika Turn
Dodajanje strežnika Turn
Dodajanje strežnika Turn
Dodajanje strežnika Turn
Dodajanje strežnika Turn

Včasih (ko ste za NAT ali nekaterimi nastavitvami požarnega zidu) ne morete povezati svojega robota iz drugega omrežja, potem je vaš robot povezan. To ni velika težava in potem morate dodati turn server.

Preizkusil sem strežnik podjetja XIRSYS (brezplačen je za uporabo razvijalcev) in pokazal bom, kako konfigurirati strežnik turn s sistemom XIRSYS

registracija:

global.xirsys.net/dashboard/signup

nato kliknite "plus", da dodate aplikacijo

na desni strani pod "poverilnice statičnega zavoja" imate vse potrebne podatke. Kopirajte ga v datoteko webrtc_streamer.conf in pojdite na

razširite razdelke RaspberryPi

kliknite datoteko webrtc_streamer.conf

kliknite odpri

in dodajte podatke

turn_server = turn_username =

turn_credential =

Ko končate urejanje, bi morali imeti na zaslonu nekaj podobnega.

nato kliknite Shrani in znova zaženite svoj Rpi, tako da v napravi RasbperryPi kliknete meni in izberete ponovni zagon

Po ponovnem zagonu programa RPi si lahko v mobilnem telefonu ogledate predogled videa, tudi če uporabljate mobilni internet.

30. korak: mobilno krmiljenje

Mobilno krmiljenje
Mobilno krmiljenje

pri krogu 1 postavimo levi palec, pri 2 desnem - ni nujno, da je točno na tej točki - spletna stran bo nastavila ničelni položaj tik po dotiku zaslona in s premikanjem palcev (vožnja v levo, položaj desne kamere) lahko nadzorujete tvoj avto

31. korak: Povzetek

Upam, da vam je bila ta vadnica všeč, kot sem že napisala v tej vadnici, je več podrobnosti o tem, kako deluje pod pokrovom.

nekaj povezav:

remoteme.org - domača stran remoteme.org tam najdete dokumentacijo in vaje

FB fanpage - Facebook fanpage najnovejše informacije o remoteme.org

Youtube - nekaj video posnetkov projekta, vaje

Na zdravje, Maciek

Priporočena: