В настоящее время Bluetooth является одной из самых популярных технологий беспроводной связи, применяющейся для передачи данных на короткие расстояния. Она находит широкое применение в современных смартфонах, планшетах, беспроводных наушниках и гарнитурах и т.п.
Технология Bluetooth работает на частоте 2.4 ГГц и имеет радиус действия около 10 метров. Ее достоинствами являются низкая стоимость, простота использования и низкое энергопотребление.
В данной статье мы рассмотрим подключение Bluetooth модуля HC-05 к плате STM32F103C8, также известной под названием STM32 Blue Pill ("синяя таблетка"). С помощью связи по технологии Bluetooth мы будем с мобильного телефона, работающего на операционной системе Android, управлять включением/выключением светодиода, подключенного к плате STM32 Blue Pill.
Ранее на нашем сайте мы рассматривали подключение данного модуля (или его аналога HC-06) к следующим микроконтроллерам (платам):
Также на нашем сайте вы можете посмотреть все проекты с использованием Bluetooth модуля HC-05.
Необходимые компоненты
Аппаратное обеспечение
- Плата разработки STM32F103C8 (STM32 Blue Pill) (купить на AliExpress).
- Bluetooth модуль HC-05 (купить на AliExpress).
- Светодиод (купить на AliExpress).
- Смартфон на Android.
- Макетная плата.
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Программное обеспечение
Bluetooth Terminal (приложение Android).
Bluetooth модуль HC-05
Вешний вид обеих сторон Bluetooth модуля HC-05 показан на следующем рисунке.
HC-05 является Bluetooth модулем с последовательной связью. Его можно настроить с помощью AT команд. Он может работать в различных конфигурациях: Master (ведущий), Slave (ведомый), Loop back). В нашем проекте он будет использоваться в качестве ведомого устройства.
Технические характеристики Bluetooth модуля HC-05:
- типовая чувствительность: -80dBm;
- скорость передачи данных: 9600 бод, 8 бит данных, 1 стоповый бит, нет бита четности;
- pin код для автоматического соединения: “1234” или “0000”;
- 6 контактов;
- контакты Vcc и Gnd используются для подачи питания на модуль;
- контакты Tx и Rx используются для взаимодействия с микроконтроллером;
- контакт Enable для активации модуля, когда на нем low – модуль деактивирован (отключен);
- контакт State работает как индикатор состояния модуля. Когда модуль не соединен с другим Bluetooth устройством, светодиод мигает постоянно. Когда он соединен с другим Bluetooth модулем – светодиод мигает с постоянной задержкой 2 секунды.
Режимы индикации светодиода модуля:
- светодиод красного цвета на модуле показывает состояние Bluetooth модуля HC-05;
- когда модуль не подключен ни к какому устройству светодиод мигает непрерывно;
- когда модуль подключен к какому либо устройству светодиод мигает с некоторой задержкой.
Порты последовательной связи (USART Ports) в STM32 Blue Pill
Распиновка платы STM32 Blue Pill (STM32F103C8) показана на следующем рисунке.
Порты последовательной связи (USART Ports) в плате STM32 Blue Pill обозначены на представленном рисунке синим цветом. Всего в плате STM32 Blue Pill доступны три канала (порта) последовательной связи – они находятся на контактах PA9-TX1, PA10-RX1, PA2-TX2, PA3-RX2, PB10-TX3, PB11- RX3.
Схема проекта
Схема подключения Bluetooth модуля HC-05 к плате STM32 Blue Pill (STM32F103C8) представлена на следующем рисунке.
В схеме сделаны следующие соединения между платой STM32F103C8 и Bluetooth модулем HC-05:
- контакт TX (PA9) платы STM32F103C8 подключен к контакту RX Bluetooth модуля;
- контакт RX (PA10) платы STM32F103C8 подключен к контакту TX Bluetooth модуля;
- контакт VCC (+5V) Bluetooth модуля подключен к контакту 5V платы STM32F103C8;
- контакт GND Bluetooth модуля подключен к контакту GND платы STM32F103C8.
Положительный вывод светодиода в представленной схеме подключен через токоограничивающий резистор к контакту PA0 платы STM32F103C8, другой вывод светодиода подключен к контакту GND платы.
Объяснение программы для платы STM32
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Подключение Bluetooth модуля HC-05 к плате STM32 Blue Pill во многом аналогично его подключению к плате Arduino. Программировать плату STM32 мы будем с помощью Arduino IDE.
Как уже указывалось ранее, мы с помощью приложения Bluetooth Terminal, запущенном на смартфоне с Android, будем управлять включением/выключением светодиода, подключенного к плате STM32 Blue Pill.
Примечание: контакты RX & TX должны быть отключены во время загрузки кода в плату STM32F103C8.
Поскольку в плате STM32F103C8 у нас три порта последовательной связи (USART), то в программе необходимо указать какой из них мы будем использовать.
Также укажем контакт, к которому в нашей схеме подключен светодиод.
1 |
const int pinout = PA0; |
Далее укажем переменную, в которую мы будем сохранять данные, поступающие по последовательному порту.
1 |
char inputdata = 0; |
Затем в функции setup() мы инициализируем последовательную связь со скоростью 9600 бод между платой STM32 Blue Pill и Bluetooth модулем.
1 |
Serial1.begin(9600); |
Здесь мы использовали название порта последовательной связи Serial1, поскольку модуль HC-05 у нас подключен к контактам TX1 и RX1 платы STM32. Аналогичным образом можно использовать названия Serial2 или Serial3 если подключить модуль HC-05 к этим портам.
Затем мы передадим приветственное сообщение в виде последовательных данных через порт serial1, поскольку к нему подключен Bluetooth модуль HC05. Далее модуль передает эти данные приложению Bluetooth Terminal на смартфоне. Таким образом, для передачи приветственного сообщения используем следующие строки кода:
1 2 |
Serial1.print("CIRCUIT DIGEST\n"); Serial1.print("BLUETOOTH WITH STM32\n"); |
После этого установим режим работы контакта PA0 на вывод данных поскольку к нему подключен светодиод.
1 |
pinMode(pinout, OUTPUT); |
Далее в функции void loop() мы будем считывать данные из последовательного порта и в зависимости от их значений включать/выключать светодиод.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void loop() { If (Serial1.available() > 0) { inputdata = Serial1.read(); if(inputdata == '1') { digitalWrite(pinout, HIGH); Serial1.print("LED ON\n"); } else if(inputdata == '0') { digitalWrite(pinout, LOW); Serial1.print("LED OFF\n"); } } } |
Подключение Bluetooth модуля к приложению на смартфоне
Для этого выполните следующую последовательность шагов.
Шаг 1. После загрузки кода программы в плату STM32 (во время ее загрузки не забудьте отключить контакты RX и TX) включите Bluetooth на своем смартфоне.
Шаг 2. В доступных для подключения устройствах выберите HC-05 и в качестве пароля введите 1234.
Шаг 3. После создания соединения между модулем и смартфоном откройте приложение Bluetooth Terminal, в нем выберите пункт connect a device и затем выберите HC-05 как показано на следующем рисунке.
Шаг 4. После того как приложение Bluetooth Terminal соединится с вашим модулем HC-05, вводите в терминале приложения 1 или 0 для того чтобы включить или выключить светодиод. В ответ на эти команды вы будете получать сообщения, свидетельствующие о включении/выключении светодиода.
Исходный код программы (скетча)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//PROGRAM FOR BLUETOOTH INTERFACE WITH STM32F103C8 //CIRCUIT DIGEST //Pramoth Thangavel const int pinout = PA0; // declare pinout with int data type and pin value char inputdata = 0; //переменная для хранения данных, поступающих по последовательному порту void setup() { Serial1.begin(9600); //устанавливаем последовательную связь с модулем Serial1.print("CIRCUIT DIGEST\n"); Serial1.print("BLUETOOTH WITH STM32\n"); pinMode(pinout, OUTPUT); // устанавливаем режим работы контакта PA0 на вывод данных } void loop() { if(Serial1.available() > 0) // Send data only when you receive data: { inputdata = Serial1.read(); //считываем поступающие данные и сохраняем их в переменной if(inputdata == '1') { digitalWrite(pinout, HIGH); Serial1.print("LED ON\n"); } else if(inputdata == '0') { digitalWrite(pinout, LOW); Serial1.print("LED OFF\n"); } } } |