ESP32 har støtte for både Bluetooth Classic og Bluetooth lav energi. Her vil vi fokusere på Bluetooth -lav energi. La oss se det i detalj.
Hva er Bluetooth lav energi
Ble eller Bluetooth lav energi er en strømsparingsmodus for Bluetooth. Den viktigste applikasjonen inkluderer dataoverføring over korte avstander som dørinngang, smarte klokker, bærbare, blodtrykksmonitor, sikkerhet og hjemmeautomatiseringer. BLE kan overføre begrensede data.
I motsetning til Bluetooth -klassiker som forblir slått på for hele tiden, forblir BLE i søvnmodus, bortsett fra når den kalles eller tilkoblingen startes. Dette gjør BLE veldig kraft effektiv og bruker 100 ganger mindre kraft enn den klassiske.
Her er en kort sammenligning av Bluetooth -klassiker med Bluetooth lav energi:
Spesifikasjon | Bluetooth Classic | Bluetooth lav energi/ble |
Dataoverføringshastighet | 2-3Mbps | 1 Mbps |
Område | ~ 10-100m | ~ 50m |
Driftsfrekvens | 79 Rf | 40 RF |
Topp strømforbruk | ~ 30MA | <15mA |
Strømforbruk | 1W | 0.01-0.5W |
Total tid til å sende data | 100ms | 3ms |
applikasjoner | Audio, musikkstrømming | Sensor, wearables |
For en mer detaljert sammenligning, klikk her for å besøke det offisielle Bluetooth -nettstedet.
Ble server og klient
Bluetooth Low Energy støtter enheten på to forskjellige måter: server og klient. ESP32 kan fungere som server så vel som klient for Bluetooth med lav energi.
Ble støtte følgende kommunikasjonsmåter:
Når du fungerer som server, annonserer ESP32 sin eksistens til klientenheter i nærheten. Når klientenhetene skanner etter tilgjengelige Bluetooth -enheter, etablerer serveren forbindelse mellom dem og overfører dataene fra server til klientenhet. Denne kommunikasjonen kalles punkt til punkt.
I denne opplæringen vil vi ta et eksempel på punkt-til-punkt-kommunikasjon mellom to ESP32-brett.
Viktige vilkår i BLE
Her er noen viktige begrep som man bør vite mens man jobber med ESP32 BLE -applikasjoner:
GATT: GATT eller generiske attributter som definerer en hierarkisk struktur for dataoverføringer mellom BLE -enheter ved bruk av tjeneste og karakteristikk. Den definerer måten to enheter kommuniserer data mellom dem.
Ble tjeneste: Toppnivå inne i GATT -hierarkiet er en profil som inneholder en eller flere tjenester. BLE inneholder mer enn en enkelt tjeneste. Hver av disse tjenestene har sine egne egenskaper som også kan fungere som referanse for andre tjenester.
Ble karakteristisk: Karakteristikk er en gruppe informasjon som alltid er eid etter tjeneste; Det er der faktiske data lagres i hierarki (verdi). Den inneholder alltid to attributter:
Uuid: UUID (universelt unik identifikator) er en unik ID gitt til en tjeneste og karakteristikk. Det er en unik 128-bits ID som kan genereres ved hjelp av en hvilken som helst online UUID-generator. Sjekk denne gratis UUID -generatoren. En prøve UUID ser slik ut:
583F8B30-74B4-4757-8143-56048FD88B25En Universal Bluetooth Special Interest Group (SIG) har forhåndsdefinert noen av de forkortede UUID -ene for forskjellige typer tjenester og profil for å lese dem klikk her.
Sett opp BLE i ESP32 med Arduino Ide
For å forstå arbeidet med BLE vil vi bruke to forskjellige ESP32 -brett, en av dem vil fungere som server og annonsere et Bluetooth -signal mens den andre ESP32 som fungerer som en klient vil prøve å koble serveren Bluetooth.
Arduino IDE har separate eksempler for både skanner og server.
For å se hvordan du installerer en ESP32 med Arduino IDE i Windows, klikk her.
ESP32 BLE -server
Først vil vi laste opp servereksempelkode i vårt første ESP32 -brett som fungerer som en server.
For å åpne BLE -servereksemplet, gå til: Fil> Eksempler> ESP32 ble arduino> ble_server:
Den gitte koden nedenfor vil bli åpnet i Arduino IDE.
Serverkode
Last opp koden nedenfor i ESP32 -kortet ved hjelp av Arduino IDE. Men sørg for å koble fra det andre styret en stund for å unngå å laste opp den samme koden til et enkelt brett.
#inkludereKoden starter med å inkludere nødvendige Bluetooth -bibliotekfiler. Da er UUID definert for både tjeneste og karakteristisk. Du kan gå med standard UUID eller kan generere ved hjelp av gratis UUID -generatoren. Neste seriell kommunikasjon initialiseres ved å definere baudfrekvens.
Neste, vi opprettet en BLE -enhet som heter ESP32. Etter det definerte vi BLE -enheten som en server ved hjelp av CreateServer () funksjon og senere setter vi den karakteristiske verdien. På det siste trinnet startet vi tjenesten ved å annonsere den slik at andre enheter kan søke etter den.
ESP32 ble skanner
Nå vil vi laste opp et ESP32 -skanneeksempel i det andre ESP32 -styret. Å gjøre dette gå til: Fil> Eksempler> ESP32 ble arduino> ble_scan
Koden nedenfor vil være åpen i Arduino IDE -redaktør.
Skannerkode
#inkludereOver koden vil søke etter antall totale tilgjengelige enheter for BLE og vise deres totale telling med adresser. Etter å ha lastet opp koden i ESP32 Scanner Board, trykk på Muliggjøre Button, ESP32 -styret vil automatisk søke etter tilgjengelige enheter.
Produksjon
Når ESP32 skanner de tilgjengelige enhetene, vises følgende resultat. Her skannet ESP32 9 enheter som en er et ESP32 -brett med BLE_Server -kode og en annen enhet er MI Band 6. Resten av alle enhetene er tilgjengelige i nærheten av ESP32.
Hvordan fikse ESP32 ble skannebibliotek ikke telle enheter
ESP32 Scan Library -eksemplet har en feil om å ikke telle det totale antallet enheter. For å rette opp dette problemet, gå til det nevnte stedet og erstatt koden gitt nedenfor.
C: \ Brukere \ Brukernavn \ AppData \ Local \ Arduino15 \ Pakker \ ESP32 \ Maskinvare \ ESP32 \ 1.0.6 \ biblioteker \ ble \ src \ blescan.CPPHusk å Unhide Alle mappene fordi AppData -mappen i C -katalogen forblir skjult som standard. Etter å ha åpnet Ble_Scan -kildefilen .CPP Bytt ut den gitte tilstanden nedenfor inne i koden.
if (m_padvertisedDeviceCallbacks)Testing ESP32 ble server med smarttelefon
De fleste av de moderne smarttelefonene jobber med BLE -teknologi for å kommunisere med forskjellige enheter som smartwatch, wearables, sensorer og andre hjemmeautomatiseringsenheter. Her vil ESP32 -styret fungere som et tilgangspunkt. Så vi vil koble en Android -telefon med et ESP32 -brett.
BLE serverkode for ESP32 smarttelefontilgang
Last opp nedenfor gitt kode i ESP32 -styret.
#include /*Bluetooth -bibliotek inkludert* /Installere BLE -applikasjonen i Android -smarttelefon
Følgende trinn vil lede deg til å installere BLE -applikasjoner i smarttelefoner og hjelpe til med å grensesnitt mobile enheter med ESP32 -tavler.
Trinn 1: Åpne Google Play Store Install Ble skanner applikasjon.
Steg 2: Etter å ha installert, åpner du applikasjonen og tillater all nødvendig tillatelse og husk å slå på Mobile Bluetooth.
Trinn 3: Skann nå etter tilgjengelige Bluetooth -enheter. Koble til ESP32 Board.
Trinn 4: Når ESP32 -brettet er koblet til smarttelefon etter spesifikasjon av ESP32 -brettet, vises. Her kan vi se UUID -adressene og kan lese og skrive nye karakteristiske verdier.
Trinn 5: For å lese den lagrede karakteristiske verdien klikk R. Resultatet vises.
Trinn 6: For å skrive en ny karakteristisk verdi klikk W.
Trinn 7: En ny popup vises her vi kan skrive hvilken som helst karakteristisk verdi og klikke Ok.
Trinn 8: Ny verdi som er skrevet vil vises.
Trinn 9: Vi kan også se den samme nye karakteristiske verdien som er trykt på seriemonitoren til Arduino IDE.
Vi har koblet sammen en enhet med ESP32 BLE.
Konklusjon
ESP32 kommer med dobbel Bluetooth som er klassisk og lav energi. Her i denne artikkelen diskuterte vi BLE og dens forskjellige applikasjoner og fungerer. Senere konfigurerte vi BLE med to forskjellige ESP32 -tavler med en som fungerer som server og annen som skanner. Til slutt koblet vi smarttelefonen vår med ESP32 -serveren og skrev en ny karakteristisk verdi.