Записал скетч в Arduino UNO через виртуальный COM-port. С помощью Монитор порта Arduino IDE 2.3.2 проверил работу Arduino UNO по записанному скетчу. При этом контакты RX, TX Arduino UNO не должны быть задействованы другими устройствами.
int val;
int LED = 13;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
}
void loop()
{
if (Serial.available())
{
val = Serial.read();
// При символе "1" включаем светодиод
if (val == '1')
{
digitalWrite(LED, HIGH);Serial.println("Включаем светодиод");}
// При символе "0" выключаем светодиод
if (val == '0')
{
digitalWrite(LED, LOW);
Serial.println("Выключаем светодиод");
}
}
}
Отсоединил кабель USB, отключил питание UNO (источник 9 В). Подключил BT-06. Не стал подключать делитель для входа RXD модуля.
При настройке модуля AT командами все-таки запаял делитель для входа RXD BT-06 (4,7 кОм на UNO, 10 кОм на GND).
Светодиод на BT-06 мигает. Запустил Arduino IDE 2.3.2. Выбрал контроллер UNO. Порты – COM3, COM4, не знаю почему запомнились. Включил Монитор порта.
На вкладке Параметры Windows выбрал Bluetooth и устройства. Добавить устройство.
Обнаружились два JDY-31-SPP. Мои. Если отключить питание от UNO – они исчезают.
Здесь, наконец-то, начались пляски с бубном. Нужно выбрать того, который потребует пароля 1234.
И опять потребовалось несколько циклов отключения и подключения, чтобы, сначала, в IDE появились COM6 и COM7, и, наконец, светодиод на BT-06 стал светиться постоянно. Как и в случае с JDY-31-SPP пришлось крутиться с портами.
Подаем в Мониторе IDE 1 – светодиод на UNO светится, в приемном окне Монитора выводится «Включаем светодиод», подаем 0 – тухнет, выводится «Выключаем светодиод». Скорость 9600, Both NL & CR. После настройки AT командами скорость — 115200.
Настройка BT-06, AT команды
Настройка BT-06 осуществляется в режиме AT-команд. В этом режиме модуль принимает данные через UART интерфейс (RXD, TXD) и интерпретирует их как команды настройки.
Чтобы модуль отвечал на команды, он должен находиться в режиме ожидания подключения (светодиод мигает).
Подключил пин RST UNO к GND, чтобы микроконтроллер не запустился.
Контакт UNO RX подключил к контакту RXD BT-06 и, соответственно, TX к TXD. При проверке модуля на связь по BLUETOOTH соединение было накрест, а USB кабель был отключен. Дело в том, что в данном случае используется не сам контроллер Atmega328, а только микросхема CH340 моста USB-UART. Эта микросхема уже подключена накрест к микроконтроллеру. То есть, мы имеет такую цепочку соединений: USB-UART TX -> Arduino RX -> Bluetooth RXD. И, соединив RST и GND, мы просто убираем Arduino из этой цепочки.
Открываем Монитор порта, ставим текущую скорость модуля (по умолчанию 9600 бод), конец строки NL & CR. Отправляем команду.
Команда Описание Ответ
AT Тестовая команда +OK AT+VERSION Запрос версии +VERSION=JDY-31A-V2.241,Bluetooth V3.0+BLE AT+NAME Запрос текущего имени +NAME=JDY-31-SPP AT+NAMEJDY-31-SPP-NN Установить новое имя +OK AT+NAME Запрос текущего имени +NAME=JDY-31-SPP-NN AT+BAUD Запрос текущей скорости порта. +BAUD=4 Код: скорость
4:9600 5:19200 6:38400 7:57600 8:115200 9:128000
AT+BAUD8 Установить скорость порта +OK
AT+BAUD Запрос текущей скорости порта +BAUD=8
AT+PIN Запрос текущего ПИН-кода +PIN=1234
AT+PIN4321 Установка нового ПИН-кода +OK AT+PIN Запрос текущего ПИН-кода +PIN=4321
Начал проверку как указано выше через UNO. Когда дошел до установки скорости порта, то сразу задал 9. Отработка AT команд прекратилась. Все попытки реанимировать BT-06 через UNO не удавались. К тому же, не был уверен какая скорость соответствует 9, то ли 230400, то ли 128000. Нашел в нете, что микросхема CH340 моста USB-UART UNO не тянет больше 115200. Подключил BT-06 через электронный пульт-имитатор, в котором мост USB-UART обеспечивается микросхемой FT232RL. Работа с AT командами возобновилась на скорости 128000. В Мониторе порта невозможно установить скорость 128000, пришлось использовать termite-3.4. Окончательно установил скорость 8 — 115200. Проверил на этой скорости работу согласно первой части. ОК.