Arduino and hc-05 bluetooth module complete tutorial

Master Configuration

Ok now let’s move on and configure the other Bluetooth module as a master device. First we will check the baud rate to make sure it’s the same 38400 as the slave device. Then by typing “AT+ROLE=1” we will set the Bluetooth module as a master device. After this using the “AT+CMODE=0” we will set the connect mode to “fixed address” and using the “AT+BIND=” command we will set the address of the slave device that we previously wrote down.

Note here that when writing the address we need to use commas instead of colons. Also note that we could have skipped the previous step if we entered “1” instead of “0” at the “AT+CMODE” command, which makes the master to connect to any device in its transmission range but that’s less secure configuration. Here you can find a complete list of commands and parameters: HC-05 AT Commands List

Nevertheless, that’s all we need for a basic configuration of the Bluetooth modules to work as a master and slave devices and now if we reconnect them in normal, data mode, and re-power the modules, in a matter of seconds the master will connect to the slave. Both modules will start flashing every 2 seconds indicating a successful connection.

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

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

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

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

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

HC-06 zs-040 hc01.com v2.0

These look like the common HC-05/HC-06 on the zs-040 breakout boards but have a different firmware.

These use the genuine HC SMD Bluetooth module and (at the time of writing) have the latest HC firmware

The modules here were sold as HC-06s and do not have STATE pins or EN pins.

Uses the CSR BC04 (BC417) chip
Bluetooth version v2.0 + EDR
Firmware hc01.comV2.0. The firmware is SLAVE only version by Wavesen
Default baud rate is 9600
Default PIN is
1234
Default name is HC-06
The small Bluetooth boards have a blue LED at the top left.

AT commands are required to be in upper case and nl/cr line endings not required.

AT+LED turns off the on board LED. This is the blue LED on the small daughter board not the red LED on the larger breakout board. I originally though the 2 LEDs were linked but if you turn off the blue LED the red LED keeps flashing.

AT+LED0 – turn off the blue LED, returns LED ON
AT+LED1 – turn on the blue LED, returns LED ON

Other commands can be found in the data sheet.

Interesting there is a ROLE command;
AT+ROLE=S puts the module in to SLAVE mode, returns OK+ROLE:S
AT+ROLE=M puts the module in to MASTER mode, returns OK+ROLE:M
The commands are accepted and I originally thought this may mean the modules can be used as HC-05s but I cannot get any of the usual HC-05 commands to work; ROLE, AT+ROLE, AT+ROLE=, AT+ROLE? doesn’t work for example.

Downloads

Chinese Data SheetEnglish Data Sheet.Data sheet for the 1.8 firmware but the commands seem to be the same.

The modules I have match the photo in the Chinese data sheet. The photo in the English data sheet would appear to be an older version.

Further Information

Guangzhou HC website (Chinese only but google translate works)Website download page (Chinese only again). Note the English docs are not as up-to-date as the Chinese docs.Wavesen product page.This shows the older no blue LED version. Wavesen and HC01 are the same company.

HC-06 (ZG-B23090W) Bluetooth 2.0 EDR modules

HC-06 (ZG-B23090W): Basic Specs

Slave only module
Bluetooth 2.0 EDR
Based on the csr BC417 chip
Firmware is linvor V1.8 which is (I think) created by Wavesen and getting a little old.
Default baud rate for serial UART is 9600
AT commands need to be uppercase without line endings.

Hard to know if these are copies or not (I suspect they are). Wavesen are the manufactures of the original HC series of Bluetooth modules and their modules now feature the HC logo screen printed on the Bluetooth SMD board (the small daughter board) and a blue LED at the top right. Since these modules do not have the logo nor the blue LED I presume they are copies. But, the photos in the data sheet feature modules without the logo. Bare in mind the data sheets are from 2010 and 2011.

For more information see the HC-06 (ZG-B23090W) Bluetooth 2.0 EDR modules post.

