Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
I dette prosjektet vil jeg bruke min iPhone til å kontrollere RC -servoer. Jeg bruker akselerometeret til å kontrollere to servoer over UDP -tilkobling. Dette er et Proof Of Concept -prosjekt for å bekrefte at en forbindelse mellom en iPhone og en perifer enhet kan oppnå høye oppdateringshastigheter (høyere enn BLE) ved hjelp av UDP.
Trinn 1: Deleliste
Maskinvare
- ESP8266 (Wemos D1 mini pro) -kort
- To RC -servoer
- En USB -strømbank som strømforsyning
- Noen hoppetråder
- En iPhone eller iPad som bruker iOS12
- En mac for å bygge prosjektet
Programvare
- Arduino IDE med ESP8266 Arduino -kjerne installert: Installasjonsmanual
- Xcode 10:
- Arduino -skissen finner du her
- Swift -kilden til iPhone -appen er her
Trinn 2: Maskinvare
Maskinvareoppsettet er veldig enkelt. Jeg bruker utgangene D1 (tonehøyde) og D2 (rulle) på ESP8266 for å kontrollere henholdsvis RC -servoene. Brettet drives av en USB -strømbank. RC -servoene drives av 5v- og GND -pinnen på brettet.
Trinn 3: Programvare
Kontrollappen for iPhone er skrevet i Swift som kobles til ESP8266 -kontrollerkortet trådløst og styrer pitch and roll -servoer basert på iPhone -bevegelsesdata. Kontrollkortet oppretter et Wifi -tilgangspunkt og lytter etter kommende UDP -pakker som inneholder servoposisjonsinformasjonen som en byte -strøm med følgende generelle format:
Servoindeks | Posisjon MSB | Posisjon LSB
Servoindeksen er enten 1 for pitch eller 2 for roll. Servoposisjonen beregnes fra telefonen x, y tilt grader og konverteres til mikrosekunder mellom 1000 og 2000. Oppdateringsfrekvensen er 20 millisekunder.
Appen bruker det nye Network.framework for å etablere UDP -tilkoblingen, så den kjører bare på iOS 12 og nyere.
Dette er en POC -app for å demostrere hvor lett å bruke UDP -tilkobling i iOS 12. For å gjøre det enkelt sendes UDP -pakkene separat for pitch and roll.