Cuprins:

Raspberry Tank cu interfață web și streaming video: 8 pași (cu imagini)
Raspberry Tank cu interfață web și streaming video: 8 pași (cu imagini)

Video: Raspberry Tank cu interfață web și streaming video: 8 pași (cu imagini)

Video: Raspberry Tank cu interfață web și streaming video: 8 pași (cu imagini)
Video: ⚡️ NU VOI RENTA! Amazon 2.0 | Magazin online de la zero - Partea 3 2024, Noiembrie
Anonim
Raspberry Tank cu interfață web și streaming video
Raspberry Tank cu interfață web și streaming video

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

BOM
BOM
BOM
BOM
BOM
BOM
BOM
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

Cablare
Cablare
Cablare
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

CUM SĂ CONTROLĂM REZERVUL WIFI CU NODE. JS ȘI WEBSOCKET. IO
CUM SĂ CONTROLĂM 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

PORNAȚI INTERFATA DE CONTROL ȘI SERVERUL DE STREAMING
PORNAȚ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: