2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
Neste projeto eu quero usar meu iPhone para controlar servos RC. Vou usar o acelerômetro para controlar dois servos na conexão UDP. Este é um projeto de prova de conceito para verificar se uma conexão entre um iPhone e um periférico pode atingir altas taxas de atualização (mais altas que BLE) usando UDP.
Etapa 1: Lista de peças
Hardware
- Placa ESP8266 (Wemos D1 mini pro)
- Dois servos RC
- Um banco de energia USB como fonte de alimentação
- Alguns fios de ligação
- Um iPhone ou iPad usando iOS12
- Um mac para construir o projeto
Programas
- Arduino IDE com ESP8266 núcleo Arduino instalado: manual de instalação
- Xcode 10:
- O esboço do Arduino pode ser encontrado aqui
- A fonte do Swift do aplicativo para iPhone está aqui
Etapa 2: Hardware
A configuração do hardware é muito simples. Eu uso a saída D1 (pitch) e D2 (roll) no ESP8266 para controlar os servos RC, respectivamente. A placa é alimentada por um banco de energia USB. Os servos RC são alimentados pelo pino 5v e GND da placa.
Etapa 3: Software
O aplicativo de controle para o iPhone é escrito em Swift, que se conecta à placa controladora ESP8266 sem fio e controla os servos de inclinação e rotação com base nos dados de movimento do iPhone. A placa controladora cria um ponto de acesso Wifi e escuta os pacotes UDP que contêm as informações de posição do servo como um fluxo de bytes com o seguinte formato geral:
Índice servo | Posição MSB | Posição LSB
O índice do servo é 1 para pitch ou 2 para roll. A posição do servo é calculada a partir dos graus de inclinação x, y do telefone e convertida em microssegundos entre 1000 e 2000. A taxa de atualização é de 20 milissegundos.
O aplicativo está usando o novo Network.framework para estabelecer a conexão UDP, portanto, só funciona no iOS 12 e superior.
Este é um aplicativo POC para demonstrar como é fácil usar a conexão UDP no iOS 12. Para mantê-lo simples, os pacotes UDP são enviados separadamente para pitch and roll.