Привет! В недавнем уроке мы попробовали собрать схему с bluetooth и управляли rgb светодиодом через телефон. Сегодня немного изменим схему и получим беспроводной чат между телефоном и устройством на Ардуино.
Содержание
Мы будем использовать материалы из предыдущего урока, так что посмотрите его если пропустили или уже забыли.
Для того, чтобы выполнить этот урок нам понадобиться
- Ардуино UNO
- Макетная плата
- Перемычки
- 3 Резистора номиналом 1 кОм
- Bluetooth модуль HM-10
- Кабель USB
Программа и схема
Соберем простую схему для подключения bluetooth модуля. Светодиоды или другие компоненты нам будут не нужны. Мы собираемся просто получить сообщение в монитор последовательного порта с помощью bluetooth. И отправлять сообщения обратно на телефон.
Контакт TXD опять подключим к контакту 8. А RXD подключаем к 9 контакту через делитель напряжения. 1 кОм с одной стороны и 2 кОм с другой.
Если все подключено правильно, то после подключения питания, светодиод на модуле будет мигать. И можно попробовать найти его среди bluetooth устройств.
Теперь напишем программу для Ардуино. Точнее, используем пример программы Software serial example.
Откроем ее из меню File > Examples > SoftwareSerial
В первую очередь подключим библиотеку и создадим экземпляр объекта для работы с последовательным портом bluetooth.
Не забудьте исправить номера портов, на которые мы подключили RX и TX контакты модуля.
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
В функции setup() настроим передачу данных в последовательные порты Ардуино и bluetooth. И отправим приветственные сообщения на телефон и в монитор последовательного порта Ардуино.
Также, не забудьте исправить скорость передачи данных на 9600 бод.
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
А в функции loop() будем отслеживать состояние буфера последовательного порта, и если в нем есть информация для вывода, печатать ее в монитор порта.
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
Прошиваем программу в Ардуино и переходим к настройке программы в телефоне.
Полный текст программы
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.println("Hello, world?");
}
void loop() { // run over and over
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
Serial Bluetooth Terminal
Опять используем приложение Serial Bluetooth Terminal. Установим его в телефон и найдем наш модуль в устройствах bluetooth.
Подключаемся к модулю, и видим сообщение Connected.
Отправим на модуль сообщение, прочитаем его в мониторе последовательного порта в IDE. И, наоборот, отправим сообщение из монитора последовательного порта в IDE и прочитаем его в телефоне.
Заключение
Мы использовали пример скетча для передачи и приема сообщений по bluetooth. Соединили наше устройство с телефоном по беспроводной связи.