Привет! Как известно, все становится лучше, если добавить 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 модуль.
Контакт TXD подключаем напрямую к контакту 8 Ардуино. А RXD подключаем к 9 контакту через делитель напряжения. Используем сопротивление 1 кОм с одной стороны и 2 кОм с другой.
После подключения питания к Ардуино, лампочка на модуле начнет мигать. Значит питание к нему подключено, и, первоначально, все работает правильно.
После этого уже можно попробовать найти его среди других Bluetooth устройств. С помощью компьютера или телефона. В моем случае, он определяется как BT05
Но сначала напишем программу для Ардуино и загрузим на плату.
В программе используем библиотеку для 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 модуль HM-10. И подключили его к Ардуино. Это дает возможности управлять схемой на Ардуино с помощью программы в телефоне или компьютере без подключенных проводов. Естественно, возможности использовать bluetooth почти не ограничены. Постараемся использовать его чаще в наших проектах.
Спасибо, что дочитали статью до конца.
Пожалуйста, подписывайтесь на блог в яндекс дзен, ставьте лайки и пишите комментарии.
Посмотрите больше уроков и проектов на сайте arcadepub.ru
И подписывайтесь на соц. сети.
Спасибо за внимание, скоро увидимся.