Предлагаемая статья рассказывает об использовании беспроводного интерфейса Bluetooth для подачи команд управления устройством подсветки игрушечного «Волшебного замка» [1], В качестве «пульта управления» теперь можно использовать не только компьютер, на котором запущена терминальная программа, но и любой смартфон с операционной системой Android. Устройство подсветки по-прежнему может работать как с постоянно хранящимися в его памяти, так и с дистанционно загружаемыми в неё программами световых эффектов.
В статье [1] описано несложное устройство подсветки игрушечного замка. Для организации дистанционного управления в нём использованы радиомодули диапазона 433 МГц. В качестве пульта управления применён компьютер, дополненный радиомодулем. Устройство можно модернизировать, заменив использованные в нём радиомодули недорогим Bluetooth-модулем. В этом случае пультом управления может стать практически любой «гаджет», оснащённый интерфейсом Bluetooth. На пути творческой мысли «светоком-позитора» устраняется неудобное препятствие в виде подключённого к ноутбуку радиоблока.
Интерфейс Bluetooth разработан как беспроводная альтернатива проводному интерфейсу RS-232. В настоящее время он широко применяется для организации взаимодействия различных радиоэлектронных устройств на небольших расстояниях. Однако приёмопередатчик Bluetooth очень трудно изготовить в радиолюбительских условиях. Но имеющиеся в продаже миниатюрные Bluetooth-модули промышленного производства делают легко решаемой задачу использования такого интерфейса в любительских разработках.
Наиболее дешев и прост в использовании модуль НС-06. Его описание можно найти в [2] — на китайском языке, но Google Chrome переводит вполне понятно, [3] — тоже на китайском, не поддаётся машинному переводу, но схемы подключения модуля понятны без перевода, [4] — на английском языке. Модуль представляет собой небольшую печатную плату с двумя микросхемами и печатной антенной. По периметру платы расположены контакты для подключения внешних цепей. Внешний вид модуля, его размеры и нумерация контактов показаны на рис. 1.
Самый простой вариант подключения модуля НС-06 к микроконтроллерной системе заключается в соединении его контактов 13 и 22 с общим проводом, контакта 1 (последовательного выхода ТХ) — с входом RXD микроконтроллера, а контакта 2 (последовательного входа RX) — с выходом TXD микроконтроллера. Остаётся подать на контакт 12 напряжение питания 3,3 В. Всё взаимодействие с радиосетью Bluetooth-мoдуль берёт на себя. Для контроля его состояния удобен контакт 24. На нём появляется непрерывный уровень логической единицы, когда связь установлена. Обычно сюда подключают светодиод.
По умолчанию последовательный интерфейс модуля настроен на скорость приёма и передачи информации 9600 Бод, посылку из стартового, восьми информационных без контроля чётности и одного стопового разрядов. Для большинства задач этого достаточно, но при необходимости параметры можно изменить с помощью АТ-команд.
Схема блока управления подсветкой замка показана на рис. 2. Она отличается от приведённой в [1] лишь увеличенным до четырёх числом контактов разъёма Х1 и изменённым их назначением, а также наличием шестого канала подсветки (светодиода HL6). Его можно использовать, например, для подсветки звезды на одной из башен замка.
Вместо модуля приёмника диапазона 433 МГц к разъёму Х1 присоединяют плату, собранную по схеме, показанной на рис. 3, где нумерация элементов продолжает начатую на рис. 2. Для получения напряжения 3,3 В, питающего Bluetooth-модуль НС-06 (U1), применён интегральный стабилизатор напряжения DA1. Ограничиться стабилитроном здесь не удаётся, поскольку во время установления соединения модуль U1 может потреблять ток до 50 мА. Светодиод HL7 мигает, пока соединение не установлено и светит непрерывно, когда оно действует.
Уровни входных и выходных логических сигналов модуля НС-06 соответствуют напряжению его питания. Но практика показала, что пониженного выходного уровня логической единицы модуля вполне достаточно для надёжного срабатывания входных цепей микроконтроллера, питающегося напряжением 4,5 В. Поэтому сигнал ТХ модуля подан непосредственно на вход RXD микроконтроллера. Но уровень логической единицы поступающего от микроконтроллера сигнала TXD значительно превышает напряжение питания модуля и может его повредить. Для понижения этого уровня до безопасного значения использован обычный резистивный делитель напряжения R7R8.
Питают устройство от батареи GB1 из трёх элементов ААА общим напряжением около 4,5 В. Выключателя питания нет. Его отключают извлечением одного элемента из держателя.
Печатные платы для устройства управления светодиодной подсветкой не разрабатывались. Оно собрано на двух фрагментах макетной платы навесным монтажом. Плата с микроконтроллером подобна использованной в [1]. Внешний вид второй платы, на которой смонтирован модуль НС-06, показан на рис. 4. Следует отметить, что в интернет-магазинах можно приобрести готовую плату с модулем НС-06 и разъёмом, функционально аналогичную описанной.
Устройство подсветки в сборе изображено на рис. 5, рядом со смартфоном, с которого ведётся управление. Собственного корпуса оно не имеет и помещается внутрь подсвечиваемой игрушки, как это описано в [1].
При безошибочном монтаже цифровые устройства, как правило, не требуют налаживания. Но проверить микроконтроллерную плату на отсутствие ошибок и замыканий необходимо. Это рекомендуется делать в следующем порядке. Не устанавливая в панель микроконтроллер и не подключая к разъёму плату с Вluetooth-модулем, присоединяют к устройству держатель элементов питания и вставляют в него эти элементы. Проверяют наличие и полярность напряжения 4,5 В между гнёздами 10 и 20 панели микроконтроллера и на разъёме Х1. Поочерёдно замыкая гнездо 20 панели микроконтроллера с её гнёздами 9, 11 — 15 через резистор сопротивлением 100 Ом, проверяют включение каждого светодиода.
После устранения выявленных дефектов можно, предварительно выключив питание, установить в панель запрограммированный микроконтроллер и подключить к разъёму Bluetooth-модуль. При включении питания устройство должно заработать.
Программа микроконтроллера DD1 подготовлена в среде разработки Algorithm Builder for AVR. Файл zmk03bt.hex следует загрузить в программную память микроконтроллера, а из файла ЕЕ_zmk03bt.hex — в его ЕЕРROМ. Конфигурация микроконтроллера должна быть запрограммирована в соответствии с рис. 6. Обратите внимание, что «галочками» на нём отмечены разряды, которые должны быть оставлены незапрограммированными.
В части управления светодиодами программа совпадает с описанной в [1], но отличается от неё организацией обмена информацией с внешним устройством (компьютером или смартфоном). Первыми после включения питания микроконтроллера выполняются программные процедуры инициализации узлов микроконтроллера. Линии РВ0—РВЗ, PD5 и PD6 конфигурируются как выходы, а блок USART настраивается на работу со скоростью 4800 Бод, длиной посылки 8 разрядов без контроля чётности и с одним стоповым разрядом.
Как было отмечено выше, в исходном состоянии модуль НС-06 настроен на скорость приёма и передачи информации со скоростью 9600 Бод. Микроконтроллер DD1 успешно справляется с такой скоростью, когда принимает однобайтные команды управления. Но для загрузки световых эффектов в EEPROM эта скорость оказывается слишком большой, поскольку приём информации идёт без её промежуточного хранения (буферизации) в ОЗУ микроконтроллера. Там просто недостаточно для этого места. Чтобы избежать пропусков, достаточно понизить скорость до 4800 Бод.
Переключить Bluetooth-модуль на такую скорость можно с помощью АТ-команды AT+BAUD3. Однако в памяти программ микроконтроллера ATtiny2313 недостаточно места для размещения такой процедуры вместе с основной программой. Поэтому специально разработана и приложена к статье программа hc06from9600to4800, предназначенная для перестройки модуля на скорость 4800 Бод. Её нужно временно загрузить в микроконтроллер и при подключённой плате с Bluetooth-модулем подать на устройство питание.
Программа проверит обмен информацией микроконтроллера с модулем НС-06 со скоростью 4800 Бод и, если всё нормально, включит светодиод HL1 и начнёт мигать светодиодом HL2. Если обмен со скоростью 4800 Бод не идёт, то программа попробует установить соединение на скорости 9600 Бод и при благоприятном исходе переключит скорость работы последовательного интерфейса модуля на 4800 Бод. В этом случае будут включены светодиоды НL2 и НL3, а светодиод НL4 станет мигать.
Если в итоге индикация иная, значит, модуль настроен неправильно либо неисправен. Полный перечень состояний светодиодов в результате работы программы hc06from9600to4800 приведён в таблице. При неудаче можно попробовать подключить модуль к компьютеру и воспользоваться для его настройки терминальной программой. Можно также разобраться в исходном тексте программы hc06from9600to4800 и, изменив его соответствующим образом, установить требуемый режим работы модуля НС-06.
К статье прилагается также программа hc06from9600to4800, которая возвращает модулю НС-06 исходную скорость обмена 9600 Бод и может пригодиться читателям, которые захотят использовать в других конструкциях модуль, работающий в устройстве управления подсветкой.
По окончании настройки Bluetooth-модуля не забудьте вернуть в микроконтроллер рабочую программу. После инициализации микроконтроллера она производит опрос наличия принятой информации в буфере приёмника USARТ. Каждый принятый байт «эхом» отсылает обратно. В зависимости от значения этого байта программа выполняет соответствующую команду, в том числе и загрузку новой программы управления светодиодами в ЕЕРRОМ.
Собственно управление светодиодами происходит в процедуре обработки запросов прерываний от таймера 0 микроконтроллера. Период повторения прерываний 625 мкс позволяет реализовать широтно-импульсное управление питанием светодиодов, не используя ШИМ-контроллер.
Смена режима управления подсветкой замка происходит при обработке каждого шестнадцатого прерывания от таймера с помощью отдельной процедуры. В ней же перебираются программы световых эффектов, хранящиеся как в памяти программ микроконтроллера, так и в его ЕЕРRОМ. Все скоростные параметры исполнения световых эффектов и число повторений каждого эффекта также отслеживаются в этой процедуре.
Рассмотрим принимаемые устройством команды. Почти все они (за исключением А и С) состоят из одного символа.
А — загрузка в ЕЕРRОМ наборов световых эффектов. Команда и сопровождающая её информация подробно описаны в [1]. Формат кодов управления светодиодами оставлен без изменений, так что методика разработки набора световых эффектов сохранена почти полностью. Отличия небольшие — следующие за буквой А шесть шестнадцатеричных цифр не анализируются устройством и могут быть любыми, не требуется и дополнять подготовленный файл произвольными символами для достижения им необходимой длины.
В — запрос текущего состояния устройства. В ответ на него оно посылает строку «Mode: XX», где XX может принимать следующие значения: 00 — исполняемый в момент приёма команды световой эффект бесконечно повторяется; 01 — поочерёдно исполняются все световые эффекты, хранящиеся в памяти программ микроконтроллера и в его EEPROM; 02 — поочерёдно исполняются эффекты только из памяти программ; 03 — поочерёдно исполняются световые эффекты только из EEPROM.
С — в ответ на эту команду возвращается содержимое EEPROM микроконтроллера (шесть строк по 20 байтов). Это позволяет прочитать коды загруженных в EEPROM световых эффектов. Далее их можно скопировать в текстовый редактор, внести необходимые изменения, дополнить преамбулой (как подробно описано в [1]) и снова загрузить в EEPROM по команде А.
N — переключение режима. Включается следующий режим работы, код нового режима (такой же, как в команде В) возвращается в ответ на команду.
О — гашение всех светодиодов. В ответ на команду передаётся строка OFF.
Р — остановка исполнения эффекта. Светодиоды «застывают» в одном состоянии. В ответ на команду передаётся строка «Pause».
S — запуск исполнения светового эффекта. В ответ на команду передаётся строка «Run».
1—6 — переключение состояния соответствующего светодиода. Указанный командой светодиод HL1—HL6 включается, если был выключен, или выключается, если был включён. В ответ на команду передаётся строка Channel: XX, где XX — шестнадцатеричное число, значение каждого разряда двоичного представления которого соответствует состоянию светодиода, номер которого на единицу больше номера разряда (начиная с младшего нулевого). Единица в разряде означает, что светодиод включён, ноль — выключен.
Все остальные символы игнорируются. После выполнения любой команды устройство посылает строку «Zmk03bt», приглашающую к вводу следующей команды.
Работа с устройством и терминальной программой
После подачи питания устройство начинает исполнять световые эффекты, хранящиеся в памяти программ и в EEPROM микроконтроллера. Память программ содержит набор из пяти световых эффектов: резкое переключение светодиодов от HL1 до HL4 и обратно, плавное переключение этих же светодиодов в прямом направлении, такое же обратное переключение, одновременное плавное мигание всех светодиодов. В EEPROM в исходном состоянии загружены два световых эффекта: поочерёдное ступенчатое изменение яркости всех светодиодов и быстрое мигание всех светодиодов. Набор эффектов в EEPROM можно изменить командой А.
Во время исполнения устройством световых эффектов его Bluetооth-модуль работает в режиме ожидания установления соединения. Это показывает мигание светодиода HL7.
Чтобы связаться с устройством управления подсветкой, на смартфоне включают режим обнаружения Bluetooth-устройств. В списке найденных должно появиться устройство с именем «НС-06». Далее потребуется ввести пароль (по умолчанию для НС-06 это цифры «1234»). Используя смартфон и планшет с операционной системой Android, команды можно подавать с помощью любой из нескольких десятков терминальных программ для Bluetooth, имеющихся на Google Play. Мне наиболее понравились следующие:
Terminal for Bluetooth (URL: https://play.google.com/store/apps/details?id=nextprototypes.bluetoothterminal) — хорошо работает с буфером, позволяет сохранять наработанное в файле (именно эта программа запущена на смартфоне на фото рис. 5);
S2 Terminal for Bluetooth Free (URL: https://play.google.com/store/apps/details?id=jp.side2.apps.btterm) — имеется функция передачи файла, но… за деньги;
Bluetooth Sériai Port Terminal (URL: https://play.google.com/store/apps/details?id=com.ucconnect.ucbtadapter_hex) — есть файловый менеджер и текстовый редактор.
Для установления соединения устройства управления подсветкой с настольным компьютером или ноутбуком нужно воспользоваться настройками Bluetooth на панели управления его операционной системы. После установления соединения следует запустить терминальную программу (в Windows ХР она входит в комплект поставки, для других ОС нужно установить любую из бесплатных), сообщив ей номер образованного в результате установления соединения по Bluetooth виртуального СОМ-порта. Номер и параметры этого порта можно увидеть в свойствах Bluetooth-соединения.
Об успешно установленном соединении сигнализирует непрерывное свечение светодиода HL7 на плате с Bluetooth-модулем. Теперь в терминальной программе можно вводить описанные выше команды и получать ответы на них. Пример протокола работы терминальной программы представлен на рис. 7.
Особенность команды А в том, что её не нужно вводить с клавиатуры. Этот символ должен содержаться в начале текстового файла подготовленной с помощью текстового редактора программы световых эффектов. Поэтому, например, в программе HyperTerminal (Windows ХР) нужно воспользоваться пунктом «Отправить текстовый файл…» в меню «Передача», указав подготовленный, как описано в [1], текстовый файл. На смартфоне придётся скопировать содержимое подготовленного файла в буфер обмена, а затем вставить содержимое буфера в поле ввода терминальной программы.
На этапе отладки устройства или модификации программы микроконтроллера удобно, отказавшись от Bluetooth, воспользовать ся прямым подключением устройства к USB-порту компьютера стандартным кабелем. Для этого вместо платы с Bluetooth-модулем к разъёму Х1 основной платы подключают переходник, схема которого показана на рис. 8. Такое подключение удобно ещё и тем, что не требует установки элементов питания в устройство (питание поступает от компьютера). Для установления связи с устройством точно так же, как было описано ранее, используется терминальная программа, например, для Windows ХР — HyperTerminal.
В заключение нужно сказать, что описанное устройство способно доставить творческое удовольствие, прежде всего, детям. Им, да и взрослым, будет интересно придумать свою композицию «бегущих огней», а затем в течение пары минут воплотить её в реальность и увидеть своими глазами. Причём для создания новой композиции достаточно обычного смартфона.
ЛИТЕРАТУРА
- ПахомовА. «Волшебный замок», управляемый по радио. — Радио, 2014, № 11, с. 50—53.
- НС-06 Bluetooth module. — URL: http://wavesen.com/probig.asp?id=24 (10.04.15).
- URL: http://wavesen.com/mysys/db_picture/news3/20141016121031101.pdf (10.04.15).
- HC-06 Module Data Sheet. — URL: http://silabs.org.ua/bc4/hc06.pdf (10.04.15).
Скачать программы для микроконтроллера
Автор: А. ПАХОМОВ, г. Владимир
Источник: Радио №6, 2015