Cuprins:

Mașină RasbperryPi cu cameră FPV. Control prin browserul web: 31 de pași (cu imagini)
Mașină RasbperryPi cu cameră FPV. Control prin browserul web: 31 de pași (cu imagini)

Video: Mașină RasbperryPi cu cameră FPV. Control prin browserul web: 31 de pași (cu imagini)

Video: Mașină RasbperryPi cu cameră FPV. Control prin browserul web: 31 de pași (cu imagini)
Video: Raspberry Pi Zero W FPV 2024, Noiembrie
Anonim
Image
Image

Vom construi o mașină cu 4 roți - direcția va fi similară ca într-un rezervor - pentru a roti o parte a roților se va roti cu o viteză diferită de alta. La mașină va fi așezată camera pe suport special unde putem schimba poziția camerei. Robotul va fi controlat de browserul web (crom sau firefox la desktop sau firefox la telefonul mobil), la browser, Vom primi camera video (cu latență de doar 200 ms), iar din browser, putem controla mișcările mașinii și poziția camerei. Pentru a face comunicarea mai ușoară, am folosit sistemul app.remoteme.org, de asemenea, se lucrează la controlul automat al acestui tip de mașină, deci nu trebuie să scrieți propriul cod, dar, desigur, puteți modifica scripturile adăugați noi posibilități etc.

Înainte de a conecta alimentarea la PCB, vă rugăm să verificați dublu toate conexiunile

Pasul 1: Unele informații despre App.remoteme.org

Sistemul are trei părți

  • aplicație web - când vă găzduiți paginile web de control și conectează toate comunicările
  • programul rasbperryPi - program care trimite videoclipuri, gestionează scripturile python
  • biblioteci unde găsești definiții de clase, funcții

Remoteme.org este rapid sistemul Vă conectați toate dispozitivele împreună, Puteți găzdui acolo paginile dvs. web, vedeți dispozitivele conectate. Sistemul Remoteme.org a fost creat pentru a vă ajuta să începeți să vă faceți proiectele, fără să vă faceți griji cu privire la comunicațiile de protocol, ideea principală este să trimiteți mesaje binare între diferite dispozitive precum pagini web, RasbeprryPI, arduino și scripturi.

Pe de altă parte, Remoteme.org îți oferă controlul complet asupra fișierelor tale, îl poți modifica ușor scriindu-ți propria funcționalitate

La acest tutorial vă voi arăta cum să realizați un proiect minunat, fără a scrie niciun cod.

La sfârșitul acestui tutorial am pus link-uri utile care vă vor ajuta să înțelegeți sistemul remoteme.org.

Pasul 2: Ce este necesar:

Ceea ce este necesar
Ceea ce este necesar
Ceea ce este necesar
Ceea ce este necesar
  • Raspberry PI Zero W
  • Cameră dedicată
  • Adafruit 16-Channel 12-bit PWM / Servo Driver - Interfață I2C - PCA9685 sau clona sa
  • Două servo mecanisme compatibile cu suportul camerei
  • Suport camera
  • Baterii - În tutorial două posibilități de conectare
  • Puntea H TB6612FNG, pentru a controla speerul roții
  • Fișiere PCB Eagle Este ușor să o transformați în metoda de transfer termic DC-DC
  • Modul convertor DC în jos
  • Robot caz

Pasul 3: Conexiuni

Conexiuni
Conexiuni

Raspberry pi controlează mecanismul servo prin modulul PWM și viteza motorului prin podul H care este conectat la pinii RasbperryPi, intrarea PWM către puntea H este generată de același modul pe care l-am folosit pentru servomotoare (părțile pe care le menționez mai sus nu necesită convertoare logice)

Pasul 4: PCB

PCB
PCB
PCB
PCB

Puteți descărca fișiere PCB Eagle de aici Căile sunt grase, astfel încât este ușor de realizat prin metoda de transfer termic

Pasul 5: ieșiri PCB

Ieșiri PCB
Ieșiri PCB
Ieșiri PCB
Ieșiri PCB
  1. Intrarea PWM pentru motoarele de acționare Ar trebui să fie conectată la modulul PWM 15’și pinii 16 (verificați dreptunghiul verde la imaginea modulului PWM)
  2. Putere de intrare pentru motoare de acționare (verificați cu ce tensiune maximă pot funcționa motoarele dvs.)
  3. Puterea pentru modulul RasbperryPi și PWM - trebuie să fie exact
  4. Ieșiri ale motorului de acționare (există două ieșiri, deoarece vom asocia motoarele de acționare)
  5. Puterea mecanismelor servo - De asemenea, trebuie să verificați ce tensiune este bună pentru ei
  6. Jumperul puterii sale actuale de la a 5-a intrare va alimenta și motoarele, astfel încât nu este nevoie să conectați nimic la intrarea 2
  7. Jumper dacă este prezent RasbperryPi va fi alimentat de la a treia intrare - înainte de a pune jumper aici verificați dacă conexiunile sunt OK - Nu doriți să vă ardeți RPi
  8. Permiteți lipirea aici a cablurilor, deoarece nu avem nevoie de convertoare logice

Pasul 6: Cum funcționează

La RasbperryPi există un script python care folosește două biblioteci

  • importați RPi. GPIO ca GPIO - pentru pinii 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (notație BCM) care sunt conectați la podul H
  • import Adafruit_PCA9685 pentru modulul PWM

Pinii Rpi sunt conectați după cum urmează 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) și modul de control al punții H (înainte, înapoi, oprire, pauză scurtă). Puntea H are nevoie, de asemenea, de două semnale PWM, astfel încât să putem controla viteza sau rotația motorului. Deoarece la proiect avem deja controler PWM (folosit pentru servo) îl vom folosi și pentru a genera PWM pentru H bridge.

Modulul PWM utilizează protocolul de comunicație I2C. Am folosit rezultatele Adafruit_PCA9685. bibliotecă

Pasul 7: Asamblarea mașinii - Roți

Asamblare auto - Roți
Asamblare auto - Roți
Asamblare auto - Roți
Asamblare auto - Roți

Vom începe de la conectarea motoarelor de acționare la carcasa mașinii. Motoarele laterale stânga / laterală se conectează împreună și ambele perechi se conectează la un cablu de alimentare care ulterior va fi conectat la PCB. Notă importantă în timp ce conectați roțile motoarelor de fiecare parte trebuie să se rotească în aceeași direcție.

Pasul 8: Alimentare (baterii de reîncărcare AA) Opțiunea 1/2

Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
Alimentare (baterii de reîncărcare AA) Opțiunea 1/2

Voi scrie două posibilități de putere Prima mașină este din baterii de reîncărcare de 10xAA La ultima imagine am desenat prin jumperi de culori roșii care trebuie puse.

Pasul 9: Alimentare (baterii Li-Po 7.2V) Opțiunea 2/2

Alimentare (baterii Li-Po 7.2V) Opțiunea 2/2
Alimentare (baterii Li-Po 7.2V) Opțiunea 2/2
Alimentare (baterii Li-Po 7.2V) Opțiunea 2/2
Alimentare (baterii Li-Po 7.2V) Opțiunea 2/2

Iar a doua opțiune este bateria 7.2 LI-PO. În acest caz, am obținut 3 tensiuni - 5v pentru Rpi și modul, 6V pentru servo și direct de la baterii 7,2 volți pentru motoarele de acționare. A trebuit să folosesc două module step down

Opțiunea 2 cu LI-PO este mai bună:

  • Bateriile au o capacitate mai mare - mașina va conduce mai mult
  • Tensiune mai mare pentru motoarele de acționare - mașina va conduce mai repede
  • Probabilitate mai mică ca după ce motoarele de acționare încep să se localizeze, am putea avea o scădere de tensiune imensă și RPI repornește.

Pasul 10: lipire

Lipire
Lipire
Lipire
Lipire
Lipire
Lipire
Lipire
Lipire

Am pus la PCB niște distanțieri pentru modulul PWM. Nu este nimic de scris doar verificați imaginile cum să lipiți totul împreună

Pasul 11: Camera

aparat foto
aparat foto

conectăm camera, aici este scris cum să centrăm mecanismele servo înainte de a le monta în suportul camerei, dar cea mai scurtă modalitate este să verificăm manual ușor poziția maximă de rotație și să setăm servomotoarele în poziția centrală. Aceste mecanisme servo centrate le-am pus în suportul camerei în poziția centrală (camera este îndreptată înainte ca la fotografie)

Pasul 12: Asamblarea pieselor auto

Unirea pieselor de mașini împreună
Unirea pieselor de mașini împreună
Unirea pieselor de mașini împreună
Unirea pieselor de mașini împreună
Unirea pieselor de mașini împreună
Unirea pieselor de mașini împreună

Pentru PCB am realizat o masă mică din plexiglas

Pasul 13: Configurare App.remoteme.org

Configurare App.remoteme.org
Configurare App.remoteme.org

Am folosit sistemul gratuit app.remoteme.org care vă ajută să faceți conexiuni și are deja scripturi de care avem nevoie

La această instrucțiune, voi arăta pas cu pas ce ar trebui făcut pentru a conduce mașina (aici veți găsi mai multe detalii)

  • Cântați la https://app.remoteme.org după înscriere Veți fi autentificat automat
  • deschideți fila Token din stânga, apoi faceți clic pe „jeton nou” furnizați un nume și faceți clic pe OK, tocmai am creat jeton nou (imagine pe ecran)
  • în acest exemplu, valoarea simbolului este: ~ 1_ & p @ + BNnZ @ A + x8 (a ta va fi diferită;))

Pasul 14: Configurarea RasbperryPi

Configurare RasbperryPi
Configurare RasbperryPi

la consola de chit (aici cum să configurăm RPi pornim comunicarea I2c a camerei)

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

cd remoteme

python3.5 install.py

  • Instalatorul ne va pune câteva întrebări pentru toate răspunsurile noastre [Y] es și ne va confirma prin [enter]
  • când instalarea va solicita token, lipim (shift + insert) token copiat din aplicație și Enter
  • numele de exemplu Rpi
  • deviceId 1 Enter
  • după instalare - rulați programul

./runme.sh

Pasul 15: Verificarea conexiunilor

Verificarea conexiunilor
Verificarea conexiunilor

Să revenim la

În fila dispozitive vom vedea RPi-ul nostru conectat (pictograma link verde înseamnă că RPi este conectat chiar acum)

Pasul 16: Adăugarea scriptului Python

Adăugarea scriptului Python
Adăugarea scriptului Python
Adăugarea scriptului Python
Adăugarea scriptului Python

Acum vom adăuga scriptul Python, este deja la șabloane, deci nu trebuie să programăm nimic.

În fila Dispozitive, deschideți meniul RasbperryPi și alegeți „Adăugați un script extern”.

Când apare o fereastră nouă, furnizați informații ca în imaginea de mai sus

Nu uitați să alegeți șablonul „car4wd”. După acești pași, remoteme.org va adăuga un script python la RasbperryPi și îl va reporni

Pasul 17: Verificarea dacă scriptul Python a fost adăugat cu succes

Verificarea dacă scriptul Python a fost adăugat cu succes
Verificarea dacă scriptul Python a fost adăugat cu succes

În fila Dispozitive ar trebui adăugat un nou dispozitiv Python script, iar ID-ul dispozitivului său este 2. În acest dispozitiv, pagina web Id va trimite mesaje pentru a controla mașina

Pasul 18: Adăugarea unei pagini web la Control Car

Adăugarea unei pagini web la Control Car
Adăugarea unei pagini web la Control Car

în fila dispozitive, faceți clic pe „Nou”, apoi pe „Pagină web”. Adăugăm doar un alt dispozitiv - webPage îl vom folosi pentru a ne controla mașina. Și pentru că am folosit șablonul „car4wdDesktop” la pagina web sunt deja fișiere aproape gata de utilizat

