Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: Mobiles Roboterauto
- Schritt 2: Mobiles Roboterauto - Schaltplan
- Schritt 3: Mobiles Roboterauto - Montage (Motoren)
- Schritt 4: Mobiles Roboterauto - Montage (Entfernungssensor)
- Schritt 5: Mobiles Roboterauto - Montage (ESP32 CAM)
- Schritt 6: Mobiles Roboterauto - Montage (Chipspender)
- Schritt 7: Mobiles Roboterauto - Montage (Cookies!)
- Schritt 8: Mobiles Roboterauto - Arduino-Code
- Schritt 9: Mobiles Roboterauto - ESP32-Code
- Schritt 10: Spänespender
- Schritt 11: Joystick
- Schritt 12: Joystick - Schaltplan
- Schritt 13: Joystick - Tastaturemulator
- Schritt 14: Netzwerkkommunikation
- Schritt 15: Alles zusammenfügen
Video: Roboter für virtuelle Präsenz - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Dieser mobile Roboter interagiert mit seiner physischen Umgebung, indem er die "virtuelle Präsenz" der Person darstellt, die ihn aus der Ferne steuert. Jeder kann überall auf der Welt darauf zugreifen, um Leckereien zu verteilen und mit Ihnen zu spielen.
Die Arbeit hier wird von zwei Personen (einer in Deutschland und einer in den USA) entwickelt, um über die traditionellen Mittel der internetbasierten Kommunikation hinauszugehen, indem eine physische Schnittstelle für die Ferninteraktion geschaffen wird. Da COVID-19 die Welt weiterhin beeinflusst und jeder dafür verantwortlich ist, unsere physische Exposition gegenüber Menschen zu begrenzen, versuchen wir, die greifbare Verbindung wiederherzustellen, die Teil der physischen Interaktion ist.
Es basiert auf dem ESP32-Kamera-Roboter-FPV-Teacher-Entry Instructable und wurde modifiziert, um Abstandssensor, Leckerchenspender und "Steuerung von überall auf der Welt" zu enthalten, vorausgesetzt, Sie haben eine einigermaßen stabile Internetverbindung.
Lieferungen
Das Projekt besteht aus 4 Hauptteilen - einem mobilen Roboterauto, einem Chipspender, einem Joystick und einem Netzwerkkommunikations-Setup.
Mobiles Roboterauto
- Steckbrett
- 2-Rad-Antriebsmotor und Chassis-Roboter-Kit (einschließlich Räder, Gleichstrommotoren, Montageplatte und Schrauben)
- Arduino Mega 2560 (wenn Sie ohne Abstandssensor oder Chip-Dispenser bauen, hat ein Uno genug Pins)
- (3) 9V-Batterien (haben Sie noch ein paar mehr, da Sie sie beim Debuggen entleeren)
- LM2596 Netzteilmodul DC/DC Buck 3A Regler (oder ähnlich)
- ESP32-CAM Wifi-Modul
- FT232RL FTDI USB zu TTL Serial Converter (zur Programmierung der ESP32-CAM)
- HC-SR04 Ultraschall-Abstandssensor
- L298N Motortreiber
- (3) LEDs (beliebige Farbe)
- (3) 220 Ohm Widerstände
Spänespender
- (2) SG90-Servos
- Karton / Pappe
Joystick
- Arduino Uno
- Joystick-Modul
- Mini-Breadboard, (1) LED, (1) 220 Ohm Widerstand (optional)
Sonstiges
Viele Steckbrett-ÜberbrückungsdrähteExtra Karton / PappeBandSchereLineal / MaßbandKleiner KreuzschlitzschraubendreherKleiner Schlitzschraubendreher
Geduld =)
Schritt 1: Mobiles Roboterauto
Das Robot Car Chassis dient als mobile Plattform, wobei ein Arduino MEGA als Hauptmikrocontroller die Motoren antreibt, Sensorwerte ausliest und die Servos ansteuert. Die meisten Aktionen werden ausgeführt, indem der Arduino MEGA Befehle über die serielle Kommunikation empfängt, die von der ESP32-CAM gesendet werden. Während ESP32 einen Kamera-Livestream zur Steuerung des Roboters bereitstellt, besteht seine andere Funktion darin, eine drahtlose Verbindung zwischen dem Roboter und dem Server zu verwalten, sodass Benutzer ihn von überall auf der Welt steuern können. Der ESP32 empfängt per Tastendruck Befehle von der Webseite und sendet diese als char-Werte an den Arduino MEGA. Basierend auf dem empfangenen Wert fährt das Auto vorwärts, rückwärts usw. Da die Fernsteuerung über das Internet von vielen externen Faktoren abhängt, einschließlich hoher Latenz, schlechter Stream-Qualität und sogar Verbindungsabbrüchen, ist ein Distanzsensor integriert, um einen Absturz des Roboters zu verhindern in Gegenstände.*Aufgrund des hohen und schwankenden Strombedarfs des ESP32-Chips wird für den Betrieb mit Batteriestrom ein Netzteilregler empfohlen (siehe Schaltplan).
Schritt 2: Mobiles Roboterauto - Schaltplan
Wir werden Sie Schritt für Schritt durch den Zusammenbau führen.
Schritt 3: Mobiles Roboterauto - Montage (Motoren)
Nachdem Sie das 2WD-Chassis zusammengebaut haben, verbinden wir zunächst die Motoren und den Akku über den L298N-Treiber mit dem Arduino MEGA.
Schritt 4: Mobiles Roboterauto - Montage (Entfernungssensor)
Da einige Komponenten angeschlossen werden müssen, fügen wir ein Steckbrett hinzu, damit wir die Stromversorgung und die gemeinsame Masse einfacher verbinden können. Nachdem wir die Drähte neu organisiert haben, schließen Sie den Abstandssensor an und befestigen Sie ihn an der Vorderseite des Roboters.
Schritt 5: Mobiles Roboterauto - Montage (ESP32 CAM)
Als nächstes schließen Sie das ESP32-CAM-Modul an und befestigen es neben dem Abstandssensor in der Nähe der Vorderseite des Roboters. Denken Sie daran, dass diese ziemlich stromhungrige Komponente eine eigene Batterie und einen DC-Regler benötigt.
Schritt 6: Mobiles Roboterauto - Montage (Chipspender)
Fügen wir nun den Chip-Dispenser hinzu (mehr dazu im Abschnitt "Chip Dispenser"). Verdrahten Sie die beiden Servos gemäß dem Fritzing-Diagramm und befestigen Sie den Spender am Heck des Roboters.
Schritt 7: Mobiles Roboterauto - Montage (Cookies!)
Schließlich fügen wir dem Spender Leckereien hinzu!
Schritt 8: Mobiles Roboterauto - Arduino-Code
RobotCar_Code ist der Code, den Sie auf dem Arduino Mega laden müssen.
So funktioniert es: Der Arduino hört auf Bytes, die vom ESP32 über die serielle Kommunikation auf dem 115200-Band gesendet werden. Basierend auf dem empfangenen Byte bewegt sich das Auto vorwärts, rückwärts, links, rechts usw., indem es entweder eine HIGH- oder LOW-Spannung an die Motoren sendet, um die Richtung zu steuern, sowie eine PWM-Variable zwischen 0-255, um die Geschwindigkeit zu steuern. Um Kollisionen zu vermeiden, liest dieser Code auch die vom Distanzsensor eingehenden Werte und wenn die Distanz kleiner als ein bestimmter Schwellenwert ist, bewegt sich der Roboter nicht vorwärts. Wenn der Arduino schließlich einen Befehl erhält, einen Leckerbissen zu verteilen, aktiviert er die Servos im Chip-Dispenser.
Schritt 9: Mobiles Roboterauto - ESP32-Code
Der ESP32 ermöglicht die Kommunikation zwischen Server und Arduino über Wifi. Es wird separat vom Arduino programmiert und hat seinen eigenen Code:
- ESP32_Code.ino ist der Code für ESP32, um Informationen an den Arduino zu senden
- app_httpd.cpp ist der Code, der für den standardmäßigen ESP32-Webserver benötigt wird und stellt die Funktion ein, um auf Tastendrücke zu warten. Gut zum Debuggen und Testen im lokalen WLAN. Es wird nicht für die Kommunikation außerhalb des lokalen Netzwerks verwendet.
- camera_index.h ist der HTML-Code für die Standard-Webanwendung
- camera_pins.h definiert die Pins je nach ESP32-Modell
Der ESP32-Code verwendet die Wifi-Bibliothek sowie das ESP32-Add-on, das in der Arduino-IDE installiert werden kann, indem Sie die folgenden Schritte ausführen:
- Gehen Sie in der Arduino IDE zu Datei > Einstellungen
- Geben Sie dann auf der Registerkarte Einstellungen unter Additional Boards Manager URL Folgendes ein: "https://dl.espressif.com/dl/package_esp32_index.json"
- Öffnen Sie nun den Boards Manager und gehen Sie zu Tools > Board > Boards Manager und suchen Sie nach dem ESP32, indem Sie "ESP32" eingeben.
- Sie sollten "esp32 von Espressif Systems" sehen. Klicken Sie auf Installieren.
- Jetzt sollte das ESP32-Add-On installiert sein. Um zu überprüfen, gehen Sie zurück zur Arduino IDE und gehen Sie zu Tools> Board und wählen Sie das "ESP32 Wrover Module".
- Gehen Sie erneut zu Extras > Upload-Geschwindigkeit und stellen Sie es auf "115200" ein.
- Gehen Sie schließlich zu Extras> Partitionsschema und stellen Sie es auf "Riesige APP (3 MB kein OTA / 1 MB SPIFFS) ein.
- Sobald Sie dies abgeschlossen haben, empfehle ich Ihnen, diesem Tutorial von RandomNerdTutorials zu folgen, das detailliert erklärt, wie Sie die Einrichtung des ESP32 abschließen und Code mit dem FTDI-Programmierer hochladen Programmieren des ESP32
Schritt 10: Spänespender
Der Chip Dispenser ist eine kostengünstige Ergänzung zum mobilen Roboter, die es ihm ermöglicht, die lokale Umgebung zu beeinflussen und mit Menschen / Tieren zu interagieren, indem er einen leckeren Leckerbissen hinterlässt. Es besteht aus einer Karton-Außenbox mit 2 innen montierten Servos sowie einer inneren Kartonkartusche, die Gegenstände (wie Süßigkeiten oder Hundeleckerli) zum Ausgeben aufnimmt. Ein Servo fungiert als Tor, während das andere den Gegenstand herausschiebt.
*Alle Maße sind in Millimetern
Schritt 11: Joystick
Während es Spaß machen kann, einen Roboter mit der Tastatur zu steuern, macht es noch mehr Spaß und intuitiv, einen Joystick zu verwenden, bei dem der Roboter direkt auf die Richtung reagiert, die Sie drücken. Da dieser Roboter über auf der Webseite aufgezeichnete Tastendrücke betätigt wird, brauchten wir unseren Joystick, um eine Tastatur zu emulieren. Auf diese Weise können Benutzer ohne Joystick den Roboter weiterhin direkt über eine Tastatur steuern, andere jedoch können den Joystick verwenden.
Dafür hatten wir nur ein Arduino Uno, das die Bibliothek nicht verwenden kann, also haben wir es direkt mit einem USB-Protokoll programmiert, das als Device Firmware Update (DFU) bekannt ist und es ermöglicht, das Arduino mit einer generischen USB-HID-Tastatur-Firmware zu flashen. Mit anderen Worten, wenn das Arduino an den USB angeschlossen ist, wird es nicht mehr als Arduino, sondern als Tastatur erkannt!
Schritt 12: Joystick - Schaltplan
So haben wir den Joystick verdrahtet.
Schritt 13: Joystick - Tastaturemulator
Damit Ihr Arduino Uno eine Tastatur emulieren kann, müssen Sie den Atmega16u2-Chip direkt auf dem Arduino über ein manuelles Geräte-Firmware-Update (DFU) programmieren. Die folgenden Schritte beschreiben den Prozess für einen Windows-Computer und helfen Ihnen hoffentlich, einige der Probleme zu vermeiden, auf die wir gestoßen sind.
Der erste Schritt besteht darin, den Atmel-USB-Treiber manuell auf den Arduino zu schreiben, damit er als USB und nicht als Arduino erkannt wird, wodurch er mit dem FLIP-Programmierer geflasht werden kann.
- Laden Sie den FLIP-Programmierer von Atmel hier herunter
- Schließen Sie Ihr Arduino Uno an
- Gehen Sie zum Geräte-Manager und suchen Sie das Arduino. Es befindet sich unter COM oder Unbekanntes Gerät. Stecken Sie es ein und aus, um sicherzustellen, dass es sich um das richtige Gerät handelt.
- Sobald Sie das Arduino Uno im Geräte-Manager gefunden haben, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften> Treiber> Treiber aktualisieren> Auf meinem Computer nach Treibersoftware suchen> Lassen Sie mich aus einer Liste verfügbarer Treiber auf meinem Computer auswählen> Datenträger> Navigieren Sie zum Datei "atmel_usb_dfu.inf" und wählen Sie diese aus. Dies sollte sich in dem Ordner befinden, in dem Ihr Atmel FLIP Programmer installiert wurde. Auf meinem Computer ist es hier: C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf
- Treiber installieren
- Gehen Sie nun zurück zum Geräte-Manager, Sie sollten ein "Atmel USB Devices" mit dem Arduino Uno sehen, das jetzt als ATmega16u2 beschriftet ist!
Jetzt, da der Computer das Arduino Uno als USB-Gerät erkennt, können wir es mit dem FLIP-Programmierer mit 3 separaten Dateien flashen und in eine Tastatur verwandeln.
Wenn Sie Ihr Arduino Uno nach dem ersten Teil ausgesteckt haben, stecken Sie es wieder ein.
- FLIP öffnen
- Setzen Sie das Arduino Uno zurück, indem Sie die Stromversorgung kurz mit Masse verbinden.
- Klicken Sie auf Geräteauswahl (Symbol wie ein Mikrochip) und wählen Sie ATmega16U2
- Klicken Sie auf Kommunikationsmedium auswählen (Symbol wie ein USB-Kabel) und wählen Sie USB. Wenn Sie den ersten Teil richtig ausgefüllt haben, sollten die anderen grauen Schaltflächen verwendbar sein.
- Gehen Sie zu Datei> Hex-Datei laden> und laden Sie die Datei Arduino-usbserial-uno.hex. hoch
- Im FLIP-Fenster sollten Sie drei Abschnitte sehen: Operations Flow, FLASH Buffer Information und ATmega16U2. Aktivieren Sie im Betriebsablauf die Kontrollkästchen für Löschen, Programmieren und Überprüfen, und klicken Sie dann auf Ausführen.
- Klicken Sie nach Abschluss dieses Vorgangs im Abschnitt ATmega16U2 auf Anwendung starten.
- Schließen Sie das Arduino an, indem Sie es vom Computer trennen und wieder anschließen.
- Setzen Sie das Arduino Uno zurück, indem Sie die Stromversorgung kurz mit Masse verbinden.
- Öffnen Sie die Arduino IDE und laden Sie die Datei JoyStickControl_Code.ino auf das Board hoch.
- Schließen Sie das Arduino an, indem Sie es vom Computer trennen und wieder anschließen.
- Setzen Sie das Arduino zurück, indem Sie die Stromversorgung kurzzeitig mit Masse verbinden.
- Gehen Sie zurück zu FLIP und stellen Sie sicher, dass in der Geräteauswahl Atmega16U2 angezeigt wird
- Klicken Sie auf Kommunikationsmedium auswählen und wählen Sie USB.
- Gehen Sie zu Datei> Hex-Datei laden> und laden Sie die Datei Arduino-keyboard-0.3.hex. hoch
- Im FLIP-Fenster sollten Sie drei Abschnitte sehen: Operations Flow, FLASH Buffer Information und ATmega16U2. Aktivieren Sie im Betriebsablauf die Kontrollkästchen für Löschen, Programmieren und Überprüfen, und klicken Sie dann auf Ausführen.
- Klicken Sie nach Abschluss dieses Vorgangs im Abschnitt ATmega16U2 auf Anwendung starten.
- Schließen Sie das Arduino an, indem Sie es vom Computer trennen und wieder anschließen.
- Wenn Sie nun zum Geräte-Manager gehen, sollte sich unter Tastaturen ein neues HID-Tastaturgerät befinden.
- Öffnen Sie einen Notizblock oder einen beliebigen Texteditor und bewegen Sie den Joystick. Sie sollten sehen, wie Zahlen eingegeben werden!
Wenn Sie den Code in der Arduino-Skizze ändern möchten, zum Beispiel neue Befehle an den Joystick schreiben, müssen Sie ihn jedes Mal mit allen 3 Dateien flashen.
Einige nützliche Links:Arduino DFUAtLibUsbDfu.dll nicht gefunden
Dieser Tastaturemulator basiert auf diesem Tutorial von Michael vom 24. Juni 2012.
Schritt 14: Netzwerkkommunikation
Um von überall auf der Welt einen Videostream zu empfangen und Befehle an den Roboter zu senden, benötigen wir eine Möglichkeit, Daten zur und von der ESP32-CAM zu übertragen. Dies erfolgt in zwei Teilen, einem Verbindungshandler in Ihrem lokalen Netzwerk und einem öffentlichen Server. Laden Sie die drei Dateien herunter, um dies zu erreichen:
- Handlers.py: leitet Informationen von ESP32-CAM und dem öffentlichen Server weiter (getestet auf Python 3.8)
- Flask_app.py: Definiert, wie Ihre App auf eingehende Anfragen reagiert.
- Robot_stream.html: rendert Videos in Ihrem Browser und hört auf Befehle über Tastatur / Joystick (getestet in Chrome)
Connection HandlerSie können dies direkt in app_httpd.cpp codieren, aber zum einfacheren Debuggen verwenden wir ein Python-Skript, das auf einem PC ausgeführt wird, der mit demselben Netzwerk verbunden ist. Öffnen Sie handlers.py und aktualisieren Sie die IP-Adresse und den Benutzernamen auf Ihren eigenen, und schon können Sie loslegen. Der Stream wird gestartet, wenn Sie diese Datei ausführen.
Öffentlicher Server Um auf alles im Internet zuzugreifen, können Sie einen Server mit einem PaaS Ihrer Wahl starten. Bei Pythonanywhere (PA) dauert die Einrichtung weniger als 5 Minuten:
- Registrieren Sie sich für ein Konto und melden Sie sich an
- Gehen Sie zur Registerkarte „Web“und klicken Sie auf „Neue Web-App hinzufügen“, wählen Sie Flask und Python 3.6
- Kopiereflakon_app.py in das Verzeichnis /mysite
- Kopieren Sie robot_stream.html in das Verzeichnis /mysite/templates
- Klicken Sie auf „Neu laden“
Und … Sie sind fertig!
Haftungsausschluss: Dieser Netzwerk-Workflow ist schnell und einfach, aber alles andere als ideal. RTMP oder Sockets wären für das Streaming besser geeignet, werden jedoch von PA nicht unterstützt und erfordern etwas Erfahrung mit Netzwerk- und Server-Setup. Es wird außerdem empfohlen, einige Sicherheitsmechanismen hinzuzufügen, um den Zugriff zu kontrollieren.
Schritt 15: Alles zusammenfügen
Schalten Sie nun Ihren Roboter ein, führen Sie handlers.py auf einem Computer aus (der mit demselben Netzwerk wie der Roboter verbunden ist), und Sie können den Roboter von einem Browser aus basierend auf der von Ihnen festgelegten URL von überall aus steuern. (z. B.
Empfohlen:
Einen Roboter zur Hindernisvermeidung bauen – wikiHow
Wie man einen Hindernisvermeidungsroboter macht: Der Hindernisvermeidungsroboter ist ein einfacher Roboter, der von einem Arduino betrieben wird und was er tut, ist, dass er nur herumstreift und Hindernissen ausweicht. Er erkennt die Hindernisse mit einem HC-SR04 Ultraschallsensor, d. h. wenn der Roboter ein Objekt in der Nähe von
Einen intelligenten Roboter mit Arduino bauen – wikiHow
Wie man einen intelligenten Roboter mit Arduino macht: Hallo, ich bin Arduino-Hersteller und in diesem Tutorial werde ich Ihnen zeigen, wie man einen intelligenten Roboter mit Arduino macht, wenn Ihnen mein Tutorial gefallen hat, dann überlegen Sie, meinen Youtube-Kanal namens Arduino-Hersteller zu unterstützen
RC-Tracked-Roboter mit Arduino – Schritt für Schritt: 3 Schritte
RC Tracked Robot mit Arduino – Schritt für Schritt: Hey Leute, ich bin zurück mit einem weiteren coolen Robot-Chassis von BangGood. Ich hoffe, Sie haben unsere vorherigen Projekte durchgegangen – Spinel Crux V1 – Der gestengesteuerte Roboter, Spinel Crux L2 – Arduino Pick-and-Place-Roboter mit Roboterarmen und The Badland Braw
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter - Daumen Roboter - Servomotor - Quellcode: 26 Schritte (mit Bildern)
[Arduino-Roboter] Wie erstelle ich einen Motion-Capture-Roboter | Daumen Roboter | Servomotor | Quellcode: Thumbs Robot. Verwendet ein Potentiometer des Servomotors MG90S. Es macht sehr viel Spaß und ist einfach! Der Code ist sehr einfach. Es sind nur etwa 30 Zeilen. Es sieht aus wie ein Motion-Capture.Bitte hinterlassen Sie Fragen oder Feedback![Anleitung] Quellcode https://github.c
Wie richte ich eine virtuelle Maschine ein?: 5 Schritte
So richten Sie eine virtuelle Maschine ein?: Diese kurze Anleitung führt Sie durch die Schritte, die zum Installieren und Ausführen eines "Gastbetriebssystems" auf einer virtuellen Maschine in Ihrem PC erforderlich sind