Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In diesem Projekt möchte ich mein iPhone verwenden, um RC-Servos zu steuern. Ich werde den Beschleunigungsmesser verwenden, um zwei Servos über eine UDP-Verbindung zu steuern. Dies ist ein Proof-of-Concept-Projekt, um zu überprüfen, ob eine Verbindung zwischen einem iPhone und einem Peripheriegerät mit UDP hohe Aktualisierungsraten (höher als BLE) erreichen kann.
Schritt 1: Teileliste
Hardware
- ESP8266 (Wemos D1 Mini Pro) Platine
- Zwei RC-Servos
- Eine USB-Powerbank als Stromversorgung
- Einige Überbrückungsdrähte
- Ein iPhone oder iPad mit iOS12
- Ein Mac zum Erstellen des Projekts
Software
- Arduino IDE mit ESP8266 Arduino Core installiert: Installationshandbuch
- Xcode 10:
- Die Arduino-Skizze finden Sie hier
- Die Swift-Quelle der iPhone-App ist hier
Schritt 2: Hardware
Der Hardwareaufbau ist sehr einfach. Ich verwende den D1 (Pitch) und D2 (Roll) Ausgang des ESP8266, um die RC-Servos entsprechend zu steuern. Das Board wird über eine USB-Powerbank mit Strom versorgt. Die RC-Servos werden über den 5V- und GND-Pin der Platine mit Strom versorgt.
Schritt 3: Software
Die Steuerungs-App für das iPhone ist in Swift geschrieben, die sich drahtlos mit dem ESP8266-Controller-Board verbindet und die Nick- und Roll-Servos basierend auf den iPhone-Bewegungsdaten steuert. Die Controller-Platine erstellt einen Wifi Access Point und lauscht auf kommende UDP-Pakete, die die Servopositionsinformationen als Bytestrom mit dem folgenden allgemeinen Format enthalten:
Servoindex | Position MSB | Position LSB
Der Servoindex ist entweder 1 für Nick oder 2 für Roll. Die Servoposition wird aus den Neigungsgraden des Telefons x, y berechnet und in Mikrosekunden zwischen 1000 und 2000 umgewandelt. Die Aktualisierungsrate beträgt 20 Millisekunden.
Die App verwendet das neue Network.framework, um die UDP-Verbindung herzustellen, sie läuft also nur auf iOS 12 und höher.
Dies ist eine POC-App, um zu demonstrieren, wie einfach die UDP-Verbindung in iOS 12 zu verwenden ist. Um es einfach zu halten, werden die UDP-Pakete separat für Pitch und Roll gesendet.