Управление сервоприводами дрона 3DR Solo через Arduino: Firmata + pyMata
Компоненты и материалы
| Arduino UNO | ×1 |
| 3DR Solo (дрон) | ×1 |
| Сервопривод Tower Pro MG996R | ×1 |
| Solo Breakout Board (плата расширения аксессуарного порта) | ×1 |
О проекте
Введение
Solo имеет отличную среду разработки, но мало I/O. Аксессуарный порт выдает CAN, MAVLink Serial (к Pixhawk) и USB (к Sololink/i.MX6). Arduino + Firmata добавляют кастомные датчики, управление сервами, LED и любые функции Arduino.
Туториал: управление сервоприводом с Solo через Arduino.
Требования ПО:
- Solo firmware 1.2.0 или новее
- Arduino IDE
- FileZilla (SFTP)
- PuTTY или другой SSH-клиент
Шаг 1: Загрузка Firmata на Arduino
Файл → Примеры → Firmata → StandardFirmata. Выберите плату и порт. Загрузить!
Шаг 2: Железо и сборка
Детали
Примечание: Breakout board пока не в продаже. Ссылка на исходники ниже.
Сборка
Питание
Шаг 3: Скачивание pyMata и кода
pyMata — Python-библиотека для Firmata.
SoloServoSweep.py
Шаг 4: Передача файлов на Solo
- Подключитесь к Wi-Fi Solo!
Шаг 5: SSH в Solo
SSH-клиент (PuTTY для Windows). Хост: 10.1.1.1, пользователь: root, пароль: (пустой).
Убедитесь, что вы всё еще в Wi-Fi Solo!
Шаг 6: Установка pyMata
В SSH-сессии выполните:
pip install pymata
Результат:
Шаг 7: Запуск примера
В той же SSH-сессии:
python SoloServoSweep.py
Код (Python)
from PyMata.pymata import PyMata
import time
import sys
SERVO_MOTOR = 9 # серва на этом пине
END = 170 # макс. угол
board = PyMata("/dev/ttyACM0")
board.servo_config(SERVO_MOTOR)
try:
while True:
for i in range(0, END):
board.analog_write(SERVO_MOTOR, i)
time.sleep(.015)
for i in range(END, 0, -1):
board.analog_write(SERVO_MOTOR, i)
time.sleep(.015)
except KeyboardInterrupt:
board.close()
sys.exit()
Кастомные детали
Solo Breakout Board — плата расширения для аксессуарного порта 3DR Solo:
GitHub 3DRobotics
Схемы
Производственный процесс
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Оптимизированные решения питания для проектов на Arduino
- Крестики-нолики на Arduino с матрицей MAX7219 и картонным корпусом
- Пошаговое руководство: сборка умного четырёхногого робота на Arduino
- Точное управление сервоприводом через MPU6050 (Arduino, SG90, MG996R)