Sommario:

Serbatoio Raspberry con interfaccia Web e streaming video: 8 passaggi (con immagini)
Serbatoio Raspberry con interfaccia Web e streaming video: 8 passaggi (con immagini)

Video: Serbatoio Raspberry con interfaccia Web e streaming video: 8 passaggi (con immagini)

Video: Serbatoio Raspberry con interfaccia Web e streaming video: 8 passaggi (con immagini)
Video: Videosorveglianza - Realizziamo un Server NAS con OMV su Raspberry PI, utile per le Telecamere FTP 2024, Luglio
Anonim
Serbatoio Raspberry con interfaccia Web e streaming video
Serbatoio Raspberry con interfaccia Web e streaming video

Vedremo come ho realizzato un piccolo WiFi Tank, capace di Web Control remoto e Video Streaming.

Questo vuole essere un tutorial che richiede una conoscenza di base della programmazione elettronica e software. Per questo motivo ho scelto un kit telaio Tank (invece di stamparlo con stampante 3D, potrebbe essere un aggiornamento successivo) e un totale di 6 componenti comprese le batterie. Dal lato software puoi seguire passo passo il processo di installazione e la programmazione è ridotta al minimo, una conoscenza di base delle cose Raspberry può aiutare.

Ho stimato 12 h di lavoro da 0 a ready to run tank. Costo totale di 70€ per tutti i componenti.

Passaggio 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - Serbatoio del telaio del robot RC fai da te - 32 (€)

www.banggood.com/DIY-RC-Robot-Chassis-Tan…

1 - Scheda driver motore CC L298N a doppio canale - 1, 39 (€)

www.banggood.com/Dual-Channel-L298N-DC-Mo…

1 - Kit iniziale Raspberry Pi Zero W - 26 (€)

amzn.eu/1ugAaMP

1 - Scheda SD da 16 GB - 5, 50 (€)

www.gearbest.com/memory-cards/pp_337819.h…

1 - Modulo fotocamera Raspberry Pi 5MP Webcam per Model Zero - 8 (€)

www.gearbest.com/raspberry-pi/pp_612249.h…

1 - Banca di alimentazione 5V

1 - batteria 9v

Connettore Dupont per cavo misto tagliere

Mouse, tastiera, monitor o TV per la configurazione di Raspberry (opzionale, solo per rendere più semplice la prima configurazione)

Passaggio 2: specifiche dei componenti principali

Il motore

Motoriduttore CC JGA25-370

Questo motore è dotato di un albero di uscita a forma di D.

Specifiche

· Tensione di esercizio: tra 6 V e 18 V

· Tensione nominale: 12 V

· Velocità di marcia libera a 12 V: 399 giri/min

· Corrente di corsa libera a 12 V: 50 mA

· Corrente di stallo a 12V: 1200 mA

· Coppia di stallo a 12V: 2,2 kg.cm

· Rapporto di trasmissione: 1:21

· Dimensione del riduttore: 19 mm

· Peso: 84 g

Scheda driver motore CC L298N a doppio canale

Driver del motore a doppio ponte H, può pilotare due motori CC o motori passo-passo bifase a 4 fili. TSD integrato, per proteggere dallo stallo del motore.

Specifiche

· Tensione di alimentazione del modulo: DC 2V-10V

· Tensione di ingresso del segnale: DC 1.8-7V

· Corrente di lavoro singola: 1.5A

· Corrente di picco fino a 2,5A

· Bassa corrente di standby (inferiore a 0.1uA)

· Circuito di conduzione comune integrato, terminale di ingresso libero, il motore non funziona male

· Dimensioni: 24,7 x 21 x 7 mm

Passaggio 3: CABLAGGIO

CABLAGGIO
CABLAGGIO
CABLAGGIO
CABLAGGIO

Questo sarà il cablaggio finale, ma ATTENDERE, prima di aver bisogno di installarne qualcuno

software ed è una buona idea testarlo con un cablaggio più semplice, quando è pronto che torna qui.

Abbiamo bisogno di due diverse fonti di alimentazione, una per il motore e una per il Raspberry.

La scheda driver motore CC Dual Channel L298N del driver del motore (tensione di ingresso massima DC 2V-10V) è alimentata utilizzando la batteria da 9V e Raspberry Pi utilizza l'accumulatore USB standard da 5V.

Il pin GND del driver del motore sarà collegato al negativo della batteria e al Raspberry Pi (GND). I pin GPIO di Raspberry Pi sono collegati al driver del motore come da tabella.

Fase 4: PREPARAZIONE DEL LAMPONE O. S

Questa è un'installazione standard per il sistema operativo Raspbian, puoi trovare

un sacco di tutorial dettagliati che cercano sul web, fondamentalmente i passaggi sono:

1. Scarica iso RASPBIAN STRETCH CON DESKTOP da

2. Formatta una scheda SD da 16 GB, ho usato SD Formatter

3. Masterizza file. IMG, ho usato Win32DiskImager

Ora il tuo Raspberry è pronto per l'avvio, collegalo a una fonte di alimentazione USB (5 V, 2 A) e preparati per la prima configurazione di avvio. Puoi farlo in due modi, utilizzando dispositivi esterni come mouse, tastiera e monitor o utilizzando il tuo PC e una connessione remota a Raspberry. Ci sono molti tutorial su questo, uno è:

Passaggio 5: COME CONTROLLARE IL NOSTRO TANK WIFI CON NODE. JS E WEBSOCKET. IO

COME CONTROLLARE IL NOSTRO TANK WIFI CON NODE. JS E WEBSOCKET. IO
COME CONTROLLARE IL NOSTRO TANK WIFI CON NODE. JS E WEBSOCKET. IO

Ora abbiamo una nuova installazione del nostro micro PC Raspberry pronto per eseguire il nostro lavoro, quindi … cosa usiamo per inviare comandi al serbatoio?

Python è un linguaggio molto facile da usare che viene comunemente usato per eseguire progetti Rapsberry e può essere facilmente utilizzato anche per interagire con i pin di input e output Rapsberry (GPIO)

Ma il mio obiettivo era connettere il mio serbatoio in wi-fi da qualsiasi dispositivo (PC, cellulare, tablet…) utilizzando un comune browser Web e anche riprodurre video in streaming. Quindi, dimentica Python per ora e passiamo a NODE. JS e SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) è un framework server open source basato sul linguaggio js. Poiché sto utilizzando Raspberry Pi Zero (CPU ARMv6) non possiamo utilizzare il processo di installazione automatica (destinato alla CPU ARMv7) e dobbiamo farlo manualmente:

