Cuprins:
- Pasul 1: Unele informații despre App.remoteme.org
- Pasul 2: Ce este necesar:
- Pasul 3: Conexiuni
- Pasul 4: PCB
- Pasul 5: ieșiri PCB
- Pasul 6: Cum funcționează
- Pasul 7: Asamblarea mașinii - Roți
- Pasul 8: Alimentare (baterii de reîncărcare AA) Opțiunea 1/2
- Pasul 9: Alimentare (baterii Li-Po 7.2V) Opțiunea 2/2
- Pasul 10: lipire
- Pasul 11: Camera
- Pasul 12: Asamblarea pieselor auto
- Pasul 13: Configurare App.remoteme.org
- Pasul 14: Configurarea RasbperryPi
- Pasul 15: Verificarea conexiunilor
- Pasul 16: Adăugarea scriptului Python
- Pasul 17: Verificarea dacă scriptul Python a fost adăugat cu succes
- Pasul 18: Adăugarea unei pagini web la Control Car
- Pasul 19: configurați dispozitivul WebPage pentru a controla mașina 1/2
- Pasul 20: Configurați dispozitivul WebPage pentru a controla mașina 2/2
- Pasul 21: Deschideți Centrul de control al mașinii
- Pasul 22: Configurarea camerei 1/2
- Pasul 23: Configurarea camerei 2/2
- Pasul 24: Condus 1/2
- Pasul 25: Conducerea 2/2
- Pasul 26: Cum funcționează
- Pasul 27: Tabletă, direcție mobilă
- Pasul 28: Deschideți pagina de pe telefonul mobil
- Pasul 29: Adăugarea Turn Server
- Pasul 30: Direcție mobilă
- Pasul 31: Rezumat
Video: Mașină RasbperryPi cu cameră FPV. Control prin browserul web: 31 de pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
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:
- 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
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
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
- 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)
- Putere de intrare pentru motoare de acționare (verificați cu ce tensiune maximă pot funcționa motoarele dvs.)
- Puterea pentru modulul RasbperryPi și PWM - trebuie să fie exact
- Ieșiri ale motorului de acționare (există două ieșiri, deoarece vom asocia motoarele de acționare)
- Puterea mecanismelor servo - De asemenea, trebuie să verificați ce tensiune este bună pentru ei
- 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
- 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
- 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
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
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
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
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
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
Pentru PCB am realizat o masă mică din plexiglas
Pasul 13: 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
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
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
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
Î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
î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
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
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
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
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
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
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
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ă
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
Î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
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ă
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:
Creați-vă propriul sistem de urmărire a securității prin SMS prin GPS: 5 pași (cu imagini)
Asigurați-vă propriul sistem de urmărire a securității prin SMS GPS: În acest proiect vă voi arăta cum să combinați un modul SIM5320 3G cu un Arduino și un traductor piezoelectric ca senzor de șoc pentru a crea un sistem de urmărire a securității care vă va trimite locația dvs. vehicul prețios prin SMS când
Trimiteți date către platforma IoT AskSensors din browserul web: 6 pași
Trimiteți date către platforma IoT AskSensors de pe browserul web: Am postat recent un instructabil care arată un ghid pas cu pas pentru a conecta un MCU nod ESP8266 la platforma IoT AskSensors. Am primit feedback de la oameni mai interesați de platforma AskSensors, dar nu au un MCU de nod în mână. Aceasta
Cea mai ușoară cameră web ca cameră de securitate - Detecție de mișcare și imagini prin e-mail: 4 pași
Cea mai ușoară cameră web ca cameră de securitate - Detecție mișcare și imagini trimise prin e-mail: Nu mai trebuie să descărcați sau să configurați software pentru a obține imagini detectate de mișcare de pe camera dvs. web către e-mail - pur și simplu utilizați browserul. Utilizați un browser Firefox, Chrome, Edge sau Opera actualizat pe Windows, Mac sau Android pentru a captura imaginea
RC Car Hack - Controlat prin Bluetooth prin aplicația Android: 3 pași (cu imagini)
RC Car Hack - Controlat prin Bluetooth prin intermediul aplicației Android: Sunt sigur că fiecare dintre voi puteți găsi acasă mașină RC neutilizată. Această instrucțiune vă va ajuta să schimbați vechea mașină RC în cadou original :) Datorită faptului că mașina RC pe care o aveam avea dimensiuni mici, am ales Arduino Pro Mini ca controler principal. O alta
ROOMBA Condus de ARDUINO YUN prin aplicația Wifi prin STEFANO DALL'OLIO: 4 pași (cu imagini)
ROOMBA Condus de aplicația ARDUINO YUN Via Wifi de STEFANO DALL'OLIO: Cu acest ghid împărtășesc codul pentru a conecta ARDUINO YUN la Roomba pentru a conduce Roomba prin Wifi. Codul și aplicația sunt create și dezvoltate de mine Stefano Dall ' Olio.My Roomba este Roomba 620, dar puteți utiliza același cod pentru alte Roomb