Как решить проблему AT+INQ ERROR (1F), AT+INIT ERROR(17) на модуле Bluetooth HC-05?
у меня проблема с доступом к at-command в модуле Bluetooh HC-05.
Я просто следую всему руководству, чтобы активировать at-command, как это, http://www.martyncurrey.com/arduino-with-hc -05-модуль-Bluetooth-в-ведомом-режиме/
или в этом видео https://www.youtube.com/watch?v=Vr4cdpsoVEo&t=31s
и просто прочитал объяснение и реализовал свою проблему Команда HC-05 Bluetooth AT+INQ не работает
но я все еще получаю ту же ошибку. Я не могу использовать команду AT+INQ, всегда получаю ERROR (1F). AT+INIT получает ОШИБКУ(17).
у меня модуль HC-05 версии 3.0-20170601
Это мой код, которым я пользуюсь.
#include <SoftwareSerial.h>
SoftwareSerial BTserial(8, 9); // Прием | Передача`
const long baudRate = 38400;
char c=' ';
boolean NL = true;
void setup()
{
Serial.begin(9600);
Serial.print("Sketch: "); Serial.println(__FILE__);
Serial.print("Uploaded: "); Serial.println(__DATE__);
Serial.println(" ");
BTserial.begin(baudRate);
Serial.print("BTserial started at "); Serial.println(baudRate);
Serial.println(" ");
}
void loop()
{
// Чтение из модуля Bluetooth и отправка на серийный монитор Arduino
if (BTserial.available())
{
c = BTserial.read();
Serial.write(c);
}
// Чтение из последовательного монитора и отправка в модуль Bluetooth
if (Serial.available())
{
c = Serial.read();
BTserial.write(c);
// Повторить ввод пользователя в главное окно. ">" символ указывает
the user entered text.
if (NL) { Serial.print(">"); NL = false; }
Serial.write(c);
if (c==10) { NL = true; }
}
}
4 ответа
У меня есть два модуля:
(A) HC-05 с прошивкой версии 3.0-20170601
(B) HC-05 с прошивкой версии 2.0-20100601 (хорошо)
У меня та же проблема: когда AT-команда "AT+INQ" отправляется на (A) модуль, ответ всегда "ERROR:(1F)". Этот код ошибки, кажется, не сообщается ни в одном документе или спецификации, доступной в Интернете. Этот модуль BT имеет версию прошивки (AT+VERSION) 3.0-20170601. Также я заметил, что команда AT+INIT на модуле (A) всегда возвращает ERROR:(17), эту ошибку обычно можно игнорировать, если команда уже была отправлена (Initiate SPP lib), но в первый раз должно быть возвращено «ОК». " как в модуле (B).
Модуль (B) с прошивкой версии 2.0-20100601 нормально работает со следующими командами (установите высокий уровень PIN34 при включении питания или нажмите кнопку на модуле и удерживайте ее во время команд):
AT+RMAAD -> удалить список всех сопряженных устройств
AT+ROLE=1 -> Установить главный режим
AT+RESET -> сброс модуля для перехода в основной режим
AT+CMODE=1 -> Разрешить подключение к любому устройству
AT+INQM=0,5,9 -> Установить параметры поиска (стандартный режим запроса, 5 устройств, 9 секунд)
AT+INIT --> Инициализация режима профиля SPP (первый ответ: "ОК")
AT+INQ --> Начать поиск устройств (вернуть список устройств через несколько секунд)
Различия между двумя модулями:
При AT+INIT модуль (A) всегда возвращает ERROR:(17), модуль (B) возвращает «OK» в первый раз и ERROR:(17), если команда отправлена дважды. На модуле (A) команда AT+INQ всегда возвращает ОШИБКУ: (1F), модуль (B) возвращает список устройств BT.
Кроме того, модули (A) и (B) физически различны. В модуле (B) есть некоторые компоненты (резисторы/конденсаторы) между двумя большими черными чипами, в модуле (A) нет.
Также я заметил, что на (А) модуле АТ+КЛАСС? вернуть значение «1f00» (по умолчанию?). Правильное значение должно быть «0», поскольку модуль (B)? В любом случае при установке AT+CLASS=0 на модуле (A) результат всегда один и тот же.
В ведомом режиме (AT+ROLE=0) оба модуля работают нормально.
С модулем (A) я не могу использовать его как «MASTER» и подключать его к любым другим подчиненным модулям BT, потому что не выполнял поиск устройств. (INQ не работает).
Я думаю, что в прошивке 3.0 необходимо установить другие параметры, чтобы правильно запустить профиль SPP (INIT) и избежать ошибки ERR:(1F) в команде INQ (поиск).
Кто-то уже решил проблему?
Так что вывод о моей проблеме - прошивка на HC-05. Прошивка с 3.0 сделать AT+INQ работать не будет. Большое спасибо за ваш ответ. Это проблема, заставляющая меня укладываться на месяц. Ваш ответ очень полезен для меня., @Muhammad Sabirin Hadis
Так у вашего HC-05 с прошивкой 2.0 есть кнопка или нет?, @Muhammad Sabirin Hadis
Да, у него есть кнопка. HC-05 припаян к плате ZS-040, на которой кнопка подключена к PIN34. Если вы нажмете кнопку при включении питания, модуль перейдет в режим AT-COMMAND (38400 бит/с, CR+LF), и можно настроить и просмотреть конфигурацию модуля как MASTER или SLAVE с помощью AT-команд. Некоторые аналогичные модули (HC-06) не имеют кнопки, потому что они только ПОДЧИНЕННЫЕ., @Atomix
Хорошо. Тай очень большой брат., @Muhammad Sabirin Hadis
Господа, можно ли купить ваш HC 05 с прошивкой 2.0?, @Muhammad Sabirin Hadis
У меня есть HC-05 с версией 3.0-20170601, которую мне удалось привязать прошлой ночью к подчиненному устройству. Получается, что v3 имеет два AT-режима.
Во-первых, когда вы удерживаете кнопку при подключении питания. Светодиод будет медленно мигать, и вы сможете подключиться на скорости 38400 бод. Но это похоже на режим конфигурации, где AT+INQ недоступен.
В этом режиме я выполнил следующие команды:
AT
AT+UART
AT+RMAAD
AT+ROLE=1
(Нажмите и удерживайте кнопку)
AT+RESET
(Отпустите кнопку после перезагрузки устройства и медленного мигания светодиода)
AT+CMODE=1
AT+INQM=0,5,5
AT+PSWD="9999"
AT должен ответить OK, чтобы знать, что соединение работает
AT+UART покажет настроенную скорость передачи данных. По умолчанию 9600.
AT+RMAAD очищает все сохраненные соединения
AT+ROLE=1 устанавливает его в качестве главного
AT+RESET перезапускает устройство, чтобы оно стало ведущим
AT+CMODE=1 поддерживает все типы устройств
AT+INQM=0,5,5 запросов в стандартном режиме, с 5 максимальными соединениями или 5 секундами
AT+PSWD="9999" устанавливает пин-код 9999, измените его на нужный вам пин-код
После этого пришло время обновить код arudino. В вашем случае вы должны обновить строку 4 из
const long baudRate = 38400;
в
const long baudRate = 9600;
...или любое значение, которое вы могли установить для скорости передачи данных. Затем перепрошейте Arduino.
Теперь войдите во второй очень раздражающий режим AT-команд.
Включите питание, не удерживая кнопку. Вы получите быструю скорость мигания. Когда он включен, нажмите и удерживайте кнопку. Светодиод будет продолжать быстро мигать, но, пока кнопка нажата, теперь вы можете подключиться к устройству на настроенной скорости передачи данных. Итак, откройте последовательный монитор и введите AT для проверки. Помните, что режим активен только пока нажата кнопка. Так что держите ее нажатой. У меня был небольшой зажим, который я надел там.
Затем я ввел следующие команды:
AT+STATE
AT+STATE покажет текущее состояние, следует запросить
Затем включите ведомое устройство, и адрес должен начать появляться. Это будет что-то вроде xyz:xy:xyzw,931F00,7FFF
Первая часть — это адрес, который вам нужен (xyz:xy:xyzw)
Изменить : на и получить xyz,xy,xyzw
Убедитесь, что вы подключаетесь к правильному устройству
AT+RNAME?xyz,xy,xyzw
Затем привязать
AT+PAIR=xyz,xy,xyzw,5
AT+BIND=xyz,xy,xyzw
AT+LINK=xyz,xy,xyzw
Команда AT+LINK дала мне результат FAIL. Но это не имело значения. Я перезапустил и не нажимал никаких кнопок ни до, ни после. Просто нормальный старт.
Через 5-10 секунд серийные данные появились на моем последовательном мониторе.
Модули привязаны. И будет автоматически подключаться при включении питания. В противном случае у вас может быть неправильный пин-код. Обязательно измените 9999 выше на 0000 или 1234 или что-то еще. Когда у меня был неправильный пин-код, я все еще получал OK от команд AT+PAIR и AT+BIND... У меня это не работало, пока я не ввел правильный пин-код.
Извините за длинное сообщение, но я хотел быть подробным, поскольку информации о HC-05 v3 сейчас очень мало в Интернете.
Ссылку на все команды можно найти здесь: http://www.electronicaestudio.com/docs/istd016A.pdf (ссылка действительна 13.08.2018)
Расширяя ответ президента, самый простой способ запрограммировать HC-05 — это подключить провод к EN на чипе и установить консоль UART на 9600.
Затем поднимите EN на высокий уровень, отправьте команды, дождитесь OK (после каждой) и понизьте EN.
Теперь у вас есть чип в состоянии данных.
У меня такая же версия модуля HC-05. Этот режим (INQ) включен по умолчанию и отключить его невозможно. Похоже, производитель удалил эту команду в этой версии.
Еще один момент, что он работает только на дефолтной скорости 9600 бод/с вне зависимости от настроек AT+UART=... и только в стандартном режиме AT (при включении устройства ключевой штифт вытягивается в высокий уровень).
После подключения к другому модулю есть только один способ вернуться к "запросу", который я обнаружил, - это полностью сбросить его с помощью команды ORGL и перенастроить его класс и роль.
Не трогайте настройки IAC — это также приведет к неправильной работе.
- Можно ли измерить скорость акселерометром? Насколько точно?
- Arduino Pro Micro, получить данные с контакта Tx?
- Хочу создать Bluetooth audio control (увеличение/уменьшение громкости, воспроизведение, пауза и т.д.) для смартфона
- Невозможно подключиться к Bluetooth hc-05.
- Проблемы с надежным подключением с использованием HC-05 в качестве ведущего устройства Bluetooth
- Модуль Bluetooth HC-05 мигает красным светом - Arduino Uno
- Bluetooth-модуль HC-05 — команда INQ не работает
- Самая низкая мощность, возможная в Arduino
проверьте это... https://stackoverflow.com/questions/23221336/hc-05-bluetooth-rssi-not-working-with-arduino, @jsotola
Тай за комментарий, сэр. Я только что прочитал и применил ваше руководство, но моя проблема все еще не решена. Меня интересует моя прошивка. Потому что у меня версия Bluetooth 3.0. и другой учебник имеет версию 2.0, @Muhammad Sabirin Hadis
Работают ли другие AT-команды? какую ардуино используете?, @mystery
Я просто использую все AT-COMMAND. Просто AT+INQ выдаёт ошибку. Я использую Ардуино уно., @Muhammad Sabirin Hadis
спасибо за этот замечательный пост Президентен, но у меня проблема, «AT + STATE» показывает запрос ... если я включаю свое устройство Bluetooth (не hc05), оно не показывает никакого адреса ... что я упустил ... пожалуйста, помогите ..., @Keerthiprakash Sachin