цифровая электроника
вычислительная техника
встраиваемые системы

 
» » ESP32 и Bluetooth: связь по Bluetooth Serial в Arduino IDE

ESP32 и Bluetooth: связь по Bluetooth Serial в Arduino IDE

Автор: Mike(admin) от 26-11-2018, 06:15

Модули Bluetooth, такие как HC-05 и HC-06, легко настраиваются и с ними просто работать в Arduino IDE, но у них есть некоторые ограничения, например, высокое энергопотребление, и они работают со старым протоколом Bluetooth V2.0.


ESP32 и Bluetooth: связь по Bluetooth Serial в Arduino IDE

В связи с повышением эффективности встраиваемых проектов с Bluetooth сегодня рационально переходить на новые высокоинтегрированные микроконтроллеры ESP32, которые имеют возможности связи по Wi-Fi и Bluetooth, линии АЦП и ЦАП, поддержку аудио, поддержку SD-карт, режим глубокого сна и т. д. То есть все что нужно для создания проектов Интернета вещей. В этом материале мы рассмотрим пример работы ESP32 с интерфейсом Bluetooth.


Сразу стоит отметить, что в модуле ESP32 есть два типа Bluetooth: один – классический Bluetooth, а другой – BLE (Bluetooth Low Energy). Почему у нас есть два типа Bluetooth и что следует использовать для своего проекта?


Bluetooth Low Energy, как указывает название, потребляет меньше энергии, чем классический Bluetooth. Это достигается путем отправки данных по мере необходимости с заранее определенными периодическими обновлениями. Но в отличие от классического Bluetooth он не используется для передачи файлов или музыки. Вы когда-нибудь задумывались над тем, как ваш телефон автоматически идентифицирует, что устройство Bluetooth, которое вы только что спарили, является аудиоустройством или ноутбуком или телефоном, возможно, вы также заметили, что уровень заряда батареи в беспроводном аудиоплеере или фитнес-полосе автоматически отображается в строке состояния; все это возможно с характеристиками устройств BLE. Устройство BLE работает с Bluetooth V4.0 и может работать с низким энергопотреблением в качестве сервера или клиента, что делает BLE идеальным выбором для маяков, смарт-часов, фитнес-трекеров и т. д.


Классический Bluetooth с другой стороны – это простой старый Bluetooth, который мы используем для передачи файлов и других данных. Почти у всех устройств BLE есть классические функции Bluetooth, связанные с первоначальным вариантом протокола. Bluetooth, используемый в таких модулях, как HC-05, представляет собой версию классического Bluetooth, называемого Bluetooth SSP (Serial Port Protocol), что означает, что Bluetooth следует стандартным последовательным протоколам, что упрощает отправку и получение данных без значительных издержек. В конце этого урока мы узнаем, как использовать функцию последовательного Bluetooth в ESP32.


Здесь, в этой статье, мы будем использовать функцию Serial Bluetooth в ESP32, чтобы соединить его с смартфоном и использовать любое существующее приложение терминала Bluetooth из Play store для отправки команд в ESP32 и переключения состояния светодиода на плате.


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


Идея программы – инициализировать последовательное соединение Bluetooth с помощью ESP32 и прослушивать данные с сопряженных устройств. Если входящие данные равны «1», тогда мы включаем светодиод, и если это «0», мы должны отключить светодиод. Мы начинаем нашу программу, добавляя файл заголовка BluetoothSerial, который заставляет ESP32 Bluetooth работать как Bluetoth SSP.


#include "BluetoothSerial.h"

Следующее, что нам нужно – это объект для наших операций, связанных с Bluetooth. Здесь это носит название ESP_BT, но вы можете выбрать любое имя.


BluetoothSerial ESP_BT;

Далее, внутри функции void setup() мы начинаем настройку последовательной связи со скоростью 9600 бод и инициализируем сигнал Bluetooth с именем. Здесь мы назвали его «ESP32_LED_Control», это будет имя, которое будет найдено нашим телефоном при попытке сопряжения. Наконец, мы объявили вывод для светодиода в качестве выходного вывода, поскольку мы собираемся управлять им на основе сигнала Bluetooth.