Pasul 19: configurați dispozitivul WebPage pentru a controla mașina 1/2

Configurați dispozitivul WebPage pentru a controla mașina 1/2
Configurați dispozitivul WebPage pentru a controla mașina 1/2

Extindeți WebPage la fila dispozitiv și faceți clic pe index.html apoi pe Deschidere

Pasul 20: Configurați dispozitivul WebPage pentru a controla mașina 2/2

Configurați dispozitivul WebPage pentru a controla mașina 2/2
Configurați dispozitivul WebPage pentru a controla mașina 2/2

Fereastra apare apoi trebuie să furnizăm DeviceId din scriptul nostru Python în cazul nostru DeviceId este 2. Să schimbăm locul afișat în imagine

Pasul 21: Deschideți Centrul de control al mașinii

Deschideți Centrul de control al mașinii
Deschideți Centrul de control al mașinii
Deschideți Centrul de control al mașinii
Deschideți Centrul de control al mașinii

Acum este timpul să ne deschidem pagina și să vedem cum funcționează. În fila dispozitiv, faceți clic pe index.html și apoi pe „Deschideți în fila nouă” Pentru a obține previzualizarea videoclipului Trebuie să utilizați browserul Chrome sau Firefox altele browserul nu acceptă webRTC în totalitate

Pasul 22: Configurarea camerei 1/2

Configurarea camerei 1/2
Configurarea camerei 1/2

Când mutăm mouse-ul în zona video, camera ar trebui să schimbe poziția și ar trebui să funcționeze exact ca în jocurile FPS. Probabil că nu se va mișca corect

Pasul 23: Configurarea camerei 2/2

Configurare cameră 2/2
Configurare cameră 2/2

Deschideți script.js (fila dispozitive extindeți pagina web apoi faceți clic pe script.js apoi deschideți) și găsiți locul pe care l-am arătat pe ecran

poziția centrală a cazului meu este 560 și 430, iar gama de mișcări este pentru ambele axe 200

Trebuie să experimentați cu aceste numere, astfel încât să obțineți poziția camerei în centru și mișcări ușoare. Dacă ați folosit acest tutorial, copiați doar valorile date lipite

Pasul 24: Condus 1/2

Condus 1/2
Condus 1/2

Dacă apăsați săgeata în sus pe tastatură, indicatoarele ar trebui să schimbe poziția și mașina ar trebui să conducă. Dacă apăsați săgeata „sus” și mașina se învârte, atunci trebuie să adăugați / să eliminați minus în anumite locuri de pe ecran.

După această operație, după ce a lovit mașina săgeată „sus” ar trebui să circule înainte și săgeata mașina ar trebui să conducă înapoi.

Pasul 25: Conducerea 2/2

Condus 2/2
Condus 2/2

Acum se întoarce - lovește săgeata spre stânga dacă mașina se întoarce la dreapta Trebuie să întoarce cablurile (verifică imaginea de mai sus)

Dacă lipiți aceste cabluri, îl puteți schimba la script.jsjustați ordinea de trimitere a vitezei motoarelor, inainte de:

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

după:

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

și acum Trebuie să te joci cu minusuri ca un pas înainte ca să funcționezi corect;). După cum probabil ai observat după ce ai lovit săgeata, mașina nu conduce cu viteza maximă pentru a face mașina să se miște mai repede, doar eliberează rapid săgeata în sus când este în poziția maximă și țineți apăsat din nou

Pasul 26: Cum funcționează

Pagina web trimite mesaje de 9 octeți către scriptul Python în format:

  • 1 octet 1 octet valoare întreagă 1
  • 2 octeți întreg X poziția camerei
  • 2 octeți întreg Y poziția camerei
  • Modul motor stâng întreg de 1 octet (3 = înapoi, 1 = înainte, 2 = oprire)
  • 1 octet întreg viteză motor stânga
  • 1 motor întreg drept modul motor (3 = înapoi, 1 = înainte, 2 = oprire)
  • 1 octet întreg viteză dreaptă a motorului

