HC-05 на чипе cc2541 от Texas Instruments

Итак, передо мной стоит задача переслать данные с двух ардуин на третью при помощи данного микроустройства HC-05 на чипе cc2541

Несмотря на инструкции, которые говорят, что спарить этот аппарат с телефоном проще простого, мой мобильник спариваться с ним отказался, хотя и имеет поддержку Bluetooth 4.0

Ладно, с этим разберёмся чуть позже.

На данный момент стоит следующая проблема — необходимо сконнектить этот блютуз с ардуиной(а не UART) по умолчанию и вывести в SerialMonitor информацию.

Так же необходимо заставить Ардуину изначально включать данный блютуз.

После необходимо отправить данные с одной блютузины на другую

Следующий этап — отправить данные с двух блютузин на одну

И последний этап — минимизировать электропотребление, дабы увеличить срок работы данного агрегата

 

Итак, что у нас есть.

  1. Серьёзное преимущество данного аппарата в том, что у него ест несколько выводов, которые позволяют выполнять простые команды без использования даже дуины(чем я планирую в дальнейшем воспользоваться ради снижения энергопотребления)
  2. При подключении по UART (пока не разобрался железно с arduino) и выполнении комманды
  3. AT(не забываем, что команда должна заканчиваться битами NLCR 0x0A 0x0D) данный аппарат выводит интересную таблицу

********************************************************************
* Command             Description                       *
* —————————————————————- *
* AT                  Check if the command terminal work normally  *
* AT+RESET            Software reboot                   *
* AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
* AT+HELP             List all the commands                   *
* AT+NAME             Get/Set local device name                    *
* AT+PIN              Get/Set pin code for pairing                 *
* AT+PASS             Get/Set pin code for pairing                 *
* AT+BAUD             Get/Set baud rate                           *
* AT+LADDR            Get local bluetooth address           *
* AT+ADDR             Get local bluetooth address           *
* AT+DEFAULT          Restore factory default               *
* AT+RENEW            Restore factory default               *
* AT+STATE            Get current state                   *
* AT+PWRM             Get/Set power on mode(low power)            *
* AT+POWE             Get/Set RF transmit power            *
* AT+SLEEP            Sleep mode                            *
* AT+ROLE             Get/Set current role.                       *
* AT+PARI             Get/Set UART parity bit.                     *
* AT+STOP             Get/Set UART stop bit.                       *
* AT+START            System start working.               *
* AT+IMME             System wait for command when power on.       *
* AT+IBEA             Switch iBeacon mode.                       *
* AT+IBE0             Set iBeacon UUID 0.                           *
* AT+IBE1             Set iBeacon UUID 1.                           *
* AT+IBE2             Set iBeacon UUID 2.                           *
* AT+IBE3             Set iBeacon UUID 3.                           *
* AT+MARJ             Set iBeacon MARJ .                           *
* AT+MINO             Set iBeacon MINO .                           *
* AT+MEA              Set iBeacon MEA .                           *
* AT+NOTI             Notify connection event .                    *
* AT+UUID             Get/Set system SERVER_UUID .                   *
* AT+CHAR             Get/Set system CHAR_UUID .                   *
* ——————————————————————*
* Note: (M) = The command support slave mode only.            *
* For more information, please visit http://www.bolutek.com        *
* Copyright@2013 www.bolutek.com. All rights reserved.           *
********************************************************************

Замечу сразу. Данная таблица работает, когда устройство в роли Slave

для роли Master выведу другую позже.

Итак, что означают команды, которые я успел изучить.

AT — простая проверка, что у вас всё правильно настроено. Если всё верно, SerialMonitor выводит OK

AT+HELPвыведет как раз ту самую табличку, которую мы сейчас разбираем

AT+NAME — выводит название вашей блютузины. по умолчанию у меня было BT05

там, где в описании написано Get/Set означает, что вы можете менять значение на то, которое вам необходимо следующим образом

<ИМЯКОММАНДЫ><ЗНАЧЕНИЕ> без спецсимволов и прочего мусора

Например если нам надо переименовать имя блютуз-точки из BT05 в MAIN

нужно отправить команду AT+NAMEMAIN

прошу заметить, что всё пишется слитно без знаков равно, двоеточий и так далее

в результате выведется

+NAME:MAIN

OK

Идём дальше с командами, которые я уже изучил.

AT+RESET несмотря на зловещее название, которое обещает всё стереть и восстановить настройки по умолчанию, данная команда просто перезагружает сам блютуз и применяет те настройки, которые ты успел сделать.

а вот

AT+RENEW и AT+DEFAULT уже восстанавливают заводские настройки. Не нужно забывать, что для того, чтобы изменения вступили в силу, нужно выполнить AT+RESET

«Запомните, дети, потомучто понять это невозможно.»

Идём дальше.

AT+PIN и AT+PASS синонимы, позволяют задать пароль для подключения

AT+BAUD — скорость подключения. по умолчанию в зависимости от прошивки и прочего, там либо 38400 либо 9600 бит в секунду. тут нужно быть внимательным, ибо если поставить какое-то нестандартное значение, придётся покупать новую платку или долго настраивать компьютерный софт. по возможности  этот параметр лучше не трогать.

AT+STATE — показывает в каком сейчас режиме находится блютуз. У него есть режимы активности, сна и полного выключения. последнее понятно никак не отследить а вот сон или активность понять можно. (завтра опишу подробнее, пока пойду спать)

AT+LADDR и AT+ADDR так же — синонимы и показывают мак-адрес уcтройства. Мак сменить невозможно, только через прошивку спец-программатором, который как вы догадались, стоит денег, а мне пока лень тратить на это денежки, хочу выжать максимум из того, что имею.

AT+PWRM — пока досконально не изучены, как уточню все режимы, какие он может принимать сообщу отдельно

AT+POWE — пока досконально не изучены, как уточню все режимы, какие он может принимать сообщу отдельно

AT+SLEEP — усыпляет устройство, разбудить можно командой AT+START

AT+ROLE — это две роли, значение равное 1 — это master и 2 — это slave. в отличие от slave, master может сканировать устройства на их наличие в округе и соединяться с ними принудительно. так же у  Master есть дополнительные команды, которые я выложу чуть позже.

AT+PARI — определяет бит чётности. Рекомендую пока его не трогать, позже распишу, что по чём.

AT+STOP — определяет стоповый бит. значение 0 — это стоповый бит 1. 1 — это стоповый бит 2. по умолчанию стоит 0. Если вы планируете работать с ардуино, не трогайте, так как не сможете тогда без сторонних программ прочитать ответ устройства, ибо SerialMonitor от Arduino переводит устройство в режим с одним стоповым битом. Я вчера из-за этого потратил лишних три часа пока понял и исправил ошибку.

Остальное пока не трогал и буду обновлять информацию по мере поступления.

Теперь переведём наш блютуз в режим мастера

AT+ROLE1

и выполним

AT+HELP

получим следующий результат

********************************************************************
* Command             Description                       *
* —————————————————————- *
* AT                  Check if the command terminal work normally  *
* AT+RESET            Software reboot                   *
* AT+VERSION          Get firmware, bluetooth, HCI and LMP version *
* AT+HELP             List all the commands                   *
* AT+NAME             Get/Set local device name                    *
* AT+PIN              Get/Set pin code for pairing                 *
* AT+BAUD             Get/Set baud rate                           *
* AT+LADDR            Get local bluetooth address           *
* AT+ADDR             Get local bluetooth address           *
* AT+DEFAULT          Restore factory default               *
* AT+RENEW            Restore factory default               *
* AT+STATE            Get current state                   *
* AT+PWRM             Get/Set power on mode(low power)            *
* AT+POWE             Get/Set RF transmit power            *
* AT+SLEEP            Sleep mode                            *
* AT+ROLE             Get/Set current role.                       *
* AT+PARI             Get/Set UART parity bit.                     *
* AT+STOP             Get/Set UART stop bit.                       *
* AT+INQ              Search slave model                           *
* AT+SHOW             Show the searched slave model.               *
* AT+CONN             Connect the index slave model.               *
* AT+IMME             System wait for command when power on.       *
* AT+START            System start working.               *
* AT+UUID             Get/Set system SERVER_UUID .                   *
* AT+CHAR             Get/Set system CHAR_UUID .                   *
* ——————————————————————*
* Note: (M) = The command support master mode only.                *
* Copyright@2013 www.bolutek.com. All rights reserved.           *
*******************************************************************

 

Видим, что часть строк пропала и новая часть строк появилась.

AT+INQ — это поиск данных блютуз-устройств вокруг, устройство игнорирует простые блютуз-устройства. ищет только данные адаптеры, что весьма не дурно в рамках моей задачи.

пример вывода данный в серийный порт

+INQS
+INQ:1 0x00158300727D
+INQE

здесь 1- это индекс найденого устройства, а следующая цифра — его мак-адрес

AT+SHOW — отбражает список найденных устройств вболее понятном виде. Вопрос — сколько этот список хранится. Но полагаю, что до обнуления питания.

Device1
0x00158300727D

AT+CONN — соединяет master и slave по порядковому номеру устройства. То есть, достаточно написать AT+CONN1 и он соединится с нашим вторым передатчиком.

 

На этом пока всё.

Как подключать UART к данному устройству и сделать его доступным для ардуин я напишу чуть позже.

Смежные статьи:

  • Смежных статей не найдено
Яндекс.Метрика