2025 Autor: John Day | [email protected]. Modificat ultima dată: 2025-01-13 06:58
În acest proiect vreau să-mi folosesc iPhone-ul pentru a controla servo-urile RC. Voi folosi accelerometrul pentru a controla două servome prin conexiunea UDP. Acesta este un proiect Proof Of Concept pentru a verifica dacă o conexiune între un iPhone și un periferic poate atinge rate de actualizare ridicate (mai mari decât BLE) utilizând UDP.
Pasul 1: Lista pieselor
Hardware
- Placă ESP8266 (Wemos D1 mini pro)
- Două servo RC
- O bancă de alimentare USB ca sursă de alimentare
- Unele fire jumper
- Un iPhone sau iPad care utilizează iOS12
- Un Mac pentru a construi proiectul
Software
- Arduino IDE cu ESP8266 Arduino core instalat: manual de instalare
- Xcode 10:
- Schița arduino poate fi găsită aici
- Sursa Swift a aplicației iPhone este aici
Pasul 2: Hardware
Configurarea hardware-ului este foarte simplă. Folosesc ieșirile D1 (pitch) și D2 (roll) de pe ESP8266 pentru a controla respectiv servo-urile RC. Placa este alimentată de la o bancă de alimentare USB. Servoarele RC sunt alimentate de la pinul 5v și GND al plăcii.
Pasul 3: Software
Aplicația de control pentru iPhone este scrisă în Swift, care se conectează la placa controlerului ESP8266 fără fir și controlează servo-pitch și roll pe baza datelor de mișcare ale iPhone-ului. Placa controlerului creează un punct de acces Wifi și ascultă pachetele UDP care actualizează, care conține informații despre poziția servo ca un flux de octeți cu următorul format general:
Servo index | Poziția MSB | Poziția LSB
Indicele servo este fie 1 pentru pitch sau 2 pentru roll. Poziția servo este calculată de la gradul de înclinare al telefonului x, y și convertită în microsecunde între 1000 și 2000. Rata de reîmprospătare este de 20 de milisecunde.
Aplicația folosește noul Network.framework pentru a stabili conexiunea UDP, deci rulează numai pe iOS 12 și versiuni ulterioare.
Aceasta este o aplicație POC pentru a demonstra cât de ușor de utilizat este conexiunea UDP în iOS 12. Pentru a simplifica, pachetele UDP sunt trimise separat pentru pitch și roll.