Как решить проблему 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; }
   }

}

, 👍1

Обсуждение

проверьте это... 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


4 ответа


1

У меня есть два модуля:

(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


3

У меня есть 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)

,

1

Расширяя ответ президента, самый простой способ запрограммировать HC-05 — это подключить провод к EN на чипе и установить консоль UART на 9600.

Затем поднимите EN на высокий уровень, отправьте команды, дождитесь OK (после каждой) и понизьте EN.

Теперь у вас есть чип в состоянии данных.

,

0

У меня такая же версия модуля HC-05. Этот режим (INQ) включен по умолчанию и отключить его невозможно. Похоже, производитель удалил эту команду в этой версии.

Еще один момент, что он работает только на дефолтной скорости 9600 бод/с вне зависимости от настроек AT+UART=... и только в стандартном режиме AT (при включении устройства ключевой штифт вытягивается в высокий уровень).

После подключения к другому модулю есть только один способ вернуться к "запросу", который я обнаружил, - это полностью сбросить его с помощью команды ORGL и перенастроить его класс и роль.

Не трогайте настройки IAC — это также приведет к неправильной работе.

,