Përmbajtje:

Rezervuari me mjedër me ndërfaqe në internet dhe transmetim video: 8 hapa (me fotografi)
Rezervuari me mjedër me ndërfaqe në internet dhe transmetim video: 8 hapa (me fotografi)

Video: Rezervuari me mjedër me ndërfaqe në internet dhe transmetim video: 8 hapa (me fotografi)

Video: Rezervuari me mjedër me ndërfaqe në internet dhe transmetim video: 8 hapa (me fotografi)
Video: Future-Proof Networking: OSI Layer 3 Meets IPv6 Multicasting 2024, Nëntor
Anonim
Rezervuari me mjedër me ndërfaqe në internet dhe transmetim video
Rezervuari me mjedër me ndërfaqe në internet dhe transmetim video

Ne do të shohim se si kam kuptuar një rezervuar të vogël WiFi, të aftë për telekomandë në internet dhe transmetim video.

Ky synohet të jetë një mësim që kërkon njohuri themelore të programimit elektronik dhe softuerik. Për këtë arsye unë kam zgjedhur një Tank shasi Kit (në vend që ta printoj duke përdorur printer 3D, mund të jetë një azhurnim i mëvonshëm) dhe një total prej 6 përbërësish përfshirë bateritë. Nga ana softuerike mund të ndiqni hap pas hapi procesin e instalimit dhe programimin të mbahet në minimum, një njohuri bazë e gjërave të Mjedrës mund të ndihmojë.

Unë kam vlerësuar 12 orë punë nga 0 në gati për të drejtuar rezervuarin. Kosto totale prej 70 € për të gjithë përbërësit.

Hapi 1: BOM

BOM
BOM
BOM
BOM
BOM
BOM
BOM
BOM

1 - DIY RC Robot Chassis Tank - 32 (€)

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

1 - Dual Channel L298N DC Motor Driver Board - 1, 39 (€)

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

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

amzn.eu/1ugAaMP

Kartë SD 1 - 16 GB - 5, 50 (€)

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

1 - Webcam Raspberry Pi 5MP Camera Module për Model Zero - 8 (€)

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

1 - Banka e energjisë 5V

Bateri 1 - 9v

Lidhës i përzier me kabllo Breadboard Dupont

Miu, tastiera, monitori ose televizori për konfigurimin e mjedrës (opsionale, vetëm për ta bërë më të lehtë konfigurimin e parë)

Hapi 2: Specifikimet e Komponentëve Kryesorë

Motor

JGA25-370 gearmotor DC

Ky motor përmban një bosht dalës në formë D.

Specifikimet

· Tensioni i funksionimit: midis 6 V dhe 18 V

· Tensioni nominal: 12 V

· Shpejtësi e drejtimit të lirë në 12 V: 399 RPM

· Rrymë e lirë në 12 V: 50 mA

· Rryma e stallave në 12V: 1200 mA

· Çift rrotullues në stalla në 12V: 2.2 kg.cm

· Raporti i ingranazheve: 1:21

· Madhësia e reduktuesit: 19 mm

· Pesha: 84 g

Bordi i Drejtuesve të Motorëve me Dy Kanale L298N DC

Drejtuesi i dyfishtë i motorit me urë H, mund të drejtojë dy motorë DC ose një motor stepper me dy tela me 4 tela. TSD e integruar, për tu mbrojtur nga stalla e motorit.

Specifikimet

· Tensioni i furnizimit të modulit: DC 2V-10V

· Tensioni i hyrjes së sinjalit: DC 1.8-7V

· Rryma e vetme e punës: 1.5A

· Rryma maksimale deri në 2.5A

· Rrymë e ulët gatishmërie (më pak se 0.1uA)

· Qark i përcjelljes së përbashkët të integruar, terminali i hyrjes i lirë, motori nuk funksionon

· Madhësia: 24.7 x 21 x 7mm

Hapi 3: WIRING

Lidhje elektrike
Lidhje elektrike
Lidhje elektrike
Lidhje elektrike

