Inhaltsverzeichnis:

RasbperryPi-Auto mit FPV-Kamera. Steuerung per Webbrowser - Gunook
RasbperryPi-Auto mit FPV-Kamera. Steuerung per Webbrowser - Gunook

Video: RasbperryPi-Auto mit FPV-Kamera. Steuerung per Webbrowser - Gunook

Video: RasbperryPi-Auto mit FPV-Kamera. Steuerung per Webbrowser - Gunook
Video: Lesson 11: PICAR-X as Video Car FPV keyboard control | Raspberry Pi Smart Robot car by SunFounder 2024, November
Anonim
Image
Image

Wir werden ein Allradauto bauen - die Lenkung wird ähnlich wie in einem Panzer sein - um eine Seite der Räder zu drehen, wird sie sich mit einer anderen Geschwindigkeit als die andere drehen. Am Auto wird die Kamera auf einem speziellen Halter angebracht, wo wir die Kameraposition ändern können. Der Roboter wird über den Webbrowser (Chrom oder Firefox auf dem Desktop oder Firefox auf dem Mobiltelefon) gesteuert Kameraposition. Um die Kommunikation zu erleichtern, habe ich das app.remoteme.org-System verwendet neue Möglichkeiten usw.

Bevor Sie Ihre Platine mit Strom versorgen, überprüfen Sie bitte alle Anschlüsse

Schritt 1: Einige Informationen über App.remoteme.org

Das System besteht aus drei Teilen

  • Webapplikation - wenn Sie Ihre Kontrollwebseiten hosten und die gesamte Kommunikation miteinander verknüpft
  • rasbperryPi-Programm - Programm, das Videos sendet, verwalten Sie Ihre Python-Skripte
  • Bibliotheken, in denen Sie Klassen- und Funktionsdefinitionen finden

Remoteme.org ist systemschnell Sie verknüpfen alle Ihre Geräte miteinander, Sie können dort Ihre Webseiten hosten, sehen Ihre verbundenen Geräte. Das Remoteme.org-System wurde entwickelt, um Ihnen beim Starten Ihrer Projekte zu helfen, ohne sich um die Protokollkommunikation zu kümmern. Die Hauptidee besteht darin, binäre Nachrichten zwischen verschiedenen Geräten wie Webseiten, RasbeprryPI, Arduino und Skripten zu senden.

Auf der anderen Seite gibt Ihnen Remoteme.org die volle Kontrolle über Ihre Dateien. Sie können es einfach ändern, indem Sie Ihre eigenen Funktionen schreiben

In diesem Tutorial zeige ich Ihnen, wie Sie ein fantastisches Projekt erstellen können, ohne Code zu schreiben.

Am Ende dieses Tutorials habe ich nützliche Links gesetzt, die Ihnen helfen, das remoteme.org-System zu verstehen.

Schritt 2: Was wird benötigt:

Was wird benötigt
Was wird benötigt
Was wird benötigt
Was wird benötigt
  • Raspberry PI Zero W
  • Dedizierte Kamera
  • Adafruit 16-Kanal 12-Bit PWM/Servo-Treiber - I2C-Schnittstelle - PCA9685 oder sein Klon
  • Zwei mit dem Kamerahalter kompatible Servomechanismen
  • Kamerahalter
  • Batterien - Im Tutorial zwei Anschlussmöglichkeiten
  • H-Brücke TB6612FNG, zur Kontrolle des Radspeeres
  • PCB-Adler-Dateien Es ist einfach, die Thermotransfermethode DC-DC zu erstellen
  • Abwärtswandlermodul DC
  • Roboterkoffer

Schritt 3: Verbindungen

Anschlüsse
Anschlüsse

Raspberry Pi-Steuerungsservomechanismus durch PWM-Modul und Motorgeschwindigkeit durch H-Brücke, die mit RasbperryPi-Pins verbunden ist.

Schritt 4: PCB

PCB
PCB
PCB
PCB

Sie können PCB-Adler-Dateien von hier herunterladen. Pfade sind fett, daher ist es einfach, sie mit der Thermotransfermethode zu erstellen

Schritt 5: PCB-Ausgänge

PCB-Ausgänge
PCB-Ausgänge
PCB-Ausgänge
PCB-Ausgänge
  1. PWM-Eingang für Antriebsmotoren Sollte mit dem 15. und 16. Pin des PWM-Moduls verbunden werden (überprüfen Sie das grüne Rechteck im Bild des PWM-Moduls)
  2. Leistungsaufnahme für Antriebsmotoren (prüfen Sie, mit welcher maximalen Spannung Ihre Motoren arbeiten können)
  3. Power für RasbperryPi und PWM-Modul – muss genau sein
  4. Antriebsmotorausgänge (es gibt zwei Ausgänge, da wir Antriebsmotoren paaren werden)
  5. Leistung der Servomechanismen – auch Sie müssen überprüfen, welche Spannung für sie gut ist
  6. Überbrücken Sie die aktuelle Leistung vom 5. Eingang, um auch Antriebsmotoren zu versorgen, sodass Sie nichts an Eingang 2 anschließen müssen
  7. Jumper, falls vorhanden RasbperryPi wird vom 3. Eingang mit Strom versorgt – bevor Sie den Jumper hier setzen, prüfen Sie, ob die Verbindungen in Ordnung sind – Sie möchten Ihren RPi nicht brennen
  8. Lassen Sie uns hier Kabel löten, da wir keine Logikwandler brauchen

Schritt 6: Wie es funktionieren wird

Bei RasbperryPi gibt es Python-Skript, das zwei Bibliotheken verwendet

  • RPi. GPIO als GPIO importieren – für Pins 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM-Notation), die mit der H-Brücke verbunden sind
  • Adafruit_PCA9685 für PWM-Modul importieren

Rpi-Pins sind wie folgt verbunden: 25-AIN1, 8-AIN2, 24-BIN1, 23-BIN2 (BCM) und Steuermodus der H-Brücke (vorwärts, rückwärts, Stopp, kurze Pause). Die H-Brücke benötigt auch zwei PWM-Signale, damit wir die Geschwindigkeit oder die Motordrehung steuern können. Da wir im Projekt bereits einen PWM-Controller (für Servos verwendet) haben, werden wir ihn auch verwenden, um PWM für die H-Brücke zu erzeugen.

Das PWM-Modul verwendet das I2C-Kommunikationsprotokoll. Ich habe Adafruit_PCA9685 verwendet, um aus der Box zu arbeiten. Bücherei

Schritt 7: Automontage - Räder

Automontage - Räder
Automontage - Räder
Automontage - Räder
Automontage - Räder

Wir beginnen damit, Antriebsmotoren mit dem Autogehäuse zu verbinden. Links-/Seitenmotoren sind miteinander verbunden, und beide Paare verbinden sich mit einem Stromkabel, das später mit der Platine verbunden wird. Wichtiger Hinweis beim Anschließen von Motoren müssen sich die Räder auf jeder Seite in die gleiche Richtung drehen.

Schritt 8: Power (AA-Akkus aufladen) Option 1/2

Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2
Stromversorgung (AA-Akkus aufladen) Option 1/2

Ich werde zwei Möglichkeiten der Stromversorgung schreiben. Das erste Auto ist aus 10xAA-Akkus aufladen. Als letztes Bild habe ich rote Jumper gezeichnet, die gesetzt werden müssen.

Schritt 9: Stromversorgung (Li-Po 7,2 V Batterien) Option 2/2

Stromversorgung (Li-Po 7,2 V Batterien) Option 2/2
Stromversorgung (Li-Po 7,2 V Batterien) Option 2/2
Stromversorgung (Li-Po 7,2 V Batterien) Option 2/2
Stromversorgung (Li-Po 7,2 V Batterien) Option 2/2

Und die zweite Option ist ein 7,2 LI-PO-Akku. In diesem Fall haben wir 3 Spannungen – 5V für Rpi und Modul, 6V für Servos und direkt aus Batterien 7,2 Volt für Antriebsmotoren. Ich musste zwei Step-Down-Module verwenden

Variante 2 mit LI-PO ist besser:

  • Batterien haben eine größere Kapazität – das Auto fährt länger
  • Höhere Spannung für Antriebsmotoren – das Auto fährt schneller
  • Es ist weniger wahrscheinlich, dass wir nach dem Beginn der Suche der Antriebsmotoren einen großen Spannungsabfall und einen RPI-Neustart haben.

Schritt 10: Löten

Löten
Löten
Löten
Löten
Löten
Löten
Löten
Löten

Ich habe auf der Platine einige Abstandshalter für das PWM-Modul angebracht. Es gibt nichts zu schreiben, schaut euch einfach die Bilder an, wie man alles zusammenlötet

Schritt 11: Kamera

Kamera
Kamera

Wir schließen die Kamera an, hier steht, wie man die Servomechanismen vor der Montage in den Kamerahalter zentriert, aber der kürzeste Weg besteht darin, die maximale Rotationsposition vorsichtig manuell zu überprüfen und die Servos in die Mittelposition zu bringen. Diese zentrierten Servomechanismen setzen wir in der Mittelposition in den Kamerahalter ein (Kamera zeigt wie auf dem Foto geradeaus)

Schritt 12: Autoteile zusammenfügen

Autoteile zusammenfügen
Autoteile zusammenfügen
Autoteile zusammenfügen
Autoteile zusammenfügen
Autoteile zusammenfügen
Autoteile zusammenfügen

Für PCB habe ich einen kleinen Plexiglastisch gemacht

Schritt 13: App.remoteme.org-Konfiguration

App.remoteme.org-Konfiguration
App.remoteme.org-Konfiguration

Ich habe das kostenlose app.remoteme.org-System verwendet, das Ihnen hilft, Verbindungen herzustellen, und es enthält bereits Skripte, die wir benötigen

An diesem instructable werde ich nur Schritt für Schritt zeigen, was getan werden sollte, um Autofahren zu machen (hier finden Sie weitere Details)

  • Melden Sie sich nach der Anmeldung unter https://app.remoteme.org an Sie werden automatisch angemeldet
  • Öffnen Sie den Token-Tab auf der linken Seite, klicken Sie dann auf "Neuer Token", geben Sie einen Namen ein und klicken Sie auf OK. Wir haben gerade einen neuen Token erstellt (Bild auf dem Bildschirm)
  • In diesem Beispiel ist der Tokenwert: ~1_&p@+BNnZ@A+x8 (Ihrer wird anders sein;))

Schritt 14: RasbperryPi-Konfiguration

RasbperryPi-Konfiguration
RasbperryPi-Konfiguration

an der Putty-Konsole (hier, wie Sie unser RPi einrichten, schalten Sie die Kamera-I2c-Kommunikation ein)

git-Klon git://github.com/remoteme/remoteme.git

CD-Fernbedienung

python3.5 install.py

  • Der Installateur stellt uns einige Fragen für alle Antworten, die wir mit [Y]es beantworten und mit [enter] bestätigen.
  • Wenn die Installation nach einem Token fragt, fügen wir das Token ein (Umschalt + Einfügen), das aus der Anwendung kopiert wurde, und geben Sie ein
  • der Name zum Beispiel Rpi
  • Geräte-ID 1 Eingabe
  • nach der Installation – Programm ausführen

./runme.sh

Schritt 15: Überprüfen der Verbindungen

Verbindungen prüfen
Verbindungen prüfen

Gehen wir zurück zu

Auf der Registerkarte Geräte sehen wir unser verbundenes RPi (grünes Linksymbol bedeutet, dass RPi gerade verbunden ist)

Schritt 16: Python-Skript hinzufügen

Python-Skript hinzufügen
Python-Skript hinzufügen
Python-Skript hinzufügen
Python-Skript hinzufügen

Jetzt werden wir Python-Skript hinzufügen, das bereits in den Vorlagen enthalten ist, sodass wir nichts programmieren müssen.

Öffnen Sie auf der Registerkarte "Geräte" das RasbperryPi-Menü und wählen Sie "Externes Skript hinzufügen".

Wenn ein neues Fenster erscheint, geben Sie Informationen wie im Bild oben an

Vergessen Sie nicht, die Vorlage "car4wd" auszuwählen. Nach diesen Schritten fügt remoteme.org unserem RasbperryPi ein Python-Skript hinzu und startet es neu

Schritt 17: Überprüfen, ob das Python-Skript erfolgreich hinzugefügt wurde

Überprüfen, ob das Python-Skript erfolgreich hinzugefügt wurde
Überprüfen, ob das Python-Skript erfolgreich hinzugefügt wurde

Auf der Registerkarte Geräte sollte ein neues Python-Skriptgerät hinzugefügt werden, dessen Geräte-ID ist 2. In diese Geräte-ID-Webseite werden Nachrichten an die Steuerung des Autos gesendet

Schritt 18: Webseite zum Control Car hinzufügen

Hinzufügen einer Webseite zum Control Car
Hinzufügen einer Webseite zum Control Car

Klicken Sie auf der Registerkarte "Geräte" auf "Neu" und dann auf "Webseite". Wir fügen einfach ein weiteres Gerät hinzu - Webseite, mit der wir unser Auto steuern. Und da wir auf der Webseite das Template "car4wdDesktop" verwendet haben, sind bereits Dateien fast einsatzbereit

