- Uvod v Bluetooth ESP32
- Razumevanje Bluetooth Low Energy (BLE) in ESP32 Classic Bluetooth
- Priprava ID-ja Arduino za ESP32
- Serijski program Bluetooth za ESP32
- Testiranje serijske povezave Bluetooth z ESP32
Moduli Bluetooth, kot sta HC-05 in HC-06, so enostavni za namestitev in hitri za uporabo z Arduino IDE, vendar imajo svoje lastne omejitve, kot je velika poraba energije, in delujejo na starem Bluetooth V2.0. Prav tako sem pred kratkim dobil nov komplet ESP32 DEV, ti moduli imajo veliko funkcij, kot so vgrajeni Wi-Fi in Bluetooth, dovolj ADC in DAC zatičev, zvočna podpora, podpora za kartice SD, način globokega spanja itd. vse za gradnjo IoT projektov.
In tako kot bi ga želel vsak hobi, tudi ESP32 uradno podpira Arduino IDE. Prej smo morali s knjižnico Neila Kolbansa narediti veliko rešitev, zdaj pa je zaradi trdega dela tega tipa programiranje ESP32 z Arduino IDE postalo pravi sprehod. Zato sem zagnal svoj Arduino IDE in prešel nekaj primernih programov BLE, skozi katere nisem razumel ničesar. Po dolgem času deskanja in youtubinga sem spoznal, da je treba razumeti še veliko stvari, če morate z ESP32 delati z Bluetooth Low Energy (BLE). Odločil sem se, da bom BLE obravnaval v ločenih člankih, zato bomo tukaj uporabili klasični serijski Bluetooth ESP32 za preklop LED z uporabo pametnega telefona. Če vas zanima, kako uporabljati funkcije BLE, si oglejte ta članek o strežniku ESP32 BLE in odjemalcu ESP32 BLE
Uvod v Bluetooth ESP32
Prvi program, ki sem ga želel preizkusiti, je bil preprost program, s pomočjo katerega lahko vklopim ali izklopim LED iz aplikacije Bluetooth Terminal za mobilni telefon, tako kot dobri stari HC-05 dnevi. Izkazalo pa se je, da Bluetooth Low Energy (BLE) zaradi tega ni vdrt. Ugotovil sem tudi, da v modulu ESP32 obstajata dve vrsti Bluetootha, eden je Classic Bluetooth, drugi pa BLE Bluetooth Low Energy. V redu, ampak zakaj?…. zakaj imamo dve vrsti Bluetooth in kaj naj uporabim za svoj projekt?
Razumevanje Bluetooth Low Energy (BLE) in ESP32 Classic Bluetooth
Kot že ime pove, Bluetooth Low Energy porabi manj energije kot klasični Bluetooth. To dosežemo s pošiljanjem podatkov po potrebi s predhodno določenimi rednimi posodobitvami. Toda v nasprotju s klasičnim Bluetoothom se ne uporablja za prenos datotek ali glasbe. Ste se kdaj vprašali, kako vaš telefon samodejno prepozna, da je naprava Bluetooth, ki ste jo pravkar seznanili, zvočna naprava ali prenosnik ali telefon, ste morda tudi že videli, da je raven baterije v brezžičnem predvajalniku zvoka ali fitnes pasu samodejno prikazana v vrstici stanja vaš mobilni telefon; vse to je mogoče z značilnostmi naprav BLE. Naprava BLE deluje z Bluetoothom V4.0 in lahko deluje kot strežnik ali kot odjemalec z nizko porabo energijeBLE je idealna izbira za svetilnike, pametne ure, fitnes pasove itd.
Klasični Bluetooth pa je le preprost navaden stari Bluetooth, ki ga uporabljamo za prenos datotek in drugih podatkov. Skoraj vse naprave BLE imajo s tem povezano funkcijo Classic Bluetooth. Bluetooth, ki se uporablja v modulih, kot je HC-05, je različica klasičnega Bluetootha, imenovanega Bluetooth SSP (protokol serijskih vrat), kar pomeni, da Bluetooth sledi standardnemu serijskemu protokolu, ki olajša pošiljanje in prejemanje podatkov brez večjih stroškov. Na koncu te vadnice bomo izvedeli, kako uporabljati serijsko funkcijo Bluetooth v ESP32.
V tem članku bomo uporabili funkcijo serijske povezave Bluetooth na ESP32, da jo združimo s pametnim telefonom in uporabimo katero koli obstoječo aplikacijo Bluetooth Terminal iz trgovine Play za pošiljanje ukazov na ESP32 in ustrezno vklopimo LED na vozilu.
V nadaljnjih člankih bomo obravnavali ESP32 BLE tako kot strežnik kot odjemalec. Strežnik BLE se običajno uporablja za pošiljanje podatkov BLE drugim napravam Bluetooth, odjemalec BLE pa za skeniranje drugih naprav BLE, zato deluje kot svetilnik.
Priprava ID-ja Arduino za ESP32
Upoštevajte, da Arduino IDE privzeto ne podpira plošče ESP32; jih morate prenesti in namestiti z uporabo upravitelja plošč. Če je to vaš prvi program z ESP32, sledite tej vadnici za začetek, da v svoj Arduino dodate ploščo ESP32 in naložite preskusno skico.
Poleg tega lahko z ESP32 izvedete več projektov, ne da bi z njim uporabljali mikrokrmilnik.
Serijski program Bluetooth za ESP32
Celoten program za preklop LED z uporabo ESP32 Bluetooth je podan na koncu te strani. Pod tem naslovom lahko razbijemo kodo na majhne delčke in jih skušamo razumeti. Če ste že uporabljali druge module Bluetooth, kot je HC-05, bi se vam zdel ta primer programa ESP32 Bluetooth Classic zelo podoben.
Ideja programa je inicializirati serijsko povezavo Bluetooth z uporabo ESP32 in poslušati podatke iz seznanjenih naprav. Če so vhodni podatki '1', potem vklopimo LED, če pa je '0', moramo LED izklopiti. Naš program začnemo z dodajanjem datoteke z glavo BluetoothSerial, zaradi česar ESP32 Bluetooth deluje kot Bluetoth SSP.
#include "BluetoothSerial.h" // Datoteka glave za serijski Bluetooth bo privzeto dodana v Arduino
Za to knjižnico se dogaja veliko stvari, vendar smo se odločili, da ne bomo globoko vanjo poglabljali stvari. Naslednja stvar, ki jo potrebujemo, je predmet za naše povezave z Bluetoothom. Tu sem svojega poimenoval ESP_BT , vendar lahko izberete katero koli ime.
BluetoothSerial ESP_BT; // Predmet za Bluetooth
Nato znotraj funkcije void setup () . Smo začeli serijsko komunikacijo s hitrostjo prenosa 9600 in inicializacijo signal Bluetooth z imenom. Tu sem ga poimenoval "ESP32_LED_Control ", to bo ime, ki ga bo naš telefon našel pri poskusu seznanjanja. Končno sem vgrajeni LED-pin razglasil za izhodni pin, saj ga bomo preklopili na podlagi signala Bluetooth.
void setup () { Serial.begin (9600); // Zaženi serijski monitor v 9600 ESP_BT.begin ("ESP32_LED_Control"); // Ime vašega Bluetooth Signal Serial.println ("Naprava Bluetooth je pripravljena na seznanitev"); pinMode (LED_BUILTIN, OUTPUT); // Določite, da bo izhod LED pin }
Znotraj neskončno void loop funkcija, smo preveriti, če je katerikoli podatek, ki prihajajo v iz modula Bluetooth, če je odgovor da, potem je branje podatkov in shrani v spremenljivko dohodni . To vrednost natisnemo tudi na serijski monitor, da samo navzkrižno preverimo, kaj prejema Arduino.
if (ESP_BT.available ()) // Preveri, ali od Bluetootha prejmemo kaj { incoming = ESP_BT.read (); // preberite, kaj prejmemo Serial.print ("Prejeto:"); Serial.println (dohodno);
Zdaj so vsi prejeti podatki shranjeni v vhodni spremenljivki, tako da lahko to spremenljivko neposredno primerjamo s pričakovano vrednostjo in izvedemo zahtevano dejanje. Toda vrednost, poslana iz Bluetootha, bo v obliki črke in Arduino bo prebral decimalno vrednost znaka, ki se pošilja iz telefona. V našem primeru bo za char '0' decimalna vrednost 48, za char '1' pa decimalna vrednost 49. Lahko se sklicujete na grafikon ASCII, da boste razumeli, kakšna bo decimalna vrednost za vsak znak.
Tu smo primerjali dohodno spremenljivko z 48 in 49, da preverimo, ali je 0 oziroma 1. Če je enak 1, izklopimo LED in na Bluetooth natisnemo tudi potrditveno sporočilo, da je LED izklopljen, in obratno za 0.
if (incoming == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED vklopljena"); } if (dohodno == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED izklopljena"); }
Testiranje serijske povezave Bluetooth z ESP32
Povežite svoj ESP z vašim Arduino IDE in izberite pravilno ploščo in vrata, kot je opisano v uvodu za začetek. Ker gre za 3 rd vodja stranka svet lahko traja malo dlje, da koda, da se zberejo in dodal. Po nalaganju zaženite serijske monitorje (samo za odpravljanje napak) in v telefonu odprite nastavitev Bluetooth. Napravo Bluetooth z imenom ESP32_LED_Control bi morali najti v paru z.
Zdaj lahko na pametnem telefonu odprete katero koli aplikacijo terminala Bluetooth, jaz pa uporabljam tisto z imenom »Bluetooth Terminal«, ki je bila prenesena iz trgovine Google App. Povežite aplikacijo Bluetooth z napravo, ki smo jo pravkar seznanili, vtipkajte 1 in pritisnite send.
Modul ESP32 bi ga moral sprejeti in vklopiti LED v skladu z našim programom ter vam poslati tudi potrditveno sporočilo, da je LED vklopljen, kot je prikazano na zgornji sliki. Preverite lahko tudi serijski monitor, ki bo prikazal podatke, ki jih ESP32 Bluetooth prejema v decimalni obliki, to je vaš Arduino, bral bo 48 za 0 in 49 za 1, kot smo že pojasnili. Posnetek okna terminala je prikazan spodaj.
Podobno bi morali tudi LED izklopiti tako, da iz mobilne aplikacije pošljete 0. Celotno delo je prikazano v spodnjem videu. Upam, da ste razumeli vadnico in se naučili nekaj koristnega. Če dvomite, jih lahko pustite v spodnjem oddelku za komentarje ali uporabite naš forum za drugo tehnično pomoč.