Kjo do të jetë instalime elektrike përfundimtare, por PRIT, para se të duhet të instalojmë disa

softuer dhe është një ide e mirë për ta testuar atë me instalime elektrike më të thjeshta, kur të jeni gati që të ktheheni këtu.

Ne kemi nevojë për dy burime të ndryshme energjie, një për motorin dhe një për mjedrën.

Drejtuesi i motorit Dual Channel L298N DC Motor Driver Board (tensioni maksimal i hyrjes DC 2V-10V) mundësohet duke përdorur baterinë 9V dhe Raspberry Pi përdor standardet 5V akumulatori USB.

Kunja GND e drejtuesit të motorit do të lidhet me baterinë minus dhe Raspberry Pi (GND). Kunjat GPIO të Raspberry Pi janë të lidhura me drejtuesin e motorit si tabelë.

Hapi 4: PRERGATITJA E RASPBERRY O. S

Ky është një instalim standard për sistemin operativ Raspbian, mund ta gjeni

shumë mësime të hollësishme që kërkojnë në internet, në thelb hapat janë:

1. Shkarkoni iso RASPBIAN STRETCH ME DESKTOP nga

2. Formatoni një kartë SD 16 GB, unë kam përdorur SD Formatter

3. Djeg skedarin. IMG, kam përdorur Win32DiskImager

Tani mjedra juaj është gati për tu nisur, lidheni atë me një burim energjie USB (5V, 2A) dhe përgatituni për konfigurimin e nisjes së parë. Ju mund ta bëni atë në dy mënyra, duke përdorur pajisje të jashtme si miu, tastiera dhe monitori ose duke përdorur kompjuterin tuaj dhe një lidhje të largët me Raspberry. Ka shumë mësime për këtë, njëra është:

Hapi 5: SI T CON KONTROLLONI TANKIN TON W WIFI ME NODE. JS DHE WEBSOCKET. IO

SI T TO KONTROLLONI TANKIN TON W WIFI ME NODE. JS DHE WEBSOCKET. IO
SI T TO KONTROLLONI TANKIN TON W WIFI ME NODE. JS DHE WEBSOCKET. IO

Tani kemi një instalim të ri të mikro -kompjuterit tonë Raspberry gati për të drejtuar punën tonë, kështu që … çfarë përdorim për të lëshuar komanda në rezervuar?

Python është një gjuhë shumë e lehtë për t’u përdorur që përdoret zakonisht për të drejtuar rërën e projektit Rapsberry mund të përdoret lehtësisht edhe për të bashkëvepruar me kunjat e hyrjes dhe daljes së Rapsberry (GPIO)

Por, qëllimi im ishte të lidhja wi-fi të rezervuarit tim nga çdo pajisje (PC, telefon celular, tabletë …) duke përdorur një shfletues të zakonshëm në internet dhe gjithashtu të transmetoja video nga ai. Pra, harroni Python tani për tani dhe le të lëvizim në NODE. JS dhe SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) është një punë kornizë e serverit me burim të hapur bazuar në gjuhën js. Meqenëse po përdor Raspberry Pi Zero (CPU ARMv6) ne nuk mund të përdorim procesin e instalimit automatik (të destinuar për CPU ARMv7) dhe ne duhet ta bëjmë atë me dorë:

Shkarkoni Nodejs në nivel lokal, (kam përdorur versionin 7.7.2 për ARMv6, kontrolloni versionet e tjera këtu

pi@mjedër: ~ $ wget

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

Pasi të keni mbaruar, nxirrni skedarin e ngjeshur:

pi@mjedër: ~ $ tar -xzf nyje-v7.7.2-linux-armv6l.tar.gz

Kopjoni dhe instaloni skedarët në /përdorues /lokal

pi@mjedër: ~ $ sudo cp -R nyje-v7.7.2-linux-armv6l/*/usr/local/

Shtoni vendndodhjen ku instalojmë nodejs në shteg, modifikoni skedarin ".profile":

pi@mjedër: ~ $ nano ~/.profil

Shtoni rreshtin e mëposhtëm në fund të skedarit, ruani dhe dilni

PATH = $ PATH:/usr/local/bin

Hiq skedarin e shkarkuar:.

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

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

Shkruani komandat e mëposhtme për të kontrolluar instalimin e nodejs:

pi@mjedër: n $ nyje -v

pi@mjedër: ~ $ npm -v

Ju duhet të lexoni v7.7.2 dhe v4.1.2 si përgjigje.

Nëse gjithçka shkoi mirë, krijoni një dosje të re për të pritur skedarët tuaj nodejs:

pi@mjedër: ode $ mkdir nodehome

Zhvendoseni brenda dosjes së re:

pi@mjedër: ode $ cd nodehome

Instaloni modul shtesë të kërkuar për të menaxhuar GPIO në mënyrën më themelore, ON dhe OFF:

pi@mjedër: install $ npm instaloni onoff

Tani është koha për të testuar projektin tonë të parë "Blink.js", rezultati do të jetë … një LED që vezullon

pi@mjedër: n $ nano blink.js

Ngjitni kodin e mëposhtëm, ruani dhe dilni:

var Gpio = kërkoj ('fikur'). Gpio; // përfshini onoff

var LED = Gpio e re (3, 'jashtë'); // përdorni GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

// ndez LED çdo 250ms

funksion blinkLED () {// funksion për të filluar ndezjen

nëse

(LED.readSync () === 0) {// kontrolloni gjendjen e kunjit, nëse gjendja është 0 (ose joaktive)

LED.writeSync (1);

// vendosni gjendjen e pinit në 1 (ndizni LED)

} tjetër {

LED.writeSync (0);

// vendosni gjendjen e pinit në 0 (fikni LED)

}

}

funksioni endBlink () {// funksioni për të ndaluar ndezjen

clearInterval (blinkInterval); // Ndaloni intervalet e ndezjes së syve

LED.writeSync (0); // Fikni LED -in

LED.unexport (); // Mos eksportoni GPIO në burime falas

}

setTimeout (fundBlink, 5000); // ndaloni së ndezuri pas 5 sekondash

Lidhni një LED, një Rezistor (200ohms) siç tregohet në skemë dhe drejtoni projektin:

pi@mjedër: n $ nyja blink.js

Nyja është gati.

SOCKET. IO

WebSocket është një protokoll komunikimi kompjuterik, i bazuar në lidhjen TCP, ai siguron një programues për të krijuar një server dhe klient. Klienti lidhet me serverin dhe lëshon dhe merr mesazhe nga dhe nga serveri. Zbatimi i WebSocket për Node.js quhet Socket.io (https://socket.io/).

Instaloni socket.io:

pi@mjedër: ~ $ npm instaloni socket.io -ruani

Lëvizni brenda shtëpisë së nodejs, e krijuar më parë:

pi@mjedër: ode $ cd nodehome

Dhe krijoni një dosje të re "publike":

pi@mjedër: m $ mkdir publike

Krijoni një server të ri shembull, quajeni "webserver.js"

pi@mjedër: ~ $ nano webserver.js

Ngjitni kodin e mëposhtëm, ruani dhe dilni:

var http = kërkojnë ('http'). createServer (mbajtës); // kërkojnë server http dhe krijoni server me funksionuesin ()

var fs = kërkoj ('fs'); // kërkojnë modul të sistemit të skedarëve

http.listen (8080); // dëgjoni portin 8080

mbajtës i funksioneve (req, res) {// krijoni server

fs.readFile (_ dirname + '/public/index.html', funksioni (gabim, të dhëna) {// lexo

file index.html në dosjen publike

nëse (gaboj) {

res.writeHead (404, {'Lloji i Përmbajtjes': 'tekst/html'}); // shfaq 404 mbi gabimin

kthehu res.end ( 404 Jo

U gjet );

}

res.writeHead (200, {'Lloji i Përmbajtjes': 'tekst/html'}); // shkruaj HTML

rishkruaj (të dhënat); // shkruaj të dhëna

nga indeksi.html

kthehu res.end ();

});

}

Ky server në internet do të dëgjojë portën tuaj Raspberry 8080 dhe do të sigurojë skedarë për çdo klient në internet që e lidh atë. Tani ne duhet të krijojmë diçka për të pritur dhe siguruar për klientët tanë: Lëvizni brenda dosjes "publike": pi@raspberry: ~ $ cd public

Krijoni skedarin e ri html "index.html":

pi@mjedër: n $ nano index.html

Ngjitni kodin nga bashkangjitur "HelloWorld.txt", ruani dhe dilni.

Zhvendoseni brenda dosjes nodejs "nodehome":

pi@mjedër: ode $ cd nodehome

Filloni serverin e uebit

pi@mjedër: er $ nyje webserver.js

Hapni uebfaqen në një shfletues duke përdorur https:// Raspberry_IP: 8080/(zëvendësoni Raspberry_IP me IP -në tuaj)

Hapi 6: SHTIMI I Aftësive VIDEO STREAMING

Ka mënyra të ndryshme për të zbatuar transmetimin e videove në një mjedër, më e lehtë

mënyra që kam gjetur deri më tani, se si një performancë e shkëlqyeshme dhe që mund të integrohet në një ndërfaqe në internet bazohet në projektin nga Miguel Mota:

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

Faleminderit Miguel! Nga blogu i tij këto janë hapat:

Instaloni përbërësit libjpeg8 dhe cmake:

pi@mjedër: ~ $ sudo apt-get install libjpeg8

pi@mjedër: ~ $ sudo apt-get install libjpeg8-dev

pi@mjedër: su $ sudo apt-get install cmake

Shkarkoni mjpg-streamer me shtojcën raspicam:

pi@mjedër: ~ $ git klon

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

Ndrysho drejtorinë:

pi@mjedër: ~ $ cd ~/mjpg-streamer/mjpg-streamer-experimental

Përpiloni:

pi@mjedër: ~ $ pastroni të gjitha

Zëvendësoni transmetuesin e vjetër mjpg:

pi@mjedër: ~ $ sudo rm -rf /opt /mjpg -streamer

pi@mjedër: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-experimental

/opt/mjpg-streamer

pi@mjedër: ~ $ sudo rm -rf ~/mjpg -streamer

Krijoni një skedar të ri "start_stream.sh", kopjoni dhe ngjisni nga skedari "start_stream.txt" i bashkangjitur.

Bëjeni atë të ekzekutueshëm (krijoni skripte shell):

pi@mjedër: ~ $ chmod +x start_stream.sh

Filloni serverin e transmetimit:

pi@mjedër: ~ $./start_stream.sh

Hapni uebfaqen në një shfletues duke përdorur https:// Raspberry_IP: 9000 (zëvendësoni Raspberry_IP me IP -në tuaj)

Hapi 7: PROGRAMI TANK

Gjithçka është gati, tani duhet të krijojmë faqen tonë të internetit për të kontrolluar rezervuarin (index.html) dhe serverin tonë të internetit për të dëgjuar komandat tona (webserver.js). Pra, thjesht zëvendësoni skedarët e parë deri më tani (vetëm shembuj për të testuar sistemin) me webserver.txt dhe index.txt të bashkangjitur.

Hapi 8: FILLONI SERVERIN E KONTROLLIT TTER NDTERRFYRS DHE STREAMING

FILLONI KONTROLLI SERVER INTERFACE DHE STREAMING
FILLONI KONTROLLI SERVER INTERFACE DHE STREAMING

Për të filluar shërbimet, hapni dy dritare terminale dhe ekzekutoni këto komanda:

nyje nodehome/webserver.js

./nodehome/start_stream.sh

Hapni uebfaqen në një shfletues duke përdorur https:// Raspberry_IP: 8080 (zëvendësoni Raspberry_IP me IP -në tuaj)

Recommended: