- Начало работы с ESP32 Bluetooth
- Понимание Bluetooth с низким энергопотреблением (BLE) и ESP32 Classic Bluetooth
- Подготовка Arduino IDE для ESP32
- Последовательная программа Bluetooth для ESP32
- Тестирование последовательного интерфейса Bluetooth с ESP32
Модули Bluetooth, такие как HC-05 и HC-06, легко настроить и быстро использовать с Arduino IDE, но у них есть свои ограничения, такие как высокое энергопотребление, и они работают со старым Bluetooth V2.0. Кроме того, недавно я купил себе новый комплект ESP32 DEV, эти модули имеют множество функций, таких как встроенный Wi-Fi и Bluetooth, достаточное количество контактов АЦП и ЦАП, поддержка звука, поддержка SD-карты, режим глубокого сна и т. Д. все для создания проектов Интернета вещей.
И, как и любому любителю, ESP32 теперь официально поддерживается IDE Arduino. Раньше нам приходилось искать обходной путь с библиотекой Нила Колбанса, но теперь, благодаря тяжелой работе этого парня, программирование ESP32 с помощью Arduino IDE превратилось в простую прогулку. Поэтому я запустил свою Arduino IDE и просмотрел несколько примеров программ BLE, в которых я ничего не понял. После долгого серфинга и использования YouTube я понял, что есть еще много вещей, которые нужно понять, если вам нужно работать с Bluetooth Low Energy (BLE) с использованием ESP32. Я решил осветить BLE в отдельных статьях, поэтому здесь мы будем использовать классический последовательный Bluetooth ESP32 для переключения светодиода с помощью смартфона.. Если вам интересно узнать, как использовать функции BLE, ознакомьтесь с этой статьей о сервере ESP32 BLE и клиенте ESP32 BLE.
Начало работы с ESP32 Bluetooth
Первой программой, которую я хотел попробовать, была простая программа, с помощью которой я мог включать или выключать светодиод из приложения Bluetooth-терминала мобильного телефона, как в старые добрые времена HC-05. Но оказывается, что Bluetooth Low Energy (BLE) не предназначен для этого. Я также обнаружил, что в модуле ESP32 есть два типа Bluetooth: классический Bluetooth и BLE Bluetooth Low Energy. Хорошо, но почему?…. почему у нас есть два типа Bluetooth и что я должен использовать для своего проекта?
Понимание Bluetooth с низким энергопотреблением (BLE) и ESP32 Classic Bluetooth
Bluetooth Low Energy, как следует из названия, потребляет меньше энергии, чем классический Bluetooth. Это достигается путем отправки данных по мере необходимости с заранее заданными периодическими обновлениями. Но в отличие от классического Bluetooth он не используется для передачи файлов или музыки. Вы когда-нибудь задумывались, как ваш телефон автоматически определяет, что Bluetooth-устройство, которое вы только что подключили, является аудиоустройством, ноутбуком или телефоном, вы также могли заметить, что уровень заряда батареи беспроводного аудиоплеера или фитнес-браслета автоматически отображается в строке состояния твой мобильный; все это возможно с характеристиками устройств BLE. Устройство BLE работает с Bluetooth V4.0 и может работать с низким энергопотреблением как сервер или как клиент, что делаетBLE - идеальный выбор для маяков, умных часов, фитнес-браслетов и т. Д.
С другой стороны, классический Bluetooth - это простой старый добрый Bluetooth, который мы используем для передачи файлов и других данных. Почти все устройства BLE имеют связанную с ним классическую функцию Bluetooth. Bluetooth, используемый в таких модулях, как HC-05, представляет собой версию классического Bluetooth, называемого Bluetooth SSP (протокол последовательного порта), что означает, что Bluetooth следует стандартному последовательному протоколу, который упрощает отправку и получение данных без особых накладных расходов. В конце этого руководства мы узнаем, как использовать функциональность последовательного Bluetooth в ESP32.
Здесь, в этой статье, мы будем использовать функцию последовательного Bluetooth на ESP32 для сопряжения его со смартфоном и использовать любое существующее приложение Bluetooth Terminal из магазина Play для отправки команд на ESP32 и соответствующего переключения встроенного светодиода.
В следующих статьях мы рассмотрим ESP32 BLE как сервер, так и клиент. Сервер BLE обычно используется для отправки данных BLE на другие устройства Bluetooth, а клиент BLE используется для сканирования других устройств BLE, таким образом, действует как маяк.
Подготовка Arduino IDE для ESP32
Обратите внимание, что Arduino IDE по умолчанию не поддерживает плату ESP32; вам необходимо загрузить и установить их с помощью менеджера досок. Если это ваша первая программа с ESP32, следуйте этому руководству по началу работы, чтобы добавить плату ESP32 в ваш Arduino и загрузить тестовый эскиз.
Кроме того, вы можете делать больше проектов с ESP32 без использования с ним микроконтроллера.
Последовательная программа Bluetooth для ESP32
Полная программа для переключения светодиода с помощью ESP32 Bluetooth приведена в конце этой страницы. Под этим заголовком давайте разберем код на небольшие фрагменты и попытаемся понять их. Если вы уже использовали другие модули Bluetooth, такие как HC-05, то эта программа- пример ESP32 Bluetooth Classic очень похожа.
Идея программы состоит в том, чтобы инициализировать последовательное соединение Bluetooth с помощью ESP32 и прослушивать данные от сопряженных устройств. Если входящие данные - «1», мы включаем светодиод, а если «0», мы должны выключить светодиод. Мы начинаем нашу программу с добавления файла заголовка BluetoothSerial, который заставляет ESP32 Bluetooth работать как Bluetoth SSP.
#include "BluetoothSerial.h" // Заголовочный файл для последовательного Bluetooth, будет добавлен по умолчанию в Arduino
За этой библиотекой происходит множество вещей, но мы решили не углубляться в нее, чтобы упростить задачу. Следующее, что нам нужно, это объект для наших операций, связанных с Bluetooth. Здесь я назвал свое ESP_BT , но вы можете выбрать любое имя.
BluetoothSerial ESP_BT; // Объект для Bluetooth
Затем внутри функции void setup () . Мы начинаем последовательную связь со скоростью 9600 бод и инициализируем сигнал Bluetooth именем. Здесь я назвал его «ESP32_LED_Control », это будет имя, которое наш телефон найдет при попытке сопряжения. Наконец, я объявил встроенный светодиодный вывод как выходной вывод, поскольку мы собираемся переключать его на основе сигнала Bluetooth.
void setup () { Serial.begin (9600); // Запуск последовательного монитора в 9600 ESP_BT.begin ("ESP32_LED_Control"); // Имя вашего сигнала Bluetooth Serial.println («Устройство Bluetooth готово к сопряжению»); pinMode (LED_BUILTIN, OUTPUT); // Укажите, что вывод светодиода выводится }
Внутри функции бесконечного пустого цикла мы проверяем, поступают ли какие-либо данные из модуля Bluetooth, если да, то данные считываются и сохраняются в переменной incoming . Мы также печатаем это значение на последовательном мониторе, просто чтобы проверить, что получает Arduino.
if (ESP_BT.available ()) // Проверяем, получаем ли мы что-нибудь от Bluetooth { incoming = ESP_BT.read (); // Читаем то, что мы получили Serial.print ("Received:"); Serial.println (входящий);
Теперь все полученные данные хранятся во входящей переменной, поэтому мы можем напрямую сравнить эту переменную с ожидаемым значением и выполнить необходимое действие. Но значение, отправленное из Bluetooth, будет в форме символа, и Arduino будет читать десятичное значение символа, отправляемого с телефона. В нашем случае для char '0' десятичное значение будет 48, а для char '1' десятичное значение будет 49. Вы можете обратиться к диаграмме ASCII, чтобы понять, какое будет десятичное значение для каждого символа.
Здесь мы сравнили входящую переменную с 48 и 49, чтобы проверить на 0 и 1 соответственно. Если это 1, мы выключаем светодиод, а также распечатываем сообщение подтверждения обратно в Bluetooth, в котором говорится, что светодиод был выключен, и наоборот для 0.
если (входящий == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println («светодиод включен»); } если (входящий == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println («светодиод выключен»); }
Тестирование последовательного интерфейса Bluetooth с ESP32
Подключите ESP к Arduino IDE и выберите правильную плату и порт, как описано в руководстве по началу работы. Так как это 3 - й менеджер правления партии может занять немного больше времени для кода компилируются и загружены. После загрузки запустите последовательные мониторы (только для отладки) и откройте настройку Bluetooth на своем телефоне. Вы должны найти устройство Bluetooth с именем ESP32_LED_Control в паре с.
Теперь вы можете открыть любое приложение Bluetooth-терминала на своем смартфоне. Я использую приложение под названием «Bluetooth Terminal», которое было загружено из магазина приложений Google. Подключите приложение Bluetooth к только что сопряженному устройству, введите 1 и нажмите «Отправить».
Модуль ESP32 должен получить его и включить светодиод в соответствии с нашей программой, а также дать вам подтверждающее сообщение о том, что светодиод включен, как показано на скриншоте выше. Вы также можете проверить последовательный монитор, который покажет данные, получаемые ESP32 Bluetooth в десятичном формате, то есть ваш Arduino будет читать 48 для 0 и 49 для 1, как объяснялось ранее. Снимок окна моего терминала показан ниже.
Точно так же вы также должны иметь возможность выключить светодиод, отправив 0 из мобильного приложения. Полная работа показана на видео ниже. Надеюсь, вы поняли руководство и узнали что-то полезное. Если у вас есть какие-либо сомнения, не стесняйтесь оставлять их в разделе комментариев ниже или использовать наши форумы для получения другой технической помощи.