Schritt 19: Konfigurieren Sie das Webseitengerät, um Auto 1/2 zu steuern

Konfigurieren Sie das Webseitengerät, um Auto 1/2. zu steuern
Konfigurieren Sie das Webseitengerät, um Auto 1/2. zu steuern

Erweitern Sie die Webseite auf der Geräteregisterkarte und klicken Sie auf index.html und dann auf Öffnen

Schritt 20: Konfigurieren Sie das Webseitengerät, um das Auto 2/2 zu steuern

Konfigurieren Sie das Webseitengerät, um das Auto 2/2. zu steuern
Konfigurieren Sie das Webseitengerät, um das Auto 2/2. zu steuern

Das Fenster erscheint, dann müssen wir die Geräte-ID unseres Python-Skripts angeben, wenn Geräte-ID 2 ist. Ändern wir die im Bild gezeigte Stelle

Schritt 21: Öffnen Sie das Autokontrollzentrum

Autokontrollzentrum öffnen
Autokontrollzentrum öffnen
Autokontrollzentrum öffnen
Autokontrollzentrum öffnen

Jetzt ist es an der Zeit, unsere Seite zu öffnen und zu sehen, wie sie funktioniert. Klicken Sie auf der Registerkarte "Geräte" auf index.html und dann auf "In neuem Tab öffnen", um eine Videovorschau zu erhalten Sie müssen den Chrome- oder Firefox-Browser verwenden. Andere Browser unterstützen webRTC nicht vollständig

Schritt 22: Kamerakonfiguration 1/2

Kamerakonfiguration 1/2
Kamerakonfiguration 1/2

Wenn wir die Maus im Videobereich bewegen, sollte die Kamera die Position ändern und genau wie in FPS-Spielen funktionieren. Es wird sich wahrscheinlich nicht richtig bewegen

Schritt 23: Kamerakonfiguration 2/2

Kamerakonfiguration 2/2
Kamerakonfiguration 2/2

Öffnen Sie script.js (Geräte-Registerkarte erweitern Sie die Webseite, klicken Sie dann auf script.js und öffnen Sie dann) und suchen Sie den Ort, den ich auf dem Bildschirm gezeigt habe

bei meinem Fall ist die Mittelposition 560 und 430 und der Bewegungsbereich beträgt für beide Achsen 200

Sie müssen mit diesen Zahlen experimentieren, damit Sie die Mitte der Kameraposition und reibungslose Bewegungen erhalten. Wenn Sie dieses Tutorial verwendet haben, kopieren Sie einfach die eingefügten Werte

Schritt 24: Fahren 1/2"

Fahren 1/2
Fahren 1/2

Wenn Sie den Pfeil nach oben auf der Tastatur gedrückt haben, sollten sich die Anzeigen ändern und das Auto sollte fahren. Wenn Sie den Pfeil nach oben drücken und das Auto dreht, müssen Sie an Stellen auf dem Bildschirm ein Minus hinzufügen / entfernen.

Nach diesem Vorgang sollte nach dem Drücken von "Auf"-Pfeilauto vorwärts und Abwärts-Pfeilauto rückwärts fahren.

Schritt 25: Fahren 2/2"

Fahren 2/2
Fahren 2/2

Jetzt abbiegen – drücken Sie den linken Pfeil, wenn das Auto nach rechts abbiegt Sie müssen die Kabel umdrehen (siehe Bild oben)

Wenn Sie diese Kabel löten, können Sie sie unter script.js ändern. Ändern Sie einfach die Reihenfolge der Sendegeschwindigkeit der Motoren, Vor:

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed())); pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

nach:

pos=putByte(ret, pos, carController.getMotorMode(-carController.getLeftSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getLeftSideSpeed()*255));

pos=putByte(ret, pos, carController.getMotorMode(carController.getRightSideSpeed()));

pos=putByte(ret, pos, Math.abs(carController.getRightSideSpeed()*255));

und jetzt müssen Sie mit Minuspunkten wie einen Schritt vorher spielen, damit es richtig funktioniert;). Wie Sie wahrscheinlich bemerkt haben, fährt das Auto nicht mit voller Geschwindigkeit, damit sich das Auto schneller bewegt, lassen Sie den Pfeil einfach schnell los, wenn es in der maximalen Position ist und drücke und halte es erneut

Schritt 26: Wie funktioniert es?

Die Webseite sendet Nachrichtennachrichten aus dem 9. Byte an das Python-Skript im folgenden Format:

  • 1 Byte ein Byte ganzzahliger Wert 1
  • 2 Byte Integer X Kameraposition
  • 2 Byte Integer Y-Kameraposition
  • 1 Byte Integer-Motormodus links (3= rückwärts, 1= vorwärts, 2=stopp)
  • 1 Byte ganzzahlige linke Motordrehzahl
  • 1 Byte Integer rechter Motormodus (3= rückwärts, 1= vorwärts, 2=stopp)
  • 1 Byte Integer rechte Motordrehzahl

Das Senden der Nachricht erfolgt in der Datei script.js bei der Funktion "sendNow()"

bei RasbperryPi bekommt python.py diese Nachricht in der Funktion "onUserMessage"

Sie können es sich ansehen und ein wenig spielen, damit Sie wissen, was los ist.

Beschreibung der Klassenfunktionen hier

Schritt 27: Tablet, mobile Lenkung

Tablet, mobile Steuerung
Tablet, mobile Steuerung

Wir fügen eine neue Webseite genau wie früher hinzu, aber jetzt wählen wir die Vorlage "car4wdMobile"

Als Nächstes konfigurieren wir alles in script.js wie für die Webseite zur Desktopsteuerung. Das Nachrichtenformat ist genau das gleiche, sodass wir das Skript python.py nicht ändern müssen.

Schritt 28: Seite am Handy öffnen

Seite auf dem Handy öffnen
Seite auf dem Handy öffnen
Seite auf Handy öffnen
Seite auf Handy öffnen

Anstatt sich von Ihrem Handy aus bei Ihrem Konto anzumelden, scannen Sie einfach eine beliebige QR-URL.

Details zu QR hier

Wenn Ihre mobile Steuerung funktioniert, wenn RPi und Mobiltelefon im selben WLAN sind, aber nicht, wenn Sie das mobile Internet verwenden, müssen Sie den Turnserver hinzufügen, wie das geht, habe ich hier geschrieben

Schritt 29: Turn-Server hinzufügen

Turn-Server hinzufügen
Turn-Server hinzufügen
Turn-Server hinzufügen
Turn-Server hinzufügen
Turn-Server hinzufügen
Turn-Server hinzufügen

Manchmal (wenn Sie sich hinter NAT oder einigen Firewall-Einstellungen befinden) können Sie Ihren Roboter nicht von einem anderen Netzwerk aus verbinden, dann ist Ihr Roboter verbunden. Es ist kein großes Problem und dann müssen Sie den Turnserver hinzufügen.

Ich habe den Server der Firma XIRSYS getestet (er ist kostenlos für Entwickler) und werde zeigen, wie man den Turn-Server mit dem XIRSYS-System konfiguriert

registrieren:

global.xirsys.net/dashboard/signup

Klicken Sie dann auf "Plus", um die Anwendung hinzuzufügen

rechts unter "statische Abbiegeguthaben" Sie haben alle Daten die Sie benötigen. Kopieren Sie es in die Datei webrtc_streamer.conf, gehen Sie dazu zu

RaspberryPi Geräte erweitern

Klicken Sie auf die Datei webrtc_streamer.conf

klick öffnen

und Informationen hinzufügen

turn_server=turn_username=

turn_credential=

nach Beendigung der Bearbeitung Sie sollten so etwas wie auf dem Bildschirm haben.

Klicken Sie dann auf Speichern und starten Sie Ihr Rpi neu, indem Sie auf das Menü bei RasbperryPi-Gerät klicken und Neustart auswählen

Nach dem Neustart des RPi-Programms können Sie die Videovorschau auf Ihrem Mobiltelefon anzeigen, auch wenn Sie das mobile Internet verwenden.

Schritt 30: Mobile Lenkung

Mobile Lenkung
Mobile Lenkung

Bei Kreis 1 platzieren wir den linken Daumen, bei 2 rechts – müssen nicht genau an diesen Punkten sein – die Webseite setzt die Nullposition direkt nach dem Berühren des Bildschirms und durch Bewegen Ihrer Daumen (Linksfahren, rechte Kameraposition) können Sie steuern dein Auto

Schritt 31: Zusammenfassung

Ich hoffe, Ihnen hat dieses Tutorial gefallen, da ich zuvor in diesem Tutorial geschrieben habe, mehr Details darüber, wie es unter der Haube funktioniert.

einige Links:

remoteme.org - Homepage von remoteme.org dort finden Sie Dokumentationen und Tutorials

FB-Fanpage - Facebook-Fanpage neueste Informationen über remoteme.org

Youtube - einige Projektvideos, Tutorials

Danke schön, Maciek

Empfohlen: