INHOUDSOPGAWE:

Framboosbak met webkoppelvlak en videostroom: 8 stappe (met foto's)
Framboosbak met webkoppelvlak en videostroom: 8 stappe (met foto's)

Video: Framboosbak met webkoppelvlak en videostroom: 8 stappe (met foto's)

Video: Framboosbak met webkoppelvlak en videostroom: 8 stappe (met foto's)
Video: Equipment Corner- OctoPrint configuration 2024, Desember
Anonim
Framboosbak met webkoppelvlak en videostroom
Framboosbak met webkoppelvlak en videostroom

Ons gaan kyk hoe ek 'n klein WiFi -tenk gekry het wat in staat is om webbeheer en videostreaming op afstand te doen.

Dit is 'n handleiding wat basiese kennis van elektroniese en sagteware -programmering vereis. Om hierdie rede het ek 'n tenk -onderstelstel gekies (in plaas daarvan om dit met 'n 3D -drukker te druk, kan dit 'n latere opgradering wees) en 'n totaal van 6 komponente, insluitend batterye. Aan die sagteware kan u die installasieproses en die programmering tot 'n minimum beperk, 'n basiese kennis van framboos -dinge kan help.

Ek het 12 uur se werk geskat van 0 tot tenk om klaar te loop. Totale koste van 70 € vir alle komponente.

Stap 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

1 - 16 GB SD -kaart - 5, 50 (€)

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

1 - Raspberry Pi 5MP -kameramodule -webcam vir Model Zero - 8 (€)

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

1 - Power Bank 5V

1 - 9v battery

Gemengde broodbordkabel Dupont -aansluiting

Muis, sleutelbord, monitor of TV vir framboosopstelling (opsioneel, net om die eerste opstelling makliker te maak)

Stap 2: Spesifikasies van die hoofkomponente

Motor

JGA25-370 DC-ratmotor

Hierdie motor het 'n D-vormige uitsetas.

Spesifikasies

· Bedryfspanning: tussen 6 V en 18 V

· Nominale spanning: 12 V

· Vryloopspoed teen 12 V: 399 rpm

· Vryloopstroom by 12 V: 50 mA

· Stallstroom by 12V: 1200 mA

· Standkoppel by 12V: 2,2 kg.cm

· Ratverhouding: 1:21

· Grootte reduktor: 19 mm

· Gewig: 84 g

Dual Channel L298N DC motorbestuurderbord

Dubbele H-brugmotorbestuurder, kan twee GS-motors of 'n 4-draads tweefasige stapmotor dryf. Ingeboude TSD, om te beskerm teen motorstalletjies.

Spesifikasies

· Module toevoerspanning: DC 2V-10V

· Sein insetspanning: DC 1.8-7V

· Enkel werkstroom: 1.5A

· Piekstroom tot 2,5A

· Lae bystandstroom (minder as 0.1uA)

· Ingeboude algemene geleidingskring, die ingangsklem leeg, die motor funksioneer nie

· Grootte: 24,7 x 21 x 7 mm

Stap 3: BEDRADING

BEDRADING
BEDRADING
BEDRADING
BEDRADING

Dit sal die laaste bedrading wees, maar WAG, voordat ons 'n paar moet installeer

sagteware, en dit is 'n goeie idee om dit met eenvoudiger bedrading te toets, as dit gereed is, wat terugkom hierheen.

Ons benodig twee verskillende kragbronne, een vir die motor en een vir die Framboos.

Die motorbestuurder Dual Channel L298N DC-motorbestuurderbord (maksimum ingangsspanning DC 2V-10V) word aangedryf deur die 9V-battery te gebruik en Raspberry Pi gebruik die standaard 5V USB-akkumulator.

Die GND -pen van die motorbestuurder word verbind met die battery minus en Raspberry Pi (GND). Die GPIO -penne van Raspberry Pi word as tafel aan die motorbestuurder gekoppel.

Stap 4: VOORBEREIDING VAN Raspberry O. S

Dit is 'n standaardinstallasie vir die Raspbian -bedryfstelsel

baie gedetailleerde tutoriale op die internet, basies is die stappe:

1. Laai iso RASPBIAN STRETCH MET DESKTOP af van

2. Formateer 'n 16 GB SD -kaart, ek het SD Formatter gebruik

3. Brand. IMG lêer, ek het Win32DiskImager gebruik

Nou is u framboos gereed om op te laai, koppel dit aan 'n USB -kragbron (5V, 2A) en berei u voor vir die eerste opstartopstelling. U kan dit op twee maniere doen, met behulp van eksterne toestelle soos muis, sleutelbord en monitor, of met u rekenaar en 'n afstandverbinding met Framboos. Daar is baie tutoriale hieroor, die een is:

Stap 5: HOE OM ONS WIFI -TANK TE BEHEER MET NODE. JS EN WEBSOCKET. IO

HOE OM ONS WIFI -TANK TE BEHEER MET NODE. JS EN WEBSOCKET. IO
HOE OM ONS WIFI -TANK TE BEHEER MET NODE. JS EN WEBSOCKET. IO

Nou het ons 'n nuwe installasie van ons Framboos -mikro -rekenaar gereed om ons werk uit te voer, so … wat gebruik ons om bevele aan die tenk uit te reik?

Python is 'n baie maklik om te gebruik taal wat algemeen gebruik word om Rapsberry -projek uit te voer, en kan ook maklik gebruik word om met Rapsberry -invoer- en uitvoerpenne (GPIO) te werk

Maar my doel was om my tenk-wi-fi aan te sluit vanaf enige toestel (rekenaar, selfoon, tablet …) met 'n gewone webblaaier en ook video daarvan te stroom. Dus, vergeet Python vir eers, en laat ons aanbeweeg na NODE. JS en SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) is 'n open source bediener raamwerk gebaseer op js taal. Aangesien ek Raspberry Pi Zero (ARMv6 CPU) gebruik, kan ons nie die outomatiese installasieproses (bedoel vir ARMv7 CPU) gebruik nie en moet ons dit met die hand doen:

Laai Nodejs plaaslik af (ek het 'n 7.7.2 -weergawe vir ARMv6 gebruik, kyk na ander weergawes hier

pi@framboos: ~ $ wget

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

Sodra dit klaar is, pak die saamgeperste lêer uit:

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

Kopieer en installeer die lêers in /user /local

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

Voeg die plek waar ons nodejs installeer by die pad, wysig '.profile' lêer:

pi@framboos: ~ $ nano ~/.profiel

Voeg die volgende reël aan die einde van die lêer by, stoor en verlaat

PATH = $ PATH:/usr/local/bin

Verwyder die afgelaaide lêer:.

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

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

Tik die volgende opdragte om die installering van nodejs na te gaan:

pi@framboos: ~ $ node -v

pi@framboos: ~ $ npm -v

U moet v7.7.2 en v4.1.2 as antwoord lees.

As alles goed verloop, skep 'n nuwe gids om u nodejs -lêers te huisves:

pi@framboos: ~ $ mkdir nodehome

Beweeg na 'n nuwe gids:

pi@framboos: ~ $ cd nodehome

Installeer addisionele module wat nodig is om GPIO op die mees basiese manier te bestuur, AAN en UIT:

pi@framboos: ~ $ npm installeer onoff

Dit is nou tyd om ons eerste projek "Blink.js" te toets, die resultaat is … 'n knipperende LED

pi@framboos: ~ $ nano blink.js

Plak die volgende kode, stoor en verlaat:

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

var LED = nuwe Gpio (3, 'out'); // gebruik GPIO 3

var blinkInterval = setInterval (blinkLED, 250);

// knipper LED elke 250 ms

funksie blinkLED () {// funksie om te begin knip

as

(LED.readSync () === 0) {// kyk na die speldtoestand, as die toestand 0 is (of af)

LED.writeSync (1);

// stel penstatus in op 1 (skakel LED aan)

} anders {

LED.writeSync (0);

// stel penstatus in op 0 (skakel LED af)

}

}

funksie endBlink () {// funksie om op te hou knip

clearInterval (blinkInterval); // Stop knipperintervalle

LED.writeSync (0); // Skakel LED af

LED.unexport (); // Gee GPIO uit na gratis hulpbronne

}

setTimeout (endBlink, 5000); // hou op met knip na 5 sekondes

Dra 'n LED, 'n weerstand (200 ohm) soos in die skema getoon en voer die projek uit:

pi@framboos: ~ $ node blink.js

Node is gereed.

SOCKET. IO

WebSocket is 'n rekenaarkommunikasieprotokol, gebaseer op TCP -verbinding, en bied 'n programmeerder om 'n bediener en kliënt te skep. Die kliënt maak verbinding met die bediener en stuur en ontvang boodskappe na en van die bediener. WebSocket -implementering vir Node.js heet Socket.io (https://socket.io/).

Installeer socket.io:

pi@framboos: ~ $ npm installeer socket.io --save

Beweeg na nodejs huis toe, wat voorheen geskep is:

pi@framboos: ~ $ cd nodehome

En skep 'n nuwe gids "publiek":

pi@framboos: ~ $ mkdir publiek

Skep 'n nuwe voorbeeldwebbediener, noem dit 'webserver.js'

pi@framboos: ~ $ nano webserver.js

Plak die volgende kode, stoor en verlaat:

var http = require ('http'). createServer (hanteerder); // benodig http -bediener en skep bediener met funksiehanterer ()

var fs = vereis ('fs'); // vereis lêerstelsel module

http.listen (8080); // luister na poort 8080

funksie hanteerder (vereiste, res) {// skep bediener

fs.readFile (_ dirname + '/public/index.html', funksie (fout, data) {// lees

lêer index.html in die openbare gids

as (fout) {

res.writeHead (404, {'Inhoudstipe': 'teks/html'}); // vertoon 404 by fout

stuur res.end ( 404 nie

Gevind );

}

res.writeHead (200, {'Inhoudstipe': 'teks/html'}); // skryf HTML

res.write (data); // data skryf

van index.html

stuur res.end () terug;

});

}

Hierdie webbediener luister na u Framboos -poort 8080 en bied lêers vir elke webkliënt wat dit verbind. Nou moet ons iets skep om aan te bied en aan ons kliënte te bied: Beweeg na die "openbare" gids: pi@raspberry: ~ $ cd public

Skep nuwe html -lêer “index.html”:

pi@framboos: ~ $ nano index.html

Plak kode van aangehegte "HelloWorld.txt", stoor en verlaat.

Beweeg na nodejs -lêergids "nodehome":

pi@framboos: ~ $ cd nodehome

Begin HTTP -webbediener:

pi@framboos: ~ $ node webserver.js

Maak die webwerf oop in 'n blaaier met https:// Raspberry_IP: 8080/(vervang Raspberry_IP met u IP)

Stap 6: TOEVOEGING VAN VIDEO STREAMING -KAPASITEIT

Daar is verskillende maniere om videostroom op 'n framboos die maklikste te implementeer

Soos ek tot dusver gevind het, is dit 'n uitstekende prestasie en kan geïntegreer word in 'n webkoppelvlak op die projek van Miguel Mota:

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

Dankie Miguel! Uit sy blog is dit die volgende stappe:

Installeer komponente libjpeg8 en cmake:

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

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

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

Laai mjpg-streamer af met raspicam-inprop:

pi@framboos: ~ $ git kloon

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

Verander gids:

pi@framboos: ~ $ cd ~/mjpg-streamer/mjpg-streamer-eksperimenteel

Stel saam:

pi@framboos: ~ $ maak alles skoon

Vervang ou mjpg-streamer:

pi@framboos: ~ $ sudo rm -rf /opt /-j.webp

pi@framboos: ~ $ sudo mv ~/mjpg-streamer/mjpg-streamer-eksperimenteel

/opt/mjpg-streamer

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

Skep 'n nuwe "start_stream.sh" lêer, kopieer en plak uit die aangehegte "start_stream.txt" lêer.

Maak dit uitvoerbaar (skep dopskripte):

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

Begin stroom bediener:

pi@framboos: ~ $./start_stream.sh

Maak die webwerf oop in 'n blaaier met behulp van https:// Raspberry_IP: 9000 (vervang Raspberry_IP met u IP)

Stap 7: TANKPROGRAM

Alles is gereed, nou moet ons ons webwerf skep om die tenk (index.html) en ons webbediener te beheer om na ons opdragte te luister (webserver.js). Vervang dus die lêers wat tot nou toe gesien is (slegs voorbeelde om die stelsel te toets) met die aangehegte webserver.txt en index.txt.

Stap 8: BEGIN BEHEERKoppelvlak en strome -bediener

BEGIN BEHEERKoppelvlak en strome -bediener
BEGIN BEHEERKoppelvlak en strome -bediener

Om die dienste te begin, maak twee terminale vensters oop en voer hierdie opdragte uit:

node nodehome/webserver.js

./nodehome/start_stream.sh

Maak die webwerf oop in 'n blaaier met behulp van https:// Raspberry_IP: 8080 (vervang Raspberry_IP met u IP)

Aanbeveel: