Использование Bluetooth в модуле ESP32


Bluetooth модули HC-05 и HC-06 просты в использовании и находят достаточно широкое применение в радиоэлектронных проектах. Однако к их недостаткам можно отнести сравнительно большое энергопотребление и использование уже сильно устаревшей версии Bluetooth V2.0. На их фоне модули ESP32, обладающие встроенными Wi-Fi и Bluetooth, контактами для АЦП и ЦАП, поддержкой аудио устройств, спящего режима и многими другими возможностями, смотрятся весьма неплохо для конструирования различных проектов тематики интернета вещей (Internet of Things, IoT).

Внешний вид проекта использования Bluetooth в модуле ESP32

В данной статье мы рассмотрим использование классического Bluetooth в модуле ESP32 – мы будем управлять включением/выключением встроенного светодиода модуля с помощью смартфона. В дальнейших статьях на нашем сайте мы также рассмотрим использование в модуле ESP32 более "продвинутой" версии Bluetooth – технологии BLE (Bluetooth Low Energy – Bluetooth с низким энергопотреблением).

Принципы использования классического Bluetooth и BLE в ESP32

Технология BLE (Bluetooth Low Energy), как следует из ее названия, потребляет значительно меньше энергии чем классический (classic) Bluetooth. Это достигается при помощи передачи данных по требованию с заранее определенными периодическими обновлениями. Но в отличие от классического Bluetooth технология BLE не используется для передачи файлов или музыки. Наверное, вы были неоднократно удивлены тем, что когда вы подключаете к вашему смартфону какой-нибудь фитнес браслет или умные часы, то вы в своем смартфоне можете посмотреть и уровень заряда батареи подключенного устройства – этот функционал становится доступен благодаря использованию технологии BLE. Данная технология работает вместе с версией Bluetooth V4.0 и может использоваться в серверных или клиентских устройствах, что делает ее чрезвычайно удобной для применения в умных часах, фитнес браслетах и т.д.

Классический Bluetooth, в то же время, достаточно удобен для передачи файлов и других данных. Практически все BLE устройства поддерживают и функционал классического Bluetooth.

Символ Bluetooth

Bluetooth, который используется в модулях подобных HC-05, является версией классического Bluetooth и называется Bluetooth SSP (Serial Port Protocol – протокол последовательного порта), что означает то, что в данном случае Bluetooth использует стандартный последовательный протокол.

В данной статье мы будем использовать функционал Serial Bluetooth (последовательного) в модуле ESP32 для его соединения со смартфоном, на котором запущено приложение Bluetooth Terminal. Из данного приложения мы будем передавать команды, с помощью которых мы будем включать/выключать встроенный светодиод модуля ESP32.

Подготовка Arduino IDE для работы с модулем ESP32

Имейте ввиду что Arduino IDE по умолчанию не поддерживает модуль ESP32 – вам необходимо скачать и установить библиотеку для его использования с помощью менеджера библиотек. Более подробно про все эти процессы вы можете прочитать в статье про программирование модуля ESP32 с помощью Arduino IDE.

Программирование модуля ESP32 с помощью Arduino IDE

Объяснение программы для модуля ESP32 для использования Bluetooth

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты. Если вы ранее работали с Bluetooth модулями HC-05 или HC-06, то в программах для данных модулей вы найдете много общего с программой, которую мы рассмотрим в данном проекте.

Основная идея нашей программы состоит в том, что соединение Serial Bluetooth в модуле ESP32 "слушает" данные, поступающие от подключенных устройств (в нашем случае смартфона). Если мы будем принимать ‘1’, то мы будем включать встроенный светодиод модуля, а если мы будем принимать ‘0’, то мы будем выключать данный светодиод.

Начнем нашу программу мы с подключения библиотеки BluetoothSerial, которая позволяет Bluetooth модулю ESP32 работать в качестве Bluetoth SSP (Bluetoth с протоколом последовательного порта).

Затем создадим объект ESP_BT для работы с функционалом технологии Bluetooth.

Далее, внутри функции setup() мы инициализируем Bluetooth соединение и последовательную связь со скоростью 9600 бод. Bluetooth соединению (сигналу) мы дали имя “ESP32_LED_Control” и по этому имени мы его сможем найти в смартфоне когда включим в нем Bluetooth. Также зададим режим работы для контакта, к которому подключен встроенный светодиод модуля, на вывод данных.

Внутри бесконечного цикла void loop мы будем проверять поступают ли какие-либо данные по соединению Bluetooth. Если поступают, то мы будем сохранять их в переменной incoming. Также мы будем выводить значение этой переменной в окно монитора последовательной связи для тестирования работы проекта.

Далее мы можем сравнить значение переменной incoming с заранее определенными данными и на основе результатов этого сравнения выполнить определенные действия. Но имейте ввиду, что значение, передаваемое по Bluetooth – оно символьного типа (char), а в нашей программе для модуля ESP32 мы будем считывать десятичный код этого символа в формате ASCII. К примеру, для символа ‘0’ его десятичный код равен 48, а десятичный код символа ‘1’ равен 49.

То есть значение переменной incoming в программе мы будем сравнивать со значениями 48 и 49 чтобы проверить передавался 0 или 1. Если передавалась 1, то мы будем включать светодиод, а если 0 – мы будем выключать светодиод.

Тестирование использования Serial Bluetooth в ESP32

Подключите ваш модуль ESP32 к компьютеру, запустите Arduino IDE и в ней укажите COM порт компьютера, к которому подключен модуль ESP32 – его можно узнать в диспетчере устройств Windows. Загрузите программу проекта в модуль ESP32. Откройте монитор последовательного порта (Serial monitor) в Arduino IDE и включите в настройках вашего смартфона использование Bluetooth. В списке доступных для подключения устройств вы должны обнаружить устройство с именем ESP32_LED_Control – подключитесь к нему.

Подключение смартфона к нашему модулю ESP32 по Bluetooth

После этого запустите на своем смартфоне приложение Bluetooth terminal (его предварительно необходимо скачать и установить с Google App store). Соедините это приложение с нашим подключенным по Bluetooth устройством, напечатайте в его терминале 1 и нажмите send (передать).

Передача команд модулю ESP32 из приложения Bluetooth terminal

Модуль ESP32 должен принять этот символ и включить свой встроенный светодиод. Также он передаст смартфону сообщение, подтверждающее то, что светодиод включен (см. рисунок выше). Также результаты работы программы вы можете наблюдать в окне монитора последовательной связи – там будут показываться десятичные коды символов (48 или 49), которые мы принимаем.

Результаты работы программы в окне монитора последовательной связи

Тестирование работы проекта

При передаче 0 с приложения на смартфоне встроенный светодиод модуля будет выключаться. Более подробно работу программы вы можете посмотреть на видео, приведенном в конце статьи.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(2 голосов, оценка: 5,00 из 5)
Загрузка...
8 841 просмотров

Комментарии

Использование Bluetooth в модуле ESP32 — 4 комментария

  1. Здравствуйте!
    Есть ли готовый проект (или близкий), который реализует эквивалент HC-05 на ESP32 (BLE)? Мне надо прозрачную трансляцию последовательного порта UART в обе стороны через BT на Андроид-девайс (бортовой компьютер) для передачи данных GNSS. Скорость до 115200.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *