Связываем две Arduino между собой с помощью блютуз модулей

1,7K прочитали

Всем привет! Сегодня я покажу вам как связать две Arduino между собой с помощью блютуз модулей.

Для этого понадобятся:

1. Два модуля HC-05(или один HC-05 и один HC-06)

2. Две платы Arduino(в моём случае это две Arduino Uno)

3. Соединительные провода: в моём случае 8 проводов типа папа-мама, 6 проводов типа папа-папа

4. Две кнопки

5. Светодиод и резистор на 220Ом

6. Два USB кабеля

7. Компьютер с установленной программой Arduino IDE и драйверами для плат

И так, начнём подготовку наших модулей к прошивке. Чтобы блютуз модули могли связаться между собой, нужно прошить их с помощью AT-команд. Один модуль будет играть роль мастера(пульт управления), а другой - подчинённого(например, робот). Модуль HC-05 можно использовать и в роли мастера, и в роли подчинённого. А модуль HC-06 может играть только роль подчинённого.

Прошить модули можно с помощью USB-переходника.

Переходник USB UART
Переходник USB UART

Но т.к. у меня его нет, я буду использовать в качестве него плату Arduino. Чтобы проверить, может ли плата играть роль такого проводника, нужно:

1. Залить в плату пустой скетч и замкнуть между собой контакты TX и RX

2. Открыть монитор порта, ввести любой символ и нажать Enter. Тот символ, что мы отослали, плата должна вернуть обратно в монитор порта. Если всё именно так, то плату можно использовать в роли переходника.

И так, преступим к прошивке наших модулей. Модуль HС-05 у меня прошивался через Arduino IDE, а HC-06 не хотел. Поэтому чтобы посылать модулю HC-06 AT-команды я буду использовать программу Termite.

Подключаем сначала мастер-модуль HC-05.

Подключаем вот так:

5V(плата Arduino) - VCC(HC-05)

Gnd(плата Arduino) - Gnd(HC-05)

TX(плата Arduino) - TX(HC-05)

RX(плата Arduino) - RX(HC-05)

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

Кнопка на модуле HC-05
Кнопка на модуле HC-05

Теперь подаём питание 3.3V на контакт EN. Модуль готов к прошивке.

Открываем Arduino IDE. Выбираем порт к которому подключена наша плата, устанавливаем скорость обмена данными 38400 бод(скорость обмена данными модуля HC05 в режиме AT-команд = 38400 бод), выбираем режим NL&CR, вводим команду "AT"(без кавычек) и нажимаем Enter. Если вы всё правильно сделали модуль должен ответить OK.

Вводим такие команды:

AT+ROLE=1 //устанавливаем роль мастера

AT+UART=38400,0,0 //устанавливаем скорость обмена данными 38400

Модуль на все команды должен ответить OK как на фото ниже:

Ответы модуля HC-05
Ответы модуля HC-05

Теперь перейдём к прошивке модуля HC-06. Подключаем его к плате так:

5V(плата Arduino) - VCC(HC-06)

Gnd(плата Arduino) - Gnd(HC-06)

TX(плата Arduino) - TX(HC-06)

RX(плата Arduino) - RX(HC-06)

На некоторых сайтах я читал, что для того чтобы прошить модуль HC-06 нужно подать 3.3V на контакт Key, но у меня всё работало и без этого.

Контакт Key на модуле HC-06
Контакт Key на модуле HC-06

Открываем Termite и устанавливаем настройки как на фото ниже:

Настройки программы Termite
Настройки программы Termite

После этого вводим команду "AT"(без кавычек) и нажимаем Enter. Модуль должен ответить OK. Если всё именно так, можно вводить следующую команду:

AT+BAUD6 //устанавливаем скорость обмена данными 38400

Модуль должен ответить как на фото ниже:

Ответы модуля HC-06 выделены зелёным
Ответы модуля HC-06 выделены зелёным

Примечание: у меня стоит скорость 38400 бод потому что я уже прошивал модуль раньше и установил ему скорость обмена 38400 бод.

О том, какие ещё существуют AT-команды для модуля HС-06 можно узнать здесь.

Теперь если всё прошло успешно можно собирать пульт управления и приёмник.

Сначала соберём пульт управления. Подключаем так:

5V(плата Arduino) - VCC(HC-05)

Gnd(плата Arduino) - Gnd(HC-05)

TX(плата Arduino) - RX(HC-05)

RX(плата Arduino) - TX(HC-05)

Как подключать кнопки показано на фото ниже. Зелёные провода подключены к контактам 4 и 5, белый и серый - к контактам Gnd.

Схема подключения кнопок
Схема подключения кнопок

Теперь приступим к приёмнику. Подключаем вот так:

5V(плата Arduino) - VCC(HC-06)

Gnd(плата Arduino) - Gnd(HC-06)

TX(плата Arduino) - RX(HC-06)

RX(плата Arduino) - TX(HC-06)

Pin2(плата Arduino) подключаем через резистор на 220Ом к длинной ноге светодиода, Gnd(плата Arduino) - к короткой ноге светодиода. Фото подключения показано ниже:

Схема подключения светодиода на приёмнике: зелёный провод через резистор на 220Ом подключен к длинной ноге светодиода, белый провод - к короткой
Схема подключения светодиода на приёмнике: зелёный провод через резистор на 220Ом подключен к длинной ноге светодиода, белый провод - к короткой

Теперь подаём питание на обе платы. Если блютуз модули настроены правильно, они должны установить между собой соединение: светодиод на модуле HC-05 будет два раза мигать и на некоторое время тухнуть, светодиод на модуле HC-06 будет постоянно гореть или будет гореть также как на HC-05. Если модули установили соединение, можно продолжать.

Загружаем такой скетч в пульт:

int Pin_Button = 4;

int Pin_Button2 = 5;

boolean Button_Click = true;

boolean Button_Click2 = true;

void setup() {

pinMode(Pin_Button, INPUT_PULLUP);

pinMode(Pin_Button2, INPUT_PULLUP);

Serial.begin(38400);

}

void loop() {

if(Button_Click) {

if (!digitalRead(Pin_Button)) {

Serial.println("A");

Button_Click = false;

Button_Click2 = true;

return;

}

}

if(Button_Click2) {

if (!digitalRead(Pin_Button2)) {

Serial.println("B");

Button_Click2 = false;

Button_Click = true;

return;

}

}

}

А такой в приёмник:

int Pin_Led = 2;

char Command = 'A';

void setup() {

Serial.begin(38400);

pinMode(Pin_Led, OUTPUT);

}

void loop() {

if(Serial.available() > 0) {

Command = Serial.read();

Serial.println(Command);

switch(Command) {

case 'A':

digitalWrite(Pin_Led, LOW);

break;

case 'B':

digitalWrite(Pin_Led, HIGH);

}

}

}

Теперь чтобы зажечь светодиод нужно нажать на кнопку, подключенную к 5 пину платы, а чтобы он потух нужно нажать на кнопку, подключенную к 4 пину платы. Пожалуйста, оцените статью, для меня это очень важно. На этот раз всё, всем спасибо за внимание!