Arduino пульт



Я частенько делаю роботов или игрушки на основе Arduino или подобных плат. И конечно хотелось управлять всем этим. Вариантов много, но я выбрал и опробовал три.

Самое первое, что мне пришло в голову это ИК пульт. Подключив к своему гусеничному шасси ИК приемник от старой игрушки, я начал искать решения насчет пульта. И здесь два варианта:

1. использовать пульт от телевизора или другой техники, что есть под руками. Тогда возникает много возни, проблем и требует много времени. Вначале надо считать коды кнопок с пульта, а затем записать их в свою прошивку. Еще одна проблема заключается в том, что пульт посылает сигнал при нажатии кнопок один раз, не повторяет его (если устройство движется или далеко, то за один раз приемник может его не считать), и ничего не отправляет при отпускании кнопки, что весьма неудобно, когда надо управлять двигающейся техникой. Ну и не хочется управлять телевизором и машинкой одновременно.

2. сделать свой пульт.

Вот по второму путь я и пойду. Для основы использовал старый джойстик от приставки Sega. Там есть все что нужно. Четыре стрелки (удобно при управлении машинками) и 8 кнопок. В качестве «мозгов» Arduino Pro Mini 3.3v 8MHz.

Разобрав джойстик, видим плату с контролером, отпаиваем все провода от нее. Ножом разрезаем все дорожки у контролера на плате, чтобы он нам не мешал и не конфликтовал с Arduino. Около каждой кнопки есть небольшой кружок с оголённой дорожкой. Взяв паяльник, припаиваем к каждому кружку по проводу, а также найдя общий провод припаять и к нему провод. Завернув провода назад, получается примерно так:

С обратной стороны на двусторонний скотч приклеиваем нашу Arduino. Небольшое отступление по поводу выбора Arduino. В принципе можно использовать любую плату, главное чтобы она поместилась внутрь джойстика. Припаиваем повода по следующие схеме:
Джойстик Arduino
Стрелка вверх 2
Стрелка вниз 4
Стрелка влево 5
Стрелка вправо 6
Кнопка A 8
Кнопка B 10
Кнопка C 7
Кнопка X 12
Кнопка Y 11
Кнопка Z 9
Кнопка Start 14 (A0)
Кнопка Reset RST
ИК светодиод + 3
Общий GND


Сделал вывод для подключения USB-TTL. Кнопка Reset нужна для перезагрузки Arduino при прошивке.

Для индикации включения вставил светодиоды. А также выключателя.

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

Аккумуляторы внутрь не поместились, поэтому припаял к выключателю плюсовой провод от отсека для батареек, минус к GND Arduino. Приклеил отсек к задней крышке джойстика. Получает вот так:

Признаюсь честно сборка этого джойстика – дело не из легких. Провода норовят вылезти наружу или попадают под внутренние части не давая закрыть корпус. У меня получилось не сразу, но через попыток пять (плюс — минус десять) собрался.
При написании прошивки я записал случайный набор чисел (коды) на каждую команду. Эти коды использую при написание прошивки управляемого устройства. Коды посылаются по три раза, что исключает возможность пропуска команды. При отпускании кнопки также отправляется код, который используется для остановки управляемого устройства.
IR
Подвожу итог: управление уверенное, но дальность маленькая, возможно, проблема в недостаточном напряжении или силе тока вывод Arduino Pro Mini.

Так как ИК пульт меня не устроил, в тот же корпус добавил передатчик радио модуля на 433 МГц. Из-за несчастного случая прошивка не сохранилась. Опробовав этот вариант, могу сказать следующее: дальность хорошая, но как только включается нагрузка в виде электромотора, помехи мешают приему сигнала и управление отсутствует. Уверенно работает только с маленькими моторчиками (типа таких, которые стоят в SG-90)

Пульт на радио модуле меня тоже не устроил, поэтому перешел к третьему варианту – Bluetooth модулю. В пульт вставил HC-06. В интернете полно инструкции, поэтому не буду рассказывать про настройку подробно. У меня модуль HC-05 стоит на шасси и настроен на подключение к HC-06 в пульте. Логичнее наверно сделать наоборот, но для перехода в режим AT команд модуля HC-05 надо нажать кнопку на модуле (неудобно каждый раз когда я решу что-нибудь поменять разбирать пульт), а модулю HC-06 достаточно разъединения. И тогда достаточно записать специальную прошивку в ардуино (Arduino выступает в роли простого передатчика от компьютера к HC-06) и отправлять команды через терминальную программу или Arduino IDE . Модули работаю на скорости 57600, на мой взгляд, этого достаточно.
Отправка AT команд
Bluetooth пульт
Надеюсь вам было интересно. Если есть вопросы – пишите.


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение