Inhaltsverzeichnis:

Raspberry Tank mit Webinterface und Videostreaming - Gunook
Raspberry Tank mit Webinterface und Videostreaming - Gunook

Video: Raspberry Tank mit Webinterface und Videostreaming - Gunook

Video: Raspberry Tank mit Webinterface und Videostreaming - Gunook
Video: Raspberry Pi Tank project: The first test drive with camera and WebUI... failed 2024, November
Anonim
Raspberry Tank mit Webinterface und Videostreaming
Raspberry Tank mit Webinterface und Videostreaming

Wir werden sehen, wie ich einen kleinen WiFi-Tank realisiert habe, der Web-Fernsteuerung und Video-Streaming ermöglicht.

Dies ist als Tutorial gedacht, das grundlegende Kenntnisse der Elektronik- und Softwareprogrammierung erfordert. Aus diesem Grund habe ich mich für ein Tankchassis-Kit entschieden (anstatt es mit 3D-Drucker zu drucken, kann ein späteres Upgrade sein) und insgesamt 6 Komponenten inklusive Batterien. Auf der Softwareseite kann man den Installationsprozess Schritt für Schritt verfolgen und die Programmierung wird auf ein Minimum reduziert, ein Grundwissen über Raspberry-Dinge kann helfen.

Ich habe 12 Stunden Arbeit von 0 bis zum betriebsbereiten Tank geschätzt. Gesamtkosten von 70€ für alle Komponenten.

Schritt 1: Stückliste

Stückliste
Stückliste
Stückliste
Stückliste
Stückliste
Stückliste
Stückliste
Stückliste

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

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

1 - Dual Channel L298N DC-Motortreiberplatine - 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-Karte - 5, 50 (€)

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

1 - Raspberry Pi 5MP Kameramodul Webcam für Model Zero - 8 (€)

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

1 - Powerbank 5V

1 - 9V Batterie

Gemischtes Breadboard-Kabel Dupont-Anschluss

Maus, Tastatur, Monitor oder TV für Raspberry-Setup (optional, um die Ersteinrichtung zu vereinfachen)

Schritt 2: Spezifikationen der Hauptkomponenten

Motor

JGA25-370 DC-Getriebemotor

Dieser Motor verfügt über eine D-förmige Abtriebswelle.

Spezifikationen

· Betriebsspannung: zwischen 6 V und 18 V

· Nennspannung: 12 V

· Freilaufdrehzahl bei 12 V: 399 U/min

· Freilaufstrom bei 12 V: 50 mA

· Blockierstrom bei 12V: 1200 mA

· Stillstandsdrehmoment bei 12V: 2,2 kg.cm

· Übersetzungsverhältnis: 1:21

· Reduziergröße: 19 mm

· Gewicht: 84 g

Zweikanalige L298N DC-Motortreiberplatine

Dual-H-Brücken-Motortreiber, kann zwei Gleichstrommotoren oder einen 4-Draht-Zweiphasen-Schrittmotor antreiben. Eingebauter TSD zum Schutz vor Motorstillstand.

Spezifikationen

· Modulversorgungsspannung: DC 2V-10V

· Signaleingangsspannung: DC 1,8-7V

· Einzelarbeitsstrom: 1,5A

· Spitzenstrom bis 2,5A

· Niedriger Standby-Strom (weniger als 0,1uA)

· Eingebauter gemeinsamer Stromkreis, die Eingangsklemme ist frei, der Motor funktioniert nicht

· Größe: 24,7 x 21 x 7 mm

Schritt 3: VERKABELUNG

VERDRAHTUNG
VERDRAHTUNG
VERDRAHTUNG
VERDRAHTUNG

Dies wird die letzte Verkabelung sein, aber WARTEN Sie, bevor wir einige installieren müssen

Software und es ist eine gute Idee, es mit einfacherer Verkabelung zu testen, wenn Sie fertig sind, kommen Sie hierher zurück.

Wir brauchen zwei verschiedene Stromquellen, eine für den Motor und eine für den Raspberry.

Der Motortreiber Dual Channel L298N DC Motor Driver Board (max. Eingangsspannung DC 2V-10V) wird mit der 9V Batterie betrieben und Raspberry Pi verwendet den Standard 5V USB Akku.

Der GND-Pin des Motortreibers wird mit dem Minus der Batterie und dem Raspberry Pi (GND) verbunden. Die GPIO-Pins des Raspberry Pi sind als Tabelle mit dem Motortreiber verbunden.

Schritt 4: VORBEREITUNG HIMBEERE O. S

Dies ist eine Standardinstallation für das Raspbian-Betriebssystem, die Sie finden können

viele detaillierte Tutorials, die das Internet durchsuchen, im Wesentlichen sind die Schritte:

1. Laden Sie iso RASPBIAN STRETCH MIT DESKTOP von https://www.raspberrypi.org/downloads/raspbian/ herunter

2. Formatieren Sie eine 16 GB SD-Karte, ich habe den SD-Formatierer verwendet

3. Brennen Sie die. IMG-Datei, ich habe Win32DiskImager verwendet

Jetzt ist Ihre Himbeere startbereit, schließen Sie sie an eine USB-Stromquelle (5V, 2A) an und bereiten Sie sich auf das erste Boot-Setup vor. Sie können dies auf zwei Arten tun, mit externen Geräten wie Maus, Tastatur und Monitor oder mit Ihrem PC und einer Remote-Verbindung zum Raspberry. Dazu gibt es viele Tutorials, eines ist:

Schritt 5: SO STEUERN SIE UNSEREN WIFI-TANK MIT NODE. JS UND WEBSOCKET. IO

SO STEUERN SIE UNSEREN WIFI-TANK MIT NODE. JS UND WEBSOCKET. IO
SO STEUERN SIE UNSEREN WIFI-TANK MIT NODE. JS UND WEBSOCKET. IO

Jetzt haben wir eine frische Installation unseres Raspberry-Mikro-PCs, die bereit ist, unseren Job auszuführen, also … was verwenden wir, um Befehle an den Tank zu erteilen?

Python ist eine sehr einfach zu verwendende Sprache, die häufig zum Ausführen von Rapsberry-Projekten verwendet wird und auch zur Interaktion mit Rapsberry-Ein- und Ausgabepins (GPIO) verwendet werden kann

Mein Ziel war es jedoch, mein Tank-WLAN von jedem Gerät (PC, Mobiltelefon, Tablet…) mit einem gängigen Webbrowser zu verbinden und auch Videos davon zu streamen. Vergiss also erstmal Python und lass uns mit NODE. JS und SOCKET. IO fortfahren.

NODE.js

Node.js (https://github.com/nodejs/node/wiki) ist ein Open-Source-Server-Framework basierend auf der Sprache js. Da ich Raspberry Pi Zero (ARMv6-CPU) verwende, können wir den automatischen Installationsprozess (für ARMv7-CPUs vorgesehen) nicht verwenden und müssen dies manuell tun:

Laden Sie Nodejs lokal herunter (ich habe Version 7.7.2 für ARMv6 verwendet, überprüfen Sie andere Versionen hier

pi@raspberry:~ $ wget

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

Wenn Sie fertig sind, extrahieren Sie die komprimierte Datei:

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

Kopieren und installieren Sie die Dateien nach /user/local

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

Fügen Sie den Ort, an dem wir nodejs installieren, zum Pfad hinzu, bearbeiten Sie die Datei „.profile“:

pi@raspberry:~ $ nano ~/.profile

Fügen Sie die folgende Zeile am Ende der Datei hinzu, speichern und beenden

PFAD=$PFAD:/usr/local/bin

Entfernen Sie die heruntergeladene Datei:.

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

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

Geben Sie die folgenden Befehle ein, um die Installation von nodejs zu überprüfen:

pi@raspberry:~ $ node -v

pi@raspberry:~ $ npm -v

Als Antwort sollten Sie v7.7.2 und v4.1.2 lesen.

Wenn alles gut gelaufen ist, erstellen Sie einen neuen Ordner zum Hosten Ihrer nodejs-Dateien:

pi@raspberry:~ $ mkdir nodehome

In neuen Ordner verschieben:

pi@raspberry:~ $ cd nodehome

Installieren Sie ein zusätzliches Modul, das erforderlich ist, um GPIO auf die einfachste Weise zu verwalten, EIN und AUS:

pi@raspberry:~ $ npm install onoff

Jetzt ist es an der Zeit unser erstes Projekt „Blink.js“zu testen, das Ergebnis wird … eine blinkende LED sein

pi@raspberry:~ $ nano blink.js

Füge folgenden Code ein, speichere und beende:

var Gpio = require('onoff'). Gpio; //Einschließen einAus

var LED = neues Gpio(3, 'out'); // GPIO verwenden 3

var blinkInterval = setInterval (blinkLED, 250);

// LED blinken alle 250ms

Funktion blinkLED () {// Funktion zum Starten des Blinkens

wenn

(LED.readSync() === 0) {//Überprüfe den Pin-Zustand, wenn der Zustand 0 (oder aus) ist

LED.writeSync(1);

// Pin-Zustand auf 1 setzen (LED einschalten)

} anders {

LED.writeSync(0);

// Pin-Zustand auf 0 setzen (LED ausschalten)

}

}

Funktion endBlink() {//Funktion zum Aufhören des Blinkens

clearInterval (blinkInterval); // Blinkintervalle stoppen

LED.writeSync(0); // LED ausschalten

LED.unexport(); // GPIO aufheben, um Ressourcen freizugeben

}

setTimeout(endBlink, 5000); // hört nach 5 Sekunden auf zu blinken

Verdrahten Sie eine LED, einen Widerstand (200 Ohm) wie im Schema gezeigt und führen Sie das Projekt aus:

pi@raspberry:~ $ node blink.js

Knoten ist bereit.

BUCHSE. IO

WebSocket ist ein Computer-Kommunikationsprotokoll, das auf einer TCP-Verbindung basiert und einem Programmierer ermöglicht, einen Server und einen Client zu erstellen. Der Client verbindet sich mit dem Server und sendet und empfängt Nachrichten an und von dem Server. Die WebSocket-Implementierung für Node.js heißt Socket.io (https://socket.io/).

Socket.io installieren:

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

Bewegen Sie sich in das zuvor erstellte Nodejs-Home:

pi@raspberry:~ $ cd nodehome

Und erstellen Sie einen neuen Ordner „public“:

pi@raspberry:~ $ mkdir öffentlich

Erstellen Sie einen neuen Beispiel-Webserver, nennen Sie ihn "webserver.js".

pi@raspberry:~ $ nano webserver.js

Füge folgenden Code ein, speichere und beende:

var http = require('http').createServer(handler); // http-Server erfordern und Server mit Funktionshandler () erstellen

var fs = erfordern('fs'); //Dateisystemmodul erforderlich

http.hören(8080); // Port 8080 anhören

Funktionshandler (req, res) { //Server erstellen

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

Datei index.html im öffentlichen Ordner

wenn (fehler) {

res.writeHead(404, {'Inhaltstyp': 'text/html'}); // 404 bei Fehler anzeigen

return res.end( 404 Not

Gefunden );

}

res.writeHead(200, {'Inhaltstyp': 'text/html'}); // HTML schreiben

res.write (Daten); // Daten schreiben

aus index.html

Rückgabe res.end();

});

}

Dieser Webserver wird Ihren Raspberry Port 8080 abhören und Dateien für jeden Webclient bereitstellen, der ihn verbindet. Jetzt müssen wir etwas erstellen, das wir hosten und unseren Kunden zur Verfügung stellen können: Verschieben Sie in den Ordner „public“: pi@raspberry:~ $ cd public

Neue HTML-Datei „index.html“erstellen:

pi@raspberry:~ $ nano index.html

Code aus angehängter "HelloWorld.txt" einfügen, speichern und beenden.

Verschieben Sie in den nodejs-Ordner "nodehome":

pi@raspberry:~ $ cd nodehome

HTTP-Webserver starten:

pi@raspberry:~ $ node webserver.js

Öffnen Sie die Website in einem Browser mit https://Raspberry_IP:8080/ (ersetzen Sie Raspberry_IP durch Ihre IP)

Schritt 6: VIDEO-STREAMING-FÄHIGKEIT HINZUFÜGEN

Es gibt verschiedene Möglichkeiten, Videostreaming auf einem Raspberry zu implementieren, am einfachsten

Wie ich bis jetzt festgestellt habe, dass die Leistung so toll ist und in ein Webinterface integriert werden kann, basiert auf dem Projekt von Miguel Mota:

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

Danke Miguel! Von seinem Blog sind dies die Schritte:

Installieren Sie die Komponenten libjpeg8 und 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 mit raspicam-Plugin:

pi@raspberry:~ $ git clone

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

Ändere die Richtung:

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

Kompilieren:

pi@raspberry:~ $ alles sauber machen

Alten mjpg-streamer ersetzen:

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

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

/opt/mjpg-streamer

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

Erstellen Sie eine neue Datei „start_stream.sh“, kopieren Sie sie und fügen Sie sie aus der angehängten Datei „start_stream.txt“ein.

Ausführbar machen (Shell-Skripte erstellen):

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

Streaming-Server starten:

pi@raspberry:~ $./start_stream.sh

Öffnen Sie die Website in einem Browser mit https://Raspberry_IP:9000 (ersetzen Sie Raspberry_IP durch Ihre IP)

Schritt 7: TANKPROGRAMM

Alles ist fertig, jetzt müssen wir unsere Webseite zur Steuerung des Panzers (index.html) und unseren Webserver zum Abhören unserer Befehle (webserver.js) erstellen. Ersetzen Sie also einfach die bisher angezeigten Dateien (nur Beispiele zum Testen des Systems) durch die angehängte webserver.txt und index.txt.

Schritt 8: CONTROL INTERFACE UND STREAMING SERVER STARTEN

CONTROL INTERFACE UND STREAMING SERVER STARTEN
CONTROL INTERFACE UND STREAMING SERVER STARTEN

Um die Dienste zu starten, öffnen Sie zwei Terminalfenster und führen Sie diese Befehle aus:

Knoten nodehome/webserver.js

./nodehome/start_stream.sh

Öffnen Sie die Website in einem Browser mit https://Raspberry_IP:8080 (ersetzen Sie Raspberry_IP durch Ihre IP)

Empfohlen: