- Začínáme s ESP32 Bluetooth
- Porozumění Bluetooth Low Energy (BLE) a ESP32 Classic Bluetooth
- Příprava IDE Arduino na ESP32
- Sériový program Bluetooth pro ESP32
- Testování sériového Bluetooth s ESP32
Moduly Bluetooth jako HC-05 a HC-06 se snadno nastavují a rychle používají s Arduino IDE, ale mají svá vlastní omezení, jako je vysoká spotřeba energie, a fungují na starém Bluetooth V2.0. Nedávno jsem také dostal novou sadu ESP32 DEV, tyto moduly mají spoustu funkcí, jako jsou vestavěné Wi-Fi a Bluetooth, dostatek pinů ADC a DAC, podpora zvuku, podpora SD karet, režim hlubokého spánku atd. vše pro stavbu projektů IoT.
A stejně jako by to miloval každý fanoušek, ESP32 je nyní oficiálně podporován Arduino IDE. Dříve jsme museli udělat obrovské řešení s knihovnou Neila Kolbansa, ale nyní se díky tvrdé práci tohoto chlapa stalo ESP32 s Arduino IDE procházkou dortem. Proto jsem spustil své Arduino IDE a šel důkladně několik příkladů programů BLE, kterým jsem nic nerozuměl. Po dlouhé době surfování a youtubingu jsem si uvědomil, že je mnohem více věcí, kterým byste měli porozumět, pokud musíte pracovat s Bluetooth Low Energy (BLE) pomocí ESP32. Rozhodl jsem se pokrýt BLE v samostatných článcích, takže zde použijeme Classic Serial Bluetooth ESP32 k přepínání LED pomocí chytrého telefonu. Pokud máte zájem vyzkoušet si, jak používat funkce BLE, podívejte se na tento článek na serveru ESP32 BLE Server a klientovi ESP32 BLE
Začínáme s ESP32 Bluetooth
První program, který jsem chtěl vyzkoušet, byl jednoduchý program, pomocí kterého mohu zapnout nebo vypnout LED z aplikace Bluetooth Terminal mobilního telefonu, stejně jako staré dobré dny HC-05. Ukázalo se však, že Bluetooth Low Energy (BLE) není za to odsazen. Také jsem zjistil, že v modulu ESP32 existují dva typy Bluetooth, jeden je klasický Bluetooth a druhý je BLE Bluetooth Low Energy. Dobře, ale proč?…. proč máme dva typy Bluetooth a co bych měl použít pro svůj projekt?
Porozumění Bluetooth Low Energy (BLE) a ESP32 Classic Bluetooth
Bluetooth Low Energy, jak název napovídá, spotřebovává méně energie než klasické Bluetooth. Toho je dosaženo zasíláním dat podle potřeby s předdefinovanými periodickými aktualizacemi. Ale na rozdíl od klasického Bluetooth se nepoužívá k přenosu souborů nebo hudby. Přemýšleli jste někdy, jak váš telefon automaticky identifikuje, že právě spárované zařízení Bluetooth je zvukové zařízení nebo notebook nebo telefon, možná jste také viděli, že stav baterie v bezdrátovém audio přehrávači nebo fitness pásmu se automaticky zobrazuje ve stavovém řádku váš mobilní telefon; to vše je možné s charakteristikami zařízení BLE. Zařízení BLE pracuje s Bluetooth V4.0 a může pracovat s nízkou spotřebou energie jako server nebo jako klient, který vytváříBLE ideální volba pro majáky, chytré hodinky, fitness pásky atd.
Klasické Bluetooth na druhé straně je jen jednoduché prosté staré Bluetooth, které používáme k přenosu souborů a dalších dat. Téměř všechna zařízení BLE jsou spojena s klasickou funkcí Bluetooth. Bluetooth používaný v modulech jako HC-05 je verze klasického Bluetooth s názvem Bluetooth SSP (Serial Port Protocol), což znamená, že Bluetooth se řídí standardním sériovým protokolem, který usnadňuje odesílání a příjem dat bez velké režie. Na konci tohoto tutoriálu se naučíme, jak používat funkce sériového Bluetooth v ESP32.
Tady v tomto článku použijeme funkci sériového Bluetooth na ESP32 k jeho spárování se smartphonem a k odeslání příkazů do ESP32 použijeme libovolnou stávající aplikaci Bluetooth Terminal z obchodu Play a příslušně přepneme palubní LED.
V dalších článcích se budeme zabývat ESP32 BLE jako serverem i klientem. Server BLE se obecně používá k odesílání dat BLE do jiných zařízení Bluetooth a klient BLE se používá ke skenování dalších zařízení BLE, takže funguje jako maják.
Příprava IDE Arduino na ESP32
Poznámka: Arduino IDE ve výchozím nastavení nepodporuje desku ESP32; musíte je stáhnout a nainstalovat pomocí správce desky. Pokud je to váš první program s ESP32, postupujte podle tohoto úvodního tutoriálu a přidejte do svého Arduina desku ESP32 a nahrajte testovací náčrt.
Dále můžete s ESP32 provádět více projektů, aniž byste s ním používali jakýkoli mikrokontrolér.
Sériový program Bluetooth pro ESP32
Kompletní program pro přepínání LED pomocí ESP32 Bluetooth je uveden na konci této stránky. Pod tímto nadpisem pojďme rozdělit kód na malé úryvky a pokusit se jim porozumět. Pokud jste již použili jiné moduly Bluetooth, jako je HC-05, zjistíte, že tento ukázkový program ESP32 Bluetooth Classic je velmi podobný.
Myšlenkou programu je inicializovat sériové připojení Bluetooth pomocí ESP32 a naslouchat datům ze spárovaných zařízení. Pokud jsou příchozí data '1', rozsvítíme LED a pokud je '0', měli bychom LED zhasnout. Začneme náš program přidáním hlavičkového souboru BluetoothSerial, díky kterému bude ESP32 Bluetooth fungovat jako Bluetoth SSP.
#include "BluetoothSerial.h" // Soubor záhlaví pro sériové Bluetooth, bude ve výchozím nastavení přidán do Arduina
Za touto knihovnou se děje spousta věcí, ale rozhodli jsme se, že se do toho nebudeme ponořovat, aby to nebylo jednoduché. Další věc, kterou potřebujeme, je objekt pro naše operace spojené s Bluetooth. Tady jsem pojmenoval svůj jako ESP_BT , ale můžete si vybrat libovolné jméno.
BluetoothSerial ESP_BT; // Objekt pro Bluetooth
Dále uvnitř funkce void setup () . Máme zahájit sériovou komunikaci s přenosovou rychlostí 9600 a inicializovat signál Bluetooth s názvem. Zde jsem jej pojmenoval „ESP32_LED_Control “, toto bude jméno, které našel náš telefon při pokusu o párování. Nakonec jsem deklaroval vestavěný LED kolík jako výstupní kolík, protože ho přepneme na základě signálu Bluetooth.
void setup () { Serial.begin (9600); // Spustit sériový monitor v 9600 ESP_BT.begin ("ESP32_LED_Control"); // Název vašeho Bluetooth Signal Serial.println ("Zařízení Bluetooth je připraveno ke spárování"); pinMode (LED_BUILTIN, OUTPUT); // Určete, že výstup LED pin }
Uvnitř nekonečné neplatné smyčky funkce, můžeme zjistit, zda existuje nějaká data přicházející z modulu Bluetooth, pokud ano, pak jsou data číst a uloženy v proměnné příchozí . Tuto hodnotu také vytiskneme na sériový monitor, abychom mohli zkontrolovat, co Arduino přijímá.
if (ESP_BT.available ()) // Zkontrolujte, zda z Bluetooth něco přijímáme { příchozí = ESP_BT.read (); // Přečtěte si, co přijímáme Serial.print ("Received:"); Serial.println (příchozí);
Nyní jsou jakákoli přijatá data uložena v příchozí proměnné, takže můžeme tuto proměnnou přímo porovnat s očekávanou hodnotou a provést požadovanou akci. Ale hodnota odeslaná z Bluetooth bude char formě a Arduino bude číst hodnotu desetinného z dřevěného uhlí, která je odeslána z telefonu. V našem případě pro char '0' bude desítková hodnota 48 a pro char '1' bude desítková hodnota 49. Můžete si přečíst graf ASCII, abyste pochopili, jaká bude desetinná hodnota pro každý znak.
Zde jsme porovnali příchozí proměnnou s 48 a 49, abychom zkontrolovali 0 a 1. Pokud je to 1, vypneme LED a také vytiskneme potvrzovací zprávu zpět do Bluetooth, že LED byla vypnuta a naopak pro 0.
if (incoming == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED svítí"); } if (incoming == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED nesvítí"); }
Testování sériového Bluetooth s ESP32
Připojte svůj ESP k vašemu Arduino IDE a vyberte správnou desku a port, jak je popsáno v tutoriálu Začínáme. Vzhledem k tomu, že se jedná o třetího člena správní rady strany, může trvat trochu déle, než se kód zkompiluje a nahraje. Po nahrání spusťte Serial monitors (pouze pro ladění) a otevřete nastavení Bluetooth v telefonu. Měli byste najít Bluetooth zařízení s názvem ESP32_LED_Control spárovat s.
Nyní můžete ve svém smartphonu otevřít libovolnou aplikaci terminálu Bluetooth, používám aplikaci s názvem „Bluetooth Terminal“, která byla stažena z obchodu Google App Store. Připojte aplikaci Bluetooth k zařízení, které jsme právě spárovali, zadejte 1 a stiskněte Odeslat.
Modul ESP32 by jej měl přijmout a rozsvítit LED podle našeho programu a také vám dát potvrzovací zprávu, že LED svítí, jako na obrázku výše. Můžete také zkontrolovat sériový monitor, který bude zobrazovat data, která jsou přijímána ESP32 Bluetooth v desítkovém formátu, což znamená, že vaše Arduino bude číst 48 pro 0 a 49 pro 1, jak bylo vysvětleno dříve. Snímek okna mého terminálu je uveden níže.
Podobně byste měli být schopni vypnout LED zasláním 0 z mobilní aplikace. Kompletní práce je zobrazena na videu níže. Doufám, že jste pochopili výukový program a naučili se něco užitečného. Máte-li jakékoli pochybnosti, neváhejte je zanechat v sekci komentářů níže nebo použít naši fóra pro další technickou pomoc.