Cuprins:
- Pasul 1: BOM
- Pasul 2: Specificații componente principale
- Pasul 3: Cablare
- Pasul 4: PREGĂTIREA FAGURULUI O.S
- Pasul 5: CUM SĂ CONTROLAM REZERVUL WIFI CU NODE.JS ȘI WEBSOCKET.IO
- Pasul 6: ADĂUGAREA CAPACITĂȚII DE STREAMING VIDEO
- Pasul 7: PROGRAM TANK
- Pasul 8: PORNIȚI INTERFATA DE CONTROL ȘI SERVERUL DE STREAMING
Video: Raspberry Tank cu interfață web și streaming video: 8 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:45
Vom vedea cum am realizat un mic Tank WiFi, capabil de control de la distanță pe Web și Streaming video.
Acesta este destinat să fie un tutorial care necesită cunoștințe de bază despre programarea electronică și software. Din acest motiv, am ales un kit de șasiu Tank (în loc să îl imprim cu o imprimantă 3D, poate fi o versiune ulterioară) și un total de 6 componente, inclusiv baterii. Pe partea de software, puteți urmări pas cu pas procesul de instalare și programarea este menținută la minimum, o cunoaștere de bază a lucrurilor Raspberry vă poate ajuta.
Am estimat 12 ore de lucru de la 0 la tancul gata de funcționare. Cost total de 70 € pentru toate componentele.
Pasul 1: BOM
1 - Rezervor DIY pentru șasiu pentru robot RC - 32 (€)
www.banggood.com/DIY-RC-Robot-Chassis-Tan…
1 - Placă de driver pentru motor DC cu două canale L298N - 1, 39 (€)
www.banggood.com/Dual-Channel-L298N-DC-Mo…
1 - Raspberry Pi Zero W Starter Kit - 26 (€)
amzn.eu/1ugAaMP
Card SD 1 - 16 GB - 5, 50 (€)
www.gearbest.com/memory-cards/pp_337819.h…
1 - Cameră web Raspberry Pi 5MP pentru camera foto pentru modelul Zero - 8 (€)
www.gearbest.com/raspberry-pi/pp_612249.h…
1 - Power Bank 5V
Baterie 1 - 9v
Cablu mixt pentru cablu Conector Dupont
Mouse, tastatură, monitor sau televizor pentru configurarea Raspberry (opțional, doar pentru a facilita prima configurare)
Pasul 2: Specificații componente principale
Motor
Motor cu angrenaj JGA25-370 DC
Acest motor are un arbore de ieșire în formă de D.
Specificații
· Tensiune de funcționare: între 6 V și 18 V
· Tensiune nominală: 12 V
· Viteză de rulare liberă la 12 V: 399 RPM
· Curent de funcționare liberă la 12 V: 50 mA
· Curent de blocare la 12V: 1200 mA
· Cuplu de blocare la 12V: 2,2 kg.cm
· Raport de transmisie: 1:21
· Dimensiunea reductorului: 19 mm
· Greutate: 84 g
Placă de driver pentru motor DC cu două canale L298N
Driver de motor dual H-bridge, poate acționa două motoare de curent continuu sau un motor pas cu pas cu două faze cu 4 fire. TSD încorporat, pentru a fi protejat de blocarea motorului.
Specificații
· Tensiunea de alimentare a modulului: DC 2V-10V
· Tensiunea de intrare a semnalului: DC 1,8-7V
· Curent de lucru unic: 1,5A
· Curent de vârf până la 2,5A
· Curent de așteptare scăzut (mai puțin de 0,1 uA)
· Circuit comun de conducție încorporat, terminalul de intrare liber, motorul nu funcționează defectuos
· Dimensiune: 24,7 x 21 x 7 mm
Pasul 3: Cablare
Acesta va fi cablarea finală, dar AȘTEPȚI, înainte să avem nevoie să instalăm unele
software și este o idee bună să îl testați cu cabluri mai simple, când sunt gata, care revin aici.
Avem nevoie de două surse de alimentare diferite, una pentru motor și una pentru Raspberry.
Driverul motorului Dual Channel L298N DC Motor Driver Board (tensiune maximă de intrare DC 2V-10V) este alimentat utilizând bateria de 9V, iar Raspberry Pi utilizează acumulatorul USB standard de 5V.
Pinul GND al driverului motorului va fi conectat la bateria minus și la Raspberry Pi (GND). Pinii GPIO ai Raspberry Pi sunt conectați la driverul motorului ca tabel.
Pasul 4: PREGĂTIREA FAGURULUI O. S
Aceasta este o instalare standard pentru sistemul operativ Raspbian, puteți găsi
o mulțime de tutoriale detaliate care caută pe web, practic pașii sunt:
1. Descărcați ISO RASPBIAN STRETCH CU DESKTOP de la
2. Formatează un card SD de 16 GB, am folosit SD Formatter
3. Ardeți fișierul. IMG, am folosit Win32DiskImager
Acum, zmeura dvs. este gata de pornire, conectați-o la o sursă de alimentare USB (5V, 2A) și pregătiți-vă pentru prima configurare de pornire. Puteți face acest lucru în două moduri, utilizând dispozitive externe, cum ar fi mouse-ul, tastatura și monitorul sau utilizând computerul și o conexiune la distanță cu Raspberry. Există o mulțime de tutoriale despre acest lucru, unul este:
Pasul 5: CUM SĂ CONTROLAM REZERVUL WIFI CU NODE. JS ȘI WEBSOCKET. IO
Acum avem o nouă instalare a micro-PC-ului nostru Raspberry gata să ne ruleze lucrarea, așa că … ce folosim pentru a emite comenzi în rezervor?
Python este un limbaj foarte ușor de utilizat care este utilizat în mod obișnuit pentru a rula proiectul Rapsberry.
Dar, obiectivul meu a fost să-mi conectez rezervorul wi-fi de pe orice dispozitiv (PC, telefon mobil, tabletă …) folosind un browser web comun și, de asemenea, să transmiteți video de pe acesta. Așadar, uitați de Python deocamdată și permiteți trecerea pe NODE. JS și SOCKET. IO.
NODE.js
Node.js (https://github.com/nodejs/node/wiki) este un cadru de server open source bazat pe limbajul js. Deoarece folosesc Raspberry Pi Zero (CPU ARMv6), nu putem folosi procesul de instalare automată (destinat procesorului ARMv7) și trebuie să o facem manual:
Descărcați Nodejs local, (am folosit versiunea 7.7.2 pentru ARMv6, verificați alte versiuni aici
pi @ raspberry: ~ $ wget
nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…
După ce ați terminat, extrageți fișierul comprimat:
pi @ raspberry: ~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz
Copiați și instalați fișierele în / utilizator / local
pi @ raspberry: ~ $ sudo cp -R node-v7.7.2-linux-armv6l / * / usr / local /
Adăugați locația în care instalăm nodejs pe cale, editați fișierul „.profile”:
pi @ raspberry: ~ $ nano ~ /.profile
Adăugați următoarea linie la sfârșitul fișierului, salvați și ieșiți
PATH = $ PATH: / usr / local / bin
Eliminați fișierul descărcat:.
pi @ raspberry: ~ $ rm ~ / node-v7.7.2-linux-armv6l.tar.gz
pi @ raspberry: ~ $ rm -r ~ / node-v7.7.2-linux-armv6l
Tastați următoarele comenzi pentru a verifica instalarea nodejs:
pi @ raspberry: ~ $ node -v
pi @ raspberry: ~ $ npm -v
Ar trebui să citiți v7.7.2 și v4.1.2 ca răspuns.
Dacă totul a mers bine, creați un folder nou pentru a găzdui fișierele dvs. nodejs:
pi @ raspberry: ~ $ mkdir nodehome
Mutați în folderul nou:
pi @ raspberry: ~ $ cd nodehome
Instalați modulul suplimentar necesar pentru a gestiona GPIO în cel mai simplu mod, PORNIT și OPRIT:
pi @ raspberry: ~ $ npm instalare onoff
Acum este timpul să testăm primul nostru proiect „Blink.js”, rezultatul va fi … un LED intermitent
pi @ raspberry: ~ $ nano blink.js
Inserați următorul cod, salvați și ieșiți:
var Gpio = require ('onoff'). Gpio; // include onoff
var LED = Gpio nou (3, 'out'); // utilizați GPIO 3
var blinkInterval = setInterval (blinkLED, 250);
// LED intermitent la fiecare 250 ms
function clipește () {// funcție pentru a începe să clipească
dacă
(LED.readSync () === 0) {// verificați starea pinului, dacă starea este 0 (sau oprită)
LED.writeSync (1);
// setați starea pinului la 1 (porniți LED-ul)
} altceva {
LED.writeSync (0);
// setați starea pinului la 0 (opriți LED-ul)
}
}
function endBlink () {// function pentru a opri clipirea
clearInterval (blinkInterval); // Opriți intervalele de clipire
LED.writeSync (0); // Opriți LED-ul
LED.unexport (); // Dezexportați GPIO pentru resurse gratuite
}
setTimeout (endBlink, 5000); // nu mai clipi după 5 secunde
Conectați un LED, un rezistor (200ohms) așa cum se arată în schemă și rulați proiectul:
pi @ raspberry: ~ $ node blink.js
Nodul este gata.
SOCKET. IO
WebSocket este un protocol de comunicații computerizat, bazat pe conexiunea TCP, oferă un programator pentru a crea un server și client. Clientul se conectează la server și emite și primește mesaje către și de la server. Implementarea WebSocket pentru Node.js se numește Socket.io (https://socket.io/).
Instalați socket.io:
pi @ raspberry: ~ $ npm install socket.io --save
Mutați-vă în interiorul nodejs acasă, creat anterior:
pi @ raspberry: ~ $ cd nodehome
Și creați un nou folder „public”:
pi @ raspberry: ~ $ mkdir public
Creați un nou exemplu de server web, numiți-l „webserver.js”
pi @ raspberry: ~ $ nano webserver.js
Inserați următorul cod, salvați și ieșiți:
var http = require ('http'). createServer (handler); // necesită server http și creează server cu funcția handler ()
var fs = require ('fs'); // necesită modulul de sistem de fișiere
http.listen (8080); // ascultați portul 8080
handler de funcții (req, res) {// creați server
fs.readFile (_ dirname + '/public/index.html', function (err, data) {// read
fișier index.html în folderul public
dacă (greșește) {
res.writeHead (404, {'Content-Type': 'text / html'}); // afișează 404 la eroare
return res.end ( 404 Not
Găsite );
}
res.writeHead (200, {'Content-Type': 'text / html'}); // scrie HTML
res.write (date); // scrie date
din index.html
return res.end ();
});
}
Acest server web vă va asculta portul Raspberry 8080 și va furniza fișierul către orice client web care îl conectează. Acum trebuie să creăm ceva de găzduit și de oferit clienților noștri: Mutați în folderul „public”: pi @ raspberry: ~ $ cd public
Creați un nou fișier html „index.html”:
pi @ raspberry: ~ $ nano index.html
Inserați codul din „HelloWorld.txt” atașat, salvați și ieșiți.
Mutați în dosarul nodejs „nodehome”:
pi @ raspberry: ~ $ cd nodehome
Porniți serverul web
pi @ raspberry: ~ $ node webserver.js
Deschideți site-ul web într-un browser folosind https:// Raspberry_IP: 8080 / (înlocuiți Raspberry_IP cu IP-ul dvs.)
Pasul 6: ADĂUGAREA CAPACITĂȚII DE STREAMING VIDEO
Există modalități diferite de a implementa streaming video pe un Raspberry, cel mai simplu
așa cum am constatat până acum, că la fel de mare performanță și poate fi integrată într-o interfață web se bazează pe proiectul de la Miguel Mota:
miguelmota.com/blog/raspberry-pi-camera-bo…
Mulțumesc Miguel! Din blogul său, aceștia sunt pașii:
Instalați componentele libjpeg8 și cmake:
pi @ raspberry: ~ $ sudo apt-get install libjpeg8
pi @ raspberry: ~ $ sudo apt-get install libjpeg8-dev
pi @ raspberry: ~ $ sudo apt-get install cmake
Descărcați mjpg-streamer cu plugin raspicam:
pi @ raspberry: ~ $ git clone
github.com/jacksonliam/mjpg-streamer.git ~ / mjpg-streamer
Schimbați directorul:
pi @ raspberry: ~ $ cd ~ / mjpg-streamer / mjpg-streamer-experimental
Compila:
pi @ raspberry: ~ $ face curat tot
Înlocuiți vechiul mjpg-streamer:
pi @ raspberry: ~ $ sudo rm -rf / opt / mjpg-streamer
pi @ raspberry: ~ $ sudo mv ~ / mjpg-streamer / mjpg-streamer-experimental
/ opt / mjpg-streamer
pi @ raspberry: ~ $ sudo rm -rf ~ / mjpg-streamer
Creați un nou fișier „start_stream.sh”, copiați și lipiți din fișierul „start_stream.txt” atașat.
Faceți-l executabil (creați scripturi shell):
pi @ raspberry: ~ $ chmod + x start_stream.sh
Porniți serverul de streaming:
pi @ raspberry: ~ $./start_stream.sh
Deschideți site-ul web într-un browser folosind https:// Raspberry_IP: 9000 (înlocuiți Raspberry_IP cu IP-ul dvs.)
Pasul 7: PROGRAM TANK
Totul este gata, acum trebuie să ne creăm pagina web pentru a controla rezervorul (index.html) și serverul nostru web pentru a ne asculta comenzile (webserver.js). Deci, trebuie doar să înlocuiți fișierele văzute până acum (doar exemple pentru a testa sistemul) cu webserver.txt și index.txt atașat.
Pasul 8: PORNIȚI INTERFATA DE CONTROL ȘI SERVERUL DE STREAMING
Pentru a porni serviciile deschideți două ferestre de terminal și rulați aceste comenzi:
nod nodehome / webserver.js
./nodehome/start_stream.sh
Deschideți site-ul web într-un browser folosind https:// Raspberry_IP: 8080 (înlocuiți Raspberry_IP cu IP-ul dvs.)
Recomandat:
Construiți-vă robotul de streaming video controlat de internet cu Arduino și Raspberry Pi: 15 pași (cu imagini)
Construiește-ți robotul de streaming video controlat prin internet cu Arduino și Raspberry Pi: Sunt @RedPhantom (alias LiquidCrystalDisplay / Itay), un elev de 14 ani din Israel care învață la Max Shein Junior High School for Advanced Science and Mathematics. Fac acest proiect pentru ca toată lumea să învețe de la și să împărtășească! Poate că ai
Noțiuni introductive despre interfața senzorului I2C ?? - Interfață MMA8451 folosind ESP32s: 8 pași
Noțiuni introductive despre interfața senzorului I2C ?? - Interfața MMA8451 folosind ESP32s: În acest tutorial, veți afla totul despre cum să porniți, să conectați și să obțineți dispozitivul I2C (accelerometru) care funcționează cu controlerul (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfață web Raspberry Pi: 5 pași
Interfață web Raspberry Pi: Acestea sunt instrucțiunile de instalare a interfeței web pe care am dezvoltat-o pentru a comuta pinii gpio ai unui raspberry pi pentru a controla o placă activă cu releu redus, proiectată pentru arduino. Acesta servește o pagină simplă care vă permite să faceți clic pe un link către alt
Robot de streaming video controlat Raspberry Pi Wifi: 8 pași (cu imagini)
Robot de streaming video controlat Raspberry Pi Wifi: V-ați gândit vreodată să construiți un robot cool cu o cameră pe el? Ei bine, ați ajuns în locul potrivit, vă voi arăta pas cu pas despre cum să construiți acest robot. Cu aceasta puteți merge la vânătoare de fantome pe timp de noapte controlând și văzând fluxul video de pe
Controlul mașinii RC printr-o interfață web: 6 pași (cu imagini)
Controlul mașinii RC printr-o interfață web: prieteni Hii, în acest instructiv vă voi învăța să creați o mașină RC printr-o interfață web. Îl vom controla fără fir printr-un server propriu. Folosind metoda pe care ți-o voi arăta, nu va trebui să folosim un receptor RC. Pentru a găzdui web