Arduino

технологии

Настройка bluetooth модулей

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 вольта? Это нижний левый контакт (см. картинку).

Bluetooth HC-05 key

Большинство модулей продается в прозрачном полиэтилене, и не составит труда подпихнуть под него проводок, он отлично держится.

Далее - вставляем переходник в 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 загорается светодиод, то проверка прошла успешно.

Купить модуль bluetooth hc-05: 1, 2, 3

Купить переходник usb-ttl: 1, 2, 3