Контакты

Hc 06 rf беспроводной bluetooth. Что такое bluetooth-модуль? Описание ошибок выдаваемых модулем

Хотели бы вы организовать беспроводное включение/выключение света в доме? Если да, то для подобного проекта можно использовать Arduino, bluetooth модуль HC-06, реле и знания основ схемотехники.

В этой статье мы рассмотрим основы взаимодействия bluetooth модуля HC-06 с Arduino. Рассмотрим примеры передачи и приема данных через блютуз на примере включения/выключения светодиода.

Для реализации более серьезных автоматизированных систем вроде "умного дома", эти основы будут как нельзя кстати.

Начать работать с HC-06 достаточно просто. Все, что вам надо знать - расположение контактов для подключения. На HC-06 шесть контактов: wakeup, VCC, GND, TXD, RXD и State. На этапе, используем 4 контакта: VCC, GND, TXD и RXD.


Ниже показано как именно подключается Bluetooth модуль к Arduino.


HC-06 выступает в роли последовательного порта, через который вы передаете и принимаете данные. То есть, используя окно серийного монитора в Arduino IDE или Bluetooth приложение на вашем компьютере или телефоне, вы можете контролировать и управлять вашим проектом. Например, в качестве терминала можно использовать Teraterm. Перед загрузкой скетча на Arduino , отключите модуль HC-06. Так как модуль производит обмен данными с помощью контактов tx/rx, загрузить скетч не получится. После загрузки скетча можете подключать bluetooth модуль.

Echo скетч для Arduino и HC-06

Данный скетч дает вам возможность отсылать строку на Arduino через bluetooth и получать ответ, который отображается в серийном мониторе.

Примечание . Если вы используете Arduino Mega, измените строку кода while(Serial.available()); на while(Serial.available()>0);. В противном случае, скетч не будет отрабатывать.

LED скетч для Arduino и HC-06

Эта программа дает возможность включать/выключать светодиод, отправляя команды на Arduino через Bluetooth.

Взаимодействие HC-06 с компьютером

На видео ниже показано как подключить HC-06 к персональному компьютеру иди другму устройству с поддержкой bluetooth.

Примечание . На видео скачано, что программа, которую вы используете в качестве серийного монитора (Teraterm в данном конкретном случае), подключается к INCOMING (входящему) com порту. Это не правильно. Надо использовать OUTGOING (исходящий) com порт.

После подключения HC-06, откройте Teraterm или другой подходящий терминал. Выберите серийный порт, который отвечает за обмен данными с HC-06 (более детальные пояснения по этому поводу есть на видео).

После успешного подключения HC-06, можете отправлять данные на Arduino и обратно. Если вы загрузили второй скетч, вы сможете включать/выключать светодиод, отправляя символы “n” и “f” соответственно.

Пример Echo

Пример LED

Сфера применения HC-06 по сути безгранична. Можно управлять любыми роботизированными системами и процессами. Надеемся, что приведенные основы работы с bluetooth модулем HC-06 будут вам полезны в проектах на Arduino.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Ищете простой способ беспроводного дистанционного управления вашим устройством с помощью bluetooth? Воспользуйтесь bluetooth-модулем HC-06.

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

С HC-06 вы можете управлять роботом прямо со своего смартфона. Поставив на телефон или планшет одну из многочисленных программ для управления через bluetooth, вы можете превратите его в настоящий продвинутый джойстик, и ваш робот сможет послушно поворачивать вслед за поворотом смартфона. Точно так же можно связаться со своим устройством с ноутбука, или с любого другого прибора, который может подключаться к bluetooth-устройствам.

Сфера применения этого модуля не исчерпывается управлением. Его можно использовать и для пересылки показаний разнообразных сенсоров .

Рабочее напряжение этого bluetooth-модуля - 3,3 В, но его входы толерантны к 5 В, поэтому он совместим со всеми платами Arduino .

Подключение

Контакты модуля можно соединить с макетной платой или Arduino проводами «мама-папа» . А с Troyka Shield через провода «мама-мама» .

Подключение стандартное для устройств, подключающихся по последовательному интерфейсу:

  • Контакт RX модуля подключается к контакту TX целевого устройства
  • Контакт TX модуля подключается к контакту RX целевого устройства

Настройки

Все настройки по умолчанию могут быть изменены с помощью АТ-команд.

Bluetooth-модуль HC-06 может выступать только в slave-режиме. Это означает, что он не может самостоятельно подключаться к другим Bluetooth-устройствам.

Комплектация

В комплект не входят провода. Для подключения к управляющей электронике используйте макетные провода с разъёмами «мама» на стороне модуля или

Всем привет!

Есть модификация модуля HC-05 с 6ногами, (State,RX,TX,GND,VCC,EN), очень популярная сейчас на Алиэкспресс, так вот, для нее не нужно припаивать проводок на 34пин (KEY) и подавать туда 3.3в, чтобы включить работу RX-TX на выводах необходимо подать 3.3в. на разъем EN а не на key, после этого такой модуль начинает работать как положено начинает отвечать на AT команды отправленные с компьютера или ардуины по пинам. С трудом нашел эту информацию в одном описании этого модуля на странице товара на алиекспресс.
Короче все также как с KEY в этой статье, только 3.3в. подаем на EN! (Enter).
Привожу описание на англ.

First, the module parameters:
1.PCB Dimensions: 37.3mm (length) * 15.5mm (W)
2 Weight:. 3.5g
(3) Input voltage: 3.6V—6V, 7V ban over
4 power anti-reverse, reverse module does not work
5 leads to 6 feet: EN / VCC / GND / RXD / TXD / STATE (Bluetooth status leads to the foot, is not connected to the output low, after connecting output high)
6 with the connection status indicator, LED flash means no Bluetooth connection; LED flashing slowly that enter the AT command mode
7 onboard 3.3V regulator chip, the input voltage DC 3.6V-6V; When unpaired, current of about 30mA (because LED lights flashing, the current state of change); After successful pairing, the current is about 10mA
8 Interface level 3.3V, you can directly connect a variety of microcontroller (/51/AVR/PIC/ARM/MSP430 etc.), 5V microcontroller can also be directly connected. Directly connected to the microcontroller serial port, not through the MAX232 chip!
9 open area effective transmission distance of 10 meters, over 10 meters are possible, but do not guarantee the quality of the connection
10. After successful pairing, can be used as a full-duplex serial port. Do not need to know anything about the Bluetooth protocol, but only supports 8 data bits, 1 stop bit, no parity communication format. This is the most common communication format that does not support other formats!
11 Press the key to give the Bluetooth module is energized to enter AT mode, set parameters and query information
12 can be switched master and slave mode via AT commands
13 modules default baud rate is 9600, the default passkey is 1234, the default name for the HC-05
14 protection with transparent shrink tube
Second, wiring methods:
VCC: positive power supply
GND: power supply is negative
RXD: Receive side, the Bluetooth module receives data sent to the other device; TXD terminal normally connected to the other device to send
TXD: sending end, the Bluetooth module to send data to other devices; RXD terminal normally connected to other devices receiving
EN: Enable, then you need to enter AT mode 3.3V

Для беспроводного обмена информации, между различными устройствами на небольших дистанциях, можно использовать Bluetooth-технологию. Для этих целей китайской промышленностью выпускаются различные Bluetooth-модули, среди которых широкую популярность получили модели HC-05 и HC-06. В своё время на Алиэкспресс я приобрёл HC-06, на котором и буду проводить дальнейшие эксперименты, а так же подключать к своему китайскому аналогу Arduino.

Непосредственно сам Bluetooth-модуль. В таком виде он может использоваться в различных устройствах, где впаивается непосредственно в плату. Модуль имеет 34 вывода, среди которых: выводы для соединения с компьютером по UART, передачи звука по методу PCM (импульсно кодовая модуляция), аналоговый вход и выход, контакты для подключения к USB разъёму, SPI интерфейс, а также порты общего назначения. На самом деле не все эти выводы доступны к использованию, заблокирован доступ к выводам передачи звука (5-8), аналоговым входу и выходу (9, 10), а так же к группе контактов для подключения к USB (15, 20).

HC-06 построен на чипе BC417 (BlueCore4-External device), спецификация Bluetooth V2.0. На борту так же имеется кварц на 26 МГц и флеш-память на 8 Мб. Питание осуществляется от 3,3В.

Для своих конструкций удобнее всего использовать модуль с макетной платой, на которой выведены необходимые контакты для подключений, а так же имеется стабилизатор напряжения, который позволяет питаться от 5 вольт.
При покупки подобных модулей, можете столкнуться с различными их маркировками. По сути это одно и то же устройство, отличающееся прошивкой, которая определяет режим модуля (master / slave).

Отличие HC-05 от HC-06 состоит в том, что HC-05 можно использовать в качестве ведомого (master) или ведущего (slave). Данные режимы задаются с помощью АТ-команд. Кнопка на плате модуля переключает его в режим ввода АТ-команд. Режим master даёт возможность модулю самому обнаруживать подобное устройство и организовывать связь с ним. Модуль HC-06 может работать только в одном фиксированном режиме slave.

Так же существуют модели HC-03 и HC-04, но они выпускаются для промышленных целей.

Обозначение контактов на плате HC-06.

STATE - проверка состояние модуля. На этом контакте дублируется сигнал, который отображает встроенный на плате светодиод. Если он очень быстро мигает, значит модуль находится в активном состоянии. В режиме установления связи ток составляет 30-40 мА. Когда модуль устанавливает связь с другим устройством, светодиод просто горит. В режиме передачи данных ток составляет 8 мА.
RX - получение данных.
TX - передача данных.
GND - подключается к земле.
+5V - питание +5 Вольт
EN - включение / выключение модуля. Если на этот контакт подать логическую 1 (5 вольт), модуль выключится, если подать логический 0 или не подключаться к этому контакту, модуль будет работать.

По-умолчанию HC-06 имеет имя для обнаружения другими устройствами «HC-06 », с пин-кодом «1234 ».

Для изменения этих данных нужно модуль подключить к компьютеру и с помощью программы-терминала ввести АТ-команды. Это можно сделать с помощью переходника USB to COM с TTL уровнями. Для этих целей подойдёт адаптер на PL2303HX , CH340G , либо другой подобный. На компьютере к этому моменту уже должен быть установлен драйвер для USB адаптера.

Контакты соединяем следующим образом:

HC-06 Переходник USB to COM
+5V +5V
GND GND
RX TX
TX RX

При подключении этой сборки к компьютеру, красный светодиод на плате Bluetooth-модуля начнёт быстро мигать. Для ввода АТ-команд можно воспользоваться любой терминальной программой, я использую для этой цели Arduino IDE.

В настройках выбираем номер виртуального COM-порта, на котором подключен USB адаптер, в моём случае это COM44. Откроем окно «Монитора последовательного порта ».

Введём заглавными буквами команду «AT », если устройство удачно подключилось, в ответ должно возвратится «ОК ». По-умолчанию скорость обмена данными 9600 бод.

Для проверки версии прошивки, введём команду «AT+VERSION », в моём случае ответ возвратился «OKlinvorV1.8 ».

Командой «AT+NAMEyyy », где ууу - произвольный набор символов на латинице, можем сменить имя, по которому будут находить наш модуль bluetooth-устройства (по-умолчанию HC-06). В своём примере я ввёл «AT+NAMEfox », ответ возвращается OKsetname .

Командой «AT+PINxxxx », где xxxx – произвольный набор цифр, можно сменить пин-код (по-умолчанию 1234). В ответ возвращается «OKsetPIN ».

Командой «AT+BAUDx », где x – значение от 1 до 9, можно изменить скорость в бодах (по-умолчанию 9600).

1 - 1200
2 - 2400
3 - 4800
4 - 9600
5 - 19200
6 - 38400
7 - 57600
8 - 115200
9 - 230400

Допустим, если ведём команду «AT+BAUD8 », где 8 - скорость 115200 бод, в ответ возвратится «OK115200 ».

Подключение HC-06 к Arduino.

Пример 1. Зальём в Arduino скетч, с помощью которого будем включать и выключать светодиод, распаянный на 13 пине Arduino, через Bluetooth-модуль.

int data;
int LED = 13;
void setup()
{
Serial.begin(9600);
pinMode(LED, OUTPUT);
digitalWrite(LED, HIGH);
}
void loop()
{
if (Serial.available())
{
data = Serial.read();
if (data == "1")
{
digitalWrite(LED, HIGH);
}
if (data == "0")
{
digitalWrite(LED, LOW);
}
}
}

Если у вас нет на плате данного светодиода, подключите его к 13 пину по схеме, номиналы резисторов можно взять от 220 Ом до 1кОм.

Обесточим Arduino и подключим HC-06. Контакт TX модуля подключаем к контакту RX Ардуино (пин 0 на плате UNO), а контакт RX , к контакту TX (пин 1). Контакты +5V и GND , подключаются к соответствующим пинам Ардуино.

Конструкция в сборе. Подав питание на Ардуино, светодиод на HC-06 должен быстро мигать.

Управление Arduino через HC-06, с помощью компьютера.

Пример буду показывать на Windows XP. К компьютеру должен быть подключен любой USB Bluetooth-адаптер и установленны на него драйвера.

В моём случае использовался вот такой адаптер.

При его подключении к ПК, в трее (возле часов) появляется соответствующая иконка.

Нажимаем правой кнопкой мыши на данной иконке и в контекстном меню выбираем «Добавить устройство Bluetooth ».

Ставим переключатель «Устройство установлено и готово к обнаружению » и нажимаем «Далее ».

В списке обнаруженных устройств отобразится наш Bluetooth-модуль, с новым именем, которое я поменял ранее. Выбираем его и нажимаем «Далее ».

В следующем окне вводим пин-код для подключения к модулю, выбрав пункт «Использовать ключ доступа из документации: ». По-умолчанию это «1234», но я его сменил на «9999». Нажимаем «Далее ».

Bluetooth-модуль успешно связался с компьютером, о чём можно узнать с соответствующего окна. Следует обратить внимание, при образовании связи между двумя Bluetooth-устройствами, на компьютере создастся два новых виртуальных COM-порта (будут отображаться в диспетчере устройств), один для исходящих данных, другой для входящих. Нам понадобится порт для исходящих данных, в моём случае это COM45.

Вновь открываем какую-нибудь программу-терминал, я воспользуюсь Arduino IDE. В настройках выбираем исходящий порт (у меня COM45), открываем «Монитор последовательного порта », вводим переменно команды «1 » и «0 ». При команде «1» светодиод загорается, при «0» гаснет.

Управление Arduino через HC-06 с помощью смартфона.

Наверное уже все современные смартфоны имеют в своём составе встроенный Bluetooth. Остаётся только установить программу терминал. В моём случае использовалась Lumia 640 DS , с установленной Windows mobile 10 . В качестве программы терминала использую «». На Android-смартфонах всё аналогично, в качестве программы можно использовать «Bluetooth Terminal ».

Для обладателей смартфонов компании Apple не получится работать с Bluetooth-модулями HC-05 и HC-06 (Bluetooth V2.0), для них придётся использовать адаптеры с технологией BLE (Bluetooth low energy), спецификация Bluetooth 4.0. Ярким представителем является модуль HM-10.

Сопрягаем HC-06 с блютузом смартфона.

1. В «Параметрах » смартфона выбираем пункт «Устройства ».
2. Далее «Bluetooth и другие устройства ».
3. Включаем ползунком блютуз смартфона и нажимаем на «плюс в квадрате » для поиска и добавления нового Bluetooth-устройства, в нашем случае HC-06.

4. В разделе «Добавить устройство » выбираем «».
5. Смартфон произведёт поиск Bluetooth-устройств находящихся в округе и отобразит их имена. В моём примере найден модуль HC-06, который я переименовал в «fox ».

6. Вводим пин-код устройства, к которому подключаемся, нажимаем кнопку «Подключиться ».

Устанавливаем и запускаем терминальную программу «». Подключенный к смартфону модуль HC-06, отображается в списке, выбираем его.

Появится поле для ввода команд и кнопка для отправки. Вводим попеременно «1 » и «0 » и наблюдаем за светодиодом на 13 пине, который будет зажигаться или гаснуть.

Пример 2 . Подключим к Arduino три светодиода и попробуем управлять ими через Bluetooth-модуль HC-06.

Светодиоды подключил к 9, 11 и 13 пину, если будите использовать другие пины, их нужно указать в скетче.

int data;
int LED1 = 9;
int LED2 = 11;
int LED3 = 13;
void setup()
{
Serial.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
}
void loop()
{
if (Serial.available())
{
data = Serial.read();
if (data == "1")
{
digitalWrite(LED1, HIGH);
}
if (data == "2")
{
digitalWrite(LED1, LOW);
}
if (data == "3")
{
digitalWrite(LED2, HIGH);
}
if (data == "4")
{
digitalWrite(LED2, LOW);
}
if (data == "5")
{
digitalWrite(LED3, HIGH);
}
if (data == "6")
{
digitalWrite(LED3, LOW);
}
}
}

При заливке скетча модуль HC-06 нужно отсоединить от Ардуино, потому что и компьютер, и блютуз работают по UART. Ардуина не может на одном UART работать с несколькими устройствами.

Запускаем программу-терминал и пробуем скетч в действии. Смысл управления светодиодами следующий, имеется три светодиода, каждый из которых может быть либо включенный, либо выключенный. Получается 6 команд. Команды представляют из себя цифры от 1 до 6 (1, 3, 5 - зажечь 1, 2 и 3 светодиоды. 2, 4, 6 - погасить). Цифры можно вводить по одной, либо в виде комбинаций. Например: 145 - зажечь первый, погасить 2-й, зажечь 3-й.

Пример 3 . Подключим к Arduino реле-модуль из статьи « » и попробуем управлять мощной нагрузкой через Bluetooth. По сути, у нас получится «умная розетка». К реле-модулям можно подключать различные нагрузки (лампочки, насосы, вентиляторы) и управлять ими на расстоянии.

Скетч по этому примеру появится в ближайшее время.

Bluetooth модуль HC-05 подключается по шине UART и способен выполнять AT-команды. AT-команда это строка начинающаяся с букв «AT» (от английского at tention - «внимание»). Модуль выполняет поступившую команду и отправляет обратно ответ (результат выполнения команды), который также является строкой. В Bluetooth модулях HC-05 каждая команда (как и ответ) должна заканчиваться символами перевода строки «\r\n».

Подключение:

  • Управлять Bluetooth модулем HC-05 можно либо с компьютера, либо через микроконтроллер, например, Arduino . Вывод RX модуля подключается к выводу TX, а вывод TX модуля подключается к выводу RX того устройства с которого он будет управляться.
  • Для подключения модуля к компьютеру (без микроконтроллеров) потребуется адаптер USB-UART , или адаптер RS232-UART , или программатор с выводами TX RX, вместо адаптера USB-UART можно использовать плату Arduino , как описано в статье . Для отправки команд в модуль потребуется установить программу терминал. Одним из таких терминалов является свободно распространяемая программа Termite с поддержкой Русского языка.
  • Для подключения модуля к Arduino можно воспользоваться аппаратной или программной шиной UART. При использовании аппаратной шины, модуль подключается к выводам TX и RX указанным на плате. При использовании программной шины, модуль подключается к назначаемым выводам TX и RX Arduino .

Настройка:

Модуль Bluetooth HC-05 сможет принимать команды только если правильно настроены следующие параметры последовательного порта:

  • Номер порта: Его можно узнать экспериментально, отключите адаптер или Arduino , посмотрите какие порты доступны. Подключите адаптер или Arduino и вновь посмотрите какие порты доступны. Появившийся порт и есть тот самый.
  • Скорость передачи данных: В обычном режиме, Bluetooth модуль HC-05 сохраняет последнюю установленную скорость передачи данных, но по умолчанию она равна 38400 бит/сек (редко 9600 бит/сек). Если обе скорости не подойдут, то смотрите примечание в конце статьи.
  • Параметры передачи данных: Модуль сохраняет последние установленные параметры передачи данных. Значения параметров по умолчанию: количество бит в пакете - 8, размер стопового бита = 1, без проверки чётности.
  • Передаваемый текст: Нужно установить пункт «добавлять символы CR & LF(NL)» это символы перевода строки «\r\n» которые Вы не сможете ставить самостоятельно в конце AT-команд.

Для настройки этих параметров в программе Termite , нажмите на кнопку «Настройки» (Settings). В том же окне можно установить Русский язык.

При использовании Arduino , номер порта указывается во вкладке «Инструменты». Параметры передачи данных используются по умолчанию. Для добавления символов NL & CR воспользуйтесь меню в правом нижнем углу монитора последовательного порта.

Проверка:

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

Для проверки связи с Bluetooth модулем отправьте тестовую команду AT (введите текст AT и нажмите Enter). Если связь установлена корректно, то модуль ответит OK . После этого можно отправлять остальные AT-команды.

AT-команды:

Если в программе терминал указано добавлять символы CR & LF или NL & CR то символы «\r\n» в командах ставить не нужно!
Команды могут быть обычными: AT+КОМАНДА\r\n , запросами: AT+КОМАНДА?\r\n , или установками: AT+КОМАНДА=ПАРАМЕТР(Ы)\r\n .

AT-команда: Ответ: Назначение:
AT AT \r\n OK\r\n Команда Тест:
Используется для проверки связи с модулем.
RESET AT+RESET \r\n OK\r\n Команда программной перезагрузки модуля:
Модуль ведёт себя так, как после кратковременного отключения питания.
VERSION AT+VERSION? \r\n +VERSION:ВЕРСИЯ \r\n
OK\r\n
Запрос версии прошивки модуля:
Модуль возвращает версию в виде строки до 32 байт.
Пример ответа: +VERSION:hc01.comV2.1\r\n OK\r\n
AT+ORGL AT+ORGL \r\n OK\r\n Сброс пользовательских настроек:
Модуль сбрасывает следующие настройки:
CLASS=0, IAC=9e8b33, ROLE=0, CMODE=0, UART=38400,0,0, PSWD=1234, NAME=hc01.com.
ADDR AT+ADDR? \r\n +ADDR:АДРЕС \r\n
OK\r\n
Запрос адреса модуля:
Модуль возвращает три части своего адреса NAP:UAP:LAP разделённые двоеточием.
Каждая часть состоит из шестнадцатиричных цифр.
Пример ответа: +ADDR:1234:56:789ABC\r\n OK\r\n
NAME AT+NAME? \r\n +NAME:ИМЯ \r\n
OK\r\n
Запрос / установка имени модуля:
Имя модуля представлено строкой до 32 байт.
Пример ответа: +NAME:iArduino\r\n OK\r\n
Пример установки: AT+NAME=iArduino\r\n
Некоторые модули реагируют на команду AT+NAME?\r\n только при нажатой кнопке модуля или наличии высокого уровня на входе K.
AT+NAME= ИМЯ\r\n OK\r\n
RNAME AT+RNAME? АДРЕС\r\n +RNAME:ИМЯ \r\n
OK\r\n
Запрос имени найденного Bluetooth устройства:
Адрес вводится после пробела, а части адреса (NAP,UAP,LAP) разделены запятой. Модуль возвращает имя найденного Bluetooth устройства находящегося в зоне действия, адрес которого был в запросе.
Пример запроса: AT+NAME? 1234,56,789ABC\r\n
Пример ответа: +RNAME:iArduino\r\n OK\r\n
ROLE AT+ROLE? \r\n +ROLE:РОЛЬ \r\n
OK\r\n
Запрос / установка роли модуля:
Роль модуля представлена цифрой:
0 - ведомый, 1 - ведущий, 2 - ведомый в цикле*.
Пример ответа: +ROLE:1\r\n
Пример установки: AT+ROLE=0\r\n
AT+ROLE= РОЛЬ\r\n OK\r\n
CLASS AT+CLASS? \r\n +CLASS:ТИП \r\n
OK\r\n
Запрос / установка типа устройства:
Тип устройства представляется 32 битным числом, по которому можно определить назначение модуля: Bluetooth клавиатура, Bluetooth мышь, гарнитура...
Пример установки: AT+CLASS=0\r\n
AT+CLASS= ТИП\r\n OK\r\n
IAC AT+IAC? \r\n +IAC:КОД \r\n OK\r\n Запрос / Установка кода общего доступа GIAC:
Код представлен 32 битным числом и используется для обнаружения Bluetooth устройств.
В роли ведущего, по данному коду модуль будет получать доступ к другим Bluetooth устройствам для их поиска (опроса), а в роли ведомого по данному коду будет предоставляться доступ для опроса модуля другими ведущими.
Пример ответа: +IAC:9e8b33\r\n OK\r\n
Пример установки: AT+IAC=9e8b33\r\n
AT+IAC= КОД\r\n OK\r\n
или
FAIL\r\n
INQM AT+INQM? \r\n +INQM:РЕЖИМ ,КОЛ ,ВРЕМЯ \r\n
OK\r\n
Запрос / Установка режима опроса модулей:
Используемые параметры являются настройками для команды поиска (опроса) других Bluetooth устройств.
- Режим поиска представлен цифрой:
0-стандартный, 1-поиск по интенсивности сигнала.
- Количество представлено цифрой определяющей предельное количество найденных Bluetooth устройств, после которого требуется прекратить поиск.
- Время поиска задаёт таймаут после которого поиск прекращается. Реальное время поиска в секундах равно указанному числу умноженному на 1,28.
Пример ответа: +INQM:1,1,48\r\n OK\r\n
Пример установки: AT+INQM:1,1,48\r\n
AT+INQM= РЕЖИМ,КОЛ,ВРЕМЯ\r\n OK\r\n
или
FAIL\r\n
PSWD AT+PSWD? \r\n +PSWD:КОД \r\n
OK\r\n
Запрос / Установка PIN-кода:
Код доступа представлен строкой до 16 байт.
Код модуля в роли ведомого устройства является паролем доступа к текущему модулю.
Код модуля в роли ведущего устройства является паролем доступа к внешним Bluetooth устройствам.
Пример ответа: +PSWD:1234\r\n OK\r\n
Пример установки: AT+PSWD=1234arduino\r\n
AT+PSWD= КОД\r\n OK\r\n
UART AT+UART? \r\n +UART:СКОР ,СТОП ,ПРОВ \r\n
OK\r\n
Запрос / установка скорости UART:
Скорость представлена числом бит/сек
Стоп бит представлен цифрой: 0 - один, 1 - два
Проверка представлена цифрой: 0 - без проверки,
1 - проверка нечётности, 2 - проверка чётности.
Пример ответа: +UART:38400,0,0\r\n OK\r\n
Пример установки: AT+UART=38400,0,0\r\n
AT+UART= СКОР,СТОП,ПРОВ\r\n OK\r\n
CMODE AT+CMODE? \r\n +CMOD:РЕЖИМ \r\n
OK\r\n
Запрос / установка режима подключения:
Режим представлен цифрой:
0 - модуль в роли ведущего подключается только к тому Bluetooth устройству, адрес которого указан командой AT+BIND.
1 - модуль в роли ведущего подключается к любому ведомому Bluetooth устройству.
2 - модуль в роли ведомого работает в цикле*
Пример ответа: +CMOD:0\r\n OK\r\n
Пример установки: AT+CMOD=1\r\n
AT+CMODE= РЕЖИМ\r\n OK\r\n
BIND AT+BIND? \r\n +BIND:АДРЕС \r\n
OK\r\n
Запрос / установка фиксированного адреса:
Если модуль находится в роли ведущего (ROLE=1) и установлен режим подключения к фиксированному адресу (CMODE=0), то он будет подключаться только к тому Bluetooth устройству, адрес которого указан данной командой.
Части адреса вводятся: при установке - через запятую, а при ответе - через двоеточие.
Пример ответа: +BIND:1234:56:789ABC\r\n OK\r\n
Пример установки: AT+BIND=0,0,0\r\n
AT+BIND= АДРЕС\r\n OK\r\n
POLAR AT+POLAR? \r\n +POLAR:ЛОГ ,ЛОГ \r\n
OK\r\n
Запрос / установка активного логического уровня для включения светодиодов:
Полярность представлена цифрой 0 или 1 соответствующей активному логическому уровню.
Первый параметр указывает логический уровень для включения светодиода подключённого к выводу PIO8 (отображает режим работы), а второй для светодиода подключённого к выводу PIO9 (отображает статус соединения).
Пример ответа: +POLAR:1,1\r\n OK\r\n
Пример установки: AT+POLAR=1,1\r\n
AT+POLAR= ЛОГ,ЛОГ\r\n OK\r\n
PIO AT+PIO= НОМЕР,УРОВЕНЬ\r\n OK\r\n Установка логического уровня PIO:
Позволяет установить логический уровень на выводе PIO. Номер вывода представлен числом от 2 до 11, кроме 8 и 9. Уровень представлен цифрой 0 или 1.
Пример установки: AT+PIO=11,0\r\n
MPIO AT+MPIO? \r\n +MPIO:ЧИСЛО \r\n
OK\r\n
Запрос / установка логических уровней PIO:
Позволяет узнать или установить логические уровни сразу на всех выводах PIO.
Уровни представлены шестнадцатиричным числом, каждый бит которого соответствует уровню вывода PIO.
Пример ответа: +MPIO:1F0\r\n OK\r\n
Пример установки: AT+MPIO:CFC\r\n
AT+MPIO= ЧИСЛО\r\n OK\r\n
IPSCAN AT+IPSCAN? \r\n +IPSCAN:А ,Б ,В ,Г \r\n
OK\r\n
Запрос / установка параметров IP сканирования:
А - интервал сканирования
Б - продолжительность сканирования
В - интервал страниц
Г - количество страниц
Пример ответа: +IPSCAN:1024,512,1024,512\r\n OK\r\n
Пример установки: AT+IPSCAN:1024,512,1024,512\r\n
AT+IPSCAN= А,Б,В,Г\r\n OK\r\n
SNIFF AT+SNIFF? \r\n +SNIFF:А ,Б ,В ,Г \r\n
OK\r\n
Запрос / установка параметров энергосберегающего режима:
А - максимальное время
Б - минимальное время
В - период повторов
Г - таймаут
Пример ответа: +SNIFF:0,0,0,0\r\n OK\r\n
Пример установки: AT+SNIFF=0,0,0,0\r\n
AT+SNIFF= А,Б,В,Г\r\n OK\r\n
ENSNIFF AT+ENSNIFF= АДРЕС\r\n OK\r\n Переход в энергосберегающий режим:

Пример команды: AT+ENSNIFF=1234,56,789ABC\r\n
EXSNIFF AT+EXSNIFF= АДРЕС\r\n OK\r\n Выход из энергосберегающего режима:
Части адреса вводятся через запятую (NAP,UAP,LAP)
Пример команды: AT+EXSNIFF=1234,56,789ABC\r\n
SENM AT+SENM? \r\n +SENM:СЕКРЕТ ,ШИФР \r\n
OK\r\n
Запрос / установка параметров безопасности:
Режим секретности представлен цифрой:
0 - выключен
1 - незащищённое соединение
2 - защита на сервисном уровне
3 - защита на уровне соединения
4 - неизвестный режим
Режим шифрования представлен цифрой:
0 - без шифрования
1 - шифруется только трафик PTP
2 - шифруется весь трафик
Пример ответа: +SENM:0,0\r\n OK\r\n
Пример установки: AT+SENM:0,0\r\n
AT+SENM= СЕКРЕТ,ШИФР\r\n OK\r\n
PMSAD AT+PMSAD= АДРЕС\r\n OK\r\n Удаление устройства из списка пар:
Удаление Bluetooth устройства из списка приведёт к необходимости заново образовывать пару для подключения к нему.
Части адреса удаляемого устройства вводится через запятую (NAP,UAP,LAP)
Пример команды: AT+PMSAD=1234,56,789ABC\r\n
RMAAD AT+RMAAD \r\n OK\r\n Удаление всех устройств из списка пар:
Очистка данного списка приведёт к необходимости заново образовывать пары с Bluetooth устройствами для подключения к ним.
FSAD AT+FSAD= АДРЕС\r\n OK\r\n
или
FAIL\r\n
Поиск устройства в списке пар:
Если Bluetooth устройство с указанным адресом имеется в списке, то модуль вернёт OK\r\n иначе FAIL\r\n .
Части адреса вводятся через запятую (NAP,UAP,LAP)
Пример запроса: AT+FSAD=1234,56,789ABC\r\n
ADCN AT+ADCN? \r\n +ADCN:КОЛИЧЕСТВО \r\n
OK\r\n
Запрос количества устройств в списке пар:
При образовании пары ведущий-ведомый, данные о паре автоматически попадают в список пар и для последующих подключений (даже после отключения питания) не требуется повторно устанавливать пару.
Пример ответа: +ADCN:10\r\n OK\r\n
MRAD AT+MRAD? \r\n +MRAD:АДРЕС \r\n
OK\r\n
Запрос адреса устройства из списка пар:
Модуль вернёт адрес Bluetooth устройства из списка пар с которым выполнялось последнее успешное соединение.
Части адреса выводятся через двоеточие (NAP:UAP:LAP)
Пример ответа: +MRAD:1234:56:789ABC\r\n OK\r\n
STATE AT+STATE? \r\n +STATE:СТАТУС \r\n
OK\r\n
Запрос статуса модуля:
Модуль вернёт свое текущее состояние в виде строки:
INITIALIZED - инициализация
READY - готов
PAIRABLE - образование пары
PAIRED - пара образована
INQUIRING - запрос
CONNECTING - подключение
CONNECTED - подключён
DISCONNECTED - отсоединён
NUKNOW - неизвестное состояние
Пример ответа: +STATE:CONNECTED\r\n OK\r\n
INIT AT+INIT \r\n OK\r\n
или
FAIL\r\n
Инициализация профиля SPP:
Профиль SPP эмулирует последовательный порт.
INQ AT+INQ \r\n +INQ:АДРЕС,ТИП,СИГНАЛ\r\n
+INQ:АДРЕС,ТИП,СИГНАЛ\r\n
...
+INQ:АДРЕС,ТИП,СИГНАЛ\r\n
Поиск (опрос) Bluetooth устройств:

Модуль ищет Bluetooth устройства в радиусе действия и выводит каждый найденный модуль на новой строке. Режим поиска (опроса) устанавливается командой AT+INQM, код опроса устанавливается командой AT+IAC, тип искомых устройств указывается командой AT+CLASS. Поиск завершается по достижении предельного количества найденных Bluetooth устройств, или по достижении таймаута, или командой AT+INQC.
Пример ответа: +INQ:1234:56:789ABС,240404,7FFF
INQC AT+INQC \r\n OK\r\n Завершить поиск (опрос) Bluetooth устройств:
Досрочно завершает поиск Bluetooth устройств инициированный командой AT+INQ
PAIR AT+PAIR= АДРЕС,ТАЙМАУТ\r\n OK\r\n
или
FAIL\r\n
Создать пару с Bluetooth устройством:
Создание пары или сопряжение Bluetooth устройств инициируется ведущим устройством.
Таймаут указывается десятичным числом в секундах.
Если пара создана, то информация о ней автоматически запишется в список пар, модуль ответит OK\r\n после чего можно подключить Bluetooth устройство командой AT+LINK. Если пара не создана (например не подошёл PIN-код или истек таймаут), то модуль ответит FAIL\r\n .
Пример команды: AT+PAIR=1234,56,789ABC,10\r\n
LINK AT+LINK= АДРЕС\r\n OK\r\n
или
FAIL\r\n
Подключиться к Bluetooth устройству:
После выполнения данной команды можно общаться с подключённым Bluetooth устройством.
Команда доступна модулю в роли ведущего.
Пример команды: AT+LINK=1234,56,789ABC\r\n
DISC AT+DISC \r\n +DISC:РЕЗУЛЬТАТ \r\n
OK\r\n
Отключиться от Bluetooth устройства:
Команда указывает модулю отключиться от Bluetooth устройства с которым установлено соединение. После отключения от Bluetooth устройства информация о нём сохраняется в списке пар. Если потребуется вновь подключиться к этому устройству, то создание пары будет необязательно (если Bluetooth устройство намеренно не удалить из списка пар).
После выполнения команды модуль ответит результатом её выполнения:
SUCCESS - успех
LINK_LOSS - соединение потеряно
NO_SLC - отсутствует SLC
TIMEOUT - истекло время ожидания
ERROR - ошибка
Пример ответа: +DISC:SUCCESS\r\n OK\r\n

* Ведомый в цикле - это ведомая роль модуля в которой он отправляет обратно всё что получает от ведущего.
** На некоторые команды модуль реагирует только при нажатой кнопке модуля или наличии высокого уровня на выводе K.

Описание ошибок выдаваемых модулем:

Если отправить команду, которую модуль не знает, не может выполнить, или у команды неправильные аргументы, то модуль вернёт строку «ERROR:(НОМЕР )», где по указанному шестнадцатиричному номеру можно определить, на что «ругается» модуль.

№ ошибки Описание ошибки
0 Неправильная AT команда (нет такой команды)
1 Результат по умолчанию
2 Ошибка сохранения пароля
3 Слишком длинное имя устройства (более 32 байт)
4 Имя устройства не указано
5 Часть адреса NAP слишком длинная (более 4 разрядов в шестнадцатиричной системе)
6 Часть адреса UAP слишком длинная (более 2 разрядов в шестнадцатиричной системе)
7 Часть адреса LAP слишком длинная (более 6 разрядов в шестнадцатиричной системе)
8 Не указана маска порта PIO
9 Не указан номер вывода PIO
A Не указан тип (класс) устройства
B Слишком длинный тип (класс) устройства
C Не указан общий код доступа IAC (Inquire Access Code)
D Слишком длинный общий код доступа IAC (Inquire Access Code)
E Недопустимый общий код доступа IAC (Inquire Access Code)
F Не указан пароль (или пароль пуст)
10 Слишком длинный пароль (более 16 байт)
11 Недопустимая роль модуля
12 Недопустимая скорость передачи данных
13 Недопустимый размер стоп-бита
14 Недопустимая настройка бита четности
15 Устройство отсутствует в списке пар (списке сопряжённых Bluetooth устройств)
16 Профиль последовательного порта (SPP, Serial Port Profile) не инициализирован
17 Повторная инициализация профиля SPP (SPP, Serial Port Profile)
18 Недопустимый режим опроса Bluetooth устройств
19 Слишком большое время опроса
1A Не указан адрес Bluetooth устройства
1B Недопустимый режим безопасности (секретности)
1C Недопустимый режим шифрования

Примечание:

Если нажать на кнопку или подать высокий уровень на вход K непосредственно в момент включения модуля (подачи питания), то модуль перейдёт в режим AT-команд. В этом режиме модуль не соединится с другими модулями, но у этого режима фиксированная скорость = 38400 бит/сек. Если при настройке, в обычном режиме работы модуля, Вы не смогли определить скорость модуля, то можно войти в данный режим и установить новую скорость. Вновь установленная скорость вступит в силу только в обычном режиме, для этого потребуется перезагрузить модуль не удерживая кнопку и не подавая высокий уровень на вход K в момент включения. Помните, что в обычном режиме, не раньше чем через пол секунды после подачи питания (или перезагрузки) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать AT-команды.

Если Вы хотите иметь возможность «нажимать» на кнопку программно, но у Вашего модуля нет вывода K, воспользуйтесь командой AT+PIO=11,УРОВЕНЬ \r\n, где уровень представляется цифрой 1 или 0 соответствующий устанавливаемому логическому уровню. (AT+PIO=11,0 \r\n - кнопка отпущена, AT+PIO=11,1 \r\n - кнопка нажата).

У некоторых модулей есть вывод En который управляет питанием и подтянут к Vcc. Если на вывод En подать низкий логический уровень, то отключится питание чипов. Данный вывод можно использовать для программного входа в режим AT-команд. Если сразу после снятия низкого уровня с вывода En подать команду AT+PIO=11,1\r\n это будет эквивалентно включению модуля с нажатой кнопкой.

Создание ведомого ожидающего подключения ведущего:

  • AT+DISC
  • AT+ORGL
  • AT+RMAAD \r\n - Очистить список пар (авторизованных устройств) чтоб к модулю не подключился тот кого отсоединили.
  • AT+NAME= iArduino\r\n - Установить имя модуля (не более 32 символов).
  • AT+PSWD= 1234\r\n - Установить PIN-код для подключения к модулю (не более 16 символов).
  • AT+ROLE=0 \r\n - Установить модулю роль ведомого (если она не установилась при сбросе пользовательских настроек).
  • AT+RESET \r\n - Перезагрузить модуль.

Не раньше чем через пол секунды после перезагрузки (командой AT+RESET \r\n ) нужно кратковременно нажать на кнопку или подать кратковременный высокий уровень на вход K модуля, иначе он не будет воспринимать новые AT-команды.

Если модуль с ведущей ролью подключается к ведомым модулям по их адресу, а не через их имя, то адрес данного (ведомого) модуля можно узнать выполнив команду AT+ADDR?\r\n .

Создание ведущего с подключением к ведомому:

  • AT+DISC \r\n - Разорвать соединение (на случай если модуль соединён).
  • AT+ORGL \r\n - Сбросить пользовательские настройки в значения по умолчанию.
  • AT+RMAAD \r\n - Очистить список пар (авторизованных устройств) чтоб к модуль не пытался подключился к тому от кого отсоединили.
  • AT+BIND= АДРЕС\r\n - Установить фиксированный адрес для подключения (указываем адрес ведомого Bluetooth устройства)
  • AT+CMODE=0 \r\n - Указываем модулю подключаться только к фиксированному адресу
  • AT+ROLE=1 \r\n - Установить модулю роль ведущего устройства
  • AT+PSWD= 1234\r\n - Запомнить PIN-код ведомого Bluetooth устройства
  • AT+PAIR= АДРЕС,10\r\n - Образовать пару с ведомым Bluetooth устройством, указав его адрес и таймаут 10 сек
  • .


Понравилась статья? Поделитесь ей