Как прервать соединение HM10 Bluetooth?
У меня есть 2 модуля Bluetooth HM10, подключенные к 2 Arduino Teensy под управлением следующего кода.
void setup() {
Serial.begin(9600);
Serial1.begin(9600);
// Если baudrate модуля HM-10 был обновлен,
// может потребоваться изменить 9600 на другое значение
// После того, как вы нашли правильную скорость,
// вы можете обновить ее с помощью команды AT+BAUDx
// например, AT+BAUD0 для 9600 бод
}
void loop() {
char c;
if (Serial.available()) {
c = Serial.read();
Serial1.println(c);
}
if (Serial1.available()) {
c = Serial1.read();
Serial.print(c);
}
}
Соединяя их с помощью команд AT, я смог отправлять сообщения туда и обратно, записывая их в Serial1. Однако теперь, когда я пытаюсь отправить AT-команды, он просто отправляет строку в другой модуль вместо того, чтобы ответить " ОК " и т. Д. Как разорвать соединение и заставить команды AT работать снова?
Учебник Я использовал для сопряжения модулей.
@bakalolo, 👍1
Обсуждение4 ответа
Из спецификации устройства:
Функция системного КЛЮЧА (PIO0) при низком значении > 1000 мс:>
7.3.1 Если модуль находится в спящем режиме, модуль немедленно проснется, если значение AT+NOTI равно “1”, модуль отправит строку “OK+ПРОБУЖДЕНИЕ” через UART.
7.3.2 Если модуль уже подключен к удаленному устройству, модуль отключится от удаленного устройства.
7.3.3 Если модуль находится в режиме ожидания, модуль будет сброшен в конфигурацию по умолчанию. Затем перезагрузите компьютер.
Мне удалось разорвать связь с: В
В паспорте указано, что вы можете использовать AT+PWRM1, но это не сработало для меня. Вместо этого вышеприведенная команда оборвала соединение с удаленным устройством.
Из таблицы данных:
- Выполните команду “AT+PWRM1”, модуль автоматически перейдет в спящий режим при включении питания или отключении от удаленного устройства.
Чтобы прервать соединение с помощью команд BT, я делаю следующее (программно):
команда 1: В
команда 2: AT+IMME1
Когда BT находится в рабочем режиме, он не распознает обычные команды BT. Исключением из этого правила является сама команда AT. Но за ним должна последовать другая команда (#2) в течение периода ожидания наблюдения, который является довольно быстрым. IMME1 переводит BT обратно в режим AT, где он больше не подключен, и распознает ваши команды AT [+...]. Если параметр Сохранения включен, он попытается автоматически переподключиться слишком быстро...
Каким-то образом я оказался в таком бесконечном цикле автоматического переподключения после активации AT+ROLE1 без предварительной установки AT+IMME1. Ничто, казалось, не помогло, даже не потянув PIO0 низко за 1s. Я до сих пор даже не знаю, к какому устройству подключался мой HM-10. Он просто автоматически подключился к чему-то при загрузке...
Единственный способ вырваться из этого бесконечного цикла, который я мог найти, был использовать этот скетч ниже. Хитрость заключалась в том, что я должен был ждать ответа "OK" после "AT", прежде чем выдать команду "AT+RENEW" для восстановления заводских настроек.
#include <SoftwareSerial.h>
SoftwareSerial BTserial(8, 9);
void waitForOK()
{
while (!BTserial.available());
char c = BTserial.read();
Serial.write(c);
c = BTserial.read();
Serial.write(c);
}
void setup()
{
Serial.begin(9600);
BTserial.begin(115200); // fw v700 изменил значение по умолчанию на 115200, в противном случае используйте 9600
Serial.println("BTserial started at 115200");
BTserial.write("AT");
waitForOK();
BTserial.write("AT+RENEW");
waitForOK();
BTserial.write("AT+IMME1");
waitForOK();
}
- Bluetooth-модуль HC-05 не принимает AT-команды
- Обеспечиваем более быстрое и точное обнаружение MindWave Mobile
- ПК не может получить доступ к порту HC-06 Bluetooth COM
- Проблемы с модулем Bluetooth(HC 05)
- Код CRC8 не работает должным образом
- Асимметричное шифрование на Teensy?
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Ошибка "'Serial' does not name a type"
Дайте нам окончательный набор команд, которые вы послали модулям Bluetooth, чтобы заставить их соединиться, а затем переслать ваш ввод друг другу., @cjs
Я голосую за то, чтобы закрыть этот вопрос как не относящийся к теме, потому что речь идет о наборе команд модуля HM10, а не Arduino., @Chris Stratton
Я бы сказал, что это то, с чем вы сталкиваетесь только на ардуино (
Serial.println ()
, Arduino Teensy и т. Д.), так что Я думаю, что это подходит Arduino SE. Я также не могу придумать лучшего сообщества SE, чтобы ответить на этот вопрос., @Avamander