- Početak rada s ESP32 Bluetoothom
- Razumijevanje Bluetooth Low Energy (BLE) i ESP32 Classic Bluetooth
- Priprema Arduino IDE-a za ESP32
- Serijski Bluetooth program za ESP32
- Testiranje serijskog Bluetootha s ESP32
Bluetooth moduli poput HC-05 i HC-06 jednostavni su za postavljanje i brzi za upotrebu s Arduino IDE-om, ali imaju svoja ograničenja poput velike potrošnje energije i rade na starom Bluetooth V2.0. Također, nedavno sam si nabavio novi ESP32 DEV komplet, ovi moduli imaju obilje značajki kao što su ugrađeni Wi-Fi i Bluetooth, dovoljno ADC i DAC pinova, audio podrška, podrška za SD kartice, način dubokog spavanja itd. sve za izgradnju IoT projekata.
I kao što bi to volio bilo koji hobi, ESP32 sada službeno podržava Arduino IDE. Ranije smo morali napraviti veliko zaobilazno rješenje s knjižnicom Neila Kolbansa, ali sada je zahvaljujući napornom radu ovog tipa programiranje ESP32 s Arduino IDE postalo kolač. Stoga sam pokrenuo svoj Arduino IDE i prošao nekoliko primjera BLE programa, kroz koje nisam ništa razumio. Nakon dugog vremena surfanja i youtubinga shvatio sam da postoji puno više stvari koje treba razumjeti ako morate raditi s Bluetooth Low Energy (BLE) pomoću ESP32. Odlučio sam pokriti BLE u zasebnim člancima, pa ćemo ovdje koristiti klasični serijski Bluetooth ESP32 za prebacivanje LED diode pomoću pametnog telefona. Ako ste zainteresirani za provjeru načina korištenja BLE značajki, pogledajte ovaj članak o ESP32 BLE poslužitelju i ESP32 BLE klijentu
Početak rada s ESP32 Bluetoothom
Prvi program koji sam želio isprobati bio je jednostavan program pomoću kojeg mogu uključiti ili isključiti LED diodu s aplikacije Bluetooth Terminal za mobitel, baš kao i dobri stari HC-05 dani. No, ispada da Bluetooth Low Energy (BLE) zbog toga nije uvučen. Također sam otkrio da postoje dvije vrste Bluetooth-a u modulu ESP32, jedan je Classic Bluetooth, a drugi BLE Bluetooth Low Energy. Dobro, ali zašto?…. zašto imamo dvije vrste Bluetootha i što bih trebao koristiti za svoj projekt?
Razumijevanje Bluetooth Low Energy (BLE) i ESP32 Classic Bluetooth
Bluetooth naziv s niskom energijom troši manje energije od klasičnog Bluetootha. To se postiže slanjem podataka po potrebi s unaprijed definiranim povremenim ažuriranjima. No, za razliku od klasičnog Bluetootha, on se ne koristi za prijenos datoteka ili glazbe. Jeste li se ikad zapitali kako vaš telefon automatski prepoznaje da je Bluetooth uređaj koji ste upravo uparili audio uređaj ili prijenosno računalo ili telefon, možda ste i vidjeli da se razina napunjenosti bežičnog audio uređaja ili fitnes pojasa automatski prikazuje na statusnoj traci vaš mobitel; sve je to moguće s karakteristikama BLE uređaja. BLE uređaj radi s Bluetooth v4.0 i može raditi s niskom potrošnjom kao poslužitelj ili kao klijent koji činiBLE idealan izbor za svjetionike, pametne satove, fitnes bendove itd.

Klasični Bluetooth s druge strane je samo jednostavni stari Bluetooth koji koristimo za prijenos datoteka i drugih podataka. Gotovo svi BLE uređaji imaju klasičnu Bluetooth funkcionalnost povezanu s njim. Bluetooth koji se koristi u modulima poput HC-05 verzija je klasičnog Bluetootha koji se naziva Bluetooth SSP (protokol serijskog priključka), što znači da Bluetooth slijedi standardni serijski protokol koji olakšava slanje i primanje podataka bez puno troškova. Na kraju ovog vodiča naučit ćemo kako koristiti serijsku Bluetooth funkcionalnost u ESP32.
Ovdje ćemo u ovom članku upotrijebiti funkciju serijskog Bluetootha na ESP32 da bismo je uparili sa pametnim telefonom i upotrijebili bilo koju postojeću aplikaciju Bluetooth terminala iz trgovine Play za slanje naredbi na ESP32 i uključivanje LED diode u skladu s tim.
U kasnijim člancima obrađivat ćemo ESP32 BLE kao poslužitelj kao i klijent. BLE poslužitelj obično se koristi za slanje BLE podataka na druge Bluetooth uređaje, a BLE klijent koristi se za skeniranje drugih BLE uređaja pa djeluje kao svjetionik.
Priprema Arduino IDE-a za ESP32
Imajte na umu da Arduino IDE prema zadanim postavkama ne podržava ploču ESP32; morate ih preuzeti i instalirati pomoću upravitelja ploče. Ako je ovo vaš prvi program s ESP32, slijedite ovaj vodič za početak rada kako biste dodali ploču ESP32 na svoj Arduino i prenijeli testnu skicu.

Dalje, možete raditi više projekata s ESP32, bez upotrebe bilo kakvog mikrokontrolera.
Serijski Bluetooth program za ESP32
Kompletni program za prebacivanje LED diode pomoću ESP32 Bluetootha dan je na kraju ove stranice. Pod ovim naslovom, dopuštamo razbijanje koda na male isječke i pokušavanje razumijevanja. Ako ste već koristili druge Bluetooth module kao što je HC-05, tada biste primijetili da je ovaj primjer programa ESP32 Bluetooth Classic vrlo sličan.
Ideja programa je inicirati serijsku Bluetooth vezu pomoću ESP32 i preslušati podatke s uparenih uređaja. Ako su dolazni podaci '1', tada uključujemo LED, a ako je '0' trebali bismo isključiti LED. Naš program započinjemo dodavanjem datoteke zaglavlja BluetoothSerial zbog čega ESP32 Bluetooth radi kao Bluetoth SSP.
#include "BluetoothSerial.h" // Datoteka zaglavlja za serijski Bluetooth, bit će dodana prema zadanim postavkama u Arduino
Puno se stvari događa iza ove knjižnice, ali odlučili smo ne ulaziti duboko u nju kako bismo stvari pojednostavili. Sljedeća stvar koja nam treba je objekt za naše Bluetooth veze. Ovdje sam svoje nazvao ESP_BT , ali možete odabrati bilo koje ime.
BluetoothSerial ESP_BT; // Predmet za Bluetooth
Dalje, unutar funkcije void setup () . Mi početi Serial komunikacija s brzinom prijenosa od 9600 i inicijalizirati Bluetooth signal s imenom. Ovdje sam ga nazvao „ESP32_LED_Control “, to će biti ime koje će naš telefon pronaći pri pokušaju uparivanja. Konačno, ugrađeni LED pin proglasio sam izlaznim, jer ćemo ga prebaciti na temelju Bluetooth signala.
void setup () { Serial.begin (9600); // Pokreni serijski monitor u 9600 ESP_BT.begin ("ESP32_LED_Control"); // Naziv vašeg Bluetooth Signal Serial.println ("Bluetooth uređaj spreman je za uparivanje"); pinMode (LED_BUILTIN, OUTPUT); // Odredite da li se LED pin prikazuje }
Unutar funkcije beskonačne praznine , provjeravamo dolaze li podaci s Bluetooth modula, ako da, podaci se čitaju i pohranjuju u dolaznu varijablu. Ovu vrijednost također ispisujemo na serijski monitor samo da bismo provjerili što prima Arduino.
if (ESP_BT.available ()) // Provjeri primamo li nešto od Bluetootha { incoming = ESP_BT.read (); // Pročitajte što dobivamo Serial.print ("Received:"); Serial.println (dolazno);
Sad, god se podaci primili, pohranjuju se u ulaznu varijablu, tako da ovu varijablu možemo izravno usporediti s očekivanom vrijednošću i izvršiti traženu radnju. Ali vrijednost poslana s Bluetootha bit će u obliku znaka, a Arduino će pročitati decimalnu vrijednost znaka koji se šalje s telefona. U našem slučaju za char '0' decimalna vrijednost bit će 48, a za char '1' decimalna vrijednost bit će 49. Možete se pozvati na ASCII grafikon da biste razumjeli koja će biti decimalna vrijednost za svaki znak.
Ovdje smo usporedili dolaznu varijablu s 48 i 49 kako bismo provjerili 0 i 1. Ako je 1, isključujemo LED i također ispisujemo poruku potvrde natrag na Bluetooth govoreći da je LED bila isključena i obrnuto za 0.
if (dolazno == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED uključena"); } if (dolazno == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED isključen"); }
Testiranje serijskog Bluetootha s ESP32
Spojite svoj ESP s vašim Arduino IDE-om i odaberite ispravnu ploču i port kao što je opisano u vodiču za početak rada. Budući da je upravitelj odbora treće strane, možda će trebati malo više vremena da se kod kompajlira i prenese. Jednom preneseni, pokrenite serijske monitore (samo za otklanjanje pogrešaka) i otvorite Bluetooth postavku na telefonu. Trebali biste pronaći Bluetooth uređaj nazvan ESP32_LED_Control u paru s.

Sada možete otvoriti bilo koju aplikaciju Bluetooth terminala na svom pametnom telefonu, ja koristim onu pod nazivom "Bluetooth Terminal" koja je preuzeta iz Google App trgovine. Povežite Bluetooth aplikaciju s uređajem koji smo upravo uparili i upišite 1 i pritisnite send.

Modul ESP32 trebao bi ga primiti i uključiti LED prema našem programu, a također vam dati poruku o potvrdi da je LED UKLJUČEN kao što je prikazano na slici gore. Također možete provjeriti serijski monitor koji će prikazivati podatke koje ESP32 Bluetooth prima u decimalnom formatu koji je vaš Arduino, čitat će 48 za 0 i 49 za 1 kao što je ranije objašnjeno. Snimka mog prozora terminala prikazana je u nastavku.


Slično tome, trebali biste moći isključiti LED slanjem 0 iz mobilne aplikacije. Kompletan rad prikazan je u videu ispod. Nadam se da ste razumjeli tutorial i naučili nešto korisno. Ako sumnjate, slobodno ih ostavite u donjem odjeljku za komentare ili upotrijebite naše forume za drugu tehničku pomoć.

