Arduino и HC-06 (ZS-040)

HC-06 — это Bluetooth-модуль, работающий только в режиме slave, который довольно легко использовать с Arduino через последовательную связь. После подключения он просто ретранслирует полученные по Bluetooth данные на Arduino, а всё полученное от Arduino отправляет на подключённое устройство. Существует несколько немного отличающихся версий HC-06, однако все они, похоже, используют одну и ту же прошивку и одинаковые AT-команды. Мои модули маркированы как zs-040. У меня также есть HC-05, которые используют ту же печатную плату и тоже маркированы zs-040.

HC-06 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
  • HC-06 Vin → 5В (можно от выхода +5V Arduino)

  • HC-06 GND → общий GND

  • HC-06 RX → Arduino D3 (TX) через делитель напряжения

  • HC-06 TX → Arduino D2 (RX) напрямую

Arduino HC-06 подключение

Проверка связи с 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 подключён и общается.

HC-06 связь с Arduino

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 (без кавычек):

HC-06 zs-040 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 с Android

После сопряжения HC-06 нужно как-то с ним общаться. Для проверки работоспособности можно использовать BT-терминал, например, Bluetooth Terminal из Google Play.

Установите и откройте Bluetooth Terminal.

Откройте меню (иконка вверху экрана).

Выберите «Connect a device – Insecure». Появится список доступных устройств.

Выберите HC-06.

После подключения вверху экрана отобразится «connected: HC-06».

Подключение HC-06 к Android-устройству

Убедитесь, что Serial Monitor Arduino открыт — всё, что вы введёте в Android Bluetooth Terminal, отобразится в Serial Monitor.

HC-06 связь с Android-устройством

В Serial Monitor Arduino выберите «Both NL & CR» внизу окна — и всё, что вы напишете в Serial Monitor, будет отправлено в Android Bluetooth Terminal.

HC-06 двусторонняя связь с Android

Если NL&CR не выбраны, Arduino всё равно отправит данные, но Bluetooth Terminal не отобразит их до получения символов возврата каретки / новой строки.

Следующий шаг — включение и выключение светодиода.

Включение и выключение светодиода через Bluetooth

Обновлённое и перенесённое руководство по управлению светодиодом доступно в отдельной статье.

Обновление

У меня появились новые модули HC-06 zs-040 с прошивкой hc01.comV2.0. Подробнее здесь.


Оригинал статьи: Martyn Currey — martyncurrey.com