Дистанционное управление по bluetooth

Обновлено: 05.07.2024

После приобретения недорогого 7" китайского планшета и экспериментами с взаимодействием с Arduino по USB и Bluetooth захотелось сделать что-то более серьезное и полезное для своих детей. Так родилась идея сделать машинку с управлением от акселерометра Android-устройства и связи по Bluetooth каналу. До этого я никогда не увлекался робототехникой или РУ управлением, но желание было. Были поставлены три цели:

Управление машинкой (или гусеничной платформой) осуществляется путем наклона Android-устройства. Т.е. наклонили вперед - машинка едет вперед, наклонили влево - машинка поворачивает на лево, назад - машинка едет назад. Причем скорость движения или поворота зависит от степени наклона устройства. Чувствительность и величина наклона устанавливается в настройках Android-приложения. Данный способ управления достигается за счет доступа из программы к встроенному акселерометру (который сейчас имеется во всех современных Android смартфонах и планшетах).

Реализован также гибридный способ управления: газ - при помощи ползунка на экране, а поворот модельки - при помощи поворота Android-устройства (как виртуальный руль). Для заднего хода - отдельная кнопка.
Предусмотрен и обычный способ управления от кнопок на экране, но он менее функционален и в основном служит для отладки и проверки работоспособности.
В дополнении ко всему, я ради спортивного интереса реализовал и тач управление, т.е. на экране отображается круг, и чем выше двигаете в нем маркер, тем быстрее едет машинка, чуть повели пальцем влево - машинка поворачивает.

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

Компоненты

1. Android устройство

Итак, первое что прежде всего потребуется - это любое Android устройство: смартфон, планшет, часы и т.п., желательно с датчиком наклона (акселерометром) и Bluetooth (или возможностью подключения внешнего модуля через USB OTG). Я использовал китайский Ainol Aurora с внешней USB Bluetooth флэшкой. Цена такого устройства на сегодняшний день составляет менее 100$.

Android устройство

2. Шасси для машинки

Шасси


При выборе шасси обращайте внимание на питание и мощность двигателей, а также на обороты моторчиков и наличие редуктора. Хотя большинство платформ содержат стандартный 6В моторчик с редуктором.

Для принципа управления описанного в данном проекте, больше всего подходит гусеничная платформа, но т.к. у меня пока что ее нет, я реализовал проект на основе 4WD платформы.

3. Контроллер машинки

Как я уже говорил, проект планируется сделать мультиплатформенным. На текущий момент проект CxemCAR реализован для следующих аппаратных платформ:

Контроллеры


"Мозги" робота не требовательны к быстродействию МК и количеству периферии, необходимый минимум, который должен поддерживать микроконтроллер: 2 ШИМ и UART.

4. Bluetooth модуль

В качестве Bluetooth модуля использован дешевый китайский UART модуль HC-06. Подойдут модули вида HC-03, HC-04, HC-05, HC-06, да и вообще любые Serial Bluetooth. Лучше брать с готовыми штыревыми выводами, чтобы не пришлось паять, т.к. расстояние между выводами очень маленькое (см. 1-ой на фото внизу). Стоимость такого модуля на eBay составляет в среднем 5-10$.

Bluetooth модули


Bluetooth модули и работа с ними применительно к Arduino, неплохо описаны в этой статье. Для других контроллеров все практически тоже самое, вот к примеру статья с описанием связи по Bluetooth между STM32 и Android.

5. Драйвер двигателя

В качестве драйвера я использовал специализированную микросхему L298N, которая представляет собой сдвоенный мостовой драйвер двигателей и предназначена для управления DC и шаговыми двигателями. На eBay продаются готовые платы со всей необходимой обвязкой, цена платы составляет 4-5$ и выглядит она приблизительно так:

Драйвер двигателя L298N


Подключение к Arduino достаточно подробно описано в этой статье. В нашем проекте для плавного изменения скорости вращения двигателей, мы будем использовать ШИМ (широтно-импульсную модуляцию).

6. Остальные комплектующие

Помимо вышеперечисленных компонентов понадобятся:
- батарейный отсек (4-5 батареек АА) или аккумуляторы, можно использовать к примеру готовые блоки Li-Po аккумуляторов на 7.4В
- соединительные провода
- выключатель питания
- термоусадочная трубка, хомуты и др.

Комплектующие


Все это конечно опционально и можно заменить тем, что есть под рукой, к примеру вместо термоусадки использовать изоленту и т.д.

Как видите, себестоимость машинки не так уж и велика, если использовать свое шасси с моторчиками, то выходит около 20-25$ на все, если покупать и шасси, то выйдет уже 45-60$ в зависимости от типа шасси (т.к. диапазон цен на них очень широк).

Вот, что получилось у меня:

CxemCAR


Принцип работы

В Android устройстве формируются команды перемещения машинки в зависимости от наклона смартфона/планшета, либо от нажатой кнопки. Все расчеты производятся в Android-приложении, и сразу же вычисляются значения ШИМ для левого и правого двигателей. Приложение обладает гибкими настройками, такими как диапазон ШИМ, чувствительность наклона, минимальный порог ШИМ и др. По Bluetooth передаются команды вида:
L-255\rR-120\r
L - команда для левого двигателя, R - для правого
минус обозначает вращение двигателя для движения назад
255 - число ШИМ, для Arduino это максимальная скорость вращения
\r - конец команды.
По данной команде машинка будет двигаться назад и немного поворачивать в правую сторону, т.к. правый двигатель будет вращаться медленнее левого.

L255\rR-255\r
По данной команде левый двигатель будет вращаться вперед, а правый назад, что заставит машинку вращаться вокруг своей оси против часовой стрелки.

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

Символы команд L, R и H можно задавать в настройках Android-приложения.

В программе контроллера предусмотрен таймер, который отключает двигатели, если последняя команда была получена более, чем n-секунд назад. Настройка количества секунд хранится в EEPROM памяти контроллера и может быть изменена с Android устройства. Диапазон данной настройки составляет от 0.1 сек до 99.9 секунд. Также, настройку можно совсем отключить. Но тогда, при потере связи машинка будет ехать, пока не будет выключено питание.
Для работы с памятью микроконтроллера предусмотрены команды Fr - чтение значений и Fw - запись значений.

Электронная начинка

Структурная схема CxemCAR представлена ниже:

Структурная схема CxemCAR


Как видим, к контроллеру (Arduino, STM32 и др. неважно какой) подключается Bluetooth модуль и драйвер двигателей, к которому в свою очередь подключается 2 или 4 моторчика Bluetooth-управляемой модели. На схеме изображен один выход дополнительного канала (включение звукового сигнала, фар и т.п.), но путем небольшой правки программы число дополнительных каналов может быть легко увеличено.

Работа с Android приложением

Приложение под Android писалось в среде Eclipse. Все исходники проекта и проект для Eclipse вы можете скачать ниже. Я не специалист в Java программировании и это мое первое приложение под Android поэтому кое-где код не совсем удачен. Именно на разработку Android приложения ушло основное время при разработке данного проекта. Версия Android должна быть не ниже 3.0, я все писал и тестировал под планшет с версией 4.0.3.

Приложение содержит несколько активити. Главное активити представляет собой начальный экран с кнопками запуска различных режимов управления и настройками:

Главный экран приложения CxemCAR


Предусмотрено 3 режима управления Bluetooth-моделью:

Управление от акселерометра - основной способ управления. Управление движением Bluetooth-модели осуществляется за счет наклона Android-устройства (планшет, телефон и др.)
Виртуальный руль - гибридное управление. Газ - при помощи ползунка, повороты - при помощи поворота устройства. Задний ход - отдельной экранной кнопкой.
Управление от кнопок - на экране приложения выводятся 4 кнопки управления: вперед, назад, влево и вправо. При нажатии кнопки "вперед" машина едет вперед пока держите кнопку, при нажатии "назад" тоже самое, но едет назад. При нажатии кнопок "влево" или "вправо" машинка крутится вокруг своей оси в одну или в другую сторону. При этом значение скорости фиксировано (по умолчанию стоит максимальная скорость), но в настройках можно изменить данный параметр.
Управление от touch - данный способ управления я подсмотрел в игре DeathRally и ради спортивного интереса решил повторить. Честно сказать поучилось не очень удобно, но может кому-нибудь пригодится. На экране рисуется круг, внутри которого и происходит процесс управления. Повели пальцем вверх относительно центра - машинка едет вперед, чуть левее - машинка начинает поворачивать влево. Насчет этого способа управления, есть в дальнейшем идея усовершенствования с помощью компаса, т.е. использовать круг не как задатчик скорости и поворота, а задавать с помощью него направление движения.

Настройки приложения

Скриншот настроек Android приложения CxemCar версии 1.0:

Настройки Android приложения


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

Точка разворота для мотора (ось X)

При наклоне Android-устройства влево или вправо программа притормаживает тот двигатель, в сторону которого наклонено устройство, т.о. осуществляется поворот. Однако, когда значение наклона доходит до заданной в настройках точки разворота, то двигатель начинает вращаться в другую сторону. Если наклонить устройство максимально вбок, то один двигатель будет вращаться с максимальной скоростью в одну сторону, а другой в другую и соответственно машинка будет крутиться вокруг своей оси на месте.

MAC адрес

Для установления связи с Bluetooth модулем машинки, в настройках приложения необходимо задать MAC-адрес. Предварительно необходимо настроить сопряжение устройств в настройках вашего Android-устройства. Для этого переходим в Настройки -> Bluetooth и нажимаем "Поиск устройств", телефон находит наш Bluetooh-модуль, нажимаем по нему и вводим пароль (как правило 1234).

Узнать Bluetooth адрес модуля можно из какого-нибудь приложения, к примеру Bluetooth Terminal. Для этого внизу нажимаем "Connect a device - Secure" и в появившемся окошке нажимаем кнопку "Scan for devices". ПО сканирует Bluetooth устройства и отобразит их MAC-адреса:

MAC-адрес Bluetooth модуля


Этот MAC-адрес и необходимо прописать в настройках приложения CxemCAR.

Само ПО под Android я не буду расписывать, т.к. оно довольно таки громоздкое и поэтому если у вас возникнут какие-либо вопросы по нему, то обращайтесь тему поддержки данного проекта на форуме.

Сборка платформы

Шасси Pirate-4WD

Как я уже говорил выше, в качестве платформы я выбрал шасси Pirate-4WD от производителя DFRobot (SKU:ROB0003). Это одно из самых популярных шасси, вот его описание и видео по сборке. Хотя там все интуитивно понятно и сборка очень проста.

После того, как была собрана основа шасси с моторами, припаиваем провода и на всякий случай маркируем моторчики:

Шасси Pirate-4WD


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

Распорка


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

Следующим этапом является установка колес. На вал они налезают очень туго, кое-где даже пришлось подпилить каттэром.

Установка колес и платы драйвера двигателей L298N


Провода от 4-х моторов подключаем к плате драйвера двигателей L298N, левые 2 мотора просто запаралеленны, тоже самое и правые.

Для того, чтобы можно было видеть состояние Bluetooth соединения, у модуля HC-06 (да и у других тоже) присутствует возможность подключения светодиода состояния. Я решил его также подключить и вывести на видное место. Для этого, я использовал токоограничительный резистор номиналом 470 Ом и термоусадочную трубку.

Подпаиваем светодиод состояния


К модулю Bluetooth подключаем или подпаиваем все необходимые провода, помимо светодиода это питание, GND, TX и RX. Смотрите документацию на ваш Bluetooth модуль. Чтобы не мучаться с пайкой, я вам советую сразу взять модуль с подпаянными штыревыми выводами (см. фото выше). И лучше брать модули HC-03/HC-05.

Я же использовал модуль HC-06, который у меня был до этого. Схема распайки следующая:

Распайка Bluetooth модуля HC-06


В распаянном виде модуль выглядит так:

Bluetooth модуль HC-06


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

Для питания двигателей я использовал батарейный отсек на 5 элементов типа АА, т.е. напряжение питания двигателей составило 7.5 Вольт. Можно использовать LiPo и другие аккумуляторы. Для крепления батарейного отсека в крышке шасси просверлил два отверстия и закрепил при помощи двух болтов.

Батарейный отсек

История изменений ПО для Android:
Версия 1.1 (от 28.01.2013) - в классе cBluetooth изменения для более стабильного подключения по Bluetooth. Теперь не нужно вводить код для pairing (связывания устройств)
Версия 1.2 (от 15.02.2013) - дополнен класс cBluetooth на предмет установки соединения с устройством (полезно при отладке). Изменения в классе Handler (исправлены все ошибки с static). Реализован новый вид управления - "виртуальный руль".
Версия 1.3 (от 20.07.2013) - мелкие правки в активити. Исправление ошибки с инверсией координат на смартфонах

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

Bluetooth модуль пульта будет выполнять роль мастера, а Bluetooth модуль робота - роль ведомого. Сопряжение мастера и ведомого достаточно выполнить только один раз. В дальнейшем, при подаче питания робота и питании пульта, устройства будут соединяться самостоятельно.

Скорость и направление движения робота будет зависеть от степени и направления отклонения джойстика. Робот сможет выполнять такие команды как движение вперёд или назад, с заворотом или без, разворот на месте влево или вправо, установка всех суставов в центральные положения, ослабление всех суставов, подъем и опускание корпуса. При разрыве связи между bluetooth модулями пульта и робота, робот перестанет идти, а все его сервоприводы ослабнут.

Подробно об управлении роботом и сопряжении Bluetooth модулей рассказано ниже, в разделе «Управление».

Видео:

Нам понадобится:

    Робот «QUADRUPED»: x1 шт. x1 шт. x1 шт. x1 шт. x1 шт.
  • Элементы питания:
    • либо 2 аккумулятора Li-ion размером 18650.
    • либо 5 аккумуляторов Ni-MH размером AA.
      Пульт: x1 шт. x1 шт. x1 шт. x1 шт. x1 шт.
    • Элементы питания:
      • либо 1 аккумулятор Ni-MH размером крона и переходник под DC-jack.
      • либо иной источник питания для Arduino Uno.

      Для реализации проекта нам необходимо установить библиотеки:

        - для работы с Trema Bluetooth модулем HC-05.
      • iarduino_HC_SR04 - для работы с ультразвуковым датчиком расстояния HC-SR04+.
      • Библиотеки SoftwareSerial и Servo входят в базовый набор Arduino IDE и не требуют установки.

      О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki - Установка библиотек в Arduino IDE.

      Схема подключения пульта дистанционного управления:

      • Установите Trema-Set Shield на Arduino Uno.
      • Установите Trema-модуль потенциометр на 2 посадочную площадку Trema-Set Shield.
      • Установите Trema-модуль джойстик на 4 посадочную площадку Trema-Set Shield.
      • Установите Trema-модуль Bluetooth HC-05 на 6 посадочную площадку Trema-Set Shield.
      • При желании все установленные на Trema-Set Shield модули можно закрепить, используя нейлоновые винты и стойки.

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

      Схема подключения робота QUADRUPED:

      Соберите механику, подключите Tream-Power Shield, сервоприводы, датчик расстояния и откалибруйте робота, как это описано на странице Сборка QUADRUPED. Электроника + Калибровка. Далее на боковые панели установите Bluetooth HC-05 и кнопку, первый модуль подключается к шине UART (в примере используется аппаратная шина UART), а второй к любому выводу Arduino Uno (в примере используется вывод D12).

      Датчик расстояния Trema Power Shield
      Датчик
      HC-SR04+
      вывод Echo вывод 2 на белой колодке
      вывод Trig вывод 3 на белой колодке
      вывод Vcc любой вывод на красной колодке
      вывод Gnd любой вывод на чёрной колодке

      Вы можете изменить выводы 2 и 3 для подключения датчика HC-SR04+ на любые другие, указав их в скетче при объявлении объекта objSensor.

      Сервоприводы Trema Power Shield
      1 конечность Горизонтальный сустав (№ 0) вывод 4 на белой колодке
      Вертикальный сустав (№ 1) вывод 5 на белой колодке
      2 конечность Горизонтальный сустав (№ 2) вывод 6 на белой колодке
      Вертикальный сустав (№ 3) вывод 7 на белой колодке
      3 конечность Горизонтальный сустав (№ 4) вывод 8 на белой колодке
      Вертикальный сустав (№ 5) вывод 9 на белой колодке
      4 конечность Горизонтальный сустав (№ 6) вывод 10 на белой колодке
      Вертикальный сустав (№ 7) вывод 11 на белой колодке

      Вы можете изменить выводы 4-11 для подключения сервоприводов на любые другие, указав их в скетче при объявлении массива объектов pinServo[8]. Трехпроводные шлейфы сервоприводов устанавливаются следующим образом:

      • Оранжевый провод подключается к выводу на белой колодке.
      • Красный провод подключается к выводу на красной колодке.
      • Коричневый провод подключается к выводу на чёрной колодке.

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

      Выводы RX и ТХ модуля подключаются проводами к выводам TX и RX колодки с надписью Serial. Трёхпроводной шлейф подключённый к выводам K, V, G, устанавливается следующим образом:

      • Вывод K (Key) подключается к выводу на белой колодке.
      • Вывод V (Vcc) подключается к выводу на красной колодке.
      • Вывод G (GND) подключается к выводу на чёрной колодке.

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

      Трёхпроводной шлейф подключённый к выводам S, V, G, устанавливается следующим образом:

      • Вывод S (Signal) подключается к выводу на белой колодке.
      • Вывод V (Vcc) подключается к выводу на красной колодке.
      • Вывод G (GND) подключается к выводу на чёрной колодке.

      Представленная ниже схема совпадает со схемой из инструкции по сборке QUADRUPED, но к ней добавились два модуля: bluetooth (подключается к выводам A0, TX и RX) и кнопка (подключается к выводу D12).

      Сборка робота для управления по bluetooth

      Элементы схемы: «Э0». «Э7» - сервоприводы, «Э8» - датчик расстояния, «Э9» - Trema bluetooth модуль, «Э10» Trema кнопка.

      Код программы для пульта дистанционного управления:

      В данном коде показания джойстика и потенциометра постоянно сохраняются в массив arrData после чего он отправляется по радиоканалу через bluetooth модуль. Скетч калибрует джойстик при старте, считывая показания для осей X и Y, которые до отключения питания считаются центральными. Показания осей X и Y отправляются в пределах значений от -100 до +100. Показания потенциометра отправляются в пределах значений от 0 до +100. Состояние кнопки отправляется как число 0 или 1.

      Если подать питание с нажатой кнопкой джойстика, то в коде setup выполнится код вызова функции createMaster, которая установит bluetooth модулю роль мастера, инициирует поиск ведомого с именем "QUADRUPED" и PIN-кодом "1212", и если такое ведомое устройство будет доступно, то произойдёт сопряжение и соединение с этим ведомым bluetooth модулем (именно такое имя и PIN будут присвоены bluetooth модулю на роботе). Если не нажимать на джойстик при подаче питания, то функция createMaster будет пропущена, а bluetooth модуль будет принимать попытки создать соединение на основе своих последних настроек. Таким образом сопряжение с bluetooth модулем робота достаточно выполнить всего один раз.

      Функции begin(), createMaster() и checkConnect() объекта objHC05 возвращают true или false, и вызываются как условие оператора while(), то есть инициализация, назначение роли и проверка соединения bluetooth модулей выполняются до тех пор пока не будет получен положительный результат. Эти функции можно вызывать однократно только в том случае если Вы уверены что второй bluetooth модуль (модуль робота) точно включён, ему назначена роль ведомого, он готов к соединению и находится в радиусе действия связи. Иначе функция вернёт false, а код продолжит выполняться не отреагировав на ошибку.

      Функция send() объекта objHC05 способна отправлять массивы и переменные любых типов, и так же возвращает true или false, сообщая о результате приёма данных вторым bluetooth модулем. В нашем случае данную функцию нет необходимости вызывать в условии оператора while(), так как эта функция и так постоянно вызывается в коде цикла loop().

      С подробным описанием всех функций объекта objHC05 библиотеки iarduino_Bluetooth_HC05 можно ознакомиться на странице Wiki - Trema-модуль bluetooth HC-05.

      Код программы для робота QUADRUPED:

      Так как Trema-модуль Bluetooth HC-05 подключён к аппаратной шине UART, то перед загрузкой данного скетча нужно отсоединить провод, либо от вывода TX модуля, либо от вывода RX на плате Tream-Power Shield, а после загрузки скетча, подсоединить обратно.

      Значения массива cenAngle должны быть изменены (откалиброваны) на действительные углы сервоприводов в градусах, при которых все суставы робота находятся в центральном положении. Это выполняется с использованием калибровочного скетча, как описано на странице Сборка QUADRUPED. Электроника + Калибровка.

      В данном коде управление роботом осуществляется через функции:

      • funLimbMove - установка одного сустава выбранной конечности в значение от -100 до 100.
        • Если указать funLimbMove(4,1,100), то у 4 конечности, вертикальный сустав, поднимется максимально вверх.
        • Если указать funLimbMove(4,0,-100), то у 4 конечности, горизонтальный сустав, сдвинется максимально влево.
        • Если указать funLimbStep(4,x,0,50), где x будет увеличиваться от 0 до 255, то 4 конечность совершит следующие действия: плавный сдвиг внизу назад, резкий подъём, быстрый проход сверху вперёд и резкий спуск, остановившись в той же позиции с которой начинались движения. Что похоже на реальное движение лап при движении вперёд.
        • Если указать funLimbStep(4,x,0,50), где x будет уменьшаться от 255 до 0, то 4 конечность совершит те же действия, но в обратном порядке. Что похоже на реальное движение лап при движении назад.
        • Предпоследний аргумент функции можно указывать в пределах от -100 до +100, он будет ограничивать амплитуду движений левых или правых конечностей, что вызовет заворачивание (поворот) влево (-100. 0) или вправо (0. +100).
        • Последний аргумент функции можно указывать в пределах от 0 до 100, это высота подъёма корпуса в процентах, если указать 0, то QUADRUPED будет «ползти», чем больше значение, тем выше QUADRUPED. Средний подъём корпуса соответствует значению 50.
        • Если указать funLimbGait(1, x, 0, 50), где x будет увеличиваться от 0 до 255, то все конечности совершат действия при которых QUADRUPED пройдёт вперёд и прямо на один полный шаг, а его конечности вернутся в ту же позицию с которой этот шаг начинался.
        • Если указать funLimbGait(1, x, 0, 50), где x будет уменьшаться от 255 до 0, то все конечности совершат те же действия, но в обратном порядке. Следовательно, QUADRUPED пройдёт тот же шаг но назад.
        • Если указать funLimbGait(0, x, 0, 50), где x будет увеличиваться от 0 до 255, то все конечности совершат действия при которых QUADRUPED выполнит разворот вправо на один полный шаг, а его конечности вернутся в ту же позицию с которой этот разворот начинался.
        • Последний и предпоследний аргументы выполняют те же действия что и аргументы функции funLimbStep той же позиции, а именно, выполняют заворот (поворот) и поднятие корпуса.
        • Вы можете дополнить функцию funLimbGait придумав свои варианты походок.

        Получение данных и работа с Trema-модулем Bluetooth HC-05 осуществляется через функции и методы объекта objHC05 библиотеки iarduino_Bluetooth_HC05, с подробным описанием которых можно ознакомиться на странице Wiki - Trema-модуль bluetooth HC-05.

        Управление:

        Сразу после сборки, загрузки скетча и подачи питания на пульт, и QUADRUPED, суставы робота будут ослаблены, и он не будет реагировать на команды с пульта, так как Bluetooth модулям требуется сопряжение (создание пары). Сопряжение достаточно выполнить только один раз, bluetooth модули запомнят созданную пару в своей энергонезависимой памяти и будут пытаться соединится друг с другом при каждой последующей подаче питания.

        • Отключите питание пульта (если оно было подано), нажмите на джойстик (как на кнопку) и подайте питание пульта. После выполнения этих действий bluetooth модулю пульта будет назначена роль мастера и он начнёт поиск ведомого с именем «QUADRUPED» и PIN-кодом «1212».
        • Подключите питание робота (если оно не было подано), нажмите и удерживайте кнопку сопряжения не менее 1 секунды (её можно нажимать в любое время). После нажатия на кнопку, bluetooth модулю робота будет назначена роль ведомого с именем «QUADRUPED» и PIN-кодом «1212», и он будет ожидать подключение мастера.
        • Для выполнения повторного сопряжения (если оно потребуется) нужно выполнить те же действия как для пульта, так и для робота.
        • Как только связь будет установлена, суставы робота «оживут» и он будет выполнять команды пульта. Если Вы отключите питание пульта, то суставы робота ослабнут и вновь оживут при подаче питания пульта.

        Управление роботом с пульта выполняется следующим образом:

        • Если отклонить джойстик вперёд, то и робот пойдёт вперёд, а скорость будет зависеть от степени отклонения джойстика.
        • Если отклонить джойстик назад, то и робот пойдёт назад, а скорость будет зависеть от степени отклонения джойстика.
        • Если отклонить джойстик вперёд и влево, или вправо, то и робот пойдёт вперёд заворачивая влево, или вправо. Скорость будет зависеть от степени отклонения джойстика вперёд, а радиус поворота от степени отклонения джойстика влево, или вправо.
        • Если отклонить джойстик назад и влево, или вправо, то и робот пойдёт назад заворачивая влево, или вправо. Скорость будет зависеть от степени отклонения джойстика назад, а радиус поворота от степени отклонения джойстика влево, или вправо.
        • Если отклонить джойстик влево или вправо, но не отклонять его вперёд, или назад, то робот начнёт разворачиваться на месте влево, или вправо, а скорость разворота будет зависеть от степени отклонения джойстика.
        • Если нажать на джойстик (при включённом питании), то все суставы конечностей робота установятся в центральные положения.
        • Если поворачивать ручку потенциометра по часовой стрелке, то корпус робота будет подниматься, вне зависимости от положения джойстика.
        • Если поворачивать ручку потенциометра против часовой стрелке, то корпус робота будет опускаться, вне зависимости от положения джойстика.

        Примечание:

        Так как Trema-модуль Bluetooth HC-05 установленный на роботе, подключён к аппаратной шине UART, то перед загрузкой скетча робота нужно отсоединить провод, либо от вывода TX модуля, либо от вывода RX на плате Tream-Power Shield, а после загрузки скетча, подсоединить его обратно. Не рекомендуется использовать программную шину UART в устройствах управляющих сервоприводами, так как библиотека SoftwareSerial влияет на поведение библиотеки Servo во время передачи данных.

        Можно обойтись без добавления кнопки сопряжения к роботу «QUADRUPED», тогда в скетче нужно выполнять сопряжение автоматически при каждой подаче питания робота и пульта. Делается это следующим образом:

        В скетче пульта исключите оператор «if» из предпоследней строки кода setup, оставив только тело оператора:

        В скетче робота исключите целиком все строки в которых встречается константа «pinK» или функция «funWaitMaster()», а код setup() перепишите так:

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


        Необходимо:
        — Блютуз модуль — HC-06 wireless Bluetooth (либо другой).
        — Провода.
        — Двухсторонний скотч.
        — Софт — Bluetooth RC Controller.

        В комплекте с роботом шел Блютуз модуль — HC-06.
        Подойдут модули типа HC-04 или 05.


        Подключение:
        Все, что нужно подключить — это Блютуз модуль.
        Подключение простое – смотрите таблицу ниже.


        ПРИМЕЧАНИЕ: Заодно я указал подключения Моторов – я буду в каждом примере указывать необходимые подключения.

        Обратите внимание, что поскольку разъем TXD Блютуз подключен к разъему RХ Arduino, то пока включении Блютуз Arduino никого будет слушать — только Блютуз.
        ВНИМАНИЕ! На время когда вы хотите работать с Arduino по USB – Блютуз нужно выключать. Я для этого поставил выключатель на питание «+» Блютуз.

        Прикрепляем Блютуз к роботу – можно использовать двухсторонний скотч и место в «корме» робота.


        Программирование.
        Сначала немного теории.
        Мы уже научили работягу слушать ИК волны…
        Блютуз – это то же волны – только радио.
        А в остальном принцип тот же – управляющее устройство будет передавать коды по блютуз, которые РОБОТяга будет выполнять.
        Только предварительно нам считывать коды с устройства не нужно – мы их сами зададим.
        Кодами для команд будут буквы:
        F – вперед;
        B – назад;
        R – вправо;
        L – влево;
        S – стоп.

        Посылать их может любое устройство:
        — которое может подключиться по Блютуз к РОБОТяге;
        — имеющее программу, которая может посылать через Блютуз сигналы — терминал RS232.

        Сначала устанавливаем соединение между блютузами РОБОТяги и «устройства» — через настройки Блютуз «устройства» — пароль по умолчанию для модуля робота — 1234.

        Для Android устройств будем использовать Bluetooth RC Controller – готовую к использованию программу, позволяющую управлять не только направлением движения, но и скоростью и даже фарами!




        Первое, что она попросит – включить Bluetooth.
        Затем нужно подключиться к РОБОТяге – нажимаем на «шестереночку» — далее «Connect» выбрать его из перечня устройств нашего РОБОТягу и соединяемся…
        Дальше жмем на кнопки и едем…

        Все посылаемые данной программой коды-команды указаны в настройках Bluetooth RC Controller («шестереночка» — «Settings»).

        ВНИМАНИЕ! Поступили замечания, что Bluetooth RC Controller у некоторых "работяг" реагирует с задержкой — около 10 секунд! Есть информация, что это лечится в настройках — пункте "Please select data stream frequency:" нужно выбрать режим "On change/touch".

        Для того чтобы перевести в режим управления акселерометром «устройства» – через наклон, нужно нажать «шестереночку» и нажать закладку «Accelerometer».
        Но предупреждаю! Данный режим работает с задержкой – управлять нужно осторожней. Пример на видео :)

        СКЕТЧ:
        [code]
        //Управляем роботом с помощью BLUETOOTH.
        //В качестве управляющего устройства используем ANDROID устройство с программой Bluetooth RC Controller.

        // *********************** Установка выводов моторов ************************
        int MotorLeftSpeed = 5; // Левый (А) мотор СКОРОСТЬ — ENA
        int MotorLeftForward = 4; // Левый (А) мотор ВПЕРЕД — IN1
        int MotorLeftBack = 2; // Левый (А) мотор НАЗАД — IN2
        int MotorRightForward = 8; // Правый (В) мотор ВПЕРЕД — IN3
        int MotorRightBack = 7; // Правый (В) мотор НАЗАД — IN4
        int MotorRightSpeed = 6; // Правый (В) мотор СКОРОСТЬ — ENB

        // ********************** Для управления по блютуз ****************************
        char btCommand = 'S';// Задаем переменную BLUETOOTH команда — по умолчанию "S" — СТОП

        //****************** Настраиваем параметры выводов ARDUINO ******************
        pinMode (MotorLeftForward, OUTPUT);
        pinMode (MotorLeftBack, OUTPUT);
        pinMode (MotorLeftSpeed, OUTPUT);

        Это приложение позволяет управлять любыми телевизорами и приставками с Android TV. Интерфейс предлагает базовые элементы навигации, D-Pad, сенсорную панель и возможность набора текста при помощи экранной клавиатуры. Отдельная кнопка активирует микрофон для голосовых запросов, что особенно удобно, если стандартный пульт этой функцией не обладает.

        Требуется: Wi-Fi или Bluetooth.

        2. TV (Apple) Remote Control

        Неофициальное приложение для дистанционного управления Apple TV. Оно предоставляет все те же кнопки, что и стандартный пульт старого образца. То есть с его помощью можно осуществлять навигацию, вызывать меню и начинать воспроизведение. Сенсорной панели и иных клавиш не предусмотрено.

        Требуется: ИК-передатчик.








        3. Peel Smart Remote

        Сочетает в себе универсальный пульт дистанционного управления ТВ и телепрограмму, которая формируется в соответствии с почтовым индексом. Peel Smart Remote определит вашего провайдера и расскажет, что, когда и на каком канале стоит посмотреть. Чем дольше вы им пользуетесь, тем точнее будут рекомендации.

        Требуется: ИК-передатчик и Wi-Fi.

        4. SURE Universal Remote

        Этот универсальный инструмент подойдёт практически для любой техники: телевизоров, приставок, медиаплееров, проекторов, кондиционеров и даже умных пылесосов. Кроме того, приложение позволяет транслировать фотографии и видео с телефона на Smart TV. Также есть поддержка Apple TV, Chromecast и Android TV.

        Требуется: ИК-передатчик или Wi-Fi.








        5. AnyMote Universal Remote

        Ещё одно приложение, способное заменить все пульты в вашем доме, в том числе и для устройств, подключаемых через Wi-Fi. Доступна детальная настройка набора управляющих элементов и даже возможность создания макросов, позволяющих выполнять несколько действий нажатием одной лишь кнопки.

        Требуется: ИК-передатчик или Wi-Fi.

        6. Mi Remote

        Это решение разработала Xiaomi, но эксклюзивом для фирменных смартфонов оно не является. Mi Remote можно установить и на модели других производителей, чтобы управлять самой разной техникой. От аналогов его отличает простейшая настройка и поддержка русского языка, которая позволяет быстро разобраться со всеми функциями.

        Сегодня наши умные телевизоры предлагают нам большое развлекательное предложение. Да, несколько лет назад мы могли только смотреть телевизор через антенный кабель или подключать внешний компонент для воспроизведения мультимедийного контента всех видов. К счастью, теперь, когда телевизоры Smart TV здесь, чтобы остаться, мы можем получить максимум от нескольких способов. И один из них использует контроллер Bluetooth.

        Да, подавляющее большинство современных смарт-телевизоров имеют встроенный Bluetooth, поэтому вы можете подключить беспроводной контроллер, чтобы получить от него максимальную отдачу. Таким образом, вы сможете насладиться всевозможными играми, чтобы весело провести время в одиночестве или в компании. Действительно интересный вариант, даже если у вас есть телевизор с Android ТВ.

        Bluetooth-контроллер смарт-тв

        Да, вы можете подключить контроллер Bluetooth к любому Smart TV

        Надо сказать, что есть производители, которые делают ставку на собственный интерфейс. Таким образом, если у вас есть Samsung or LG ТВ, которые используют собственную операционную систему вместо того, чтобы делать ставки на Android TV, Вы знаете, что вы можете подключить контроллер Bluetooth без особых проблем. Единственное, что вы должны иметь в виду, это то, что игровая экосистема не будет такой широкой .

        По этой причине мы рекомендуем делать ставки на Android TV Box, например на Xiaomi Mi TV Box S, чтобы иметь возможность пользоваться операционной системой Google для смарт-телевизоров. И да, обширный каталог доступных игр позволит вам максимально эффективно использовать беспроводной контроллер. Да, у этой операционной системы замечательные преимущества.

        Smart TV 4K Samsung с поддержкой Bluetooth

        Как использовать Bluetooth-контроллер, подключенный к Smart TV

        Как мы уже говорили, подключение контроллера Bluetooth к Smart TV позволит вам насладиться полным каталогом игр, доступных в экосистеме Android. Но вы также можете использовать его для перемещения по телевизионному интерфейсу, поэтому преимущества, предлагаемые этим устройством, высоки. Кроме того, если у вас есть компьютер, подключенный к телевизору, любой из этих элементов управления совместим с Windows и Linux, так что вы можете воспользоваться ими больше, чем когда-либо. Давайте посмотрим на различные варианты.

        Мандо блютуз QUMOX

        Bluetooth-контроллер QUMOX

        Начнем эту подборку с одной из моделей, которая порадует Sony любители. Больше всего на свете, потому что QUMOX - это контроллер Bluetooth, дизайн которого явно напоминает нам контроллер PS2, модель с отличной эргономикой и отличной функциональностью.

        Если вы ищете беспроводной контроллер для вашего Android телевизора по хорошей цене, эта модель является одним из лучших вариантов для рассмотрения. Более того, если учесть, что он не превышает 15 евро.

        QUMOX Game Controller Беспроводной контроллер 2.4 ГГц Геймпад Джойстик Геймпад для ПК

        Мандо блютуз TenGO RT3067BT

        TenGO RT3067BT

        Еще одна из тех моделей, которые вы не должны пропустить, это TenGO RT3067BT . Во-первых, в нем есть всевозможные настраиваемые кнопки, поэтому вы можете в полной мере использовать все виды игр. Но одно из больших преимуществ этой модели заключается в том, что, несмотря на труднопроизносимое название, она предлагает совместимость с Fire Stick TV 4K и Chromecast. Что еще можно спросить?

        Мини Текладо Иналамбрико ГАКОВ GAU6

        GAKOV GAU6 Беспроводная мини-клавиатура

        В этом случае мы сталкиваемся с другой моделью, чем другие. Да, нужно сказать, что этот контроллер Bluetooth является скорее клавиатурой, но это одно из его больших преимуществ. Больше всего на свете, потому что он сочетает в себе большие преимущества клавиатура и беспроводной контроллер , Вы хотите насладиться игрой? Ну не стесняйтесь и трогайте свои пуговицы.

        Вы бы предпочли использовать его как клавиатуру для серфинга в Интернете? Тихо, что эта модель оправдает ожидания. Вам просто нужно увидеть хорошие рейтинги на Amazon, чтобы увидеть, что это периферийное устройство, которое вас не разочарует.

        Мини беспроводная клавиатура, GAKOV GAU6 Беспроводной мини 6-в-1 интеллектуальный геймпад с сенсорной панелью и пультом дистанционного управления

        Mando Bluetooth Logitech Геймпад F710

        Геймпад Logitech F710

        Никто не может отрицать, что Logitech является одним из лучших производителей игровых решений, и этот Gamepad F710 имеет дизайн, очень похожий на контроллер PS4. И да, он совместим с Windows, Linux и Android, поэтому вы можете без проблем подключить его к Smart TV. Добавьте свою 39-процентную скидку, и у вас есть продукт, который вы не должны пропустить.

        Мандо блютуз КРОМ Хэнсу

        KROM Khensu Bluetooth-пульт дистанционного

        Следуя этой подборке лучших средств управления Bluetooth, чтобы получить максимальную отдачу от вашего Smart TV, у нас есть модель KROM Khensu. Под этим именем модель, которая предлагает дизайн, очень похожий на Xbox Один контроллер скрыта. К этому добавьте очень агрессивный дизайн с теми оранжевыми линиями, которые сделают его центром всех глаз.

        Модель, которая позволит вам наслаждаться всеми видами игр, особенно если учесть, что она совместима с Android TV и ПК. Таким образом, вы сможете получить гораздо больше от того, что вы себе представляете.

        KROM Khensu - NXKROMKHNS - беспроводной геймпад, цвет черный / оранжевый

        Мандо блютуз Maegoo

        Bluetooth-контроллер Maegoo

        Еще один из лучших вариантов, чтобы рассмотреть, это модель Maegoo. Для начала, он обладает большой автономностью (гарантированное 8 часов использования), в дополнение к совместимости с ПК, Android и PS3. Самый лучший? Именно его эргономичный дизайн делает его очень приятным в использовании. И теперь, когда вы можете купить его менее чем за 22 евро, это отличный вариант, если ваш бюджет ограничен.

        Беспроводной контроллер Maegoo PS3 для ПК, игровой контроллер 2.4 ГГц для беспроводных игр. Геймпад для ПК. Пульт дистанционного управления. Джойстик, перезаряжаемый от вибрации. Sony Playstation 3 и Windows PC.

        CSL Computer

        CSL Computer

        Другая модель, которую вы должны принять во внимание, это Команда от производителя CSL. С точки зрения дизайна, говорят, что этот контроллер Bluetooth имеет резиновую отделку, что делает его особенно удобным в использовании. Вы регулярно потеете руками? Этот контроллер будет вашим лучшим союзником.

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

        CSL-Computer Беспроводной USB-геймпад для ПК Компьютер с двойной вибрацией - Контроллер контроллера - Plug and Play - черный

        Мандо блютуз EasySMX

        EasySMX Bluetooth контроллер

        В этом случае мы сталкиваемся с одной из жемчужин короны при выборе беспроводного контроллера, с помощью которого можно максимально эффективно использовать ваш умный телевизор. И это EasySMX это один из лучших вариантов для рассмотрения. Для начала, этот контроллер Bluetooth имеет все необходимое, чтобы часами наслаждаться любимыми играми.

        Он имеет встроенную литиевую батарею, которая превращается в батарею до 8 часов. К этому необходимо добавить его совместимость со всеми типами устройств (Windows, Smart TV, Android и даже PS3). Если мы добавим его систему вибрации и дизайн, который напоминает нам о Xbox One, у нас есть продукт, который вы не должны пропустить.

        Беспроводной контроллер EasySMX, [Оригинальный подарок] Элементы управления PS2.4 3 ГГц Встроенная литиевая батарея, игровой контроллер Джойстик для геймпада с двойной вибрацией для Windows / PS3 / ПК / Android / планшета / Andriod TV Box / TV

        Mando Buetooth Maegoo

        Maegoo Buetooth Control

        Мы уже рассказали вам о решении от этого производителя, и теперь мы представляем еще один вариант, чтобы принять во внимание. Для начала, этот другой блютуз-контроль фирмы поддерживает все типы операционных систем. Таким образом, вы можете подключить его к компьютеру с Windows, Ps3, Smart TV или Android устройства.

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

        Беспроводной игровой контроллер, Maegoo 2.4GHz Bluetooth Game Controller Геймпад Беспроводной джойстик с держателем для телефона для Android смартфон Xiaomi Huawei ПК Samsung Windows PS3 Smart TV и т. Д.

        Мандо блютуз GameSir G4s

        Bluetooth-контроллер GameSir G4s

        В заключение с подборкой лучших моделей для подключения к вашему Smart TV, вы не можете пропустить это Bluetooth-контроллер GameSir G4s , Мы говорим о другом из самых престижных производителей в этом секторе. И у этого периферийного устройства есть все, что вам нужно, чтобы получить максимальную отдачу от него: настраиваемые кнопки, поддержка Windows, Linux и Android, а также качество отделки, чтобы вы могли играть часами без проблем.

        Читайте также: