Дистанционно управляемый танк (машинка) на Arduino

Опубликовано 07.04.2014 8:39:00


Сегодня был чудесный весенний день, мы выбрались на природу, отлично провели время, проверили работу написанной нами программки Z-Controller.

И самое главное - протестировали на дальность работы блютуз модуль HC-06, а также радиомодули APC220.

Ну, обо всем по порядку.

 

 

Детали требуемые для сборки:

• Arduino UNO, Duemilanove либо любая другая

• Z- Motor Shield L293D либо, для более крупных моделей, Z- Motor Shield L298P.

• Соединительные провода "папа-мама"

• Блютуз модуль (в нашем случае HC-06) или радиомодули APC220 

• Платформа на которую мы будем крепить

• Аккумулятор либо батарейки


 

Итак, начнем с железной части. Сборка машинки производится элементарно. Одним движением руки вставляем шилд в плату Arduino, затем подключаем к винтовым клеммникам моторы и подаем на плату питание от аккумулятора либо батареек.

Остается только подключить блютуз или радиомодуль с помощью джамперов "папа-мама". 

 Bluetooth HC-06  Arduino
 VCC  +5V
 GND  GND
 TX  RX
 RX  TX

 

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


 

Дистанционное управление на bluetooth модуле HC-06

 

Начнем с блютуза. Про соединение с компьютером можно прочитать  здесь

  

 

Управление будет производиться с компьютера через написанную нами программку Z-Controller. Скачать её можно здесь, руководство пользователя здесь.

Программка получилась функциональной. В неё можно добавлять свои кнопки, называть их как хочешь, привязывать к ним какие хочешь клавиши на реальной клавиатуре, посылать в порт задаваемые значения при нажатии и отпускании клавиши. Иными словами - дай двум людям программу и у каждого она будет со своим интерфейсом.

В связи с этим, для управления танком необходимо будет загрузить в программу файл настроек под наш код (скачать).

 

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

 

Управление танком без контрольного символа

Возьмем, к примеру, простой до безобразия код без контрольного символа.

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

 
Пример программного кода

 

Как мы видим из скетча, при получении символа "W", наш танк поедет вперед и остановится когда мы отпустим клавишу и в порт будет послан символ "T" (т.к. символ "T" у нас задан на отпускание клавиши W).

А теперь представим, что произошел обрыв связи после отправки символа 'W' (или устройство вышло из радиуса действия) и последующие символы 'T' уже не получить. Как результат - наш робот едет вперед до победного, например, куда-нибудь в воду :)

На приведенно ниже видео мы и продемонстрируем потерю управляемости при выходе из радиуса действия блютуза.

Открываем Z-controller, подключаемся к порту которым отпределился блютуз и едем.


 

Управление такном с контрольным символом

Перейдем к управлению с контрольным символом. Z-Controller по настройкам из конфигурационного файла спамит контрольный символ "P" каждые 100 мс. Теперь, если связь оборвалась, и в течении 150мс на контроллер не пришел сигнал "P", то танк остановится.

Код будет одинаковым и для HC-06 и для APC220

 
Пример программного кода

 

 

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

На втором видео уже видно, что устойчивая, без обрывов дистанция работы блютуза лежит в пределах 15 метров. Затем сигнал очень плохой, как видно на видео, сигнал все-таки будет местами доходить, и танк будет выполнять действия, но это уже не тот сигнал, который нужен для полноценного управления.


 

Дистанционное управление на радиомодуле APC220

 

Подключение модуля и программный код для работы точно такие же как и у bluetooth HC-06.

Руководство пользователя данного модуля с компьютером здесь

 Радиомодули APC220  Arduino
 VCC  +5V
 GND  GND
 TX  RX
 RX  TX

 

Танк укомплектованный радиомодулем APC220

 

Маневрирование танком на APC220

 

Управление танком на APC220 на дальней дистанции ( примерно 70-80м)

 

Хочется сказать пару слов об APC220. Радиомодули отличные, но есть некоторые особенности при работе. При расположении модуля на танке, он находился на высоте 5 см от земли ( т.е. на него распространялся фактор поглощения радиосигнала подстилающей поверхностью), и максимальная дистанция управления танком составила метров 100. Ради интереса я взял танк в руки, поднял на уровень груди и пошел дальше, зашел в лес, прошелся еще метров 200-250 и сигнал ловил отлично. Дальше не пошел т.к. тропка начала закругляться. В итоге можно прийти к выводу, что для получения хорошей дистанции, радиопередатчики следует крепить как можно выше от земли.


 

Сборка идентичной дистанционно управляемой машинки,

но на базе Arduino и модуля драйвера двигателей L298N

 

Сборка идентичной дистанционно управляемой машинки,

но на базе Arduino и Adafruit Motor Shield


 

Купить

Купить в России Z- Motor Servo Shield (L293D + LM338T)

для более крупных моделей

Купить в России Z- Motor Servo Shield (L298P + LM338T)


А как же комментарии?