Controlling Arduino Using a Laptop or PC via Bluetooth Communication

Let’s see how we can control the Arduino via Bluetooth using a Laptop or a PC. So, first we need to pair our laptop to the HC-05 Bluetooth module and we can do that from the Laptop Bluetooth Settings. The laptop will discover the HC-05 module and using the ‘1234’ password we will pair the devices.

Once we will pair the devices in the Laptop Device Manager, under Ports (COM & LPT), two new entities will appear named “Standard Serial over Bluetooth link”. From here we can see the COM Port number of the serial port through which the devices will communicate.

We will stick with the same example as previously, turning on and off a LED and sending back a string to the laptop, so we will use the same Arduino code as previously described.

Code

This is probably the simplest code to test all the device that support the serial port communication. It simply connects the computer terminal and the HC-05 in a loop. The codes sends the messages from the terminal to the Bluetooth Module and messages from the Bluetooth module to the terminal.

#include <SoftwareSerial.h>
SoftwareSerial EEBlue(10, 11); // RX | TX
void setup()
{
 
  Serial.begin(9600);
  EEBlue.begin(9600);  //Default Baud for comm, it may be different for your Module. 
  Serial.println("The bluetooth gates are open.\n Connect to HC-05 from any other bluetooth device with 1234 as pairing key!.");
 
}
 
void loop()
{
 
  // Feed any data from bluetooth to Terminal.
  if (EEBlue.available())
    Serial.write(EEBlue.read());
 
  // Feed all data from termial to bluetooth
  if (Serial.available())
    EEBlue.write(Serial.read());
}

Технические характеристики

  • Питание: 3,3В–6В
  • Максимальное входное напряжение: 5В
  • Максимальный ток: 45 мА
  • Скорость передачи данных: 1200–1382400 бод
  • Рабочие частоты: 2,40 ГГц – 2,48ГГц
  • Поддержка спецификации bluetooth версии 2.1
  • Дальность связи: 30 м
  • Пароль «1234», скорость передачи данных 9600, имя модуля HС-06 (все настройки можно изменить AT-командой)

Для подключения к Arduino Uno используется следующая схема.

Модуль HC-06 выступает в роли последовательного порта, через который можно передавать и принимать данные. Вы можете для этой цели использовать компьютер или смартфон.

Важное замечание: при заливке скетча убирайте провода с контактов 0 и 1 на плате Arduino, так как они используются для передачи данных вашего скетча. Когда скетч установите, можете вернуть провода на место

Getting Started

Determining what modules you have and what firmware they are running is key to getting them to work and there are various things you can use to find more information.
1. Markings on the board or the breakout board.
2. Number and type of pins on the breakout board.
3. The type of Bluetooth.
4. The chip(s) used.
5. Talking to the module.

But the first thing you should do is try it. Power it up, make sure it works and see what name it transmits. If it transmits “HC-06” or “HC-05” you know it will be Bluetooth 2.0 or 2.1. HMSoft, AT-09, BT05, CC2540, CC2541 all mean BLE.

I am an Android user (sorry I can’t help with IOS) so all the examples will be from Android devices.

On Android devices (that have Bluetooth), all Bluetooth 2.0/2.1 devices should show up in Settings => Bluetooth => Scan for devices. BLE modules may or may not show up depending on the Android device you have and the version of Android it is running.

For BLE you should use one of the many BLE apps. I generally use BLE Scanner or B-BLE but there are many others.

Markings on the board / breakout board

There are many different modules available and a few have become fairly popular. These general have a brand or some kind of marking on the board; either on the small SMD Bluetooth board or the breakout board. Commons ones are:

  • zs-040
  • FC-114
  • JY-MCU
  • CZ-HC-0x
  • SJ
  • Keyes Bluetooth 4.0
  • HM-10

