Содержание
Продолжаем эксперименты. В это посту, по просьбам читателей ))), постараюсь рассказать про подключение модуля реле к контроллеру Arduino и управление им по bluetooth. Для этого нам понадобятся:
1. контроллер Arduino (mini, uno, nano, mega… любой);
2. ПК с любой операционной системой под которой можно установить Arduino IDE (Windows, Linux, MacOS);
3. модуль реле (1,2,4,8 и т.д. шт). Впринципе моно собрать самому на реле SONGLE, оптроне 817С и жменьке деталюшек, но наши Китайские друзья облегчели нам жизнь )));
4. модуль Bluetooth. В моем случае это HC-06;
5. Телефон или планшет с android и bluetooth.
Поехали!
1. Устанавливаем Arduino IDE, об этом достаточно много статей.
2. Подключаем наш контроллер ардуино и запускаем arduino IDE. Если драйвера на контроллер стали ровно, то в среде разработке в пункте меню "Сервис" на вкладке "плата" мы увидим название своей ардуины и на вкладке "порты" порт USB к которой подключен контроллер.
Для того чтобы убедиться что все работает можем загрузить в контроллер тестовый скетч "Blink". Открываем его "Файл"->"примеры"->"01.Basics"->"Blink". Загружаем на плату кнопкой "Файл"->"Загрузить", если внизу видим надпись "Загрузка выполнена" значит все гуд, перегружаем плату и видим моргающий светик на ней. Если видим красное поле и ошибки, то возвращаемся к п.1 и внимательно читаем статьи по установке и подключению контролера к ПК.
3. Подключаем модуль реле. В моем случаем это модуль из 4-х реле. Для теста я подключил всего одно реле на нем, пин "IN1". Итак, пин "VCC" модуля реле подключаем к "+5V" ардуины, GND к GND, пины IN1,2,3,4… к цифровым портам D2-D13. (в моем случае IN1 к порту D7)
4. Подключаем bluetooth модуль (у меня HC-06). нам понадобиться 4 провода:
"VCC"-он же "+5в", можем взять от ардуины от соответствующего порта "+5V";
"GND" он же земля, берем так же от ардуины с любого пина "GND";
"TXD" модуля подключаем к пину "RX" ардуины;
"RXD" модуля подключем к пину "TX" ардуины.
Если последние два пина на плает ардуины не подписаны, то ищем на нее мануал и смотрим там.
5. На мобильном устройстве заходим в Google Play и качаем от туда "bluetooth terminal".
Программирование:
Для начало разберемся как оно все будет работать. Bluetooth модуль будет общаться с нашим контроллером в терминальном режиме, по средствам последовательного интерфейса. Не вдаваясь в подробности работы, контроллер будет записывать в порт и читать с него то что мы скажем, практически "русским языком", средствами метода "Serial". Контроллер по получению определенной команды с bluetooth будет управлять цифровым портом к которому подключено реле, подавая на него логическую "1" или "0", другим словами подавая +5В и 0В на пин порта, функцией digitalWrite. Начнем:
int val; //переменная в которую будем записывать команды по bluetooth
int Reley1 = 7; // порт к которму подключен пин IN реле. (порт D7, пин IN1)
void setup()
<
Serial.begin(9600); // запускаем работу с портом
pinMode(Reley1, OUTPUT); //говорим, что порт Reley1, т.е. порт D7 явлюяется портом вывода
Serial.println("Press 1 to ON or 0 to OFF");
>
void loop()
<
if (Serial.available()) //если из последовательного интерфейса что пришло, значит…
<
val = Serial.read(); // заносим в переменную val, то что пришло в порт
if (val == ‘1’) // если пришел символ "1" включаем реле, т.е. подаем высокий уровень на пин D7
<
digitalWrite(Reley1, HIGH);
Serial.println("Reley1 — ON");
>
if ( val == ‘0’) // если пришел символ "0" выключаем реле
<
digitalWrite(Reley1, LOW);
Serial.println("Reley1 — OFF");
>
>
>
Скетч готов. Теперь подключаем к реле девайс, которым будем управлять. В моем случае это 12В кулер. Подключаем "+" от куллера к реле, "-" к "-" источника питания для куллера, провод от реле подключаем к "+12в" того же источника питания.
Заливаем скетч в контроллер, кнопками "ctrl+U".
Запускаем на андроиде программу bluetooth terminal, подключаемся к устройству bluetooth HC-06, вводим пароль "1234". Пишем в порт цифру "1" и жмем кнопку "Send" — куллер включился, пишем "0" куллер выключился…
Ардуино имеет большое количество разнообразных модулей, способных значительно расширить функционал микроконтроллера. В отдельный класс выделяются чипы для передачи данных, как на большом расстоянии, например, для связи по беспроводному интернету, так и на коротком, как bluetooth модуль. Такое устройство предназначено для налаживания двунаправленных радиосвязей по одноимённому протоколу.
Arduino bluetooth будет удобен для удалённого управления вашим устройством на базе микроконтроллера, но давайте разберём, что это такое и какие характеристики у bluetooth модулей hc 05 и hc 06.
Что такое bluetooth модуль и его назначение
Bluetooth протокол необходим для быстрой передачи данных на небольших расстояниях. Но значительно чаще его применяют в проектах, с целью наладить управление микроконтроллером с близких расстояний. Соответственно, он будет удобен для построения тех же умных домов, если дополнить аппаратную составляющую приложением на смартфон.
Таким образом, первичное и главное назначение Ардуино блютуз – связь с вашим ПК иили Андроидом по соответствующему протоколу. Это позволяет не только управлять разнообразными датчиками на микроконтроллере, но и, в случае необходимости, обновлять прошивку.
Полностью перепрошить устройство с его помощью не получится. Помимо этого, Android Arduino bluetooth может обеспечить связь между несколькими МК и приборами. Естественно, для этого на каждом из них должен быть установлен независимый модуль. HC-05 позволяет проложить несколько мостов по типу USAR-bluetooth-USART. При этом само устройство будет восприниматься в качестве ответного на USART. А организовывать связь уже будет аппаратная часть вашего проекта.
Модуль HC-06
У блютуз модуля под Ардуино, есть несколько преимуществ, перед стандартными дополнениями под другие МК:
- Инженеру нет необходимости изучать технологию протокола блютуз, чтобы написать софт или начать использовать уже готовые библиотеки.
- Простота использования в целом. Вам не нужно будет паять отдельную плату под распределение мощностей, просто подсоедините устройство к уже готовому МК через пины.
- Обширный выбор библиотек. Так как Ардуино имеет низкий порог вхождения, под все его модули можно найти большое количество библиотек, разного назначения. Но стоит отметить, что весомая их часть – бесполезны, ибо не работают или работают крайне плохо. Ведь пишет их сообщество, которое не изучало основы алгоритмизации и, в большинстве своём, в принципе, плохо разбирается в программировании. Из-за этого, во многих ситуациях, просто модифицировать чужой софт – не лучшее решение, и значительно проще написать свой.
Сфера же применения RC car Arduino bluetooth – огромна и ограничена лишь вашей фантазией. Например, вы можете купить обычную китайскую гарнитуру, припаять к ней пару модулей под Ардуино, так как они могут функционировать и без МК, и загрузить одну из готовых библиотек. После таких манипуляций наушники можно будет использовать в беспроводном режиме и исчезнет проблема с запутывающимися или гнущимися проводами. Это одна из банальных проблем реализации данного протокола в проекте, на деле их тысячи.
Предназначается bluetooth аудио модуль для бытового и коммерческого применения, чему способствуют его характеристики. Также стоит учитывать, что если вы собираетесь в дальнейшем связываться по одноимённому протоколу с ПК, то на большинстве современных устройств необходимо будет докупить блютуз по USB. Но вы можете также спаять его из МК, создав собственный bluetooth модуль для компьютера. Естественно, это не относится к ноутбукам, где поголовно устанавливаются одноимённые передатчики, и никак модифицировать их уже не требуется.
Распиновка HC-05 и HC-06
Выводы на платах отвечают за:
Вывод | Значение |
EN | включение/выключение модуля |
VCC | питание +5В |
GND | земля |
TXD, RXD | UART интерфейс для общения с контроллером |
STATE | индикатор состояния |
KEY | нога для входа в режим AT-команд |
Характеристики
Давайте подробнее разберёмся, какие характеристики имеет такой bluetooth модуль для ПК и различных проектов. Сами разработчики заявляют, что выдержали коммерческий стандарт в hc 05. Соответственно, для управления устройством будет достаточно специальной программы на смартфоне или компьютере, которая позволит отправлять и получать данные с датчика. Однако существует ограничение в области применения, ведь устойчивый сигнал, без использования усилителей, можно поймать лишь на 9 метрах от чипа. Учитывайте, что это сырые цифры, в которых во внимание не берутся преграды на пути волн.
Сами hc чипы полностью совместимы с любыми адаптерами, что поддерживают SPP. На самой плате устройства размещается небольшая антенна, припаянная к верхнему слою в виде дорожки, похожей на змею. Характеристики девайса заявлены следующие:
- Активные частоты радиосвязи находятся в диапазоне 2.4-2.48 ГГц.
- Канал приспособлен к адаптивному переключению.
- Условная дальность связи – 10 метров, но в этой цифре не учитываются преграды и помехи.
- Максимальная скорость при обмене информацией – 115300 бод.
- Хранить чип можно в температурном диапазоне от – 40 до +85 градусов, а вот использовать – от -20 до +70.
- Для работы необходимо будет напряжение в 3.3 В, что мы рассмотрим чуть ниже.
Подключение
В печатной плате установлено несколько контактов под пайку, у торцов устройства. Но напрямую подсоединять провода к контактам девайса не стоит, ведь в плате применяется особая технология, позволяющая максимально компактно впихнуть габариты устройства в вашу систему.
Устанавливать модуль необходимо достаточно плотно, для чего подойдёт стандартный МК или специальные платы, в которых применяются вилки-соединители. Но вы можете приобрести и отдельную плату под девайсы серии hc, или же сделать их самостоятельно, если у вас есть навыки по проектированию и созданию электронных плат.
В подобном девайсе обязательно должен быть соединительный разъемспециальные отверстия для монтажа проводки, а также светодиоды, которые помогут определить, идёт ли ток и работает ли устройство. Помимо прочего, необходимы стабилизаторы, специальный переключатель для reset’а прошивки и преобразователи интерфейсов, по вашему желанию.
При первом подключении важно проверить работоспособность, для этого подойдёт смартфон или ПК. Просто подайте ток на модуль и просканируйте его соответствующими устройствами.
Настройка
Для настройки чипа потребуется установить сопряжение по USART-bluetooth, где 34 контакт будет подсоединён к общему проводу. После этого вы можете подавать стандартные АТ команды или перепрошить микрочип, по вашему желанию.
Из «коробки» же пароль для подключения интерфейса – 1234, а вот скорость обмена данными ограничивается до 38400 бод. Готовых библиотек на HC 05 не много, но и направление его применения достаточно узкое, что позволяет адаптировать любой уже имеющийся софт под ваши потребности.
В настоящее время в зарубежных и отечественных магазинах можно найти большое количество различных Bluetooth Serial модулей для DIY-устройств. Цена на них не сильно высока: 5-10$ за модуль (с учетом бесплатной доставки в любую страну). Их легко можно найти на широко известной площадке AliExpress введя в поисковую строку одно из словосочетаний: Bluetooth RS232, Bluetooth Serial, HC-03, HC-04, HC-05, HC-06 или нажать на эту ссылку.
В большинстве модулей используется чип BC417, плюс Flash-память. Чип поддерживает спецификацию Bluetooth v2.0 + EDR, AT-команды, может работать в режиме Master или Slave (модули HC-03/HC-5, может устанавливаться AT-командой), поддерживает скорость обмена от 2400 до 1382400.
Напряжение питание модуля составляет 3.3В, ток потребления
50мА.
Модули HC-03/HC-05 более функциональные, чем HC-04/HC-06.
Основные выводы модулей HC-04/HC-06:
UART_TX (pin 1), UART_RX (pin 2), UART_CTS (pin 3), UART_RTS (pin 4) – пины UART.
3,3V (pin 12) – питание 3.3В.
GND (pin 13) – общий.
PIO1 (pin 24) – индикатор рабочего режима. Если соединение не установлено – то светодиод мигает, если установлено, то постоянно горит.
Для модулей HC-03/HC-05 есть некоторые отличия. Линии UART и питания те же самые, но:
PIO8 (pin 31) – индикатор рабочего режима.
PIO9 (pin 32) – статус соединения, если соединение установлено, то на выходе будет высокий уровень.
PIO11 (pin 34) – вход включения режима AT-команд (необходимо подать лог. 1).
За более подробной документацией обращайтесь к PDF.
Итак, соберем простую схему для подключения Bluetooth модуля HC-06 к плате Arduino Nano V3.
Обратите внимание, что выводы TX и RX в плате Arduino Nano поменяны местами в отличии от Ardunio UNO и др. Поэтому внимательно смотрите распиновку своей Arduino платы.
Шаг между выводами в модуле составляет всего 1.5мм, поэтому придется взяться за паяльник и припаять провода к модулю. Всего необходимо припаять 5 проводов, однако светодиод подключать необязательно, он служит для индикации состояния.
Итак припаиваем провода и подключаем Bluetooth модуль следующим образом:
вывод Arduino 3.3В – к 12 пину модуля
вывод Arduino GND – к 13 пину модуля
вывод Arduino TX – к 2 пину модуля RX
вывод Arduino RX – к 1 пину модуля TX
Передача данных из Arduino по Bluetooth
Далее напишем простенький скетч для отправки сообщений из Bluetooth модуля в компьютер.
Как видите скетч довольно простой и хорошо прокомментирован. В цикле, раз в секунду происходит увеличение переменной cnt, которая затем с текстовой надписью выводится в последовательный порт на Bluetooth модуль. Обратите внимание, что скорость порта установлена в значение 9600. При покупке модуля, спрашивайте на какое значение установлена скорость обмена по последовательному интерфейсу. Но в большинстве случаев это 9600. При необходимости, скорость обмена можно изменить АТ-командами.
Откройте данный скетч в Arduino IDE, скомпилируйте и прошейте ваш Arduino. Если вы подключали светодиод в Bluetooth модулю, то он должен мигать, показывая тем самым, что модуль ожидает соединение.
Внимание! Если при прошивке платы Arduino ругается прошивальщик, то отключите питание 3.3В с Bluetooth модуля.
На компьютере, в качестве Bluetooth модуля использовался самый дешевый китайский Bluetooth USB адаптер, стоимостью около 200 руб. После того, как адаптер подключается к компьютеру, установите необходимые драйвера (в Windows 7 x64 у меня все драйвера поставились автоматом).
Затем щелкаем в трее по иконке Bluetooth модуля и выбираем "Добавить устройство":
Имя моего модуля BOLUTEK, у вас оно скорее всего будет другим. Нажимаем "Далее" и переходим к окну, где необходимо ввести пароль для устройства:
Выбираем второй пункт: "Введите код образования пары устройства". С завода, код установлен 1234. Его и вводим. Программа настроит и пропишет в системе виртуальные COM-порты (у меня прописало 2 шт, но может быть и один):
В дальнейшем, можно посмотреть на какой COM-порт назначилось и его параметры. Для этого щелкаем правой кнопкой мыши по устройству и выбираем "Свойства" и вкладку "Оборудование". Там можно посмотреть и изменить параметры виртуального COM-порта:
Теперь, для приема и передачи данных на виртуальный COM порт можно использовать любую терминал программу. Я использовал бесплатную Tera Term. При каждом запуске программы предлагается выбор соединения, переключаем флажок на Serial и выбираем COM порт вашего Bluetooth модуля. У меня это COM4.
В терминале мы видим данные счетчика с платы Arduino:
Как видим, данные успешно передаются по Bluetooth соединению. Ниже в статье вы можете посмотреть видео.
Двунаправленный обмен данными по Bluetooth
Следующим шагом будет написание простенькой программы двунаправленного обмена данными между Arduino и компьютером. В схему я добавил светодиод, подключив его к 12 пину Arduino, через токоограничительный резистор. Но можно использовать и встроенный LED (обычно 13 пин).
Программа работает очень просто. После запуска или сброса устройства, в последовательный порт выводится сообщение с предложением нажать 1 или 0. В зависимости от нажатой цифры светодиод будет загораться или гаснуть. А также, от Arduino будет выводиться сообщение загорелся светодиод, или погас.
Подключаем к Android
Для платформы Android также существуют программы-терминалы. Но необходима специальная программа для работы в терминальном режиме по Bluetooth. Я установил вот эту: Bluetooth Terminal. Достаточно простая программа, ничего лишнего.
В моем Android устройстве нет Bluetooth модуля, но он прекрасно работает и с внешним USB-адаптером, который мы использовали для подсоединения к ПК. Подключаем адаптер по USB, включаем на андроиде bluetooth, находим и вводим пароль для нашего Bluetooth устройства на Arduino и наконец запускаем программу терминал. Нажимаем "Connect a device – Secure" и выбираем наше устройство BOLUTEK. Теперь вы можете отправлять и принимать данные с Bluetooth устройства при помощи терминала.