Inhoudsopgave:

Raspberry Tank met webinterface en videostreaming - Ajarnpa
Raspberry Tank met webinterface en videostreaming - Ajarnpa

Video: Raspberry Tank met webinterface en videostreaming - Ajarnpa

Video: Raspberry Tank met webinterface en videostreaming - Ajarnpa
Video: Hoe maak je een Raspberry Pi WEB SERVER? - Raspberry Pi #4 - TechTime 2024, November
Anonim
Raspberry Tank met webinterface en videostreaming
Raspberry Tank met webinterface en videostreaming

We gaan zien hoe ik een kleine WiFi-tank heb gerealiseerd, die in staat is tot webbediening op afstand en videostreaming.

Dit is bedoeld als een tutorial waarvoor basiskennis van elektronische en softwareprogrammering vereist is. Om deze reden heb ik gekozen voor een tankchassiskit (in plaats van deze met een 3D-printer af te drukken, kan een latere upgrade zijn) en in totaal 6 componenten inclusief batterijen. Aan de softwarekant kun je stap voor stap het installatieproces volgen en programmeren wordt tot een minimum beperkt, een basiskennis van Raspberry-dingen kan helpen.

Ik heb 12 uur werk geschat van 0 tot een tank die klaar is om te draaien. Totale kosten van 70€ voor alle componenten.

Stap 1: Stuklijst

stuklijst
stuklijst
stuklijst
stuklijst
stuklijst
stuklijst
stuklijst
stuklijst

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 Camera Module Webcam voor Model Zero - 8 (€)

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

1 - Powerbank 5V

1 - 9v batterij

Gemengde Breadboard Kabel Dupont Connector

Muis, toetsenbord, monitor of tv voor Raspberry-configuratie (optioneel, alleen om de eerste installatie eenvoudiger te maken)

Stap 2: Specificaties hoofdcomponenten

Motor

JGA25-370 DC-reductiemotor

Deze motor heeft een D-vormige uitgaande as.

Specificaties:

· Bedrijfsspanning: tussen 6 V en 18 V

· Nominale spanning: 12 V

· Vrijloopsnelheid bij 12 V: 399 RPM

· Vrijloopstroom bij 12 V: 50 mA

· Blokkeerstroom bij 12V: 1200 mA

· Blokkeerkoppel bij 12V: 2,2 kg.cm

· Overbrengingsverhouding: 1:21

· Reductiemaat: 19 mm

· Gewicht: 84 g

Dual Channel L298N DC Motor Driver Board

Dual H-bridge motor driver, kan twee gelijkstroommotoren of een 4-draads tweefasige stappenmotoren aandrijven. Ingebouwde TSD, om te beschermen tegen motorstalling.

Specificaties:

· Module voedingsspanning: DC 2V-10V

· Signaal ingangsspanning: DC 1.8-7V

· Enkele werkende stroom: 1.5A

· Piekstroom tot 2,5A

· Lage standby-stroom (minder dan 0.1uA)

· Ingebouwd gemeenschappelijk geleidingscircuit, de ingangsklem vacant, de motor werkt niet defect

· Afmeting: 24,7 x 21 x 7 mm

Stap 3: BEDRADING:

BEDRADING
BEDRADING
BEDRADING
BEDRADING

Dit zal de laatste bedrading zijn, maar WACHT, voordat we wat moeten installeren

software en het is een goed idee om het te testen met eenvoudigere bedrading, wanneer u klaar bent, komt u hier terug.

We hebben twee verschillende stroombronnen nodig, een voor de motor en een voor de Raspberry.

De motordriver Dual Channel L298N DC Motor Driver Board (max. ingangsspanning DC 2V-10V) wordt gevoed door de 9V-batterij en Raspberry Pi gebruikt de standaard 5V USB-accu.

De GND-pin van de motordriver wordt verbonden met de batterij min en Raspberry Pi (GND). De GPIO-pinnen van Raspberry Pi zijn als tafel verbonden met de motordriver.

Stap 4: RASPBERRY O. S. VOORBEREIDEN

Dit is een standaardinstallatie voor het Raspbian-besturingssysteem, die u kunt vinden:

veel gedetailleerde tutorials die op internet zoeken, in feite zijn de stappen:

1. Download iso RASPBIAN STRETCH MET DESKTOP van

2. Formatteer een SD-kaart van 16 GB, ik heb SD Formatter gebruikt

3. Brand. IMG-bestand, ik heb Win32DiskImager gebruikt

Nu is je Raspberry klaar om op te starten, sluit hem aan op een USB-stroombron (5V, 2A) en bereid je voor op de eerste opstartconfiguratie. Je kunt het op twee manieren doen, met behulp van externe apparaten zoals muis, toetsenbord en monitor of met behulp van je pc en een externe verbinding met Raspberry. Er zijn veel tutorials hierover, een is:

Stap 5: HOE ONZE WIFI-TANK TE BEDIENEN MET NODE. JS EN WEBSOCKET. IO

HOE ONZE WIFI-TANK TE BEDIENEN MET NODE. JS EN WEBSOCKET. IO
HOE ONZE WIFI-TANK TE BEDIENEN MET NODE. JS EN WEBSOCKET. IO

Nu hebben we een nieuwe installatie van onze Raspberry micro-pc klaar om ons werk uit te voeren, dus … wat gebruiken we om opdrachten naar de tank te geven?

Python is een zeer eenvoudig te gebruiken taal die vaak wordt gebruikt om Rapsberry-projectzand uit te voeren en kan ook gemakkelijk worden gebruikt om te communiceren met Rapsberry-invoer- en uitvoerpinnen (GPIO)

Maar mijn doel was om mijn tank-wifi vanaf elk apparaat (pc, mobiele telefoon, tablet …) te verbinden met een gewone webbrowser en er ook video vanaf te streamen. Dus, vergeet Python voor nu, en laten we verder gaan met NODE. JS en SOCKET. IO.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) is een open source serverframewerk op basis van js-taal. Aangezien ik Raspberry Pi Zero (ARMv6 CPU) gebruik, kunnen we het automatische installatieproces (bedoeld voor ARMv7 CPU) niet gebruiken en moeten we dit handmatig doen:

Download Nodejs lokaal (ik heb versie 7.7.2 voor ARMv6 gebruikt, bekijk andere versies hier

pi@raspberry:~ $ wget

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

Als je klaar bent, pak je het gecomprimeerde bestand uit:

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

Kopieer en installeer de bestanden in /user/local

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

Voeg de locatie waar we nodejs installeren toe aan het pad, bewerk het ".profile" -bestand:

pi@raspberry:~ $ nano ~/.profile

Voeg de volgende regel toe aan het einde van het bestand, sla op en sluit af

PATH=$PATH:/usr/local/bin

Verwijder het gedownloade bestand:.

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

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

Typ de volgende opdrachten om de nodejs-installatie te controleren:

pi@raspberry:~ $ knooppunt -v

pi@raspberry:~ $ npm -v

U dient v7.7.2 en v4.1.2 als antwoord te lezen.

Als alles goed is gegaan, maakt u een nieuwe map om uw nodejs-bestanden te hosten:

pi@raspberry:~ $ mkdir nodehome

Verplaatsen naar nieuwe map:

pi@raspberry:~ $ cd nodehome

Installeer een extra module die nodig is om GPIO op de meest eenvoudige manier te beheren, AAN en UIT:

pi@raspberry:~ $ npm installeren aanuit

Nu is het tijd om ons eerste project "Blink.js" te testen, het resultaat zal zijn … een knipperende LED

pi@raspberry:~ $ nano blink.js

Plak de volgende code, sla op en sluit af:

var Gpio = vereisen('aanuit'). Gpio; // inclusief aan-uit

var LED = nieuwe Gpio(3, 'uit'); //gebruik GPIO 3

var blinkInterval = setInterval(blinkLED, 250);

// knipper LED elke 250 ms

functie blinkLED () { // functie om te beginnen met knipperen

indien

(LED.readSync() === 0) {// controleer de pinstatus, als de status 0 is (of uit)

LED.writeSync(1);

// zet de pinstatus op 1 (zet de LED aan)

} anders {

LED.writeSync(0);

// zet de pinstatus op 0 (zet de LED uit)

}

}

functie endBlink() {//functie om te stoppen met knipperen

clearInterval(knipperInterval); // Stop knipperintervallen

LED.writeSync(0); // Schakel LED uit

LED.unexport(); // Exporteer GPIO om bronnen vrij te maken

}

setTimeout(endBlink, 5000); // stop met knipperen na 5 seconden

Sluit een LED, een weerstand (200 ohm) aan zoals weergegeven in het schema en voer het project uit:

pi@raspberry:~ $ knooppunt blink.js

Knooppunt is klaar.

SOCKET. IO

WebSocket is een computercommunicatieprotocol, gebaseerd op een TCP-verbinding, het biedt een programmeur om een server en client te maken. De client maakt verbinding met de server en verzendt en ontvangt berichten van en naar de server. WebSocket-implementatie voor Node.js heet Socket.io (https://socket.io/).

Installeer socket.io:

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

Verplaats binnen nodejs home, eerder gemaakt:

pi@raspberry:~ $ cd nodehome

En maak een nieuwe map "public" aan:

pi@raspberry:~ $ mkdir public

Maak een nieuwe voorbeeldwebserver, noem deze "webserver.js"

pi@raspberry:~ $ nano webserver.js

Plak de volgende code, sla op en sluit af:

var http = vereisen('http').createServer(handler); // vereist http-server en maak een server met functiehandler ()

var fs = vereisen('fs'); // bestandssysteemmodule vereist

http.luisteren(8080); // luister naar poort 8080

functie-handler (req, res) {//server maken

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

bestand index.html in openbare map

als (fout) {

res.writeHead(404, {'Content-Type': 'text/html'}); // 404 weergeven bij fout

return re.end( 404 Niet

Gevonden );

}

res.writeHead(200, {'Content-Type': 'text/html'}); //schrijf HTML

hers.schrijven(gegevens); // schrijf gegevens

van index.html

retourneer re.end();

});

}

Deze webserver luistert naar je Raspberry-poort 8080 en levert een bestand aan elke webclient die ermee verbonden is. Nu moeten we iets maken om te hosten en aan onze klanten te verstrekken: Verplaats naar de "public" map: pi@raspberry:~ $ cd public

Maak een nieuw html-bestand "index.html" aan:

pi@raspberry:~ $ nano index.html

Plak de code uit de bijgevoegde "HelloWorld.txt", sla op en sluit af.

Verplaats naar de nodejs-map "nodehome":

pi@raspberry:~ $ cd nodehome

HTTP-webserver starten:

pi@raspberry:~ $ node webserver.js

Open de website in een browser met behulp van https://Raspberry_IP:8080/ (vervang Raspberry_IP door uw IP)

Stap 6: VIDEO STREAMING-MOGELIJKHEID TOEVOEGEN

Er zijn verschillende manieren om videostreaming op een Raspberry te implementeren, het gemakkelijkst

manier die ik tot nu toe heb gevonden, dat als geweldige prestatie en kan worden geïntegreerd in een webinterface, gebaseerd is op het project van Miguel Mota:

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

Bedankt Miguel! Van zijn blog zijn dit de stappen:

Installeer componenten libjpeg8 en cmake:

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

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

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

Download mjpg-streamer met raspicam-plug-in:

pi@raspberry:~ $ git clone

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

Wijzig map:

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

Compileren:

pi@raspberry:~ $ maak alles schoon

Vervang oude mjpg-streamer:

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

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

/opt/mjpg-streamer

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

Maak een nieuw "start_stream.sh" -bestand, kopieer en plak uit het bijgevoegde "start_stream.txt" -bestand.

Maak het uitvoerbaar (maak shellscripts):

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

Streaming-server starten:

pi@raspberry:~ $./start_stream.sh

Open de website in een browser met behulp van https://Raspberry_IP:9000 (vervang Raspberry_IP door uw IP)

Stap 7: TANKPROGRAMMA

Alles is klaar, nu moeten we onze webpagina maken om de tank te besturen (index.html) en onze webserver om naar onze commando's te luisteren (webserver.js). Dus vervang gewoon de bestanden die je tot nu toe hebt gezien (slechts voorbeelden om het systeem te testen) door de bijgevoegde webserver.txt en index.txt.

Stap 8: START BEDIENINGSINTERFACE EN STREAMING SERVER

START BEDIENINGSINTERFACE EN STREAMING SERVER
START BEDIENINGSINTERFACE EN STREAMING SERVER

Om de services te starten, opent u twee terminalvensters en voert u deze opdrachten uit:

node nodehome/webserver.js

./nodehome/start_stream.sh

Open de website in een browser met behulp van https://Raspberry_IP:8080 (vervang Raspberry_IP door uw IP)

Aanbevolen: