Arduino и HC-06 (ZS-040)
HC-06 — это Bluetooth-модуль, работающий только в режиме slave, который довольно легко использовать с Arduino через последовательную связь. После подключения он просто ретранслирует полученные по Bluetooth данные на Arduino, а всё полученное от Arduino отправляет на подключённое устройство. Существует несколько немного отличающихся версий HC-06, однако все они, похоже, используют одну и ту же прошивку и одинаковые AT-команды. Мои модули маркированы как zs-040. У меня также есть HC-05, которые используют ту же печатную плату и тоже маркированы zs-040.
HC-06 по умолчанию переходит в AT-режим при включении. Это обозначается быстро мигающим светодиодом. После подключения HC-06 к другому устройству светодиод перестаёт мигать и горит постоянно.
Подключение
Bluetooth-модуль, на котором основан ZS-040 — EGBT-046S — работает на 3.3В. Плата расширения HC-06 имеет стабилизатор 3.3В, что позволяет использовать более высокое входное напряжение — от 3.6 до 6 В. Однако пин RX принимает только 3.3В. Это означает, что для подключения к 5В Arduino необходим делитель напряжения. Простой делитель можно создать с помощью 2 резисторов. Я использую резистор 1 кОм и резистор 2 кОм. Arduino считывает 3.3В как HIGH, поэтому пин TX HC-06 можно подключить напрямую к Arduino.
HC-06 Vin → 5В (можно от выхода +5V Arduino)
HC-06 GND → общий GND
HC-06 RX → Arduino D3 (TX) через делитель напряжения
HC-06 TX → Arduino D2 (RX) напрямую
Проверка связи с HC-06
После подключения всего нам нужно общаться с HC-06. Мы можем это сделать с помощью программного Serial на Arduino. Я использую SoftwareSerial для общения с Bluetooth-модулями, а аппаратный Serial — для отладки.
Следующий скетч принимает всё введённое в Serial Monitor компьютера и передаёт это на HC-06. Скетч также принимает всё, что выводит HC-06, и передаёт в Serial Monitor. Arduino действует как ретрансляционная станция между Serial Monitor и BT-модулем.
Мои HC-06 имеют скорость по умолчанию 9600. Другие модули могут иметь другую скорость. Если 9600 не работает, попробуйте другие. 38400 тоже очень распространена. Как только связь заработает, вы можете изменить скорость под свои нужды.
// Базовый скетч Bluetooth HC-06_01
// Подключите модуль HC-06 и общайтесь через Serial Monitor
//
// HC-06 по умолчанию в AT-режиме при включении.
// Скорость по умолчанию 9600
// HC-06 требует AT-команды в верхнем регистре. NL+CR не нужны
//
#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // RX | TX
// Подключите HC-06 TX к Arduino RX на пине 2.
// Подключите HC-06 RX к Arduino TX на пине 3 через делитель напряжения.
//
void setup()
{
Serial.begin(9600);
Serial.println("Enter AT commands:");
// Скорость HC-06 по умолчанию 9600
BTserial.begin(9600);
}
void loop()
{
// Чтение от HC-06 и отправка в Arduino Serial Monitor
if (BTserial.available())
{
Serial.write(BTserial.read());
}
// Чтение из Arduino Serial Monitor и отправка на HC-06
if (Serial.available())
{
BTserial.write(Serial.read());
}
}
HC-06 zs-040 ожидает команды в верхнем регистре и не требует символов возврата каретки и новой строки (\r\n).
Откройте Serial Monitor и выберите скорость 9600, убедитесь, что в выпадающем списке внизу окна выбрано «No line ending» (без символов окончания строки).
Введите AT (без кавычек) в текстовое поле вверху и нажмите Send. Если HC-06 вас воспримет, он ответит OK. AT — это базовая команда проверки связи, позволяющая убедиться, что HC-06 подключён и общается.
AT-команды
HC-06 имеет ограниченное количество команд. Вы можете переименовать устройство, изменить скорость передачи и PIN-код. На этом всё.
Команда |
Ответ |
Описание |
|---|---|---|
AT |
OK |
Тест связи |
AT+VERSION |
OKlinvorV1.8 |
Версия прошивки |
AT+NAMEmyBTmodule |
OKsetname |
Устанавливает имя модуля на «myBTmodule» |
AT+PIN6789 |
OKsetPIN |
Устанавливает PIN-код 6789 |
AT+BAUD1 |
OK1200 |
Скорость 1200 |
AT+BAUD2 |
OK2400 |
Скорость 2400 |
AT+BAUD3 |
OK4800 |
Скорость 4800 |
AT+BAUD4 |
OK9600 |
Скорость 9600 |
AT+BAUD5 |
OK19200 |
Скорость 19200 |
AT+BAUD6 |
OK38400 |
Скорость 38400 |
AT+BAUD7 |
OK57600 |
Скорость 57600 |
AT+BAUD8 |
OK115200 |
Скорость 115200 |
AT+BAUD9 |
OK230400 |
Скорость 230400 |
AT+BAUDA |
OK460800 |
Скорость 460800 |
AT+BAUDB |
OK921600 |
Скорость 921600 |
AT+BAUDC |
OK1382400 |
Скорость 1382400 |
Для получения версии прошивки введите AT+VERSION (без кавычек):
Мои модули сообщают, что используют версию linvorV1.8, что, по-видимому, характерно для многих HC-06.
Примечание: Windows не может использовать скорости выше 115200. Если вы используете Windows и случайно установили скорость выше 115200 — вам не повезло!
Убедившись, что HC-06 работает и общается, можно попробовать подключиться к Android-устройству.
Подключение HC-06 к Android-устройству
Поскольку HC-06 — устройство только slave, соединение должно инициироваться другим устройством. Ниже описаны шаги для сопряжения и подключения к Android-устройству.
Я использую приложение Bluetooth Terminal, которое больше не доступно в Google Play (обновлено в ноябре 2023).
Быстрый поиск покажет множество альтернатив.
Прежде чем подключиться к HC-06, нужно выполнить сопряжение.
Включите HC-06. Светодиод будет быстро мигать.
Откройте Настройки на Android-устройстве и выберите Bluetooth.
Если ваше устройство не сканирует автоматически, нужно вручную запустить поиск доступных Bluetooth-устройств. HC-06 должен появиться в списке.
Выберите HC-06. Вас попросят ввести PIN-код. PIN по умолчанию — «1234».
Имя модуля может включать MAC-адрес — последовательность шестнадцатеричных чисел.
После сопряжения HC-06 нужно как-то с ним общаться. Для проверки работоспособности можно использовать BT-терминал, например, Bluetooth Terminal из Google Play.
Установите и откройте Bluetooth Terminal.
Откройте меню (иконка вверху экрана).
Выберите «Connect a device – Insecure». Появится список доступных устройств.
Выберите HC-06.
После подключения вверху экрана отобразится «connected: HC-06».
Убедитесь, что Serial Monitor Arduino открыт — всё, что вы введёте в Android Bluetooth Terminal, отобразится в Serial Monitor.
В Serial Monitor Arduino выберите «Both NL & CR» внизу окна — и всё, что вы напишете в Serial Monitor, будет отправлено в Android Bluetooth Terminal.
Если NL&CR не выбраны, Arduino всё равно отправит данные, но Bluetooth Terminal не отобразит их до получения символов возврата каретки / новой строки.
Следующий шаг — включение и выключение светодиода.
Включение и выключение светодиода через Bluetooth
Обновлённое и перенесённое руководство по управлению светодиодом доступно в отдельной статье.
Обновление
У меня появились новые модули HC-06 zs-040 с прошивкой hc01.comV2.0. Подробнее здесь.
Оригинал статьи: Martyn Currey — martyncurrey.com