Inhaltsverzeichnis:

ESP32 Kameraroboter - FPV - Gunook
ESP32 Kameraroboter - FPV - Gunook

Video: ESP32 Kameraroboter - FPV - Gunook

Video: ESP32 Kameraroboter - FPV - Gunook
Video: Surveillance Car using ESP32 Cam module | ESP32 Camera wi-fi car 🚓 2024, Juli
Anonim
Image
Image
ESP32 Kameraroboter - FPV
ESP32 Kameraroboter - FPV
ESP32 Kameraroboter - FPV
ESP32 Kameraroboter - FPV

Das ESP32-Kameramodul ist eine kostengünstige und leistungsstarke SPS. Es beinhaltet sogar eine Gesichtserkennung!

Lassen Sie uns einen First Person Viewpoint-Roboter bauen, den Sie über eine integrierte Webschnittstelle fahren!

Dieses Projekt verwendet das Geekcreit ESP32-Modul mit der OV2640-Kamera. Es basiert auf dem AIThinker-Modul.

Es gibt viele verschiedene ESP32-Kamera-Klone. Manche funktionieren, manche nicht. Ich würde vorschlagen, dass Sie das gleiche Modul wie ich verwenden, damit Sie eine gute Chance haben, erfolgreich zu sein.

Der Roboter funktioniert wie folgt.

Der ESP32 sendet eine Web-URL an Ihr Netzwerk, die den Live-Videostream mit einigen Kontrollkästchen zum Bedienen einiger Funktionen der Kamera präsentiert. Es empfängt auch Tastendrücke, die von der Tastatur an die Webseite gesendet werden, bei denen es sich um Richtungsbefehle für den Roboter handelt. Vielleicht möchten Sie den USB-Joystick-Schild bauen, damit Sie den Roboter mit dem Joystick fahren können, anstatt Tastaturbefehle einzugeben.

Wenn der ESP32 Tastendrücke empfängt, leitet er diese Bytes an den Arduino Nano weiter, der dann die Motoren antreibt, um den Roboter in Bewegung zu setzen.

Dieses Projekt hat einen mittleren bis hohen Schwierigkeitsgrad. Bitte nehmen Sie sich Zeit.

Lass uns anfangen!

Lieferungen

  • ESP-32 Kameramodul mit OV2640 Kamera - Ich würde das Geekcreit Produkt empfehlen
  • Externe Snap-on-Antenne für den ESP-32 zur Maximierung der Signalstärke
  • Arduino Nano
  • Arduino Leonardo für das Joystick-Modul (wir benötigen eine vom Leonardo bereitgestellte USB-Tastaturemulation)
  • Generisches Joystick-Modul
  • L293D Quad H-Brücken-Chip
  • DC-DC Buck Coverter mit 5V Ausgang zur Stromversorgung des ESP32
  • FTDI Serial Adapter zur Programmierung des ESP32
  • Ein generisches Roboter-Chassis mit zwei Getriebemotoren - jedes Chassis funktioniert. 3 bis 6V Motoren werden empfohlen
  • 2 x 7,4V 1300mAh LiPo-Akkus (oder ähnlich) zur Stromversorgung des ESP32 und der Motoren
  • 1 x 9V Batterie zur Stromversorgung des Arduino Nano

Schritt 1: Programmieren Sie die ESP32-Kamera

Programmieren Sie die ESP32-Kamera
Programmieren Sie die ESP32-Kamera
Programmieren Sie die ESP32-Kamera
Programmieren Sie die ESP32-Kamera

Verbinden Sie Ihre ESP32-Kamera mit einem Steckbrett wie folgt mit dem FTDI-Adapter:

FTDI ESP32

3.3V----------- 3.3V

GND-----------GND

TX ---------- U0R

Rx ----------- U0T

Verbinden Sie zusätzlich Pin IO0 ("eye-oh-zero") mit GND. Sie müssen dies tun, um den ESP32 in den Programmiermodus zu versetzen.

Entpacken Sie die Datei esp32CameraWebRobotforInstructable.zip.

Es gibt 4 Dateien in diesem Projekt:

esp32CameraWebRobotforInstructable.ino ist die Arduino-Skizze.

ap_httpd.cpp ist der Code, der den Webserver verwaltet und sich mit dem Einstellen der Kamerafunktionen von der Webseite und dem Empfangen von Tastendrücken von der Webseite befasst.

camera_index.h enthält den HTML/JavaScript-Code für die Webanwendung als Byte-Arrays. Das Modifizieren der Webanwendung geht weit über den Rahmen dieses Projekts hinaus. Ich werde später einen Link einfügen, um das HTML/JavaScript zu ändern.

camera_pins.h ist die Header-Datei, die sich auf die Pin-Konfiguration der ESP32-Kamera bezieht.

Um den ESP32 in den Programmiermodus zu versetzen, müssen Sie IO0 ("eye-oh-zero") mit Masse verbinden.

Starten Sie Ihre Arduino IDE und gehen Sie zu Tools/Boards/Boards Manager. Suchen Sie nach esp32 und installieren Sie die esp32-Bibliothek.

Öffnen Sie das Projekt in Ihrer Arduino-IDE.

Geben Sie die Netzwerk-ID IHRES Routers und IHR Passwort in die im obigen Bild markierten Zeilen ein. Speichern Sie das Projekt.

Gehen Sie zum Menü Extras und treffen Sie die Auswahl wie in der Abbildung oben gezeigt.

Board: ESP32 Wrover

Upload-Geschwindigkeit: 115200

Partitionsschema: "Riesige APP (3MB kein OTA)"

und wählen Sie den Port aus, an den Ihr FTDI-Adapter angeschlossen ist.

Klicken Sie auf die Schaltfläche "Hochladen".

Jetzt startet der ESP32 manchmal nicht mit dem Hochladen. Seien Sie also bereit, die RESET-Taste auf der Rückseite des ESP32 zu drücken, wenn Sie beim Hochladen die Zeichen …---… in der Konsole erscheinen sehen. Es beginnt dann mit dem Hochladen.

Wenn auf der Konsole „RST drücken“angezeigt wird, ist der Upload abgeschlossen.

TRENNEN Sie IO0 von Masse. Trennen Sie die 3,3-V-Leitung zwischen dem FTDI-Adapter und dem ESP32.

Die ESP32-Kamera benötigt viel Strom, um gut zu funktionieren. Schließen Sie ein 5V 2A-Netzteil an die 5V- und GND-Pins des ESP32 an.

Öffnen Sie den Serial Monitor, stellen Sie die Baudrate auf 115200 ein und beobachten Sie dann, wie der ESP32 neu startet. Schließlich sehen Sie die URL für den Server.

Gehen Sie zu Ihrem Browser und geben Sie die URL ein. Wenn die Website geladen ist, klicken Sie auf die Schaltfläche „Streaming starten“und der Live-Videostream sollte beginnen. Wenn Sie auf das Kontrollkästchen 'Floodlight' klicken, sollte die integrierte Flash-LED aufleuchten. Achtung! ES IST HELL!

Schritt 2: Bauen Sie den Roboter

Baue den Roboter
Baue den Roboter

Sie benötigen ein zweirädriges Roboter-Chassis. Jeder wird es tun. Montieren Sie das Chassis gemäß den Anweisungen des Herstellers.

Verdrahten Sie dann den Roboter gemäß dem Diagramm. Lassen Sie die Batterieanschlüsse vorerst.

Der L293D dient zur Ansteuerung der Motoren. Beachten Sie, dass sich die halbe Kerbe auf dem Chip in Richtung ESP32 befindet.

Normalerweise werden auf dem Arduino 6 Pins benötigt, um zwei Motoren zu steuern.

Dieser Roboter benötigt nur 4 Pins und funktioniert trotzdem voll.

Die Pins 1 und 9 sind mit der 5V-Quelle des Arduino verbunden, so dass sie dauerhaft HIGH sind. Wenn Sie den Roboter auf diese Weise verdrahten, benötigen wir zwei Pins weniger auf dem Arduino, um die Motoren zu steuern.

In Vorwärtsrichtung sind die INPUT-Pins auf LOW und die Motor-Pulswellenmodulations-Pins auf Werte zwischen 0 und 255 eingestellt, wobei 0 OFF bedeutet und 255 maximale Geschwindigkeit bedeutet.

In umgekehrter Richtung werden die INPUT-Pins auf HIGH gesetzt und die PWM-Werte umgekehrt. 0 bedeutet maximale Geschwindigkeit und 255 bedeutet aus.

Entpacken Sie die ArduinoMotorControl-Skizze und laden Sie sie auf den Arduino Nano hoch.

Schritt 3: HEY! Warte eine Sekunde! Warum brauche ich einen Arduino Nano?

Sie denken wahrscheinlich: "Hey! Es sind mindestens 4 IO-Pins an der ESP32-Kamera verfügbar. Warum kann ich sie nicht zur Steuerung der Motoren verwenden?"

Nun, es stimmt, es gibt folgende Pins auf dem ESP32:

IO0 - wird benötigt, um den ESP32 in den Programmiermodus zu versetzen

IO2 - verfügbar

IO4 - die Blitz-LED

IO12, IO13, IO14, IO15, IO16 - zusätzliche GPIO-Pins.

Wenn Sie nur eine grundlegende Skizze auf den ESP32 laden, um die Pins mit PWM-Befehlen zu steuern, funktionieren sie.

Sobald Sie jedoch die CAMERA-Bibliotheken in Ihren Skizzen aktivieren, sind diese Pins nicht mehr verfügbar.

Am einfachsten ist es also, einfach einen Nano zu verwenden, um die Motoren über PWM zu steuern und die Befehle vom ESP32 per serieller Kommunikation über ein Kabel (ESP32 U0T zu Arduino Rx0) und GND zu senden. Sehr einfach.

Schritt 4: Verdrahten Sie den USB-Joystick (optional)

Sie können den Roboter steuern, indem Sie wie folgt Tastendrücke an die Webseite senden:

8 - Weiterleiten

9 - Rechts vorn

7 - Vorwärts links

4 - Nach links drehen

5 - Stopp

1 - Rückwärts links

2 - Rückwärts

3 - Rückwärts rechts.

Die USB-Joystick-Skizze übersetzt Joystick-Eingaben in Tastendrücke und sendet sie an das Webinterface, das sie an den Arduino weiterleitet, um den Roboter anzutreiben.

Verbinden Sie den Joystick wie folgt mit dem Arduino LEONARDO:

Leonardo Joystick

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

Öffnen Sie die usbJoyStick-Skizze, wählen Sie Arduino Leonardo als Board aus und laden Sie es auf den Leonardo hoch.

Wenn Sie es testen möchten, öffnen Sie einfach einen Texteditor auf Ihrem Computer, klicken Sie mit der Maus in das Fenster und beginnen Sie, den Joystick zu bewegen. Sie sollten die Werte von 1 bis 9 im Fenster sehen

Schritt 5: LASSEN SIE UNS FAHREN

Nehmen Sie sich etwas Zeit und gehen Sie Ihre Verkabelung durch, um sicherzustellen, dass alles korrekt ist.

Als nächstes schließen Sie Ihre Batterien wie folgt an.

1. Schalten Sie die ESP32-Kamera ein. Es dauert einige Sekunden, um den Webserver zu starten.

2. Schalten Sie den Arduino Nano ein.

3. Schalten Sie die Motoren ein.

Starten Sie Ihren Browser und rufen Sie die URL für den ESP32 auf.

Klicken Sie auf die Schaltfläche Streaming starten.

Klicken Sie mit der Maus irgendwo auf den Browserbildschirm, so dass der Bildschirm jetzt im Fokus steht.

Starten Sie Ihren Roboter mit dem Joystick (oder der Tastatur).

Ich habe festgestellt, dass die Standard-Frame-Größe für die Übertragung des Live-Videos ziemlich reaktionsschnell über WLAN funktioniert. Wenn Sie jedoch die Bildgröße erhöhen, wird der Stream abgehackt, da Sie versuchen, größere Bilder zu übertragen.

Dies ist ein herausforderndes Projekt, das Ihnen die Möglichkeit gibt, mit Live-Video-Streaming zu arbeiten und einen Roboter über WLAN zu steuern. Ich hoffe, es hat dir Spaß gemacht!

JETZT GEHEN UND ETWAS WUNDERVOLLES MACHEN!

Update Januar 2020 - Die letzten Fotos zeigen die endgültige Version des Roboters, hart verlötet und sicher am Chassis montiert.

Die drei frontseitig montierten Schalter sind wie folgt:

Links - Motorleistungsbatterie

Mitte - Arduino-Batterie

Rechts - ESP32-Kamerabatterie

Ich könnte eine große Batterie mit einigen Buck-Boost-Transformatoren verwenden (ich verwende eine für den ESP32 - sie ist unten rechts auf dem Vorderansichtsfoto), aber der Einfachheit halber behalte ich nur die 3 Batterien.

Roboter jetzt am Access Point

Ich finde es umständlich, diesen Roboter außerhalb meines Hauses zu demonstrieren, da mein Schulunternehmensnetzwerk es mir nicht erlaubt, den Roboter-Webserver damit zu verbinden. Als Lösung habe ich die Verwendung der Access Point-Funktion des ESP32-Webservers recherchiert. Es erfordert einige Arbeit, erfordert jedoch nur minimale Änderungen an der Hauptroboterskizze, damit der ESP32 seine eigene IP-Adresse sendet. Es ist nicht so leistungsstark wie ein dedizierter Hochgeschwindigkeits-WLAN-Hub (manchmal hängt, wenn Sie sich zu schnell bewegen), aber es funktioniert ganz gut und jetzt kann ich den Roboter überall vorführen, ohne ihn mit einem Netzwerk verbinden zu müssen! Sobald Sie den Roboter zum Laufen gebracht haben, versuchen Sie, ihn selbst in einen Access Point umzuwandeln!

Schritt 6: Details zum Ändern des HTML/Javascript-Codes für den Webserver

Dies ist nicht notwendig, aber ich hatte einige Anfragen.

Ich habe dieses Google-Dokument mit Details zur Verwendung von CyberChef zum Hin- und Herkonvertieren zwischen HTML/Javascript und den Byte-Array-Darstellungen in der Datei camera_index.h bereitgestellt.

Empfohlen: