Освой Arduino играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Подключение к компьютеру
Подключение к Android
AT-команды
Сравнение модулей HC-05 и HC-06
Модуль HC-06 (и старшая модель HC-05) представляет собой плату с Bluetooth-модемом с дополнительной обвязкой: стабилизатор с 5 на 3.3 вольта, светодиод, и конденсаторы на линиях питания. Также на плате установлен mosfet-транзистор (Q1), который при надобности может разрывать цепь питания блютуза, тем самым отключая его.
Модуль HC-06 используется только в режиме slave, то есть он не может самостоятельно подключаться к другим устройствам Bluetooth.
На HC-06 шесть подписанных контактов: EN, VCC, GND, TXD, RXD и State (некоторые обозначения могут иметь другие названия). Но ножками как правило оборудованы только четыре из них: VCC, GND, TXD и RXD.
Для подключения к Arduino Uno используется следующая схема.
HC-06 | Arduino
-----------------
GND | GND
VCC | 3.3V
RXD | TX
TXD | RX
Модуль HC-06 выступает в роли последовательного порта, через который можно передавать и принимать данные. Вы можете для этой цели использовать компьютер или смартфон.
Важное замечание: при заливке скетча убирайте провода с контактов 0 и 1 на плате Arduino, так как они используются для передачи данных вашего скетча. Когда скетч установите, можете вернуть провода на место.
Рассмотрим пример подключения и обмена информацией с компьютером. Если у компьютера нет встроенного Bluetooth, то можно купить отдельный модуль, подключаемый через USB.
Сначала необходимо сделать несколько предварительных действий. Когда вы подключите HC-06 к плате, он будет готов к работе, постоянно мигая своим светодиодом. Нужно установить соединение с компьютером. Далее объяснения идут для Windows 10. В нижнем правом углу находим значок Bluetooth и выбираем пункт Show Bluetooth Devices. В открывшемся окне выбираем пункт Add a device. В успешном случае будет обнаружено новое устройство с именем HC-06. Для спаривания с ним введите пароль по умолчанию 1234.
После успешного соединения нужно снова открыть окно Show Bluetooth Devices и выбрать пункт More Bluetooth options. В диалоговом окне переключитесь на вкладку COM Ports и запомните номер порта для Outgoing - в моём примере это был порт COM7.
Далее следует установить программу-терминал для общения с модулем. Самой простой и популярной является Termite. Я выбрал вариант "Program only" (вторая в списке) размером всего 76 кб. Программа не требует инсталляции и не пишет ничего в реестр. Запустите программу, нажмите на кнопку Settings и в диалоговом окне выберите нужный порт (который я просил запомнить) и скорость (9600).
Напишем скетч и зальём его на плату.
String message; // строка для входящих сообщений
void setup()
{
Serial.begin(9600);
}
void loop()
{
while (Serial.available())
{
message += char(Serial.read()); //сохраняем строку от входящих сообщений
}
if (!Serial.available())
{
if (message != "")
{ //если данные доступны
Serial.println(message); //выводим данные
message = ""; //очищаем данные
}
}
delay(3000); //delay
}
В Termite вводим любое слово в нижнем текстовом поле и нажимаем клавишу Enter. В Serial Monitor будут отображаться введённые слова. Это означает, что мы можем посылать определённые команды для платы, чтобы управлять ей.
Давайте попробуем включать и выключать встроенный светодиод на контакте 13.
int val;
int LED = 13;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop()
{
if (Serial.available())
{
val = Serial.read();
// При символе "1" включаем светодиод
if (val == '1')
{
digitalWrite(LED, HIGH);
Serial.println("On");
}
// При символе "0" выключаем светодиод
if ( val == '0')
{
digitalWrite(LED, LOW);
Serial.println("Off");
}
}
}
Если всё получилось, то примите мои поздравления. Теперь вы можете общаться с платой с компьютера.
Подключение к телефону на Android происходит по такой же схеме. Устанавливаем терминал, например Bluetooth Terminal, соединяемся с нашим модулем и посылаем команды из предыдущего скетча. Плата будет включать и выключать свой светодиод, принимая сигнал с телефона.
С помощью AT-команд можно сменить настройки по умолчанию. Имейте в виду, что в 2018 году модули стали поставляться с другой прошивкой и некоторые сведения, которые ранее были описаны в интернете, устарели. Я описываю актуальные команды на 2019 год.
Используем следующую схему подключения.
HC-06 | Arduino
-----------------
GND | GND
VCC | 3.3V
RXD | D3
TXD | D2
При подключении светодиод на модуле будет мигать два раза в секунду. В этом режиме можно вводить команды. Но сначала загрузим скетч.
#include <SoftwareSerial.h>
SoftwareSerial btSerial(2, 3); // RX, TX
/*
Connect pin 2 Arduino to pin TX HC-06
Connect pin 3 Arduino to pin RX HC-06
*/
void setup() {
Serial.begin(9600);
Serial.println("Enter AT commands:");
btSerial.begin(9600);
}
void loop()
{
if (btSerial.available())
Serial.write(btSerial.read());
if (Serial.available())
btSerial.write(Serial.read());
}
В Serial Monitor вводим команду AT. В ответ получим OK.
Чтобы сменить имя модуля, нужно ввести команду AT+NAME=CAT-06, где CAT-06 - новое имя. Имя не должно превышать 20 символов.
Узнать версию модуля: AT+VERSION. Ответ: VERSION:3.0-20170609.
Смена пароля: AT+PSWD:"0000", где 0000 ваш новый пароль.
Есть ещё команды для смены скорости, но тут нужно быть внимательным. После смены скорости старые скетчи не будут работать, надо вносить в них изменения, чтобы соответствовать новым настройкам. Не уверен, что стоит увлекаться этим.
Модули HC-05 и HC-06 являются наиболее используемыми. Оба модуля основаны на одинаковом чипе, но есть и важные отличия. Модуль HC-05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).
Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций. Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.
Подключение обоих модулей к плате Arduino одинаково.