Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In dit project wil ik mijn iPhone gebruiken om RC-servo's te besturen. Ik gebruik de versnellingsmeter om twee servo's via een UDP-verbinding te besturen. Dit is een Proof Of Concept-project om te verifiëren dat een verbinding tussen een iPhone en een randapparaat hoge updatesnelheden (hoger dan BLE) kan bereiken met behulp van UDP.
Stap 1: Onderdelenlijst
Hardware
- ESP8266 (Wemos D1 mini pro) bord
- Twee RC-servo's
- Een USB powerbank als voeding
- Sommige jumperdraden
- Een iPhone of iPad met iOS12
- Een mac om het project te bouwen
Software
- Arduino IDE met ESP8266 Arduino-kern geïnstalleerd: Installatiehandleiding
- Xcode 10:
- De arduino-schets is hier te vinden
- De Swift-bron van de iPhone-app is hier
Stap 2: Hardware
De hardwareconfiguratie is heel eenvoudig. Ik gebruik de D1 (pitch) en D2 (roll) output op de ESP8266 om respectievelijk de RC-servo's te bedienen. Het bord wordt gevoed via een USB-powerbank. De RC-servo's worden gevoed via de 5v- en GND-pin van het bord.
Stap 3: Software
De controle-app voor de iPhone is geschreven in Swift die draadloos verbinding maakt met het ESP8266-controllerbord en de pitch- en roll-servo's bestuurt op basis van de bewegingsgegevens van de iPhone. De controllerkaart creëert een Wifi-toegangspunt en luistert naar aankomende UDP-pakketten die de servopositie-informatie bevatten als een stroom van bytes met het volgende algemene formaat:
Servo-index | Positie MSB | Positie LSB
De servo-index is ofwel 1 voor pitch of 2 voor roll. De servopositie wordt berekend op basis van x, y kantelgraden van de telefoon en omgezet in microseconden tussen 1000 en 2000. De verversingssnelheid is 20 milliseconden.
De app gebruikt het nieuwe Network.framework om de UDP-verbinding tot stand te brengen, dus het werkt alleen op iOS 12 en hoger.
Dit is een POC-app om te demonstreren hoe gemakkelijk de UDP-verbinding in iOS 12 te gebruiken is. Om het simpel te houden, worden de UDP-pakketten afzonderlijk verzonden voor pitch en roll.