Этот проект задумывался для обучения и ознакомления с существующими технологиями для удаленного управления устройствами, а также попытка понять, как можно в будущем создать автономное робототехническое устройство, взаимодействующее с человеком.
Моторизированное шасси
На блошином рынке за копейки была приобретена часть детской игрушки от радиоуправляемого автомобиля. Это выглядело так (в игрушке была своя китайская электроника).
Шаг 1. Управление двигателем.
Шасси было разобрано и снят двигатель постоянного тока DC. Управление маломощным двигателем можно осуществлять непосредственно с самой платы Arduino. Вот как может выглядеть схема:
Скетч Arduino IDE:
const int M0T0R=9; // Вывод 9 Arduino для подключения двигателя const int РОТ=0; // Вывод A0 Arduino для подключения потенциометра int val = 0; void setup() { pinMode (MOTOR, OUTPUT); } void loop() { val = analogRead(POT); val = map(val, 0, 1023, 0, 255); analogWrite(MOTOR, val) }Чтобы управлять скоростью вращения двигателя нужно регулировать положение ручки потенциометра. При полностью выведенном движке потенциометра двигатель остановлен, при полностью введенном — вал двигателя вращается с максимальной скоростью. Не забывайте, что контроллер Arduino работает очень быстро, цикл повторяется несколько тысяч раз в секунду! Поэтому малейшее изменение положения движка потенциометра сразу же сказывается на частоте вращения двигателя.
Пример работы с сервоприводом «Радиальный датчик расстояния»
Мне в изучении очень помогла книга Джереми Блюма «Изучаем Arduino». Всем советую!
Шаг 2. Подключение драйвера двигателей и радиоуправление.
На AliExpress был заказан драйвер двигателей Arduino Motor Shield V.1.
Характеристики:
Микросхема
L293D
Напряжение питания
+4,5...+ 25 В
Номинальный ток для каждого канала
0,6 А
Пиковый ток для каждого канала
1.2 А
Количество одновременно подключаемых двигателей
4 шт
Количество одновременно подключаемых шаговых двигателей
2 шт
Количество подключаемых сервомоторов
2 шт
Реверс каждого двигателя
да
Независимое управления всеми каналами
да
Плата очень просто подключается к Arduino и в интернете полно примеров как управлять двигателями используя этот драйвер (вставить ссылку).Для управления движущейся моделью будем использовать аппаратуру радиоуправления. Передача команд к модели происходит по радиоканалу с помощью модуляции FM (Frequency Modulation). Аппаратура радиоуправления состоит из передатчика RadioLink AT9 и размещенной на модели приемника R9D. Arduino получает и обрабатывает команды от приемника.
Характеристики:
Передатчик RadioLink AT9
Частота
2.4ГГц
Количество каналов
10
Напряжения питания
8.6~15В
Время отклика
3 мс
Дальность действия
900м по земле, более 1500м по воздуху
Экран
2.8" 16 цветов , разрешение 240х320
Приемник RadioLink R9D
Модуляция
DSSS
Частота
2.4ГГц
Рабочее напряжение
до 10В
Ток потребления:
38-45mA
Скетч для Arduino IDE:
#include
После того, как я подсоединил все двигатели к MotorShield, стало понятно, что плате не хватает мощности и она сильно греется. Сравнив характеристики с Arduino MotorShield v.2, плату пришлось поменять.
Arduino MotorShield v.2
Микросхема
TB6612
Используемый протокол управления
I2C
Напряжение питания
5 – 12 В
Номинальный ток для каждого канала
1,2 А
Пиковый ток для каждого канала
3 А
Количество одновременно подключаемых двигателей
4 шт
Количество одновременно подключаемых шаговых двигателей
2 шт
Количество подключаемых сервомоторов
2 шт
Реверс каждого двигателя
да
Независимое управления всеми каналами
да
Чтобы занимать меньше места в коробке модели решил переделать плату под Arduino Micro.
Параметры платы:
Микроконтроллер
ATmega32u4
Рекомендуемое напряжение питания
7-12 В
Цифровых вводов/выводов
20
ШИМ
7
Аналоговые выводы
12
Максимальная сила тока
40 mAh
Flash память
32 КБ
SRAM
2,5 КБ
EEPROM
1 КБ
Тактовая частота
16 МГц
Двигатель заработали нормально, также пришлось подключить второй канал радиоприемника для управления поворотом колес.
ШАГ 3. Собираем всю конструкцию.
Схема подключения.
Полный скетч:
Система стабилизации и управления камерой
В качестве системы стабилизации был выбран 3-х осевой мотоподвес на базе контроллера BGC Storm32.
Питание: 11,1-16,8 в
Процессор: STM32F103RC на 72 МГц
Рабочий ток: 350mA
Драйвер двигателя: DRV8313 с защитой от короткого замыкания, от перегрева
Двигатель: 2 шт. 2204 260kv и 1 шт. 2805 145kv бесщёточного типа
Встроенный гироскоп и датчик ускорения MPU6050
Шаг: от-90 ° до + 90 °
Рулон: от-25 ° до + 25 °
Рыскания: от-90 ° до + 90 °
Процесс прошивки.
Базовая станция управления
Для передачи видео на расстоянии технология WI-FI на 2.4 ГГц не подходит, т.к. не позволяет передавать потоковое видео без задержки, поэтому была выбрана система на Boscam RC805 FPV 5.8 GHz и TS351.
Boscam RC805 FPV 5.8 GHz
TV тюнер EasyCAP
Мощность: 12 В ± 5%
Получают ток: 100mA
Приемник канал: 8 каналов
Камера и передатчик
Камера Clestech CVBS
TS351
Питание: 12 в.
Встроенный микрофон аудио устройство захвата
Светочувствительная матрица: SONY
Двойной выход AV
Подключение: CCTV
Источник питания: 12 В постоянного тока
Угол обзора: 90
Видео: PAL/NTSC
Формат сжатия: H.264
Вес: 55 г (с антенной)
Объектив: 3.6 мм
8 Каналы по выбору
Тип камеры: аналоговая
Как выглядит станция управления
В итоге у меня получилась такая конструкция:
Смета:
Шасси
200
Arduino MotorShield v.2.0
300
Arduino Micro
150
RadioLink AT9 + R9D
6000*
3 axis gimbal + storm32
3000
Boscam RC805 + TS351
1500
TV тюнер Easycap
500
Камера 1200 tvl Clestech CVBS Camera
1000
Аккумулятор 3S 11.1 в
350
ИТОГО
13000
*Данное устройство планирую использовать для управления квадрокоптером.