void setup() {
  Serial.begin(9600);
  ESP_BT.begin("ESP32_LED_Control");
  Serial.println("Bluetooth Device is Ready to Pair");

  pinMode (LED_BUILTIN, OUTPUT);
}

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



if (ESP_BT.available())
  {
    incoming = ESP_BT.read();
    Serial.print("Received:"); Serial.println(incoming);

Теперь любые полученные данные сохраняются в переменной, поэтому мы можем напрямую сравнить эту переменную с ожидаемым значением и выполнить требуемое действие. Но значение отправлено из Bluetooth будет в форме char, а Arduino будет читать десятичное значение символа, отправляемого с телефона. В нашем случае для char '0' десятичное значение будет равно 48, а для char '1' десятичное значение будет 49. Вы можете посмотреть таблицу ASCII, чтобы понять, что будет десятичным значением для каждого символа.


Здесь мы сравнили входную переменную с 48 и 49 для проверки на логические 0 и 1 соответственно. Если это 1, то мы выключаем светодиод, а также выводим подтверждающее сообщение в Bluetooth, говоря, что светодиод выключен и наоборот 0.



if (incoming == 49)
        {
        digitalWrite(LED_BUILTIN, HIGH);
        ESP_BT.println("LED turned ON");
        }
       
if (incoming == 48)
        {
        digitalWrite(LED_BUILTIN, LOW);
        ESP_BT.println("LED turned OFF");
        }

Теперь проверим работу EPS32 Bluetooth. Подключите свой ESP к компьютеру с Arduino IDE и выберите правильную плату и порт. Поскольку это менеджер сторонних платформ, может потребоваться немного больше времени для компиляции и загрузки кода. После загрузки запускайте последовательный монитор (только для отладки) и откройте настройку Bluetooth на телефоне. Вы должны найти Bluetooth-устройство с именем ESP32_LED_Control.


ESP32 и Bluetooth: связь по Bluetooth Serial в Arduino IDE

Теперь вы можете открыть любое приложение терминала Bluetooth на своем смартфоне. Подключите приложение Bluetooth к устройству, которое мы только что спарили, введите 1 и нажмите отправить.


ESP32 и Bluetooth: связь по Bluetooth Serial в Arduino IDE

Модуль ESP32 должен получить информацию и включить светодиод в соответствии с нашей программой, а также выдать вам подтверждающее сообщение о включении светодиода, как показано на скриншоте выше. Вы также можете посмотреть на последовательный монитор, который будет отображать данные, которые принимаются ESP32 Bluetooth в десятичном формате.


ESP32 и Bluetooth: связь по Bluetooth Serial в Arduino IDE

Аналогичным образом вы также можете отключить светодиод, отправив 0 из мобильного приложения. Далее приведен полный код программы ESP32 для работы с Bluetooth.



#include "BluetoothSerial.h" // заголовчный файл для последовательного Bluetooth будет добавлен по умолчанию в Arduino

BluetoothSerial ESP_BT; // Объект для Bluetooth

int incoming;
int LED_BUILTIN = 2;

void setup() {
  Serial.begin(9600); // Запустить последовательный монитор со скоростью 9600
  ESP_BT.begin("ESP32_LED_Control"); // Имя вашего сигнала Bluetooth
  Serial.println("Bluetooth Device is Ready to Pair");

  pinMode (LED_BUILTIN, OUTPUT);// вывод светодиода выходной
}

void loop() {
  
  if (ESP_BT.available()) // Проверим, не получили ли мы что-либо от Bluetooth
  {
    incoming = ESP_BT.read(); // Прочитаем, что мы получили
    Serial.print("Received:"); Serial.println(incoming);

    if (incoming == 49)
        {
        digitalWrite(LED_BUILTIN, HIGH);
        ESP_BT.println("LED turned ON");
        }
        
    if (incoming == 48)
        {
        digitalWrite(LED_BUILTIN, LOW);
        ESP_BT.println("LED turned OFF");
        }     
  }
  delay(20);
}



© digitrode.ru


Теги: ESP32, Bluetooth



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий