- Початок роботи з ESP32 Bluetooth
- Розуміння технології Bluetooth Low Energy (BLE) та ESP32 Classic Bluetooth
- Підготовка IDE Arduino до ESP32
- Послідовна програма Bluetooth для ESP32
- Тестування послідовного Bluetooth за допомогою ESP32
Модулі Bluetooth, такі як HC-05 та HC-06, прості в налаштуванні і швидко використовуються з Arduino IDE, але вони мають свої власні обмеження, такі як високе споживання енергії, і вони працюють на старому Bluetooth V2.0. Крім того, нещодавно я придбав собі новий комплект ESP32 DEV, ці модулі мають безліч функцій, таких як вбудований Wi-Fi та Bluetooth, достатньо висновків АЦП та ЦАП, підтримка аудіо, підтримка SD-карти, режим глибокого сну тощо. Він майже має все для побудови проектів IoT.
І як би любив будь-який любитель, ESP32 зараз офіційно підтримується Arduino IDE. Раніше нам доводилося робити величезний обхідний шлях із бібліотекою Ніла Колбаса, але тепер завдяки наполегливій роботі програмування ESP32 з Arduino IDE стало справжньою роботою. Отже, я запустив свій Arduino IDE і пройшов кілька прикладів програм BLE, через які я нічого не зрозумів. Після довгого часу серфінгу та ютубінгу я зрозумів, що є набагато більше речей, щоб зрозуміти, чи доводиться працювати з Bluetooth Low Energy (BLE) за допомогою ESP32. Я вирішив висвітлити BLE в окремих статтях, тому тут ми будемо використовувати класичний послідовний Bluetooth ESP32 для перемикання світлодіода за допомогою смартфона. Якщо ви зацікавлені перевірити, як користуватися функціями BLE, перегляньте цю статтю на ESP32 BLE Server та ESP32 BLE Client
Початок роботи з ESP32 Bluetooth
Першою програмою, яку я хотів спробувати, була проста програма, за допомогою якої я можу вмикати або вимикати світлодіодний індикатор від програми терміналу Bluetooth мобільного телефону, як і старі добрі HC-05 дні. Але виявляється, що Bluetooth Low Energy (BLE) для цього не поступається. Я також виявив, що в модулі ESP32 є два типи Bluetooth, один - це класичний Bluetooth, а інший - BLE Bluetooth Low Energy. Гаразд, але чому?…. чому у нас два типи Bluetooth і що я повинен використовувати для свого проекту?
Розуміння технології Bluetooth Low Energy (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 із магазину Play, щоб надсилати команди на ESP32 і відповідно вмикати вбудований світлодіод.
У наступних статтях ми розглянемо ESP32 BLE як як сервер, так і як клієнт. Сервер BLE зазвичай використовується для передачі даних BLE на інші пристрої Bluetooth, а клієнт BLE використовується для сканування інших пристроїв BLE, таким чином виступаючи в якості маяка.
Підготовка IDE Arduino до 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 Signal Serial.println ("Пристрій Bluetooth готовий до створення пари"); pinMode (LED_BUILTIN, OUTPUT); // Вкажіть, що виводиться світлодіодний штифт }
Усередині функції нескінченного циклу void ми перевіряємо, чи надходять дані з модуля Bluetooth, якщо так, тоді дані зчитуються та зберігаються у вхідній змінній. Ми також друкуємо це значення на послідовному моніторі, щоб просто перевірити, що отримує Arduino.
if (ESP_BT.available ()) // Перевірте, чи отримуємо ми щось від Bluetooth { incoming = ESP_BT.read (); // Прочитайте, що ми отримуємо Serial.print ("Отримано:"); Serial.println (вхідний);
Тепер усі отримані дані зберігаються у вхідній змінній, тому ми можемо безпосередньо порівняти цю змінну з очікуваним значенням і виконати необхідну дію. Але значення, надіслане з Bluetooth, буде у вигляді символу, і Arduino прочитає десяткове значення символу, який надсилається з телефону. У нашому випадку для символу "0" десяткове значення буде 48, а для символу "1" десяткове значення буде 49. Ви можете звернутися до діаграми ASCII, щоб зрозуміти, яким буде десяткове значення для кожного символу.
Тут ми порівняли вхідну змінну з 48 та 49 для перевірки на 0 та 1 відповідно. Якщо це 1, ми вимикаємо світлодіод, а також надрукуємо повідомлення про підтвердження на Bluetooth, в якому сказано, що світлодіод вимкнено, і навпаки на 0.
if (incoming == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println («світлодіод увімкнено»); } if (вхідні == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("світлодіод вимкнено"); }
Тестування послідовного Bluetooth за допомогою ESP32
Підключіть свій ESP до своєї Arduino IDE і виберіть правильну плату та порт, як було обговорено в посібнику з початку роботи. Оскільки це менеджер третьої сторони ради, збір і завантаження коду може зайняти трохи більше часу. Після завантаження запустіть монітори Serial (лише для налагодження) і відкрийте налаштування Bluetooth на телефоні. Ви повинні знайти пристрій Bluetooth з назвою ESP32_LED_Control, пара з.
Тепер ви можете відкрити будь-яку програму терміналу Bluetooth на своєму смартфоні, я використовую програму під назвою „Термінал Bluetooth”, яку завантажили з магазину Google App. Підключіть програму Bluetooth до пристрою, з яким ми щойно створили пару, та введіть 1 і натисніть send.
Модуль ESP32 повинен отримати його та увімкнути світлодіод відповідно до нашої програми, а також надіслати вам повідомлення про підтвердження про те, що світлодіод увімкнено, як показано на скріншоті, показаному вище. Ви також можете перевірити послідовний монітор, який буде відображати дані, які приймає ESP32 Bluetooth у десятковому форматі, тобто ваш Arduino буде читати 48 для 0 та 49 для 1, як пояснювалося раніше. Знімок мого вікна терміналу показаний нижче.
Подібним чином ви також зможете вимкнути світлодіод, відправивши 0 із мобільного додатка. Повна робота показана на відео нижче. Сподіваюся, ви зрозуміли підручник і дізналися щось корисне. Якщо у вас є якісь сумніви, не соромтеся залишити їх у розділі коментарів нижче або скористатися нашими форумами для отримання іншої технічної допомоги.