Всем привет! Сегодня я покажу вам как подключить модули HC-05 и HC-06 к Arduino и управлять четырьмя светодиодами со смартфона.
В этом уроке использованы:
1. Плата Arduino Uno с USB кабелем для подключения к компьютеру
2. Компьютер с установленной Arduino IDE и драйверами для плат
3. Четыре светодиода и четыре резистора на 220Ом
4. Смартфон
5. Соединительные провода типа папа-папа 8 штук, типа папа-мама 4 штуки
6. Bluetooth модуль HC-05 или HC-06
Кратко о использовании Bluetooth в проектах Arduino
В проектах Arduino иногда требуется дистанционное управление. Довольно простым способом является передача данных по Bluetooth со смартфона. Для связи с Arduino по Bluetooth используется UART-интерфейс - контакты TX и RX платы. Серия модулей HC является довольно популярной. Одни из самых часто используемых - это модули HC-05 и HC-06.
Подключение Bluetooth модулей к Arduino
Давайте рассмотрим подключение модулей HC-05 и HC-06 к плате Arduino.
Контакты у этих модулей одинаковые, поэтому и схема подключения их будет одинаковой.
VCC(HC-05 или HC-06) - 5V(плата Arduino)
Gnd(HC-05 или HC-06) - Gnd(плата Arduino)
TX(HC-05 или HC-06) - RX(плата Arduino)
RX(HC-05 или HC-06) - TX(плата Arduino)
Обратите внимание! RX модуля нужно подключать к TX платы, TX модуля к RX платы.
Отличия HC-05 от HC-06
HC-05 отличается от HC-06 в прошивке, поэтому AT-команд у модуля HC-05 больше. Также HC-05 может играть роли мастера и подчинённого, а HС-06 может играть только роль подчинённого. Скорость обмена данными в режиме AT-команд у HC-05 38400 бод, у HC-06 - 9600 бод. HC05 также стоит немного дороже, чем HC-06, но имеет большее количество возможностей.
Программа для управления Arduino со смартфона
Чтобы управлять Arduino со смартфона нужно сначала установить программу Bluetooth RC Controller(Arduino Bluetooth RC Car). Скачать её можно из Play Маркета на телефоне.
Скетч для получения кодов кнопок со смартфона
И так, сначала зальём в Arduino вот такой скетч. Внимание! Перед тем как прошивать плату, нужно отключить контакты TX и RX модуля от платы, иначе программа не зальётся в плату, и компилятор выдаст ошибку.
char Command = 'S';
void setup() {
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0) {
Command = Serial.read();
Serial.println(Command);
}
}
Теперь откроем программу Bluetooth RC Controller. Нажимаем на шестерёнку, в появившимся меню нажимаем на "Connect to Car". Появится вот такое меню подключений:
В этом меню нажимаем на кнопку "Scan for devices". Под надписью "Other Available Devices" появятся доступные для подключения модули, как на фото ниже:
Их появляется много, нужно нажать на 2 по списку. Откроется вот такое меню ввода пароля:
Пароли у HC-06 и HC-05 по умолчанию - 1234. Вводим пароль и нажимаем OK.
Теперь кружок в левом верхнем углу программы станет зелёным, а в правом верхнем углу появится имя модуля, к которому вы подключились.
Теперь в Arduino IDE открываем Монитор порта и нажимаем на любые кнопки в программе Bluetooth RC Controller.
Скетч, который мы загрузили ранее в плату, считывает посылаемые со смартфона приложением Bluetooth RC Controller коды кнопок и выводит их в Serial-порт. Это можно увидеть на фото ниже:
Скетч и схема подключения
Сначала подключим светодиоды к нашей плате. Короткие ноги светодиодов подключаем к Gnd платы, длинные ноги через резисторы на 220Ом подключаем к 2, 3, 4 и 5 пинам платы. Bluetooth модуль подключаем так, как сказано выше.
Архив проекта можно скачать отсюда.
А теперь давайте сделаем скетч, который в соответствии с определённым кодом кнопки будет зажигать один из четырёх светодиодов.
Для тех, кто забыл. Перед тем как прошивать плату, нужно отключить контакты TX и RX модуля от платы, иначе программа не зальётся в плату и компилятор выдаст ошибку.
int Diod = 2;
int Diod2 = 3;
int Diod3 = 4;
int Diod4 = 5;
char Command = 'S';
void setup() {
Serial.begin(9600);
pinMode(Diod, OUTPUT);
pinMode(Diod2, OUTPUT);
pinMode(Diod3, OUTPUT);
pinMode(Diod4, OUTPUT);
}
void loop() {
if(Serial.available() > 0) {
Command = Serial.read();
Serial.println(Command);
switch(Command) {
case 'S':
digitalWrite(Diod, LOW);
digitalWrite(Diod2, LOW);
digitalWrite(Diod3, LOW);
digitalWrite(Diod4, LOW);
break;
case 'F':
digitalWrite(Diod, HIGH);
digitalWrite(Diod2, LOW);
digitalWrite(Diod3, LOW);
digitalWrite(Diod4, LOW);
break;
case 'B':
digitalWrite(Diod, LOW);
digitalWrite(Diod2, HIGH);
digitalWrite(Diod3, LOW);
digitalWrite(Diod4, LOW);
break;
case 'L':
digitalWrite(Diod, LOW);
digitalWrite(Diod2, LOW);
digitalWrite(Diod3, HIGH);
digitalWrite(Diod4, LOW);
break;
case 'R':
digitalWrite(Diod, LOW);
digitalWrite(Diod2, LOW);
digitalWrite(Diod3, LOW);
digitalWrite(Diod4, HIGH);
break;
}
}
}
Теперь при нажатии на стрелку вперёд будет гореть первый светодиод, при нажатии на стрелку вниз - второй светодиод, на стрелку влево - третий светодиод, на стрелку вправо - четвёртый светодиод. Пожалуйста, оцените статью, для меня это очень важно. На этот раз всё, всем спасибо за внимание!