Найти в Дзене
ArcadePub

Bluetooth модуль HM-10 (ZS-040). Урок 14. Ардуино

Оглавление
Bluetooth модуль HM-10 (ZS-040)
Bluetooth модуль HM-10 (ZS-040)

Привет! Как известно, все становится лучше, если добавить bluetooth. Поэтому пришло время добавить к нашим проектам bluetooth модуль HM-10. И попробовать управлять схемой на Ардуино через телефон.

Содержание

  • Для того, чтобы выполнить этот урок нам понадобиться
  • Программа и схема
  • Полный текст программы
  • Serial Bluetooth Terminal
  • Заключение

В этом уроке мы будем модифицировать схему с rgb светодиодом. Поэтому, посмотрите урок с ней, если уже забыли или пропустили его.

Processing часть 2. Урок 13. Ардуино

Для того, чтобы выполнить этот урок нам понадобиться

  • Ардуино UNO
  • Макетная плата
  • Перемычки
  • 3 Резистора номиналом 220 Ом
  • 3 Резистора номиналом 1 кОм
  • RGB Светодиод
  • Bluetooth модуль HM-10
  • Кабель USB

В прошлом уроке мы настроили схему на Ардуино, которая управляется из последовательного порта. Мы записывали в последовательный порт данные через программу на Processing и плата Ардуино управляла цветом на rgb светодиоде.

Теперь заменим Processing программу на bluetooth модуль и программу в телефоне.

Программа и схема

Соберем схему для управления rgb светодиода и добавим в схему bluetooth модуль.

Принципиальная схема подключения bluetooth модуля
Принципиальная схема подключения bluetooth модуля

Контакт TXD подключаем напрямую к контакту 8 Ардуино. А RXD подключаем к 9 контакту через делитель напряжения. Используем сопротивление 1 кОм с одной стороны и 2 кОм с другой.

После подключения питания к Ардуино, лампочка на модуле начнет мигать. Значит питание к нему подключено, и, первоначально, все работает правильно.

После этого уже можно попробовать найти его среди других Bluetooth устройств. С помощью компьютера или телефона. В моем случае, он определяется как BT05

Поиск bluetooth устройств в windows 10
Поиск bluetooth устройств в windows 10

Но сначала напишем программу для Ардуино и загрузим на плату.

В программе используем библиотеку для bluetooth. И создадим все переменные, которые понадобятся в будущем.

#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9);// Контакты bluetooth модуля. 8 для TXD, 9 для RXD

char c = ""; // Переменная для считывания символа из последовательного порта
String str = ""; // Переменная для формирования целой строки
int rgb[] = {3, 5, 6}; // Массив контактов rgb светодиода
int light = 0; // Переменная для отправки на контакты светодиода
int i = 0; // Счетчик цикла для переключения цветов светодиода

В функции setup() настроим основные параметры программы. Включим последовательные порты на ардуино и на bluetooth.

Сразу отправим тестовые сообщения в оба монитора.

void setup() {
BT.begin(9600); // Инициализация bluetooth последовательного порта
Serial.begin(9600); // Инициализация arduino последовательного порта
Serial.println("Test for Arduino");
BT.println("Test for Phone");

pinMode(rgb[0], OUTPUT);
pinMode(rgb[1], OUTPUT);
pinMode(rgb[2], OUTPUT);
}

Самое интересное будет в цикле loop(). Будем считывать информацию с последовательного порта bluetooth. Считывается только один символ. Поэтому нужно подумать, как считать всю строку и обработать уже ее. Для этого найдем символ перевода строки ‘\n’ . Все, что было до этого символа соберем в одну строку.

Кроме того, мы собираем только цифры, поэтому всю строку можно представить как число. Ограничим это число функцией constrain(), чтобы можно было написать в программе что угодно, но Ардуино записал на пин корректное значение.

С помощью счетчика цикла i будем переключать контакты rgb светодиода и сбрасывать счетчик, когда он будет равен 3.

Не забудем сбросить переменную для формирования строки перед следующим вводом данных.

void loop(){

if (BT.available()){ // На порту bluetooth есть что считать
delay(50); // Задержка между считыванием символов
c = BT.read(); // Считываем код символа в переменную типа int
if (isDigit(c)) { // Если считана цифра
str += (char)c; // символ присоединяем к строке
}

if (c == '\n') { // Если обнаружен символ конца строки
if( i == 3 ){i = 0;} // Сбрасываем счетчик на 0
light = constrain(str.toInt(), 0, 255 );// Ограничиваем значени
Serial.println(light); // Выводим строку в монитор порта
analogWrite(rgb[i], light); // Записываем на контакт светодиода
i++; // Переходим к следующему цвету
str = ""; // Очищаем строку
}
}

}

Полный текст программы

#include <SoftwareSerial.h>
SoftwareSerial BT(8, 9); // Контакты подключения bluetooth модуля. 8 для TXD, 9 для RXD

char c = ""; // Переменная для считывания символа из последовательного порта
String str = ""; // Переменная для формирования целой строки
int rgb[] = {3, 5, 6}; // Массив контактов rgb светодиода
int light = 0; // Переменная для отправки на контакты светодиода
int i = 0; // Счетчик цикла для переключения цветов светодиода

void setup() {
BT.begin(9600); // Инициализация bluetooth последовательного порта
Serial.begin(9600); // Инициализация arduino последовательного порта
Serial.println("Test for Arduino");
BT.println("Test for Phone");

pinMode(rgb[0], OUTPUT);
pinMode(rgb[1], OUTPUT);
pinMode(rgb[2], OUTPUT);
}

void loop(){

if (BT.available()){ // На последовательном порту bluetooth есть что считать
delay(50); // Задержка между считыванием символов
c = BT.read(); // Считываем код символа в переменную типа int
if (isDigit(c)) { // Если считана цифра
str += (char)c; // Конвертируем байт в символ и присоединяем к строке
}

if (c == '\n') { // Если обнаружен символ конца строки

if( i == 3 ){i = 0;} // сбрасываем счетчик на 0
light = constrain(str.toInt(), 0, 255 );// Ограничиваем значение для вывода на контакт
Serial.println(light); // Выводим строку в монитор порта как цифру
analogWrite(rgb[i], light); // Записываем значение на контакт светодиода
i++; // Переходим к следующему цвету
str = ""; // Очищаем строку перед следующим вводом
}
}

}

Serial Bluetooth Terminal

Теперь нам понадобиться клиент для Android, который сможет подключиться к последовательному порту через bluetooth. Найдем такое приложение в Play Market.

Найдем наш модуль в меню devices. И попробуем к нему подключиться.

Попробуем подключиться, и если все правильно, то увидим сообщение Connected.

И наконец, отправим на наш модуль команды. На которые должна среагировать программа в Ардуино и изменить цвет rgb светодиода.

Каждая введенная цифра отвечает за свой цвет на rgb светодиоде. Как вы помните, цвета переключаются в цикле. Если на два цвета отправить 0, а на последний 250, то гореть должен только один цвет.

Цвет изменяется по bluetooth
Цвет изменяется по bluetooth

Заключение

Мы научились использовать Bluetooth модуль HM-10. И подключили его к Ардуино. Это дает возможности управлять схемой на Ардуино с помощью программы в телефоне или компьютере без подключенных проводов. Естественно, возможности использовать bluetooth почти не ограничены. Постараемся использовать его чаще в наших проектах.

Спасибо, что дочитали статью до конца.

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

Посмотрите больше уроков и проектов на сайте arcadepub.ru

И подписывайтесь на соц. сети.

Спасибо за внимание, скоро увидимся.