Хелпикс

Главная

Контакты

Случайная статья





ТЕЛЕУПРАВЛЕНИЕ (ДЖОЙСТИК)



ТЕЛЕУПРАВЛЕНИЕ (ДЖОЙСТИК)

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

В состав имеющегося в нашем распоряжении конструктора VEX входит контроллер на основе Arduino Mega 2560, дополненный модулем ВТ (производства компании «Технолаб»). Попытка подключить к нему джойстик с ВТ-интерфейсом от соревновательного набора VEX успехом не увенчалась. Не удалось также подключить и джойстик от mBot (тоже ВТ-интерфейс). Поскольку использовать смартфон в качестве устройства управления нам не было разрешено («участникам запрещается иметь какие-либо средства связи»), то вариант с написанием приложения или адаптацией готового под Android для управления роботом также отпадал. Хотя для пробы мы это сделали J.

Поэтому было принято решение сделать самодельный джойстик. У него должен быть как минимум один «грибок» (собственно джойстик) и несколько (минимум 4) дополнительных кнопок. За основу был взят известный Joystick Shield, отлично одевающийся стандартную на Arduino Uno, дополненный самодельным же Battery Shield (поклон с сторону компаний «Амперка» и «iArduino», предлагающие подобные девайсы за совершенно сумасшедшие деньги – в районе 1т.р.). Поскольку с ВТ-модулем работа не задалась, в качестве беспроводного интерфейса было решено посмотреть в сторону радиомодулей.

Из имеющихся альтернатив (RF433 и nRF24L01) мы выбрали последний по ряду причин:

1. На Joystick Shield, который мы планировали использовать в качестве основы для изготовления самодельного джойстика, уже имеется разъём под nRF24L01;

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

3. На уроках технологии мы уже имели дело с этими модулями, работа с ними достаточно проста;

4. Эти модули показывают устойчивую работу на требуемом расстоянии (до 20 метров) при выполнении ряда условий (об этом ниже).

К сожалению, в отличие от оригинальной версии Mega 2560, в имеющемся у нас варианте контроллера отсутствует интерфейс SPI (снова поклон в сторону фирмы «Технолаб»), по которому, собственно, и должен подключаться nRF24L01. Поэтому пришлось собрать «конвертор интерфейсов» на основе всё той же Arduino Uno. Он должен принимать по эфиру сигналы от джойстика и транслировать их в порт UART. Поскольку у Mega 2560 портов UART аж три штуки, проблем с этим делом не предвиделось.

Устойчивая работа модуля nRF24L01 обеспечивается достаточным питанием его от стабильного источника +3,3 В. К сожалению, Arduino Uno не в состоянии обеспечить это условие. Решения два:

1. Напаять пару фильтрующих конденсаторов (10 мкф электролитический + 1 мкф неполярный) непосредственно на модуль. Это снимет просадку питания при фактически импульсной работе nRF24L01;

2. Использовать специальный переходник, позволяющий питать модуль от шины +5 В и содержащий в себе стабилизатор питания на +3,3 В.

Разумеется, мы выбрали второй вариант.

Таблица подключения радиомодуля nRF24L01 к Arduino Uno:

nRF24L01 Arduino Uno
CE
CSN
SCK
M0
M1

 

Pin’ы с 10 по 13 определяются интерфейсом SPI, а 9 и 10 могут при необходимости быть переопределены программно.

Программы для передатчика (джойстик) и приёмника (конвертор интерфейсов) с соответствующими комментариями – на флэшке.

UART Arduino Uno, служащей конвертором интерфейсов, соединяется тремя проводами с разъёмом UART3 Arduino Mega 2560:

Arduino Uno UART3 Arduino Mega 2560
TX RX
+5V +5V
GND GND

 

Использовать полноценный 4-х проводный интерфейс между нашим контроллером и конвертором интерфейсов нет смысла: передача идёт только в одном направлении, поэтому TX Arduino Mega 2560 можно не соединять с RX Arduino Uno. Конвертор интерфейсов получает питание по UART, отсюда следует простой вывод: при перезапуске Arduino Mega 2560 контроллер интерфейсов тоже перезапускается (питание на UART пропадает).

В программе для Arduino Mega 2560 мы просто читаем поток данных из UART3. Разумеется, в ней следует предусмотреть пропадание сигнала в эфире и неизбежные искажения. Как показывает практика, после включения джойстика и контроллера, устойчивое соединение между ними устанавливается через 20-30 секунд.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.