HC-05 FC-114 и HC-06 FC-114. Часть 3 — Режим Master и автоподключение
Примечание
Обновление 19.09.2015
У плат FC-114, которые есть у автора, установлена прошивка Bolutek. Пользователь DS сообщил, что у него FC-114 с прошивкой linvorV1.8. Если описанное ниже не работает, проверьте, какая прошивка установлена на вашем модуле.
Возможно, автор упускает что-то, но у него не получается перевести модули HC-05 FC-114 в режим Master и подключиться к другим BT-устройствам только с помощью AT-команд. Модули говорят, что приняли команды, например AT+ROLE1, но при попытке подключиться к другим модулям выдают ошибку «Can only be used in Lord Mode» (можно использовать только в режиме Master).
Модули принимают AT+ROLE1 и сообщают, что изменили режим, но на самом деле этого не произошло.
В более ранней публикации автор упоминал, что, похоже, пин 27 или пин 28 должен быть подтянут к HIGH для входа в режим Master, и это действительно так. Все попытки без подтяжки пина(ов) к HIGH не увенчались успехом.
Модули отвечают «OK», и при запросе AT+ROLE сообщают +ROLE=1, но на самом деле всё ещё находятся в режиме Slave.
Руководство пользователя показывает распиновку:
Есть 2 варианта входа в режим Master: подтянуть пин 27 к HIGH или подтянуть пин 28 к HIGH. Пин 27 позволяет использовать программное управление, а пин 28 — аппаратный переключатель.
Когда пин 27 в состоянии HIGH, вы используете AT-команды для входа в режим Master. Когда пин 28 в состоянии HIGH (а пин 27 LOW или не подключен), модули автоматически переключаются в режим Master. Оба способа примерно одинаковы, и автор решил использовать пин 27.
Итак, чтобы подтянуть пин 27 к HIGH, автор припаял провод между пином 27 и пином EN на плате-переходнике. Использовался тонкий одножильный монтажный провод, идеально подходящий для такой работы.
Не лучший пример пайки, но достаточно хороший.
Автор осознал после пайки, что не знал, используется ли пин EN на модулях FC-114. Однако подтяжка EN к HIGH переводит модуль в режим AT-команд и не влияет на работу модуля каким-либо другим образом.
Примечание
Обновление 22.08.2015
Пин EN при подтяжке к LOW отключает модуль, так же как и у модулей zs-040. Поскольку автор вряд ли будет использовать пин EN для отключения модуля, провод остаётся на месте. Возможно, вы не захотите подключать его таким образом.
Помните, что пины на мини-плате BT рассчитаны только на 3.3В. Поэтому для подтяжки пина 27 к HIGH нужно использовать 3.3В, а не 5В.
Вот схема на макетной плате:
Пин EN подключён к делителю напряжения (резистор 1 кОм и резистор 2 кОм), а затем к 5В. Делитель напряжения снижает 5В до 3.3В.
Подключение
Arduino D2 к BT TX
Arduino D3 к делителю напряжения, затем к BT RX
Arduino 5V к BT VCC
HC-05 пин 27 к делителю напряжения, затем к VCC
GND к GND
Выполните подключение и загрузите следующий скетч на HC-05 FC-114.
Скетч Arduino HC-0x_FC-114_01_9600
// Basic bluetooth test sketch. HC-0x_FC-114_01_9600
// Uses hardware serial to talk to the host computer and software serial for communication with the bluetooth module
//
// Pins
// BT VCC to Arduino 5V out.
// BT GND to GND
// Arduino D3 to BT RX through a voltage divider
// Arduino D2 BT TX (no need voltage divider)
//
// When a command is entered in the serial monitor on the computer
// the Arduino will relay it to the bluetooth module and display the result.
//
// The HC-0x FC-114 modules require CR and NL
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // RX | TX
char c = ' ';
boolean NL = true;
void setup()
{
Serial.begin(9600);
Serial.println("Sketch HC-0x_FC-114_01_9600");
Serial.println("Arduino with HC-0x FC-114 is ready");
Serial.println("Make sure Both NL & CR are set");
Serial.println("");
// FC-114 default baud rate is 9600
BTSerial.begin(9600);
Serial.println("BTserial started at 9600");
Serial.println("");
}
void loop()
{
// Read from the Bluetooth module and send to the Arduino Serial Monitor
if (BTSerial.available())
{
c = BTSerial.read();
Serial.write(c);
}
// Read from the Serial Monitor and send to the Bluetooth module
if (Serial.available())
{
c = Serial.read();
BTSerial.write(c);
// Echo the user input to the main window. The ">" character indicates the user entered text.
if (NL) { Serial.print(">"); NL = false; }
Serial.write(c);
if (c==10) { NL = true; }
}
}
Настройка ведомого устройства — HC-06
Автор использует HC-06 на отдельной макетной плате. С ним ничего особого не делается — только подаётся питание и разрешается HC-05 подключаться к нему.
Настройка автоподключения на HC-05 FC-114
Откройте монитор порта и перезагрузите HC-05 FC-114. Светодиод на HC-05 должен мигать: 1 секунда включён, 1 секунда выключен.
Убедитесь, что выбран режим «Both NL & CR» и введите следующие команды:
AT+ROLE1
AT+CMODE1
AT+ROLE1 переводит модуль в режим Master (ведущий).
AT+CMODE1 разрешает модулю подключаться к любому другому BT-устройству в режиме Slave.
Светодиод должен по-прежнему мигать в том же ритме: 1 секунда включён, 1 секунда выключен.
Светодиод на HC-06 должен мигать примерно 5 раз в секунду.
При открытом мониторе порта перезагрузите HC-05. Приветственное сообщение теперь должно содержать «MASTER mode».
При повторном включении HC-05 он будет искать доступные Bluetooth-устройства и автоматически подключится к устройству с самым сильным сигналом. Во время поиска светодиод будет быстро мигать 3 раза каждые пару секунд. Подключение должно занять не более пары секунд.
После подключения светодиод на HC-05 горит постоянно.
Одна из приятных особенностей модулей HC-05 FC-114 заключается в том, что они выводят текущий статус, и вы можете отслеживать процесс подключения.
Модуль, по-видимому, запоминает первое ведомое устройство, к которому он подключился, и будет пытаться подключиться к тому же модулю при перезагрузке. Автор настроил ещё 2 модуля HC-06, и они, похоже, игнорируются, даже когда исходный HC-06 не запитан.
После настройки модуля вам больше не нужно подтягивать пин 27 к HIGH. Модули HC-05 FC-114 будут автоматически подключаться даже без подачи питания на пин 27.
Примечание
Обновление
Автор экспериментировал с этим в течение нескольких часов, постоянно останавливая и запуская HC-05. Модуль всегда подключается к исходному HC-06, даже когда другие HC-06 и HC-05 (в режиме Slave) доступны.