Inhoudsopgave:
- Stap 1: Stuklijst
- Stap 2: Specificaties hoofdcomponenten
- Stap 3: BEDRADING:
- Stap 4: RASPBERRY O.S. VOORBEREIDEN
- Stap 5: HOE ONZE WIFI-TANK TE BEDIENEN MET NODE.JS EN WEBSOCKET.IO
- Stap 6: VIDEO STREAMING-MOGELIJKHEID TOEVOEGEN
- Stap 7: TANKPROGRAMMA
- Stap 8: START BEDIENINGSINTERFACE EN STREAMING SERVER
Video: Raspberry Tank met webinterface en videostreaming - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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
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:
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
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
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:
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
DIY slimme weegschaal met wekker (met wifi, ESP8266, Arduino IDE en Adafruit.io): 10 stappen (met afbeeldingen)
DIY Slimme Weegschaal Met Wekker (met Wi-Fi, ESP8266, Arduino IDE en Adafruit.io): In mijn vorige project ontwikkelde ik een slimme weegschaal met Wi-Fi. Het kan het gewicht van de gebruiker meten, het lokaal weergeven en naar de cloud sturen. U kunt hier meer informatie over krijgen op onderstaande link: https://www.instructables.com/id/Wi-Fi-Smart-Scale-wi
Raspbian installeren in Raspberry Pi 3 B zonder HDMI - Aan de slag met Raspberry Pi 3B - Uw Raspberry Pi instellen 3: 6 stappen
Raspbian installeren in Raspberry Pi 3 B zonder HDMI | Aan de slag met Raspberry Pi 3B | Je Raspberry Pi 3 instellen: Zoals sommigen van jullie weten, zijn Raspberry Pi-computers best geweldig en kun je de hele computer op een klein bordje krijgen. De Raspberry Pi 3 Model B heeft een quad-core 64-bit ARM Cortex A53 geklokt op 1,2 GHz. Dit zet de Pi 3 ongeveer 50
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Raspberry Pi-webinterface: 5 stappen
Raspberry Pi-webinterface: dit zijn de instructies voor het installeren van de webinterface die ik heb ontwikkeld voor het omschakelen van de gpio-pinnen van een raspberry pi om een actief laag relaisbord te besturen dat is ontworpen voor Arduino. Het dient een eenvoudige pagina waarmee u op een link kunt klikken om alt