- Първи стъпки с ESP32 Bluetooth
- Разбиране на Bluetooth Low Energy (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, достатъчно ADC и DAC щифтове, аудио поддръжка, поддръжка на SD карти, режим на дълбоко заспиване и т.н. всичко за изграждане на IoT проекти.
И както всеки любител би го харесал, ESP32 вече е официално подкрепен от Arduino IDE. По-рано трябваше да направим огромно решение с библиотеката на Нийл Колбанс, но сега благодарение на упоритата работа на този тип програмирането ESP32 с Arduino IDE се превърна в торта. Следователно стартирах своя Arduino IDE и преминах през няколко примерни BLE програми, чрез които не разбрах нищо. След дълго време на сърфиране и youtubing разбрах, че има още много неща за разбиране, ако трябва да работите с Bluetooth Low Energy (BLE), използвайки ESP32. Реших да разгледам BLE в отделни статии, така че тук ще използваме класическия сериен Bluetooth на ESP32 за превключване на светодиод с помощта на смартфон. Ако се интересувате да проверите как да използвате функциите BLE, проверете тази статия за ESP32 BLE сървър и ESP32 BLE клиент
Първи стъпки с ESP32 Bluetooth
Първата програма, която исках да изпробвам, беше проста програма, с помощта на която мога да включвам или изключвам светодиод от приложението Bluetooth Terminal на мобилен телефон, точно както добрите стари HC-05 дни. Но се оказва, че Bluetooth Low Energy (BLE) не е вдлъбнат за това. Също така открих, че в модула ESP32 има два вида Bluetooth, единият е Classic 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 Store, за да изпращаме команди до 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 Signal Serial.println („Bluetooth устройството е готово за сдвояване“); pinMode (LED_BUILTIN, OUTPUT); // Посочете, че LED изводът се извежда }
Във функцията за безкраен празен цикъл ние проверяваме дали има данни, идващи от Bluetooth модула, ако да, данните се четат и съхраняват в променливата входящи . Също така отпечатваме тази стойност на серийния монитор, само за да проверим какво получава Arduino.
if (ESP_BT.available ()) // Проверяваме дали получаваме нещо от Bluetooth { incoming = ESP_BT.read (); // Прочетете какво получаваме Serial.print ("Получено:"); Serial.println (входящ);
Сега получените данни се съхраняват във входящата променлива, така че можем директно да сравним тази променлива с очакваната стойност и да извършим необходимото действие. Но стойността, изпратена от Bluetooth, ще бъде във вид на char и Arduino ще прочете десетичната стойност на char, който се изпраща от телефона. В нашия случай за char '0' десетичната стойност ще бъде 48, а за char '1' десетичната стойност ще бъде 49. Можете да се обърнете към диаграмата ASCII, за да разберете каква ще бъде десетичната стойност за всеки знак.
Тук сравнихме входящата променлива с 48 и 49, за да проверим съответно 0 и 1. Ако е 1, ние изключваме светодиода и също така отпечатваме съобщение за потвърждение обратно на Bluetooth, казвайки, че светодиодът е бил изключен и обратно за 0.
if (входящи == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED включен"); } if (входящи == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED изключен"); }
Тестване на сериен Bluetooth с ESP32
Свържете вашия ESP с вашия Arduino IDE и изберете правилната платка и порт, както беше обсъдено в урока за започване. Тъй като е мениджър на борда на трета страна, може да отнеме малко повече време, докато кодът се компилира и качи. След качването стартирайте серийните монитори (само за отстраняване на грешки) и отворете настройката за Bluetooth на телефона си. Трябва да намерите Bluetooth устройство с име ESP32_LED_Control сдвояване с.
Сега можете да отворите всяко приложение за Bluetooth терминал на вашия смартфон, аз използвам този с име „Bluetooth Terminal“, който е изтеглен от Google App store. Свържете Bluetooth приложението с току-що сдвоеното устройство и напишете 1 и натиснете send.
Модулът ESP32 трябва да го получи и да включи светодиода според нашата програма, а също така да ви даде съобщение за потвърждение, че светодиодът е ВКЛЮЧЕН, както е показано на екрана, показан по-горе. Можете също да проверите серийния монитор, който ще показва данните, които се получават от ESP32 Bluetooth в десетичен формат, който е вашият Arduino, ще чете 48 за 0 и 49 за 1, както беше обяснено по-рано. Снимката на прозореца на моя терминал е показана по-долу.
По същия начин трябва да можете да изключите светодиода, като изпратите 0 от мобилното приложение. Цялата работа е показана във видеото по-долу. Надявам се, че сте разбрали урока и сте научили нещо полезно. Ако имате някакви съмнения, не се колебайте да ги оставите в раздела за коментари по-долу или да използвате нашите форуми за друга техническа помощ.