Bluetooth пульт из джойстика Sega
Я продолжаю заниматься моделированием и постройкой роботов. Я уже писал инструкцию по созданию пульта для управления моделями и роботами. Пульт создан на основе старого джойстика от Sega. У данного джойстика есть четыре стрелки и 8 кнопок, достаточно для управления машинкой или небольшим роботом. Управление осуществлялось посредством ИК светодиода. Сегодня я напишу инструкцию по модернизации данного пульта, а именно переоборудование его в Bluetooth пульт. В зависимости от используемого Bluetooth модуля пульт или сам будет подключаться к заранее запрограммированному устройству или можно будет подключаться к пульту. Я опишу оба варианта. Нам понадобится:
— Джойстик от приставки Sega
— Arduino Pro Mini 3.3v 8MHz
— USB-TTL
— 2 Ni-Mn аккумулятора 1.2v 1000mA
— Bluetooth модуль HC-05 или HC-06
— Красный светодиод
— Синий светодиод
— Резистора 2x75Om, 2x5Om, 1x2Om
— Коннектор PLSх5 «мама»
— Термоклей
— Провода
— Отсек для батареек 4xAAA
— Разноцветные провода
— Паяльник, припой, канифоль
— Прямые руки
Шаг 1 Выбор Bluetooth модуля
Для связи необходимо два модуля. Один мы вставим в пульт, а второй будем подключать к машинке или роботу. Существует огромное количество Bluetooth модулей. Они различаются функциями и поддерживаемыми протоколами связи. Примерный список модулей, которые встречаются:
— HC-03, HC-04(HC-04-M, HC-04-S) на чипе BC417143 ;
— HC-05, HC-06(HC-06-M, HC-06-S) на чипе BC417143;
— HC-05-D, HC-06-D;
— HC-07 – модуль с чипом CSR 41C6;
— HC-08 – модуль с ультранизким энергопотреблением и протоколом Bluetooth 4.0;
— HC-09 – самый новый модуль, предназначенный для замены HC-06 и HC-07.
Я остановился на двух модулях HC-05 и HC-06, так как они оптимальны в соотношении цена\функционал. Они поддерживают протокол связи – Bluetooth Specification v2.0+EDR. Радиус действия – до 10 метров (уровень мощности 2). Совместимы со всеми Bluetooth-адаптерами, которые поддерживают SPP. Объем flash-памяти (для хранения прошивки и настроек) – 8 Мбит. Работают на частоте радиосигнала – 2.40 .. 2.48 ГГц. Хост-интерфейс – USB 1.1/2.0 или UART. Они обладаю небольшим энергопотреблением – ток в течение связи составляет 30-40 мА. Среднее значение тока около 25 мА. После установки связи потребляемый ток 8 мА. Эти модули легко найти, они являются самыми распространёнными. Модули очень похожи, а основное отличие между ними в том, что HC-05 может работать как в режиме ведущего (master), так и в режиме ведомого (slave). HC-06 может являться только ведомым устройством. Проше говоря, HC-06 не может сам обнаружить парное устройство и наладить с ним связь, он может лишь подчиниться ведущему. Модули продаются в виде двух спаянных вместе плат. Меньшая из них — заводской модуль. Большая — специальная макетная платка для DIY. Так выглядит меньшая плата с чипом BC417:
А так сами DIY модули HC-05 и HC-06:
Вы можете приобрести модуль без макетной платы. Он стоит немного дешевле, но тогда придется ставить стабилизатор напряжения 3.3 V для модуля. Также расстояние между контактами маленькое и придется помучится, припаивая к модулю провода.
Для установки связи между пультом и роботом или машинкой необходимо настроить два Bluetooth модуля на друг друга. В данном случаем модуль HC-05 мы настроим так, чтобы он находил и подключался к HC-06.
Шаг 2 Настройка HC-06.
Вначале необходимо подключить HC-06 к компьютеру. Сделать это можно подключив модуль через USB-UART переходник. В данном случае подключение, следующее:
Bluetooth – USB-UART
TX – RX
RX – TX
VCC — +5
GND – GND
Если под руками нет USB-UART можно записать в любую Arduino плату следующий скетч:
Подключить по следующей схеме:
Bluetooth – Arduino
TX – pin 2
RX – pin 3
VCC — +5
GND — GND
Затем открываем любую терминальную программу, выбираем com-порт к которому подключен HC-06, скорость по умолчанию 9600, NL и CR не нужен. Если с HC-06 не установлено Bluetooth соединение, модуль находится в режиме ввода AT команд. Если модуль не отзывается попробуйте перегрузить его, отключив плюсовой провод и подключив его снова. И вводим следующие команды:
«AT» — без кавычек, должен прийти ответ «OK».
«AT+ADDR» — этой командой мы узнаем уникальный адрес HC-06, следует записать этот адрес
«AT+BAUD7» — устанавливаем скорость 57600
«AT+RESET» — перегружаем модуль
Следующие команды не обязательно вводить, но на всякий случай лучше их знать:
«AT+NAME » — смена имени устройства, имя вводится латинским буквами, без скобок.
«AT+ORGL» — возвращение модуля к заводским настройка
На этом настройка HC-06 закончена.
Шаг 3 настройка HC-05.
Подключаем модуль аналогично HC-06. Далее открываем любую терминальную программу, выбираем com-порт на котором висит USB-UART или Arduino, по заводским настройка скорость связи 9600, но я встречал и со скоростью 38400, если вы не меняли ее выбираейте 9600, не получиться соединиться меняем на 38400. Также стоит включить параметры NL и CR. Для перевода в режим ввода AT команд нужно нажать кнопку на плате HC-05, после этого вводим следующее:
«AT» — вводится без кавычек должен прийти ответ «OK». Если пришел продолжаем вводить команды дальше.
«AT+ROLE=1» — этой командой мы устанавливаем роль модуля цифрой:
0 — ведомый, 1 — ведущий, 2 — ведомый в цикле*. Должен прийти ответ «+ROLE:1\r\n» или «OK»
«AT+CMODE=0» — модуль в роли ведущего подключается только к тому Bluetooth устройству, адрес которого указан командой «AT+BIND».
«AT+BIND:1234,56,123456» — для установки соединения с вашим HC-06 нужно вписать сюда его адрес. После ввода всех команд модуль находится в роли ведущего (ROLE=1) и установлен режим подключения к фиксированному адресу (CMODE=0), он будет подключаться только к тому Bluetooth устройству, адрес которого указан данной командой. Части адреса вводятся: при установке — через запятую, а при ответе — через двоеточие. Придет ответа: «+BIND:1234:56:789ABC \r\n» или «OK»
«AT+UART=57600,0,0» — устанавливаем скорость 57600 бит/сек, стоп бит представлен цифрой: 0 — один, проверка представлена цифрой: 0 — без проверки
Если вы запутались в настройках модуля или он перестал работать правильно попробуйте следующую команду:
«AT+ORGL» — Модуль сбрасывает следующие настройки IAC=9e8b33, ROLE=0, CMODE=0, UART=38400,0,0, PSWD=1234, NAME=hc01.com.
А затем заново проведите настройку нужных вам параметров.
Таким образом мы создали устойчивую связь между HC-05 и HC-06. При включении модулей HC-05 будет устанавливать соединение с HC-06. По личному опыту могу сказать, лучше вначале включать HC-05, а затем HC-06. Если соединение пропало перегружать нужно оба модуля.
Шаг 4 Подготовка пульта.
Данный шаг подробно описан в предыдущей инструкции по адресу:
Необходимо выполнить шаги с 1 по 4. Припаивать ИК диод необязательно, хотя и мешать он не будет.
Шаг 5 Подключение Bluetooth модуля.
Я советую в пульт установить HC-06. Так как для изменения настроек модуля нужно будет только залить соответствующий скетч в Arduino Pro Mini. В случае с HC-05 придется разбирать пульт, чтобы нажать на кнопку перевода в режим AT команд. Соединяем все по следующей схеме
Джойстик – Arduino
Стрелка вверх — pin 2
Стрелка вниз – pin 4
Стрелка влево — pin 5
Стрелка вправо — pin 6
Кнопка A — pin 8
Кнопка B — pin 10
Кнопка C — pin 7
Кнопка X — pin 12
Кнопка Y — pin 11
Кнопка Z — pin 9
Кнопка Start — pin 14 (A0)
Кнопка Reset — RST
Общий — GND
Bluetooth – Arduino
TX – pin 16 (A2)
RX – pin 17 (A3)
VCC — + 5
GND – GND
HC-05 подключаем к ваше машинке или роботу которым собираетесь управлять. Варианты подключения и скетчи вы найдете в других моих инструкциях. При написании скетча робота надо установить скорость соединения 57600, и использовать в скетче библиотеку SoftwareSerial.
Шаг 6 Подготовка среды и прошивка.
Для написания и редактирования скетча лучше всего использовать Arduino IDE. Версия Arduino IDE должна быть не ниже чем 1.8. Скачиваем Arduino IDE с официального сайта:
Затем необходимо добавить в Arduino IDE библиотеку. В скетче используется одна библиотека SoftwareSerial.h (для связи с Bluetooth модулем):
Потребуется скачать и установить ее. Установить библиотеку можно распаковав архив и переместив распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE. Или можно воспользоваться встроенным средством добавления библиотек — не распаковывая скачанный архив, выбрать в среде Arduino IDE меню Скетч – Подключить библиотеку. В верху выпадающего списка выбрать пункт «Добавить .Zip библиотеку». И указать место расположения скачанного архива. После установки библиотеки нужно перезагрузить Arduino IDE.
Прошивается наш пульт также, как и предыдущая версия пульта, через коннектор подключенный к USB-TTL, зарядка тоже через него. При заливке скетча необходимо нажать Reset.
Источник
Делаем еще один джойстик (геймпад) на Arduino
Шла обычная пятница, ничто не предвещало беды…
Но червь «нужно что-то сделать» уже начал свою работу. После прочтения статьи я вспомнил, что у меня в барахле лет 15, если не больше, валяется сеговский геймпад. Забрал я его с твердым намерением сделать геймпад на процессоре AVR (про ардуино я тогда и не слышал, но пару небольших проектов на AVR сделал).
Еще больше утвердила мое намерение статья про MSX, и в пятницу я решил — делаю!
Из закромов был вытащен на белый свет сеговский геймпад в разобранном состоянии. К моему изумлению он был в полном комплекте (ну, если не считать порезанные дорожки и отсутствующий оригинальный контроллер), не хватало только 2-х болтиков.
В качестве контроллера я решил использовать Beetle, так как он был заказан мной когда-то, но пока не испробован, да и не очень понравился «малым количеством портов».
И тут меня ждало разочарование — портов 6, кнопок 10. Горю моему не было предела, но мозг таки нашел решение, для начала я решил попробовать собрать прототип из 2-х кнопок, так как я решил использовать фокус с диодом, чтобы опрашивать 10 кнопок с помощью 6 выводов. Практически окрыленный, я засел за проверку… И тут случилась следующая неприятность — кнопок на джойстике больше, чем 10! В общем это был тот момент, когда нужно было смотреть в документацию, хотя идей было много — например припаять (ага, моим паяльником, который накрывает почти все ножки с одной стороны микросхемы), или поискать просветления в интернете.
Документация же четко сказала, что портов у Beetle на самом деле не 6, а 10, что сделало дальнейший процесс скучным (так я думал). (Использование 8 выводов дает возможность опрашивать 2 * 6 = 12 кнопок, что мне и было нужно)
Схема подключения — матрица 6 х 2, потому как оригинальная плата была разведена удобным мне образом. (Кстати в процессе предыдущей переделки дорожки были порезаны, чтобы подключить клавиатурный контроллер, пришлось восстанавливать, вышло страшненько)
Схема получившегося геймпада:
Быстро накидав пример я убедился что он не работает… Не понял?! Пример то простейший. Подумав, сообразил, что цифровому пину не хватает того сопротивления, что дают резиновые токопроводящие кнопки, немного изменил схему, теперь читается аналоговый сигнал и сравнивается с половиной максимума. Перепаиваю контакты, переписываю программу и… ничего не работает, совсем. Контроллер не определяется, все пропало. Код проверен, и перепроверен, все должно работать! А контроллер не видится ни в какую. Мотивация падает, делаем перерыв.
Через некоторое время безуспешно поигравшись с Beetle, ну все, убил контроллер своим паяльником, с сожалением достаю из закромов Arduino Micro, прошиваю прошивку и снова тишина! Становится понятно, что-то не так с кодом, в конце концов нахожу банальную причину — бесконечный цикл в loop(), исправляю, но зашить то не могу! Оказывается проблема, когда контроллер не видится решается нажатием на резет во время прошивания (или замыканием пинов в моем случае)
В итоге получился сеговский геймпад, проверен, работает, я счастлив: поиграл в Metal Gear, Felix The Cat, Super Mario.
P. S. «Трюк со светодиодом». Конечно не обязательно использовать светодиод, обычный диод лучше подходит, суть простая, вместо двух выводов использовать один, соединенный с разными кнопками через 2 диода:
Источник
Геймпад (игровой джойстик для ПК) из старой клавиатуры и бытового хлама
В данной самоделке необходимы следующие материалы и инструменты:
— старая клавиатура;
— тактовые кнопки;
— провода;
— обрезки фанеры;
— мелкие шурупы;
— картон;
— шпатлёвка по дереву;
— клей ПВА;
— паяльник и принадлежности;
— отвёртка;
— электролобзик;
— ручной лобзик;
— шуруповёрт;
— клеевой пистолет.
Для начала разберём старую «клаву».
Откручиваем все болтики снизу и клавиатура легко разделяется.
От клавиатуры нам необходима только плата.
Отложим пока это всё в сторону и возьмём небольшой обрезок фанеры.
Подготовим шаблон из картона.
Произведём по сделанному шаблону разметку на фанере.
По разметке отрежем всё лишнее с помощью электролобзика.
При помощи наждачной бумаги уберём неровности и заусенцы.
Вот такая должна получиться заготовка.
Изготовим таким же образом копию предыдущей заготовки.
Отступаем 1 см от края и наносим с помощью циркуля разметку.
Просверлим отверстие возле линии разметки, необходимое для прохождения пилки электролобзика.
Далее вырезаем внутреннею часть заготовки.
Вот так должно выглядеть.
Две получившиеся заготовки необходимо склеить между собой.
Равномерно распределим клей по поверхности.
Прочно прижимаем части между собой.
После высыхания клея и хорошего соединения, сделаем обработку наждачной бумагой.
Приготовим тонкую фанеру
По предварительно сделанной разметке (по форме изготовленной детали) ручным лобзиком (аккуратно, так как фанера тонкая) выпилим крышку.
Вот, что должно у нас получиться.
Прикладываем крышку на основную деталь корпуса.
Сверлим тонким сверлом крепёжные отверстия.
По ходу работы в сделанные отверстия вкручиваем шурупы, чтобы избежать смещения.
После фиксации крышки произведём чистовую обработку.
Вырезаем шаблон в виде крестика.
Прикладываем с левой стороны и делаем разметку.
После сделаем вот такой шаблон с шестью ровными прорезями в виде кружочков.
С правой стороны сделаем разметку.
Примерный внешний вид будущего джойстика.
По разметке сделаем углубления, не применяя больших усилий (сквозных отверстий быть не должно).
Дальше маленьким сверлом в наших углублениях уже делаем отверстия насквозь.
В верхней части и на лицевой стороне корпуса ещё просверлим два сквозных отверстия.
И наконец приступим к электронной начинке.
Разберём старую ненужную электронику и найдём платы с тактовыми кнопками.
С плат выпаиваем нужные нам кнопки.
Ко всем кнопкам припаиваем по два провода.
В углубления корпуса установим кнопки, продёргивая провода в сквозные отверстия и проклеиваем их с обратной стороны горячим клеем.
Пользуясь шпаклёвкой по дереву замажем щели.
Обработаем поверхность наждачкой.
Для эстетичности покрасим корпус.
Вернёмся к плате демонтированной из клавиатуры.
Отпаяем «родной» кабель.
Также выпаиваем один светодиод и подпаиваем к нему провода.
Устанавливаем светодиод в отверстие на лицевой стороне корпуса, дополнительно можно закрепить горячим клеем.
Продёргиваем в отверстие сверху usb кабель.
Возьмём плату от «клавы» и припаяем светодиод, соблюдая полярность.
Провода от usb кабеля паяем по указанной схеме.
Затем при тщательном осмотре дорожек определим контакты игровых кнопок.
Зачищаем нужные нам контакты на плате.
Подпаиваем к контактам провода от соответствующие кнопкам на будущем геймпаде.
Всё разместив в корпусе, закрываем крышку.
И вот наш великолепный девайс готов.
Включаем любимую игрушку и проводим испытание.
По словам автора самоделки всё отлично работает, хотя я в этом не уверен, так как кабель usb был припаян напрямую к плате где раньше был кабель ps/2, а они отличаются по некоторым функциям, кто, что думает поэтому поводу, пишите в комментарии.
Но не спешите расстраиваться, потому, что устройство имеет право на жизнь при некоторых дополнениях или изменениях, иначе я бы это не публиковал, а именно: применение специального переходника с ps/2 на usb, благо сейчас на «Алике»(AliExpress) всё продаётся, либо использовать в этой самоделке плату от usb клавиатуры.
Источник