Освой Arduino играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Bluetooth-модуль HC-06

Подключение к компьютеру
Подключение к 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.

HC-06

Технические характеристики

  • Питание: 3,3В–6В
  • Максимальное входное напряжение: 5В
  • Максимальный ток: 45 мА
  • Скорость передачи данных: 1200–1382400 бод
  • Рабочие частоты: 2,40 ГГц – 2,48ГГц
  • Поддержка спецификации bluetooth версии 2.1
  • Дальность связи: 30 м
  • Пароль «1234», скорость передачи данных 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)

Для подключения к 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.

HC-06

После успешного соединения нужно снова открыть окно Show Bluetooth Devices и выбрать пункт More Bluetooth options. В диалоговом окне переключитесь на вкладку COM Ports и запомните номер порта для Outgoing - в моём примере это был порт COM7.

HC-06

Далее следует установить программу-терминал для общения с модулем. Самой простой и популярной является 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

Подключение к телефону на Android происходит по такой же схеме. Устанавливаем терминал, например Bluetooth Terminal, соединяемся с нашим модулем и посылаем команды из предыдущего скетча. Плата будет включать и выключать свой светодиод, принимая сигнал с телефона.

AT-команды

С помощью 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 и HC-06 являются наиболее используемыми. Оба модуля основаны на одинаковом чипе, но есть и важные отличия. Модуль HC-05 может работать в двух режимах работы – и в качестве ведущего (master), и в качестве ведомого (slave).

Модуль HC-05 стоит несколько дороже, но он имеет большее количество полезных рабочих функций. Скорость передачи АТ команд по умолчанию для HC-05 равна 38400, для HC-06 – 9600. Важным моментом является то, что в конце АТ команд для HC-05 должны быть символы CRLF.

Подключение обоих модулей к плате Arduino одинаково.

Реклама