- Začíname s ESP32 Bluetooth
- Pochopenie technológie Bluetooth Low Energy (BLE) a ESP32 Classic Bluetooth
- Príprava IDE Arduino na ESP32
- Sériový program Bluetooth pre ESP32
- Testovanie sériového Bluetooth s ESP32
Moduly Bluetooth ako HC-05 a HC-06 sa ľahko nastavujú a rýchlo používajú s Arduino IDE, majú však svoje vlastné obmedzenia, ako je vysoká spotreba energie, a fungujú na starom Bluetooth V2.0. Nedávno som si tiež zaobstaral novú súpravu ESP32 DEV, tieto moduly majú množstvo funkcií, ako sú zabudované Wi-Fi a Bluetooth, dostatok pinov ADC a DAC, podpora zvuku, podpora SD kariet, režim hlbokého spánku atď. všetko pre budovanie projektov IoT.
A tak ako by ho miloval každý nadšenec, ESP32 je teraz oficiálne podporovaný Arduino IDE. Predtým musíme urobiť obrovské riešenie s Knižnicou Neila Kolbansa, ale teraz sa vďaka usilovnej práci tohto chlapíka stalo programovanie ESP32 s Arduino IDE prechádzkou. Preto som spustil svoje Arduino IDE a prešiel dôkladnými niekoľkými príkladmi programov BLE, cez ktoré som ničomu nerozumel. Po dlhej dobe surfovania a youtubingu som si uvedomil, že je ešte veľa vecí, ktorým musíte porozumieť, ak musíte pracovať s Bluetooth Low Energy (BLE) pomocou ESP32. Rozhodol som sa pokryť BLE v samostatných článkoch, takže tu použijeme Classic Serial Bluetooth ESP32 na prepínanie LED pomocou Smart Phone. Ak máte záujem vyskúšať, ako používať funkcie BLE, prečítajte si tento článok na serveroch ESP32 BLE a ESP32 BLE.
Začíname s ESP32 Bluetooth
Prvý program, ktorý som chcel vyskúšať, bol jednoduchý program, pomocou ktorého môžem zapnúť alebo vypnúť LED z aplikácie Bluetooth Terminal mobilného telefónu, rovnako ako za starých dobrých dní HC-05. Ukázalo sa však, že Bluetooth Low Energy (BLE) nie je na to odsadený. Tiež som zistil, že v module ESP32 existujú dva typy Bluetooth, jeden je klasický Bluetooth a druhý je BLE Bluetooth Low Energy. Dobre, ale prečo?…. prečo máme dva typy Bluetooth a čo by som mal použiť pre svoj projekt?
Pochopenie technológie Bluetooth Low Energy (BLE) a ESP32 Classic Bluetooth
Názov Bluetooth Low Energy, ako naznačuje jeho názov, spotrebuje menej energie ako klasický Bluetooth. Dosahuje sa to odosielaním údajov podľa potreby s vopred definovanými periodickými aktualizáciami. Ale na rozdiel od klasického Bluetooth sa nepoužíva na prenos súborov alebo hudby. Už ste niekedy premýšľali nad tým, ako váš telefón automaticky identifikuje, že práve spárovaným zariadením Bluetooth je zvukové zariadenie alebo notebook alebo telefón, ste si tiež mohli všimnúť, že úroveň nabitia batérie v bezdrôtovom audioprehrávači alebo fitnes páse sa automaticky zobrazuje v stavovom riadku váš mobil; to všetko je možné s charakteristikami zariadení BLE. BLE Prístroj pracuje s Bluetooth V4.0 a môže pracovať s nízkym výkonom ako server alebo ako klient, ktorý činíBLE ideálna voľba pre majáky, inteligentné hodinky, fitnes pásky apod.
Klasické Bluetooth na druhej strane je len jednoduché obyčajné Bluetooth, ktoré používame na prenos súborov a ďalších údajov. Takmer všetky zariadenia BLE sú spojené s funkciou Classic Bluetooth. Bluetooth používaný v moduloch ako HC-05 je verziou klasického Bluetooth s názvom Bluetooth SSP (Serial Port Protocol), čo znamená, že Bluetooth sa riadi štandardným sériovým protokolom, ktorý uľahčuje odosielanie a prijímanie dát bez väčšej réžie. Na konci tohto tutoriálu sa dozvieme, ako používať funkčnosť sériového Bluetooth v ESP32.
Tu v tomto článku použijeme funkciu sériového Bluetooth na ESP32 na spárovanie so smartphonom a na odoslanie príkazov na ESP32 a na prepnutie príslušnej LED na palubnej doske použijeme ľubovoľnú existujúcu aplikáciu Bluetooth Terminal z obchodu Play.
V ďalších článkoch sa budeme zaoberať ESP32 BLE ako serverom aj klientom. Server BLE sa zvyčajne používa na odosielanie údajov BLE do iných zariadení Bluetooth a klient BLE sa používa na skenovanie ďalších zariadení BLE, takže funguje ako maják.
Príprava IDE Arduino na ESP32
Nezabudnite, že Arduino IDE predvolene nepodporuje dosku ESP32; musíte si ich stiahnuť a nainštalovať pomocou správcu nástenky. Ak je to váš prvý program s ESP32, postupujte podľa tohto úvodného tutoriálu a pridajte do svojho Arduina dosku ESP32 a nahrajte testovaciu skicu.
Ďalej môžete s ESP32 robiť viac projektov bez použitia mikrokontroléra.
Sériový program Bluetooth pre ESP32
Celý program na prepínanie LED pomocou protokolu ESP32 Bluetooth je uvedený na konci tejto stránky. Pod touto hlavičkou umožnime rozdeliť kód na malé útržky a pokúsiť sa im porozumieť. Pokiaľ ste už používali iné Bluetooth moduly ako HC-05, považovali by ste tento príkladový program ESP32 Bluetooth Classic za veľmi podobný.
Myšlienkou programu je inicializovať sériové pripojenie Bluetooth pomocou protokolu ESP32 a počúvať údaje zo spárovaných zariadení. Ak sú prichádzajúce dáta „1“, rozsvietime LED a ak je „0“, mali by sme LED zhasnúť. Náš program začíname pridaním hlavičkového súboru BluetoothSerial, vďaka ktorému ESP32 Bluetooth pracuje ako Bluetoth SSP.
#include „BluetoothSerial.h“ // Hlavičkový súbor pre sériové Bluetooth, bude predvolene pridaný do Arduina
Za touto knižnicou sa deje veľa vecí, ale rozhodli sme sa, že sa do nej nebudeme púšťať hlboko, aby to nebolo jednoduché. Ďalšia vec, ktorú potrebujeme, je objekt pre naše operácie spojené s Bluetooth. Tu som svoju pomenoval ako ESP_BT , ale môžete si zvoliť ľubovoľné meno.
BluetoothSerial ESP_BT; // Objekt pre Bluetooth
Ďalej vo vnútri funkcie void setup () . Máme začať sériovú komunikáciu s prenosovou rýchlosťou 9600 a inicializovať signál Bluetooth s názvom. Tu som to pomenoval ako „ESP32_LED_Control “, toto bude meno, ktoré nájde náš telefón pri pokuse o spárovanie. Nakoniec som deklaroval zabudovaný LED pin ako výstupný pin, pretože ho budeme prepínať na základe signálu Bluetooth.
void setup () { Serial.begin (9600); // Spustiť sériový monitor v 9600 ESP_BT.begin ("ESP32_LED_Control"); // Názov vášho Bluetooth Signal Serial.println ("Bluetooth zariadenie je pripravené na párovanie"); pinMode (LED_BUILTIN, OUTPUT); // Zadajte, ktorý výstup LED bude mať }
Vnútri nekonečné neplatné slučky funkcie, môžeme zistiť, či existuje nejaká dáta prichádzajúce z modulu Bluetooth, ak áno, potom sú dáta čítať a uložené v premennej prichádzajúce . Túto hodnotu tiež vytlačíme na sériový monitor, len aby sme skontrolovali, čo prijíma Arduino.
if (ESP_BT.available ()) // Skontrolujte, či z Bluetooth niečo prijímame { incoming = ESP_BT.read (); // Prečítajte si, čo prijímame Serial.print ("Received:"); Serial.println (prichádzajúci);
Teraz sú akékoľvek prijaté dáta uložené v prichádzajúcej premennej, takže môžeme túto premennú priamo porovnať s očakávanou hodnotou a vykonať požadovanú akciu. Ale hodnota odoslaná z Bluetooth bude char forme a Arduino bude čítať hodnotu desatinného z dreveného uhlia, ktorá je odoslaná z telefónu. V našom prípade pre char '0' bude desatinná hodnota 48 a pre char '1' desatinná hodnota bude 49. Môžete si pozrieť graf ASCII, aby ste pochopili, aká bude desatinná hodnota pre každý znak.
Tu sme porovnali prichádzajúcu premennú s 48 a 49, aby sme skontrolovali 0 a 1. Ak je to 1, vypneme LED a tiež vytlačíme potvrdzujúcu správu späť na Bluetooth, že LED bola vypnutá a naopak pre 0.
if (prichádzajúce == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED svietila"); } if (incoming == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED zhasla"); }
Testovanie sériového Bluetooth s ESP32
Pripojte svoj ESP k vášmu Arduino IDE a vyberte správnu dosku a port, ako je uvedené v úvodnej príručke. Pretože je to tretí správca večierkov, môže trvať trochu dlhšie, kým sa kód kompiluje a nahrá. Po načítaní spustite sériové monitory (len na ladenie) a vo svojom telefóne otvorte nastavenie Bluetooth. Mali by ste nájsť zariadenie Bluetooth s názvom ESP32_LED_Control spárované s.
Teraz môžete vo svojom smartfóne otvoriť ľubovoľnú aplikáciu terminálu Bluetooth, používam aplikáciu s názvom „Bluetooth Terminal“, ktorá bola stiahnutá z obchodu Google App Store. Pripojte aplikáciu Bluetooth k zariadeniu, ktoré sme práve spárovali, zadajte 1 a stlačte odoslať.
Modul ESP32 by ho mal prijať a rozsvietiť LED diódy podľa nášho programu. Tiež vám pošle potvrdzujúcu správu, že LED dióda je ZAPNUTÁ ako na obrázku vyššie. Môžete tiež skontrolovať sériový monitor, ktorý bude zobrazovať dáta, ktoré prijíma ESP32 Bluetooth v desatinnom formáte, to znamená, že vaše Arduino bude čítať 48 pre 0 a 49 pre 1, ako už bolo vysvetlené vyššie. Snímka okna môjho terminálu je uvedená nižšie.
Podobne by ste mali mať možnosť vypnúť LED zasielaním 0 z mobilnej aplikácie. Kompletné fungovanie je zobrazené na videu nižšie. Dúfam, že ste pochopili návod a naučili sa niečo užitočné. Ak máte pochybnosti, neváhajte ich zanechať v sekcii komentárov nižšie alebo použite našu technickú podporu.