trimiterea mesajului se face la fișierul script.js la funcția "sendNow ()"

la RasbperryPi python.py primește acest mesaj în funcția "onUserMessage"

Puteți să o verificați și să jucați puțin, astfel încât să știți ce se întâmplă.

descrierea funcțiilor clasei aici

Pasul 27: Tabletă, direcție mobilă

Tabletă, direcție mobilă
Tabletă, direcție mobilă

Adăugăm o nouă pagină web în mod deosebit, așa cum am făcut-o anterior, dar acum alegem șablonul „car4wdMobile”

Apoi, configurăm totul în script.js așa cum am făcut pentru pagina web de control desktop Formatul mesajului este exact același, deci nu trebuie să schimbăm scriptul python.py.

Pasul 28: Deschideți pagina de pe telefonul mobil

Deschideți pagina la telefonul mobil
Deschideți pagina la telefonul mobil
Deschideți pagina la telefonul mobil
Deschideți pagina la telefonul mobil

În loc să vă conectați la contul dvs. de pe mobil, trebuie doar să scanați orice adresă URL URL.

detalii despre QR aici

Dacă controlul dvs. mobil funcționează atunci când RPi și telefonul mobil sunt pe același Wi-Fi, dar nu, dacă utilizați internetul mobil, atunci trebuie să adăugați server de turn, cum să faceți acest lucru, am scris aici

Pasul 29: Adăugarea Turn Server

Adăugarea Turn Server
Adăugarea Turn Server
Adăugarea Turn Server
Adăugarea Turn Server
Adăugarea Turn Server
Adăugarea Turn Server

Uneori (când sunteți în spatele NAT sau a unor setări de firewall) nu vă puteți conecta robotul din altă rețea, atunci robotul dvs. este conectat. Nu este o problemă mare și apoi trebuie să adăugați serverul de rând.

Am testat serverul companiei XIRSYS (este gratuit pentru utilizarea dezvoltatorului) și voi arăta cum să configurez serverul de viraje utilizând sistemul XIRSYS

Inregistreaza-te:

global.xirsys.net/dashboard/signup

apoi faceți clic pe „plus” pentru a adăuga aplicația

în dreapta sub „acreditări de viraj static” Aveți toate datele de care aveți nevoie. Copiați-l în fișierul webrtc_streamer.conf pentru a face acest lucru, accesați

extindeți RaspberryPi deivces

faceți clic pe fișierul webrtc_streamer.conf

faceți clic pe Deschidere

și adăugați informații

turn_server = turn_username =

turn_credential =

după ce terminați editarea, ar trebui să aveți ceva similar cu ecranul.

apoi faceți clic pe Salvare și reporniți You Rpi, făcând clic pe meniu la dispozitivul RasbperryPi și alegeți reporniți

După repornirea programului RPi Puteți vedea previzualizarea videoclipului de pe telefonul dvs. mobil chiar dacă utilizați internetul mobil.

Pasul 30: Direcție mobilă

Direcție mobilă
Direcție mobilă

la cercul 1 plasăm degetul stâng, la 2 dreapta - nu trebuie să fie exact în aceste puncte - pagina web va seta poziția zero imediat după ce atingeți ecranul și prin mișcarea degetelor mari (conducere stânga, poziția dreaptă a camerei) Puteți controla mașina ta

Pasul 31: Rezumat

Sper că ți-a plăcut acest tutorial, așa cum am scris înainte la acest tutorial, sunt mai multe detalii despre modul în care funcționează sub capotă.

câteva linkuri:

remoteme.org - pagina principală a remoteme.org acolo Găsiți documentații și tutoriale

FB fanpage - pagina de fan Facebook cea mai nouă informație despre remoteme.org

Youtube - câteva videoclipuri ale proiectului, tutoriale

Noroc, Maciek

Recomandat: