Подключение arduino bluetooth модулей hc 05 hc06


Step 5: AT Commands

For HC05: Type «AT» (without the quotes) on the serial monitor and press enter. if «OK» appears then everything is all right and the module is ready to take command. Now you can change the name of the module, retrieve address or version or even reset to factory settings. To see the default name, type AT+NAME. The name will be prompted, by default it is HC-05 or JY_MCU or something like that. To change the name just type AT+NAME=your desired name.

Here is an important note, if the key pin is not high, i.e. not connected to Vcc while receiving AT commands(if you did not solder the wire and released it after the module entered AT mode), it will not show the default name even after giving right command. But you can still change the name by the command mentioned above. To verify if the name has really changed, search the device from your pc/mobile. The changed name will appear. To change baud rate, type AT+UART=desired baud rate. Exit by sending AT+RESET command.

Most useful AT commands are

AT : Ceck the connection.AT+NAME : See default nameAT+ADDR : see default addressAT+VERSION : See versionAT+UART : See baudrateAT+ROLE: See role of bt module(1=master/0=slave)AT+RESET : Reset and exit AT modeAT+ORGL : Restore factory settingsAT+PSWD: see default password

More detailed AT commands are given in the 1st pdf.

For HC06: On arduino serial monitor type «AT» (without the quotes) and press enter, «OK» will confirm AT mode. Unlike HC05, you can’t see the default name or baud rate. You can only change them. To change name type AT+NAMEDESIRED NAME, notice that there should be no space between the command and name. The module will reply OKyour set name. For example, AT+NAMEPROTOTYPE will set the name to PROTOTYPE. To change baud rate, type AT+BAUDX, where X=1 to 9.

1 set to 1200bps2 set to 2400bps 3 set to 4800bps 4 set to 9600bps (Default) 5 set to 19200bps 6 set to 38400bps 7 set to 57600bps 8 set to 115200bpsso sending AT+BAUD4 will set the baud rate to 9600.

For Tera Term write down the commands somewhere else and paste it on the console by right clicking. No need of pressing enter. The command will be executed immediately and confirmed.

HC 06 AT commands are limited, all I could find are given here.

AT : check the connectionAT+NAME: Change name. No space between name and command.AT+BAUD: change baud rate, x is baud rate code, no space between command and code.AT+PIN: change pin, xxxx is the pin, again, no space.AT+VERSION

More details in 2nd pdf.


  • HC-0305 serail module AT commamd set 201104 revised_2.pdfDownload
  • EGBT-045MS-046S Bluetooth Module Manual rev 1r0.pdfDownload

HC-05 Set Up

I have the HC-05 set with the following values:

– ROLE = 0 (slave mode)
– UART = 9600 (baud rate for communication mode)
– CMODE = 0 (only connect to paired devices)
– PSWD = 1234 (password/PIN for pairing)

In AT mode I will be using a baud rate of 38400.

Build the circuit, power on and load the following sketch.

// Basic Bluetooth sketch HC-05_02_38400
// Connect the HC-05 module and communicate using the serial monitor
// The HC-05 defaults to commincation mode when first powered on.
// Needs to be placed in to AT mode
// After a factory reset the default baud rate for communication mode is 38400
//  Pins
//  BT VCC to Arduino 5V out. 
//  BT GND to GND
//  BT RX to Arduino pin 3 (through a voltage divider)
//  BT TX to Arduino pin 2 (no need voltage divider)
#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // RX | TX
// Connect the HC-05 TX to Arduino pin 2 RX. 
// Connect the HC-05 RX to Arduino pin 3 TX through a voltage divider.
char c = ' ';
void setup() 
    // start th serial communication with the host computer
    Serial.println("Arduino with HC-05 is ready");
    // start communication with the HC-05 using 38400
    Serial.println("BTserial started at 38400");
void loop()
     // Keep reading from HC-05 and send to Arduino Serial Monitor
    if (BTserial.available())
        c = BTserial.read();
    // Keep reading from Arduino Serial Monitor and send to HC-05
    if (Serial.available())
        c =  Serial.read();
        // mirror the commands back to the serial monitor
        // makes it easy to follow the commands

Because pin 34 on the Bluetooth module is brought HIGH, the HC-05 should enter AT mode on power on.
Open the serial monitor on the host computer and confirm you are in AT mode by typing “AT” (no quotes). You should get a reply of “OK”
Remember that the HC-05 requires “Both NL & CR” to be set.

The sketch echos the commands you enter back to the serial monitor. This makes it a bit easier to follow.

Slave Configuration

So for example, if we type just “AT” which is a test command we should get back the message “OK”. Then if we type “AT+UART?” we should get back the massage that shows the default baud rate which is 38400. Then if we type “AT+ROLE?” we will get back a massage “+ROLE=0” which means that the Bluetooth device is in slave mode. If we type “AT+ADDR?” we will get back the address of the Bluetooth module and it should looks something like this: 98d3:34:905d3f.

Now we need to write down this address as we will need it when configuring the master device. Actually that’s all we need when configuring the slave device, to get its address, although we can change many different parameters like its name, baud rate, pairing password and so on, but we won’t do that for this example.

Работа схемы

Схема подключения Bluetooth-модуля HC-05 к микроконтроллеру AVR ATmega8 приведена на следующем рисунке.

Подключите одну сторону FRC кабеля к программатору USBASP, а другую к контактам SPI микроконтроллера.

Необходимо сделать следующие соединения:1. Pin1 of FRC female connector -> Pin 17 ,MOSI of Atmega82. Pin 2 connected to Vcc of atmega8 i.e. Pin 73. Pin 5 connected to Reset of atmega8 i.e. Pin 14. Pin 7 connected to SCK of atmega8 i.e. Pin 195. Pin 9 connected to MISO of atmega8 i.e. Pin 186. Pin 8 connected to GND of atmega8 i.e. Pin 8

Соедините остальные компоненты на макетной плате в соответствии с представленной выше схемой.

Circuit Schematics

Here’s how we need to connect the module to the Arduino Board.

The particular module that I have can be powered from 3.6 to 6 volts, because it comes on breakout board which contains a voltage regulator. However, the logic voltage level of the data pins is 3.3V. So, the line between the Arduino TX (Transmit Pin, which has 5V output) and the Bluetooth module RX (Receive Pin, which supports only 3.3V) needs to be connected through a voltage divider in order not to burn the module. On the other hand, the line between the Bluetooth module TX pin and the Arduino RX pin can be connected directly because the 3.3V signal from the Bluetooth module is enough to be accepted as a high logic at the Arduino Board.


Option 1: Git (Recommended)

  • Follow this GitHub repository
    and use to track your own changes by cloning:

    $ cd ~/sketchbook/libraries
    $ git clone https://github.com/jdunmire/HC05.git

  • Start the Arduino IDE and you should find in the
    libraries section.

Option 2: Source only

  • Download a ZIP file. The ZIP button at
    GitHub will always get the
    latest version, but you may prefer one of the
    tagged versions.

  • Unpack the zip file into your sketchbook library directory
    ( on Linux).

  • Rename the resulting directory (or create a symlink) to

  • Start the Arduino IDE and you should find in the libraries


By default the library is configured for a software serial port and
debugging output to the hardware serial port (Serial) is turned on. You
will need to edit the HC05.h file if you want to change those settings.

The Bluetooth port is and must be setup as shown at the top
of the Example sketches. If debugging output is enabled in HC05.h (it is
by default) then your sketch must include a DEBUG_BEGIN(baud) command to
initialize the debug output port and set it’s baud rate.

Hardware Serial Port Issues for UNO

Using the hardware serial port on the UNO comes with some caveats:

  • You will have to disconnect the HC-05 module to upload a sketch.
  • If you use the Arduino you will see the traffic to
    and from the HC-05 serial port. If you type in the
    it will interfere with the HC-05 traffic.

Характеристики Bluetooth модуля HC-06 / HC-05

Bluetooth является сегодня одним из самых популярных типов связи для коротких дистанций, которым пользуются большинство бытовых приборов и электронных устройств — наушники, компьютерные клавиатуры и мышки и другие гаджеты. В робототехнике Bluetooth модуль используют для управления различных устройств на Arduino NANO, например, управление машинкой или катером со смартфона.

HC-05/06 Bluetooth модуль распиновка

Оба устройства построены на чипе CSR BC417, который поддерживает радиосигнал по протоколу Bluetooth со скоростью до 3 Мбит/сек. На самой плате находится антенна из дорожки в виде змейки, обеспечивающая дальность связи до 10 метров. Главным преимуществом можно назвать устойчивость к широкополосным помехам, а значит несколько устройств могут общаться между собой, не мешая друг другу.

Скетч для управления Ардуино через блютуз со смартфона на Android ничем не отличается от скетча, который применяется для управления Ардуино с компьютера. Так как в обоих случаях микроконтроллер будет получать данные по протоколу UART (универсальный асинхронный приемопередатчик) — самый первый и наиболее распространенный сегодня физический протокол передачи данных.

Общие принципы работы Bluetooth-модуля HC-05

Bluetooth-модуль может работать в двух режимах:

  1. Режим управления (Command Mode).
  2. Режим функционирования (Operating Mode).

В режиме управления можно конфигурировать свойства Bluetooth-модуля такие как: имя источника сигнала Bluetooth, пароль, бодовая скорость и т.д. В режиме функционирования можно получать и передавать данные между Bluetooth-модулем и микроконтроллером, поэтому в данном проекте мы будем использовать режим функционирования. Для режима управления оставим его настройки по умолчанию. То есть имя устройства будет HC-05 (автор статьи использует HC-06), пароль будет 0000 или 1234, а скорость передачи будет равна 9600 бод/с.

Модуль работает при напряжении питания 5В, а его сигнальные контакты оперируют напряжением 3.3В, поэтому регулятор данного напряжения (3.3В) присутствует в данном модуле. Следовательно, нам не нужно беспокоиться о стабильности этого напряжения. У модуля 6 выходных контактов, но в режиме функционирования используются только 4. Схема соединения контактов модуля приведена в следующей таблице.

  Pin on HC-05/HC-06 Pin name on MCU Pin number in PIC
1 Vcc


31st pin
2 Vcc


32nd pin
3 Tx RC6/Tx/CK 25th pin
4 Rx RC7/Rx/DT 26th pin
5 State NC NC
6 EN (Enable) NC NC

HM-11. Non break out version.

For a future project I wanted a Bluetooth module that was as small as possible and the HM-11 without a breakout board looked suitable. However, After playing with them for a while I decided to stick with Bluetooth v2 and will use a HC-05 without the breakout board instead.

Basically the same as the HM-10 but in a small package.

CC2540 or CC2541 chip.
Bluetooth version 4.0
Firmware HMSoft V540
Default baud rate is 9600
Default PIN is
Default name is HMSOFT
AT commands need to be uppercase
The HM-11 does not like line end characters (\r\n).

The HM-11 is Bluetooth 4.0 BLE only and not compatible with Bluetooth 2.0 or 2.1. The model I received includes the CC2541 chip as opposed to the CC2540 chip.


Since there is no break out board all pins are 3.3v

The minimum connections to get the modules working are TX, RX, VCC and GND. I also added a LED to pin 15 so that I had visual confirmation that the module was on. The extra white wire is attached to pin 16 (SYSTEM KEY) but this is not connected in the below photos. The wire is single core wire wrap wire which I find very convenient for this kind of work.

The HM-11 is operationally the same as the HM-10 and there is more information in the HM-10 guide.

Arduino Bluetooth Controller (HM-10 Module) – приложение на Android

Arduino Bluetooth Controller (HM-10 Module) представляет собой приложение для операционной системы Android, которое можно бесплатно скачать из Google Play Store. Это приложение обеспечивает простой и интуитивно понятный интерфейс для взаимодействия с Bluetooth модулем HM-10. В этом приложении можно создавать собственные кнопки и кастомизировать вид этого приложения под свои нужды. Мы создали в нем две кнопки для управления светодиодом, подключенным к плате Arduino.

Вначале скачайте это приложение из Google Play Store по этой ссылке (или можете сразу скачать его с помощью своего смартфона).

На главной странице этого приложения доступны такие функции как connect Device (подсоединить устройство), Search Icon (найти иконку), Delete Icon (удалить иконку), Device Status (состояние устройства), Send Text (передать текст), Add Template (добавить шаблон) и другие. Начните работу в этом приложении с поиска устройства – это можно сделать либо с помощью функции Search Icon, либо кликнув по трем точкам в верхнем правом углу приложения и выбрав connect Device.

После этого на экране приложения вы увидите все доступные для подключения устройства. Выберите среди них модуль HM-10.

После этого модуль HM-10 будет успешно подключен к вашему приложению и вы сможете видеть его состояние вверху экрана.

После этого вы сможете передать текст (строку) в модуль либо непосредственно из поля передачи текста, либо при помощи создания собственного (пользовательского) шаблона.

Для создания нового пользовательского шаблона (custom template) нажмите на иконку “+” в правом верхнем углу и после этого заполните необходимые параметры шаблона. “Name” – это будет название кнопки, поле “Text” будет использоваться для передачи текста (строки) на модуль HM-10, а “Description” – это будет описание кнопки.

Мы в нашем проекте создадим кнопку зеленого цвета для включения светодиода (LED ON). При нажатии этой кнопки на модуль HM-10 будет передаваться символ “N”, что будет приводить к включению светодиода, подключенного к плате Arduino. Аналогичным образом создадим кнопку красного цвета для выключения светодиода (LED OFF) – при ее нажатии на модуль HM-10 будет передаваться символ “F”.

После этого вы сможете увидеть в приложении две созданные вами кнопки – с их помощью вы сможете управлять светодиодом, подключенным к плате Arduino.

Step 2: Pinout and Entering AT Mode

PINS: The pins found on the breakout board are,

KEY: This pin has to be pulled high to enter AT mode.VCC: Indicated range is 3.6 to 6 volt. To be on safer side, you should connect it to 3.3 Volt. GND: Ground.RXD: Serial input pin.TXD Serial output pin.STATE: May or may not be connected to any pin. Supposedly outputs the Bluetooth connection status. This pin will not be needed.

Some of the breakout boards have EN pin or even WAKE UP pin instead of KEY pin. None of them seem to be connected to any pins of module. But that does not matter because we wouldn’t need them anyway.

Once you identified the module, now it’s time to enter the AT mode.For HC05: Connect the Rx pin of the Bluetooth module to Tx pin of USB to TTL converter, and Tx pin of Bluetooth to Rx pin of converter. Also connect their ground but don’t connect the Vcc yet. First you’ll have to short the key pin with the Vcc. Connect key pin and Vcc together on breadboard, or any other way. After all other pins are connected, connect Vcc of bt module to USB to TTL converter’s Vcc. Now the led on the module will blink at the interval of 2 seconds. That means it has entered the AT mode. If the led blinks faster then AT mode was not entered. Disconnect Vcc, check your circuit and try again. If it does not work then there’s a chance that your KEY pin of the module is not really soldered to the KEY of the main chip, i.e. the 34th pin. You can check that with the help of multimeter.

If you use an arduino uno, then connect Rx pin of the Bluetooth module to pin 11 of Arduino Uno(supposedly same for arduino mega), and Tx pin of Bluetooth to pin 10 of Arduino. Also connect key pin of module to pin 9 of arduino and ground to ground, but don’t connect the Vcc yet. You have to first power up the arduino, and then connect Vcc just like you did in case of USB to TTL converter.

For HC06: Just connect the Rx of module to Tx of usb-ttl converter and Tx of module. Connect ground and Vcc. The module is in AT mode. Didn’t see that one coming, right? 😛 Turns out HC06 module is permanently configured to be slave and it is always in AT mode when not paired to any other device. So there is no confirmation led blinking that it is in AT mode like HC05 has. Just power up the module and pass the AT commands to modify the default settings.

Connection overview:

HC05 USB to TTL ArduinoVcc Vcc VccRx Tx pin 11Tx Rx pin 10Gnd Gnd Gndkey Vcc pin 9


Vcc VccRx TxTx RxGnd Gnd


Давайте подробнее разберёмся, какие характеристики имеет такой bluetooth модуль для ПК и различных проектов. Сами разработчики заявляют, что выдержали коммерческий стандарт в hc 05. Соответственно, для управления устройством будет достаточно специальной программы на смартфоне или компьютере, которая позволит отправлять и получать данные с датчика. Однако существует ограничение в области применения, ведь устойчивый сигнал, без использования усилителей, можно поймать лишь на 9 метрах от чипа

Учитывайте, что это сырые цифры, в которых во внимание не берутся преграды на пути волн

Сами hc чипы полностью совместимы с любыми адаптерами, что поддерживают SPP. На самой плате устройства размещается небольшая антенна, припаянная к верхнему слою в виде дорожки, похожей на змею. Характеристики девайса заявлены следующие:

  1. Активные частоты радиосвязи находятся в диапазоне 2.4-2.48 ГГц.
  2. Канал приспособлен к адаптивному переключению.
  3. Условная дальность связи – 10 метров, но в этой цифре не учитываются преграды и помехи.
  4. Максимальная скорость при обмене информацией – 115300 бод.
  5. Хранить чип можно в температурном диапазоне от — 40 до +85 градусов, а вот использовать – от -20 до +70.
  6. Для работы необходимо будет напряжение в 3.3 В, что мы рассмотрим чуть ниже.

Процесс подключения к компьютеру по Bluetooth

Процесс подключения состоит из двух основных этапов:

  1. Спаривание с ПК
  2. Подключение к устройству по последовательному соединению Спаривание с ПК по Bluetooth

Процесс спаривания устройств

Спаривание проводится один раз, потом параметры соединения сохраняются. Для начала спаривания системы по Bluetooth, подайте питание на плату Ардуино и включите Bluetooth адаптер в ПК.

На ПК под управлением ОС Windows в панели задач около часов появится значок Bluetooth.

Нажмите на него правой клавишей и в открывшемся меню выберите “Добвление устройства Bluetooth“

В зависимости от версии ОС Windows откроется окно с параметрами ПК, для версий выше Win8 откроются параметры ПК, там нужно выбрать пункт “Компьютеры и устройства” -> “Bluetooth“. На экране будет происходить поиск устройств Bluetooth и скорее всего включенное устройство HC-06 будет уже найдено.

Щелкните на него и нажмите на кнопку “Связать”

При запросе пароля введите “1234” или “0000” – это пароли по умолчанию Bluetooth модулей. Если же пароль был изменен, то введите актуальный пароль.

После этого спаривание будет завершено и при следующем соединении устройства подключатся автоматически.

Подключение к ПК по последовательному соединению

Удобство соединения Ардуино по Bluetooth состоит в том, что оно происходит по тому же протоколу, что и через USB! Не придется переписывать программу приема данных для этого!Достаточно узнать номер COM порта и задать его в принимающей программе и все.

Кстати, скорость соединения по умолчанию у Bluetooth модуля установлена 9600 бод, поэтому для обеспечения совместимости с передачей по проводному и беспроводному соединению, лучше выбирать именно такую скорость. Если же этого не достаточно, то придется перепрограммировать Bluetooth модуль при помощи AT команд.

Ну а для поиска номера порта можно воспользоваться Диспетчером устройств Windows. Он доступен в панели управления Windows.Откройте ветку “Порты (COM и LPT)” и там найдутся две записи “Стандартный последовательный порт по соединению Bluetooth(COM..)“

Вот тут есть некое отличие от проводного соединения! Создаётся сразу два порта на одно устройство. Один из них для приема, а другой для передачи. Поэтому запомните оба номера и один из них позволит принимать данные через Bluetooth. Отправлять данные в Ардуино нужно по второму.Вот и все, что качается организации связи. Сам процесс передачи ничем не отличается от проводного соединения и подробно описан в статьях:

  1. Передача на ПК в текстовом формате
  2. Передача на ПК в бинарном формате

(с) Роман Исаков, 2021

Step 1: Identifying Your Module

First thing you need to do is identify your module. It can be either HC05 or HC06. Both the modules are same in functionality except the pinout. Also HC05 can act as both master and slave whereas HC06 functions only as slave. It’s hard to differentiate between the two only by seeing. One probable way would be checking the back of the breakout board. If it has «JY-MCU» written on the back, it’s probably a HC06. Mine has «ZS-040» written and it is a HC05. And the HC06 module I tested had a bluetooth sign behind with three pcb footprints(refer to figure2). To confirm the device identity, you can power up the module, search for new device on your pc or mobile, and look for HC05 or HC06 on found device list.

Пояснение части кода программы

Полный код программы вместе с видео, демонстрирующим работу схему, приведен в конце статьи. В этой же части статьи мы лишь поясним как правильно объявить переменные в программе, в которых будут храниться символы, поступающие от Bluetooth-модуля.


#include <io.h>
// глобальные переменные объявляются здесь
// стандартные функции ввода/вывода
#include <stdio.h>
void main(void)
char var; // локальные переменные объявляются здесь


#include <io.h>
// глобальные переменные объявляются здесь
// стандартные функции ввода/вывода
#include <stdio.h>



charvar;// локальные переменные объявляются здесь

Остальная часть кода программы достаточно проста и легка для понимания. Теперь давайте рассмотрим последние строки кода, в которых вы можете найти цикл while – в этом цикле сосредоточена главная часть кода программы, поскольку в нем мы непрерывно проверяем поступающие символы от Bluetooth-модуля и включаем/выключаем светодиод соответственно.


while (1)
scanf(«%c»,&var); // эта функция используется для проверки всех символов, поступающих от приложения android
if (var == ‘a’) // мы будем посылать символ ‘a’ с терминала Bluetooth чтобы включить светодиод и символ ‘b’ чтобы выключить светодиод
PORTC.5 = 1;
PORTC.4 = 0;
if (var == ‘b’)
PORTC.5 = 0;
PORTC.4 = 0;




scanf(«%c»,&var);// эта функция используется для проверки всех символов, поступающих от приложения android

if(var==’a’)// мы будем посылать символ ‘a’ с терминала Bluetooth чтобы включить светодиод и символ ‘b’ чтобы выключить светодиод











Наша программа завершена. Теперь нам необходимо построить (build) наш проект. Кликните на иконке Build как показано на рисунке:

После создания проекта необходимо будет выполнить Debug->Exe чтобы сгенерировать HEX файл, который будет находиться в папке внутри той папки, которую вы создавали для хранения проекта. Этот HEX файл мы будем впоследствии загружать в микроконтроллер atmega8 с помощью программы Sinaprog.


С помощью AT-команд можно сменить настройки по умолчанию. Имейте в виду, что в 2018 году модули стали поставляться с другой прошивкой и некоторые сведения, которые ранее были описаны в интернете, устарели. Я описываю актуальные команды на 2019 год.

Используем следующую схему подключения.

При подключении светодиод на модуле будет мигать два раза в секунду. В этом режиме можно вводить команды. Но сначала загрузим скетч.

В Serial Monitor вводим команду AT. В ответ получим OK.

Чтобы сменить имя модуля, нужно ввести команду AT+NAME=CAT-06, где CAT-06 — новое имя. Имя не должно превышать 20 символов.

Узнать версию модуля: AT+VERSION. Ответ: VERSION:3.0-20170609.

Смена пароля: AT+PSWD:"0000", где 0000 ваш новый пароль.

Есть ещё команды для смены скорости, но тут нужно быть внимательным. После смены скорости старые скетчи не будут работать, надо вносить в них изменения, чтобы соответствовать новым настройкам. Не уверен, что стоит увлекаться этим.


В этой статье мы рассмотрели варианты подключения и работы с одними из самых распространенных Ардуино модулей Bluetooth HC05, HC06. Никаких особенных сложностей с этими модулями у вас быть не должно – просто подключайте его к пинам с аппаратным или программным UART, после чего используйте традиционные библиотеки (Serial для модуля, подключенного к 0, 1 пинам, SoftwareSerial в случае присоединения к другим).

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