Of course, some of these are pretty obvious. If your module has HM-10 clearly stamped on it the chances are it’s a HM-10. It gets tricky when there are no markings or when the same board gets used again. I now have several different modules (BT 2 and BT 4) that all use the zs-040 breakout board and modules using the FCC-114 boards have at least 2 different firmwares.

Number and type of pins on the breakout board

The number and type of pins can give you some information. For Bluetooth 2 modules HC-05s tend to have 6 pins and HC-06s tend to have 4 pins.
The pin labels can also help. Besides the common TX,RX, GND and vcc, there may be EN, WAKEUP, STATE, BRK, KEY, or LED pins

Type of Bluetooth and chip used

This should be obvious but you never know. The chances are, if you bought a BLE module then you will get a BLE module just maybe not the HM-10 you thought you ordered. If you are not sure, start it up and use a Android device to scan and see what appears. The chip used on the small Bluetooth board (the daughter board) can help. Google the chip name and you will soon have a datasheet.

Talking to the module

To configure any of the modules you need to talk to it using a serial UART connection (see below for more on this). This can also be frustrating because different modules have different requirements for the format of the AT command. Some require uppercase, some lowercase. Some like line ending characters, other do not. Most default to 9600 baud rate but some have a different rate (38400 is also common). When trying new modules I have kind of settled on the following routine.

I start with 9600, line endings, and uppercase. If no joy, I try lower case. If no joy, I remove the line endings and try uppercase again. After going through the various options at 9600 I try 38400. 9600 and 38400 are the 2 most frequent baud rates. If I still don’t get anywhere I will try the other baud rates.

I will also cycle the power while connected with a serial connection. Some modules, like the ones that use a Bolutek firmware, have a start up message.

Getting garbage characters is a sign that you have the wrong baud rate.

Объяснение программы Arduino для управления светодиодом с помощью Bluetooth модуля HM-10

Полный текст программы и видео, демонстрирующее работу проекта, приведены в конце данной статьи. Здесь же мы кратко рассмотрим работу основных фрагментов программы.

Написание программы Arduino для этого проекта не потребует использования каких либо дополнительных библиотек если вы подключите модуль HM-10 к стандартному аппаратному последовательному порту платы Arduino – то есть к ее контактам 0 и 1 как показано на выше приведенной схеме. Однако мы в данном проекте решили использовать библиотеку для последовательной связи (Software Serial Library), с помощью которой программным способом организуем последовательный порт на контактах 2 и 3 платы Arduino (соответственно, если вы тоже хотите использовать этот подход, то вам необходимо внести изменения в приведенную выше схему).

Arduino

#include <SoftwareSerial.h>
SoftwareSerial HM10(2, 3); // RX = 2, TX = 3

1
2

#include <SoftwareSerial.h>

SoftwareSerialHM10(2,3);// RX = 2, TX = 3

Далее объявим две переменные, которые будут использоваться для хранения данных, принимаемых от модуля HM-10.

Arduino

char appData;
String inData = «»;

1
2

charappData;

StringinData=»»;

Далее инициализируем последовательную связь со скоростью 9600 бод с компьютером и модулем HM-10. Зададим режим работы используемого контакта и выключим светодиод.

Arduino

Serial.begin(9600);
Serial.println(«HM10 serial started at 9600»);
HM10.begin(9600); // set HM10 serial at 9600 baud rate
pinMode(13, OUTPUT); // onboard LED
digitalWrite(13, LOW); // switch OFF LED

1
2
3
4
5

Serial.begin(9600);

Serial.println(«HM10 serial started at 9600»);

HM10.begin(9600);// set HM10 serial at 9600 baud rate

pinMode(13,OUTPUT);// onboard LED

digitalWrite(13,LOW);// switch OFF LED

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

Arduino

HM10.listen(); // listen the HM10 port
while (HM10.available() > 0) { // if HM10 sends something then read
appData = HM10.read();
inData = String(appData); // save the data in string format
Serial.write(appData);
}

1
2
3
4
5
6

HM10.listen();// listen the HM10 port

while(HM10.available()>){// if HM10 sends something then read

appData=HM10.read();

inData=String(appData);// save the data in string format

Serial.write(appData);

}

Для отладки работы модуля HM-10 с помощью AT команд допишите в программу следующие строчки кода, которые будут передавать строку в модуль HM-10.

Arduino

if (Serial.available()) { // Read user input if available.
delay(10);
HM10.write(Serial.read());
}

1
2
3
4

if(Serial.available()){// Read user input if available.

delay(10);

HM10.write(Serial.read());

}

Если мы принимаем строку “F”, то мы печатаем соответствующее сообщение в окне монитора последовательной связи и выключаем светодиод. Если мы принимаем строку “N”, то мы печатаем соответствующее сообщение в окне монитора последовательной связи и начинаем мигать светодиодом с задержкой 500 мс.

Arduino

if ( inData == «F») {
Serial.println(«LED OFF»);
digitalWrite(13, LOW); // switch OFF LED
delay(500);
}
if ( inData == «N») {
Serial.println(«LED ON»);
digitalWrite(13, HIGH); // switch OFF LED
delay(500);
digitalWrite(13, LOW); // switch OFF LED
delay(500);
}

1
2
3
4
5
6
7
8
9
10
11
12

if(inData==»F»){

Serial.println(«LED OFF»);

digitalWrite(13,LOW);// switch OFF LED

delay(500);

}

if(inData==»N»){

Serial.println(«LED ON»);

digitalWrite(13,HIGH);// switch OFF LED

delay(500);

digitalWrite(13,LOW);// switch OFF LED

delay(500);

}

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.

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.begin(9600);
    Serial.println("Arduino with HC-05 is ready");
 
    // start communication with the HC-05 using 38400
    BTserial.begin(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();
        Serial.write(c);
    }
 
    // 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
        Serial.write(c);   
        BTserial.write(c);  
    }
 
}

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.

Исходный код программы (скетча)

Arduino

#include <SoftwareSerial.h>
SoftwareSerial HC05(2,3);
void setup()
{
Serial.begin(9600);
Serial.println(«Enter AT commands:»);
HC05.begin(38400);
}
void loop()
{
if (HC05.available())
Serial.write(HC05.read());
if (Serial.available())
HC05.write(Serial.read());
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

#include <SoftwareSerial.h>

SoftwareSerialHC05(2,3);

voidsetup()

{

Serial.begin(9600);

Serial.println(«Enter AT commands:»);

HC05.begin(38400);

}

voidloop()

{

if(HC05.available())

Serial.write(HC05.read());

if(Serial.available())

HC05.write(Serial.read());

}

Bluetooth в Arduino проектах

Самыми популярными модулями являются устройства на основе чипа BC417. Эта серия называется HC. Модули HC-03 и HC-05 могут быть и сервером соединения, и клиентом, они обладают широким набором АТ команд.

Для подключения к ПК потребуются модуль Bluetooth, плата Ардуино, соединительные провода и компьютер. Скетч для управления платой Ардуино через смартфон и компьютер будет одинаковым, так как в обоих случаях данные в микроконтроллер буду поступать по протоколу UART. Схема подключения Bluetooth-модуля к плате представлена на рисунке. Пин RX на ардуино подключается к TDX, TX – к RDX, GND – к GND, 5V – к VCC.

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


int val;

void setup()

{

Serial.begin(9600);

pinMode(13, OUTPUT); // 13 пин – светодиод, объявляется как выход

}

void loop()

{

if (Serial.available()) // проверка поданных команд

{

val = Serial.read();

if (val == '1') {digitalWrite(13, HIGH);} // при 1 включается светодиод

if (val == '0') {digitalWrite(13, LOW);}  // при 0 выключается светодиод

}

}

Теперь нужно настроить соединение телефона и модуля. Для установки соединения нужно зайти в настройки телефона и включить Bluetooth. Как только устройство будет найдено, нужно ввести пароль – обычно это «1234» или «0000». После этого нужно зайти в приложение, нажать на кнопку «подключить Bluetooth» и выбрать нужное устройство. При успешном сопряжении на модуле светодиод начнет мигать медленнее,  примерно 1 раз в 2 секунды.

В скетче светодиод включается и выключается при получении цифр «1» и «0». Кроме цифр также можно использовать буквы латинского алфавита с учетом регистра.

Аналогичным образом можно подключаться к модулю при помощи компьютера. Для этого существуют различные программы, которые подключатся к COM-порту. При запуске программы запрашивают номер порта, скорость  и тип подключения. При успешном подключении на экране появится поле терминала, в которое нужно ввести с клавиатуры цифры/буквы, включающие светодиод.

Создание проекта для ATmega8 в программной среде CodeVision

Аналогичные операции можно произвести и в других программных средах для программирования микроконтроллеров AVR, например, Atmel Studio.

После установки CodeVision вам необходимо выполнить следующие ниже перечисленные шаги чтобы создать проект и написать программу.

Шаг 1. Создайте новый проект в CodeVision, выбрав пункт меню File -> New -> Project. В появившемся диалогом окне нажмите Yes.

Шаг 2. Откроется CodeWizard. Кликните в ней на первой опции, то есть AT90, затем нажмите OK.

Шаг 3. Выберите свой микроконтроллер, в нашем случае им будет Atmega8.

Шаг 4. Кликните на Ports (порты). В нашем проекте мы будем использовать Port C4 и C5 для управления светодиодом. Таким образом, необходимо сконфигурировать биты 4 и 5 как выходные кликнув на них, как показано на рисунке:

Шаг 5. Мы будем использовать универсальный асинхронный последовательный приемопередатчик (USART) для Rx и Tx (приема и передачи данных). Поэтому необходимо выбрать настройки USART, в них кликнуть на настройки приема и оставить их по умолчанию.

Шаг 6. Выберите Program -> Generate, Save and Exit. Теперь более половины вашей работы по программированию микроконтроллера Atmega8 можно считать выполненной.

Шаг 7. Создайте новую папку на рабочем столе чтобы записывать туда наши файлы.

У нас будет 3 диалоговых окна (будут появляться последовательно одно за другим) для сохранения наших файлов.

Сделайте то же самое (что и на представленном рисунке) с двумя другими диалоговыми окнами – то есть сохраните предлагаемые ими файлы.

После этого рабочая область программы будет выглядеть следующим образом:

Теперь большая часть работы по программированию микроконтроллера Atmega8 нами выполнена с использованием такой удобной программной среды как CodeVision. Но ели вы не хотите использовать данную программную среду, то вы можете запрограммировать работу с последовательным портом микроконтроллера вручную по аналогии с последовательностью действий в таких статьях на нашем сайте как:

  • взаимодействие двух микроконтроллеров AVR ATmega8 через UART;
  • связь AVR ATmega8 и Arduino Uno через универсальный асинхронный приемопередатчик (UART)

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

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

C++

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

1
2
3
4
5
6
7

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

voidmain(void)

{

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

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

C++

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;
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14

while(1)

{

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

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

{

PORTC.5=1;

PORTC.4=;

}

if(var==’b’)

{

PORTC.5=;

PORTC.4=;

}

}

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

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

2 ответа

Спасибо за помощь! Я отказался от работы с модулем Bluetooth, однако при работе с простым светодиодом RGB я заметил свою ошибку. Я использовал землю из моего макета для модуля вместо земли от Arduino Mega. Я переделал свой макет, чтобы земля и сила исходили от моего Arduino Mega, и все работает отлично! Я закончил тем, что использовал тот же самый код, который был опубликован в моем первоначальном вопросе, так что просто я не использовал землю из своего Arduino Mega

1

###### Попробуйте следующее: ваш код обновлен с возможными исправлениями ######

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

Я уверен, что если вы используете этот недавно измененный код, он решит вашу проблему. Я должен был заметить это раньше.

Вот остальная часть моего первоначального ответа .

Я сам боролся с этим. На самом деле мне потребовалось несколько месяцев, чтобы иметь некоторые HC-05, прежде чем я окончательно выкопал ответ. Прошло некоторое время с тех пор, как я работал с ним, поэтому сделаю все возможное, чтобы объяснить, что делать.

Ардуино Нано

Кроме того, я использую Arduino Nano для программирования HC-05.

Эта настройка позволяет вам изменить HC-05

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

Краткий снимок, но достаточно для создания простой схемы

У меня также есть грубый моментальный снимок * схемы, которую я использовал (в то время как раз для документирования ее для моей собственной памяти), но я думаю, что мы сможем вам помочь. и я знаю, что все эти провода переполнены, и похоже, что они находятся в одних и тех же отверстиях, но на самом деле они правильно подключены. Я был так взволнован, что, наконец, работал, я быстро отрезал картинку.

* см. изображение ниже

Вот код, который я использую:

У вашей HC-05 есть кнопка?

Хорошо, так что первое, что нужно проверить, чтобы проверить, есть ли у вашего HC-05 маленькая кнопка на нем? Если это нужно, то это должно быть проведено, когда вы подаете питание на схему. HC-05 будет мигать, а затем он будет в режиме COMMAND, и вы можете отпустить.

Если нет кнопки

Вы можете видеть, что у меня есть кнопка. Вот почему первые две строки метода setup () закомментированы. Мне не нужен D9, чтобы идти высоко (он не подключен к контакту), потому что у меня есть кнопка. Если у вас есть кнопка (скорее всего, это так), тогда вам даже не придется об этом беспокоиться.

Оглядываясь на ваш вопрос

Теперь, когда я оглядываюсь на ваш пример кода, может случиться так, что вы не знаете, что вам нужно удерживать эту кнопку при включении питания. Или вы не знаете, что вам нужно подключить этот провод, чтобы поддерживать HC-05 в командном режиме.

Штыри для TX /RX

Это, вероятно, проблема, с которой вы сталкиваетесь, потому что все остальное выглядит одинаково — за исключением того, что вы используете 15 и 14 для TX /RX. Я использую D10 и D11 для своего, и я помню что-то об этих контактах в глубине моего разума, поэтому, если вы все еще не работаете, попробуйте переключиться на них и попробуйте использовать мой код.

Я помню, как в первый раз я получил эту работу, и я танцевал по комнате. Удачи, и я надеюсь, вы скоро полетите. 🙂

Connecting the Smartphone to the HC-05 Bluetooth Module and the Arduino

Now we are ready to connect the smartphone to the Bluetooth module and the Arduino. What we need to do here is to activate the Bluetooth and the smartphone will find the HC-05 Bluetooth module.

Then we need to pair the devices and the default password of the HC-05 module is 1234. After we have paired the devices we need an application for controlling the Arduino. There are many application in the Play Store for this purpose which will work with the Arduino code that we wrote. However, I made my own custom application for this tutorial using the MIT App Inventor online application. This is a great and easy to use application for building Android application and in my next tutorial you can find a detailed step by step guide how to build your own custom Android application for your Arduino Project.

You can download the app that I made for this example here:

Arduino Bluetooth Tutorial Example Android App

1 file(s) 1.38 MB

With the connect button we will connect the smartphone to the Bluetooth module and the status text below the button will tell us whether we have successfully connected. Using the “Turn ON” and “Turn OFF” buttons we can turn on and off the LED. The text above the buttons is the one that the Arduino is sending back to the smartphone when a particular button is pressed.

Заключение

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

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

Оригинал статьи на сайте ArduinoMaster.Ru.