Этот проект задумывался для обучения и ознакомления с существующими технологиями для удаленного управления устройствами, а также попытка понять, как можно в будущем создать автономное робототехническое устройство, взаимодействующее с человеком.

Моторизированное шасси

На блошином рынке за копейки была приобретена часть детской игрушки от радиоуправляемого автомобиля. Это выглядело так (в игрушке была своя китайская электроника).

1.jpg

Шаг 1. Управление двигателем.

Шасси было разобрано и снят двигатель постоянного тока DC. Управление маломощным двигателем можно осуществлять непосредственно с самой платы Arduino. Вот как может выглядеть схема:

2.png

Скетч 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 работает очень быстро, цикл повторяется несколько тысяч раз в секунду! Поэтому малейшее изменение положения движка потенциометра сразу же сказывается на частоте вращения двигателя.

Пример работы с сервоприводом «Радиальный датчик расстояния»

3.jpg

Мне в изучении очень помогла книга Джереми Блюма «Изучаем Arduino». Всем советую!

5.png

Шаг 2. Подключение драйвера двигателей и радиоуправление.

На AliExpress был заказан драйвер двигателей Arduino Motor Shield V.1.

6.png

Характеристики:

Микросхема

L293D

Напряжение питания

+4,5...+ 25 В

Номинальный ток для каждого канала

0,6 А

Пиковый ток для каждого канала

1.2 А

Количество одновременно подключаемых двигателей

4 шт

Количество одновременно подключаемых шаговых двигателей

2 шт

Количество подключаемых сервомоторов

2 шт

Реверс каждого двигателя

да

Независимое управления всеми каналами

да


Плата очень просто подключается к Arduino и в интернете полно примеров как управлять двигателями используя этот драйвер (вставить ссылку).

Для управления движущейся моделью будем использовать аппаратуру радиоуправления. Передача команд к модели происходит по радиоканалу с помощью модуляции FM (Frequency Modulation). Аппаратура радиоуправления состоит из передатчика RadioLink AT9 и размещенной на модели приемника R9D. Arduino получает и обрабатывает команды от приемника.

7.png

Характеристики:

Передатчик 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

8.png

Микросхема

TB6612

Используемый протокол управления

I2C

Напряжение питания

5 – 12 В

Номинальный ток для каждого канала

1,2 А

Пиковый ток для каждого канала

3 А

Количество одновременно подключаемых двигателей

4 шт

Количество одновременно подключаемых шаговых двигателей

2 шт

Количество подключаемых сервомоторов

2 шт

Реверс каждого двигателя

да

Независимое управления всеми каналами

да

 

Чтобы занимать меньше места в коробке модели решил переделать плату под Arduino Micro.

 

9.png

Параметры платы:

Микроконтроллер

ATmega32u4

Рекомендуемое напряжение питания

7-12 В

Цифровых вводов/выводов

20

ШИМ

7

Аналоговые выводы

12

Максимальная сила тока

40 mAh

Flash память

32 КБ

SRAM

2,5 КБ

EEPROM

1 КБ

Тактовая частота

16 МГц

 

Двигатель заработали нормально, также пришлось подключить второй канал радиоприемника для управления поворотом колес.

ШАГ 3. Собираем всю конструкцию.

Схема подключения.

10.png

 

Полный скетч:

Система стабилизации и управления камерой

В качестве системы стабилизации был выбран 3-х осевой мотоподвес на базе контроллера BGC Storm32.

 

 

11.png

12.png

Питание: 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

13.png    

14.png    

Мощность: 12 В ± 5%

 

Получают ток: 100mA

 

Приемник канал: 8 каналов

 

Камера и передатчик

Камера Clestech CVBS

TS351

15.png

16.png

Питание: 12 в.

Встроенный микрофон аудио устройство захвата

Светочувствительная матрица: SONY

Двойной выход AV

Подключение: CCTV

Источник питания: 12 В постоянного тока

 

Угол обзора: 90

Видео: PAL/NTSC

Формат сжатия: H.264

Вес: 55 г (с антенной)

 

Объектив: 3.6 мм

8 Каналы по выбору

Тип камеры: аналоговая

 

 

Как выглядит станция управления

17.jpg

В итоге у меня получилась такая конструкция:

19.jpg

Смета:

Шасси

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

 

*Данное устройство планирую использовать для управления квадрокоптером.