Bluetooth модули могут использоваться для беспроводного подключения и управления такими устройствами, как радиоуправляемые машинки и роботы, модули умного дома и другие устройства. Самый распространенный вариант - установка bluetooth модуля в устройство на Arduino и написание софта под Android или iOS для управления им.
Но можно пойти другим путем: пульт управления также изготовить самому на базе Arduino, экрана, кнопок и корпуса, напечатанного на 3D-принтере. Во-первых, это интереснее с точки зрения того, что вы создаете все полностью сами - и устройство, и пульт. И во-вторых, вам не нужно изучать Java или Objective C / Swift, а достаточно уметь программировать на C++. В общем как по мне, так это более DIY-ый путь :)
Итак, для второго вариант нам понадобится 2 bluetooth модуля. Из всей линейки наиболее универсальным является модуль HC-05. Он может работать как в режиме slave, так и в режиме master, и режим можно менять, в отличии от модулей HC-04, HC-06, HC-07 и HC-09, которые могут работать только в одном режиме, и чаще всего это slave. Есть еще модуль HC-08, который поддерживает версию протокола Bluetooth v4.0 BLE (с низком энергопотреблением).
Итак, кроме двух модулей HC-05 нам также понадобится переходник ttl-usb для подключения модулей к компьютеру для их первоначальной настройки (это нужно сделать лишь раз). Ссылки на модули и переходник есть в конце статьи. Обратите внимание, что модули bluetooth продаются как распаянные, так и нет. Я оставлю ссылки на распаянные для удобства.
Итак, первое, что мы делаем, это конфигурируем модули. Для этого подключаем сначала первый модуль (пусть это будет будущий slave) к переходнику по схеме:
- +5V (переходник) – VCC (модуль bluetooth)
- GND (переходник) – GND (модуль bluetooth)
- TXD (переходник) – RXD (модуль bluetooth)
- RXD (переходник) – TXD (модуль bluetooth)
- +3.3V (переходник) – KEY (модуль bluetooth)
Обратите внимание на то, что мы питаем bluetooth модуль от 5 вольт. Это нормально, не пугайтесь того, что на нем написано 3.3v, он имеет встроенный стабилизатор напряжения и отлично работает от 5 вольт.
А смогли вы найти контакт KEY на модуле, на который нужно подать 3.3 вольта? Это нижний левый контакт (см. картинку).
Большинство модулей продается в прозрачном полиэтилене, и не составит труда подпихнуть под него проводок, он отлично держится.
Далее - вставляем переходник в usb. Сам модуль bluetooth должен замигать светодиодом: 2 сек включен, 2 сек выключен и тд. Если этого не произошло, проверьте, что все подключено по схеме верно.
Запускаем монитор порта. Можно использовать тот, что входит в Arduino IDE. В списке последовательных портов появится новый, нужно указать его. И выбираем следующие настройки:
- скорость: 38400
- режим бод: NL & CR
Настройка модуля slave
Пробуем отправить команду AT, если в ответ мы получили OK - то все подключено верно.
Теперь нужно узнать адрес адаптера:
AT+ADDR?
+ADDR:13:EF:9C77
OK
У вас адрес будет естественно свой. Очищаем список сопряженных устройств:
AT+RMAAD
Устанавливаем скорость (по умолчанию стоит 9600) и пароль (заводской - 1234, придумываем свой вместо того, что в примере - 5555) - они должны совпадать у мастера и слейва:
AT+UART=115200,0,0
AT+PSWD="5555"
И устанавливаем режим slave:
AT+ROLE=0
Настройка модуля master
Отключаем bluetooth адаптер от переходника и подключаем второй, который будет работать в режиме master. Точно по той же схеме, не забыв подать 3.3V на KEY.
Очищаем список сопряженных устройств:
AT+RMAAD
Устанавливаем скорость и пароль (такой же, какой установили для slave модуля):
AT+UART=115200,0,0
AT+PSWD="5555"
Устанавливаем режим master:
AT+ROLE=1
И последнее: настраиваем его на подключение только к нашему slave модулю:
AT+CMODE=0
AT+BIND=0013,EF,009C77
Обратите внимание на последнюю команду, точнее на ее аргумент. Мы передаем адрес первого адаптера, который узнали ранее, но три блока цифр разделены уже запятыми вместо двоеточий, а также первый блок цифр дополнен впереди нулями до четырех, а третий блок дополнен нулями до шести символов. Это важно, и без этого команда не отработает.
Проверка работы
Отключаем оба модуля. Для проверки нам понадобятся две платы Arduino и две кнопки (либо просто проводки). Сначала зальем на обе платы следующий код:
#include <Arduino.h>
void setup()
{
pinMode(13, OUTPUT);
pinMode(7, INPUT_PULLUP);
Serial.begin(115200);
}
void loop()
{
static bool light = true;
if (Serial.available()) {
if (Serial.read() == int('@')) {
light = true;
}
}
if (light) {
digitalWrite(13, HIGH);
if (!digitalRead(7)) {
Serial.print("@");
digitalWrite(13, LOW);
light = false;
}
}
}
После прошивки подключим кнопки к 7 пину и к земле. Можно вместо кнопок просто подключить по 2 проводка к соответствующим пинам каждой платы.
Bluetooth модули подключим так:
- +5V (arduino) – VCC (модуль bluetooth)
- GND (arduino) – GND (модуль bluetooth)
- TX (arduino) – RXD (модуль bluetooth)
- RX (arduino) – TXD (модуль bluetooth)
После подачи питание на обе Arduino платы bluetooth модули хаотично замигают светодиодами, после чего произойдет их сопряжение и они начнут мигать синхронно. Если при нажатии на подключенные к платам кнопки вы видите, как попеременно на Arduino загорается светодиод, то проверка прошла успешно.