2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В этом проекте я хочу использовать свой iPhone для управления сервоприводами RC. Я буду использовать акселерометр для управления двумя сервоприводами через UDP-соединение. Это проект Proof Of Concept для проверки того, что соединение между iPhone и периферийным устройством может достигать высокой скорости обновления (выше, чем BLE) с использованием UDP.
Шаг 1: Список деталей
Аппаратное обеспечение
- Плата ESP8266 (Wemos D1 mini pro)
- Два RC сервопривода
- Блок питания USB в качестве источника питания
- Некоторые перемычки
- IPhone или iPad с iOS12
- Mac для сборки проекта
Программное обеспечение
- Arduino IDE с установленным ядром ESP8266 Arduino: Руководство по установке
- Xcode 10:
- Эскиз Arduino можно найти здесь
- Исходный код приложения для iPhone на Swift находится здесь.
Шаг 2: Оборудование
Аппаратная настройка очень проста. Я использую выходы D1 (шаг) и D2 (крен) на ESP8266 для управления сервоприводами RC соответственно. Плата питается от пауэрбанка USB. Сервоприводы RC получают питание от контактов 5v и GND на плате.
Шаг 3: Программное обеспечение
Приложение управления для iPhone написано на Swift, которое подключается к плате контроллера ESP8266 по беспроводной сети и управляет сервоприводами тангажа и крена на основе данных движения iPhone. Плата контроллера создает точку доступа Wi-Fi и прослушивает восходящие UDP-пакеты, которые содержат информацию о положении сервопривода в виде потока байтов со следующим общим форматом:
Сервоиндекс | Позиция MSB | Позиция LSB
Индекс сервопривода равен 1 для тангажа или 2 для крена. Положение сервопривода рассчитывается из градусов наклона телефона по x, y и преобразуется в микросекунды между 1000 и 2000. Частота обновления составляет 20 миллисекунд.
Приложение использует новый Network.framework для установления UDP-соединения, поэтому работает только на iOS 12 и выше.
Это POC-приложение, демонстрирующее, насколько легко использовать UDP-соединение в iOS 12. Для простоты UDP-пакеты отправляются отдельно для шага и вращения.