Scarica Nodejs localmente, (ho usato la versione 7.7.2 per ARMv6, controlla le altre versioni qui

pi@raspberry:~ $ wget

nodejs.org/dist/v7.7.2/node-v7.7.2-linux-…

Una volta fatto, estrai il file compresso:

pi@raspberry:~ $ tar -xzf node-v7.7.2-linux-armv6l.tar.gz

Copia e installa i file in /user/local

pi@raspberry:~ $ sudo cp -R node-v7.7.2-linux-armv6l/* /usr/local/

Aggiungi la posizione in cui installiamo nodejs al percorso, modifica il file ".profile":

pi@raspberry:~ $ nano ~/.profile

Aggiungi la seguente riga alla fine del file, salva ed esci

PATH=$PATH:/usr/local/bin

Rimuovi il file scaricato:.

pi@raspberry:~ $ rm ~/node-v7.7.2-linux-armv6l.tar.gz

pi@raspberry:~ $ rm -r ~/node-v7.7.2-linux-armv6l

Digita i seguenti comandi per verificare l'installazione di nodejs:

pi@raspberry:~ $ nodo -v

pi@raspberry:~ $ npm -v

Dovresti leggere v7.7.2 e v4.1.2 come risposta.

Se tutto è andato bene, crea una nuova cartella per ospitare i tuoi file nodejs:

pi@raspberry:~ $ mkdir nodehome

Sposta all'interno di una nuova cartella:

pi@raspberry:~ $ cd nodehome

Installa il modulo aggiuntivo necessario per gestire GPIO nel modo più semplice, ON e OFF:

pi@raspberry:~ $ npm install onoff

Ora è il momento di testare il nostro primo progetto “Blink.js”, il risultato sarà … un LED lampeggiante

pi@raspberry:~ $ nano blink.js

Incolla il seguente codice, salva ed esci:

var Gpio = require('onoff'). Gpio; //include onoff

var LED = nuovo Gpio(, 'fuori'); // usa GPIO 3

var blinkInterval = setInterval(blinkLED, 250);

//lampeggia il LED ogni 250ms

function lampeggiaLED() { //funzione per iniziare a lampeggiare

Se

(LED.readSync() === 0) { //controlla lo stato del pin, se lo stato è 0 (o spento)

LED.writeSync(1);

//imposta lo stato del pin su 1 (accendi il LED)

} altro {

LED.writeSync(0);

//imposta lo stato del pin su 0 (spegne il LED)

}

}

function endBlink() { //funzione per smettere di lampeggiare

clearInterval(blinkInterval); // Interrompi gli intervalli di lampeggio

LED.writeSync(0); // Spegne il LED

LED.unexport(); // Annulla l'esportazione di GPIO per liberare risorse

}

setTimeout(endBlink, 5000); //smette di lampeggiare dopo 5 secondi

Collega un LED, un resistore (200ohm) come mostrato nello schema ed esegui il progetto:

pi@raspberry:~ $ nodo blink.js

Il nodo è pronto.

PRESA. IO

WebSocket è un protocollo di comunicazione per computer, basato su connessione TCP, fornisce un programmatore per creare un server e un client. Il client si connette al server ed emette e riceve messaggi da e verso il server. L'implementazione di WebSocket per Node.js è denominata Socket.io (https://socket.io/).

Installa socket.io:

pi@raspberry:~ $ npm install socket.io --save

Spostati all'interno della home di nodejs, creata in precedenza:

pi@raspberry:~ $ cd nodehome

E crea una nuova cartella “public”:

pi@raspberry:~ $ mkdir public

Crea un nuovo server web di esempio, chiamalo "webserver.js"

pi@raspberry:~ $ nano webserver.js

Incolla il seguente codice, salva ed esci:

var http = require('http').createServer(handler); //richiede un server http e crea un server con il gestore di funzioni()

var fs = require('fs'); //richiede il modulo del filesystem

http.ascolta(8080); //ascolta la porta 8080

gestore di funzioni (req, res) { //crea server

fs.readFile(_dirname + '/public/index.html', function(err, data) { //read

file index.html nella cartella pubblica

se (errare) {

res.writeHead(404, {'Tipo di contenuto': 'text/html'}); //visualizza 404 in caso di errore

return res.end( 404 Not

Trovato );

}

res.writeHead(200, {'Tipo di contenuto': 'text/html'}); //scrivi HTML

res.write(dati); //scrivi i dati

da index.html

return res.end();

});

}

Questo server web ascolterà la tua porta Raspberry 8080 e fornirà file a qualsiasi client web che lo connette. Ora dobbiamo creare qualcosa da ospitare e fornire ai nostri clienti: Sposta nella cartella "pubblica": pi@raspberry:~ $ cd public

Crea un nuovo file html “index.html”:

pi@raspberry:~ $ nano index.html

Incolla il codice dall'allegato "HelloWorld.txt", salva ed esci.

Spostati all'interno della cartella nodejs "nodehome":

pi@raspberry:~ $ cd nodehome

Avvia server web

pi@raspberry:~ $ node webserver.js

Apri il sito Web in un browser utilizzando https://Raspberry_IP:8080/ (sostituisci Raspberry_IP con il tuo IP)

Passaggio 6: AGGIUNTA DELLA CAPACITÀ DI STREAMING VIDEO

Esistono diversi modi per implementare lo streaming video su un Raspberry, il più semplice

come ho scoperto fino ad ora, che le grandi prestazioni e l'integrazione in un'interfaccia web si basano sul progetto di Miguel Mota:

miguelmota.com/blog/raspberry-pi-camera-bo…

Grazie Michele! Dal suo blog questi sono i passaggi:

Installa i componenti libjpeg8 e cmake:

pi@raspberry:~ $ sudo apt-get install libjpeg8

pi@raspberry:~ $ sudo apt-get install libjpeg8-dev

pi@raspberry:~ $ sudo apt-get install cmake

Scarica mjpg-streamer con il plugin raspicam:

pi@raspberry:~ $ git clone

github.com/jacksonliam/mjpg-streamer.git ~/mjpg-streamer

Cambia directory:

pi@raspberry:~ $ cd ~/mjpg-streamer/mjpg-streamer-sperimentale

Compilare:

pi@raspberry:~ $ pulisci tutto

Sostituisci il vecchio mjpg-streamer:

pi@raspberry:~ $ sudo rm -rf /opt/mjpg-streamer

pi@raspberry:~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-sperimentale

/opt/mjpg-streamer

pi@raspberry:~ $ sudo rm -rf ~/mjpg-streamer

Crea un nuovo file "start_stream.sh", copia e incolla dal file "start_stream.txt" allegato.

Rendilo eseguibile (crea script di shell):

pi@raspberry:~ $ chmod +x start_stream.sh

Avvia server di streaming:

pi@raspberry:~ $./start_stream.sh

Apri il sito Web in un browser utilizzando https://Raspberry_IP:9000 (sostituisci Raspberry_IP con il tuo IP)

Passaggio 7: PROGRAMMA SERBATOIO

Tutto è pronto, ora dobbiamo creare la nostra pagina web per controllare il serbatoio (index.html) e il nostro server web per ascoltare i nostri comandi (webserver.js). Quindi, basta sostituire i file visti fino ad ora (solo esempi per testare il sistema) con gli allegati webserver.txt e index.txt.

Passaggio 8: AVVIARE L'INTERFACCIA DI CONTROLLO E IL SERVER STREAMING

INIZIA INTERFACCIA DI CONTROLLO E SERVER STREAMING
INIZIA INTERFACCIA DI CONTROLLO E SERVER STREAMING

Per avviare i servizi apri due finestre di terminale ed esegui questi comandi:

nodo nodehome/webserver.js

./nodehome/start_stream.sh

Apri il sito Web in un browser utilizzando https://Raspberry_IP:8080 (sostituisci Raspberry_IP con il tuo IP)

Consigliato: