LABA 120 - Mit App inventor 2 * Bluetooth PDU
Управление устройствами на ATTINY 2313a через Bluetooth
и обратной связью с датчиками
Омск, начало 20-10-2017
Побочным продуктом адаптера ттл уровней на к1533ла3
стала система дистанционного управления на контролере
AVR ATtiny2313 подключенного через блютуз адаптер
BlueTooth HC-05 к телефону или планшету под управлением андроид
- AVR
- App Inventor 2
- Скачать
Введение
софт для авр написан на Bascom AVR
и подойдет для многих других контролеров данного семейства.
Даже для Ардуино. Для скачивания доступен исходник для баском,
Bascom-avr если быть точным. и готовый бинарный файл, для непосредственной
прошивки в контролер, если кому лень возиться с исходником.
Для прошивки под WIN 7, я использую Программатор AVR USBASP.
Самый важный момент, когда вроде все правильно
но все равно не работает,
посмотрите какие FUSE — фьюзы,
установлены в контролере. Есть там одно место где частота
тактового генератора делится на 8
это сильно влияет на связь по
ком порту — RS232. Если с вашего АVR данные отправляются
нормально, а обратно ни чего не принимается, это тот случай.
С остальными fuse по аккуратнее, Контролер вы не убьете
но и работать может перестать
для Андроид девайса программа написана на
Mit App Inventor 2. И также доступна в виде исходника
и готового APK файла для непосредственной установки.
Я оправляю APK на Андроид из Total Commander
через ADB плагин. Вам повезло если при включении
отладки по USB, компьютер нашел подходящий драйвер.
Если такой фокус не прокатил, можно использовать
WiFi ADB. Который легко скачивается
с Гугль Плей - Google play. Настройка не сложная.
В Тотале обычно этот плагин установлен, если нет, то скачиваете
его здесь, или где захотите , хоть с 4PDA,
замечательный сайт, там много вкусностей.
Установка простая, достаточно открыть архив.
В последствии будет еще доступна программа для ПК
для управления контролером, ну и команды применяемые в
данном устройстве, сможете увидеть в исходниках.
А еще далее, если тема будет интересна читателям,
вся эта хрень будет управляться по интернету.
Через сайт на PHP, А также будет предпринята попытка
заменить Bluetooth на WiFi
Идея такого девайса бала задумана давно, но из за некоторых
трудностей с БТ адаптерами, не была реализована
На данный момент на пульте имеется 12 кнопок для непосредственной
отправки команд. Предусмотрено отключение контролера при потере
соединения. А та же имеется возможность получить сигнал с контролера
о состоянии четырех датчиков рассчитанных на замыкание
тема задумывалась для установки в радиоуправляемый танк
дабы увеличить функционал игрушки, как то запись нажатия
кнопок , и воспроизведение, типа макрос. и управление дополнительным
оборудованием , планировалась камера и манипулятор, как на марсоходе
на данный момент она просто смонтирована на макетной плате
и управляет включением светодиодов
активный уровень низкий, как и в самой игрушке, достаточно
выводы контролера подключить к нужным ключам в танке
плюс к этому, если подключать к чему нибудь другому,
то контролер сам достаточно силен в низком уровне, а по высокому не сможет
управлять нагрузкой. Количество команд в данном релизе
ограничено количеством ног контролера
Помеченые красным выводы обязательно занятые
Обведенные синим, заняты иногда, точнее сюда подключается программатор
работающий по SPI протоколу, В последствии датчики столновения 4 штуки
На более продвинутом AVR
или ARDUINO может быть значительно увеличена. А также увеличено и количество
датчиков установленных на «марсоходе» вплоть до анализаторов газов, давления
атмосферы, температуры, влажности..
на этом сайте пока нет желания заморачиваться с форумом
поэтому вопросы и хотелки добавляйте к видео на ютубе
Пожелания будут учитываться в окончательно конструкции
Ладно погнали
вот эта макетная платаLCD дисплей тут не применяется, остался от другого проекта
а вот Андроид с софтом
Дизайн не супер но другого пока нет
Слева три кнопки с залипанием нажал включил — нажал выключил
типа как на машине фары-печка-дворники
Справа три кнопки переключают, как коробка передач 1-2-3
и отдельная отключающая кнопка
по середине классическая схема вперед назад
влево вправо, стоп
в верхней строке -
кнопка подключение к последнему удачному соединению
кнопка разрыва связи
кнопка выбора БТ устройств из списка
индикатор что связь установлена
четыре индикатора датчиков препятствий
чекбокс звукового сигнала срабатывания датчиков
последняя нажатая кнопка в правом ряду
средний блок
тут все просто
при нажатии вперед назад сбрасывается лево право
средняя кнопка сбрасывает все
Название последней нажатой кнопки.
Чекбокс разрешающий установку и отключение связи
с блютуз, защита от случайного отключения
Нарастающий счетчик, показывает, что программа еще не зависла.
Бывает и сообщение
по середине экрана, на работу не влияет,но тихо бесит. Издержки телефонного програмирования
и вот эта хрень в работе
рис 3BasCom - AVR замечательная IDE
для написания программ для контролеров AVR Пользоваться ей гораздо проще чем Arduino Software (IDE) Кстати может кто не в курсе Arduino это жирный контролер AVR Установленный на плате с USB преобразователем и программаторомЗдесь исходник для BasCom - AVR Развернуть...
Кому влом вникать можно просто скачать и прошитьЕсли вы будете использовать именно BlueTooth HC-05
то програмно в коде для АВР можно не заморачиваться
проверкой обрыва связи, на этом адаптере, имеется вывод
сигнализирующий о коннекте
Исходник для Mit App Inventor 2
Mit App Inventor 2 , вещь замечательная, колоссальная, великолепная, потрясающая.кодить на ней быстро, легко, и просто. И есть одно значительное НО
так как система полностью ON-LINE, может настать одно прекрасное утро
когда ее не станет, уже сейчас, собираешься применить некоторые компоненты, а их нет.
Но если моментально накодить и вывести результат, Лучше не придумаешь
Переменные
BT - Имя Bluetooth Модуля , с последнего подключения
CL1- хранит, была ли нажата кнока левого блока
CL2- итп
CL3-
Блок инициализация приложения при запуске
Интервал тамера 300, почти 3 раза в секундуТаймер остановлен
Обработчик кнопки разрыва соединени
Адреса БлюТуз устройств
адреса сопряженых с планшетом , Bluetooth устройств, загружаются в списокОбработчик нажатий среднего блока кнопок
меняются картинки на кнопкахзапускается таймер
на контролер отправляется команда
Цвет индикаторов датчиков
индикаторы это элемент LABEL их цвет управляется
свойством BackGroundColor , и по вызову функции
все индикаторы окрашиваются в зеленый
Обработчик событий таймера
Функция сброса цвета индикаторов датчиковНарастающий счетчик в Label L_cnt
Логические блоки -
Если Блютуз коннект установлен
и Если содержимое входного буфера больше ноля
То в метку Label1 считываются данные из буфера блютуз клиента
Затем по Bluetooth соединению отправляется символ "М"
дабы контролер не подумал что пропала связь,
если долго не нажимать кнопок управления
Затем логические блок IF проверяет полученые от AVR данные
которые как мы помним находятся в элементе Label1
и Если в итих данных содержится символ "Y" который
отправляет контролер получив символ "М"
ТО первый квадратик окрашивается в красный цвет
показывая что связь еще не оборвалась
Следующий блок IF проверяет данные на содержания символа "1"
который передается при срабатывании датчика 1, при его наличии
окрашивается соответствующий индикатор, и вызывается функция
BP, которая при установленом чекбоксе
SND проигрывает плеером звуковой сигнал
Проверка на остальные датчики аналогична
Звуковой сигнал
Функция BP при установленом чекбоксеSND проигрывает плеером звуковой сигнал
Кнопка Last
Устанавливает соединение с посленим устройством с которым связывались ранееэта кнопка будет активна только при установленом чекбоксе "ON"
это сделано для предотвращения случайного нажатия кнопки отключения.
Что в не подходящий момент, при маленьких экранах телефонов
сделать это не так уж и трудно, а потеря управления может быть черевата
Далее в переменную Global BT считывает из хранилища телефона
через элемент TinyDB1 ранее сохраненое значения адреса Блютуз устройства
Если связь успешно устанавливается ТО -
запускается таймер
цвет текста кнопки вызова устройств из списка становится синим
на кнопку выводится имя BlueTooth устройства
и чекбокс разрешения установки связи сбрасывается
Подключение к БлюТуз модулю из списка
При нажати на нее откроется список с приконнектченными устройствами
тыкаете в нужное и ву аля.
Все тоже самое, только еще методом TinyDB1.StoreValue
сохраняется в базу устройства адрес Bluetooh адаптера
При неудачной попытке коннекта, на кнопку красными буквами выводится "reconnect"
должно красными, но на деле черными, Чтото пошло не так
Предохранитель от несанкционированного отключения
Обработчик события CheckBox1 Changed, в нем блок IFпроверяет включен он или нет, усли включен ТО -
открывает доступ к кнопкам LAST OFF и RECONNECT
Если отключен то наоборот, выполняется блок ELSE
Правый блок кнопок
Посредством метода BluetoothClient1.SendText
Отправляет контролеру через БлюТуз номер кнопки, в данном случае "1"
в метку l_right записывает номер кнопки
выполняется Player4.Start - Плеер проигрывает звук
для остальных кнопок этого ряда, меняется только номер кнопки
Левый блок кнопок
Тут децл по сложнее
при нажатии на кнопку проверяется одноименная переменная СВ1
если она не нажималась ранее, и в ней 0
посылается код кнопки контролеру на включение нагрузки
в переменную СВ1 заносится единица, сама кнопка меняет окрас
и плеер пиликает звук
при обратной ситуации, когда в переменной уже есть единица
она обнуляется, а контролеру передается код на отключение
этой же нагрузки, и снова меняется окрас на обратный
и опять пи пи
и так для каждой кнопки