Esptop 10 ble tutorial ved hjelp av arduino ide

Esptop 10 ble tutorial ved hjelp av arduino ide
ESP32 er et IoT-basert mikrokontrollertavle som følger med forhåndsinstallert WiFi og Dual Bluetooth. Både WiFi og Bluetooth spiller en avgjørende rolle mens du utveksler data mellom enheter over trådløs kommunikasjon.

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:

  • Punkt til punkt: Kommunikasjon mellom to punkter eller noder som er server og klient.
  • Kringkastingsmodus: Serveren overfører data til mange enheter.
  • Mesh Network: Flere enheter tilkoblet også kjent som mange til mange tilkoblinger.

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:

  • Erklæring: Karakteristiske egenskaper som plassering, skriv, les, skriv og varsler.
  • Karakteristisk verdi: Dataverdi av karakteristikk.

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-56048FD88B25

En 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.

#inkludere
#inkludere
#inkludere
#define Service_uuid "4FAFC201-1FB5-459E-8FCC-C5C9C331914B"
#Define karakteristikk_uuid "BEB5483E-36E1-4688-B7F5-EA07361B26A8"
void setup ()
Serie.Begin (115200);
Serie.Println ("Start Ble Work!");
BleDevice :: init ("ESP32");
Bleserver *PSERVER = BLEDEVICE :: CREATESERVER ();
Bleservice *Pservice = Pserver-> CreateService (Service_uuid);
Blecharacteristic *pCharacteristic = Pservice-> CreateCharacteristic (
Karakteristisk_uuid,
Blecharacteristics :: Property_read |
Blecharacteristics :: Property_write
);
Pcharacteristic-> setValue ("Hallo Si Linuxhint.com ");
Pservice-> start ();
// BLEADVERTISING*PADVERTISING = PSERVER-> getAdDadVertising ();/*Bakre kompatibilitet*/
BLEADVERTISING *PADVERTISING = BLEDEVICE :: getAdDadVertising ();
Padvertising-> addServiceUUID (Service_uuid);
padvertising-> setScanResponse (true);
Padvertising-> setMinpreferred (0x06); // funksjoner for iPhone -tilkobling
Padvertising-> setMinpreferred (0x12);
BleDevice :: startadVertising ();
Serie.Println ("Karakteristikk definert! Ble server klar ");

void loop ()
forsinkelse (2000);

Koden 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

#inkludere
#inkludere
#inkludere
#inkludere
int -snaut = 5; // på sekunder
Blescan* pblescan;
klasse MyAdnertisedDeviceCallbacks: Public BleadvertisedDeviceCallbacks
void onResult (BleadvertisedDevice annonsertDevice)
Serie.printf ("Annonsert enhet: %s \ n", annonsert innhold.toString ().c_str ());

;
void setup ()
Serie.Begin (115200);
Serie.println ("skanning ...");
BleDevice :: init ("");
Pblescan = BleDevice :: getScan (); // Lag ny skanning
pBlescan-> setAdDeDisedDeviceCallbacks (New MyAdDeDisedDeviceCallbacks ());
pblescan-> setActivesCan (true); // rask skanning, men mer kraft brukt
Pblescan-> setInterval (100);
Pblescan-> setWindow (99);

void loop ()
// legg hovedkoden din her, for å kjøre gjentatte ganger:
BlescanResults FoundDevices = Pblescan-> Start (Scantime, False);
Serie.print ("enheter funnet:");
Serie.Println (FoundDevices.getCount ());
Serie.println ("skanning gjort!");
Pblescan-> clearResults (); // Slett resultater for å frigjøre minne
forsinkelse (2000);

Over 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.CPP

Husk å 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)
m_padvertisedDeviceCallbacks-> onresult (*annonsertDevice);

hvis (!m_wantduplicates && !funnet)
m_scanResults.M_Vector AdvertisedDevices.Sett inn (STD :: Pair (AdvertisedAddress.toString (), annonsertDevice));
burde delete = falsk;

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* /
#inkludere
#inkludere
#define service_uuid "A484A399-7272-4282-91CF-9018E075FC35"
#Define karakteristikk_uuid "C7E084BD-5279-484D-8319-FFF7D917537D"
Klasse MyCallbacks: Offentlige BlecharacteristicCallbacks

void onwrite (Blecharacteristic *pcharacteristic)

std :: strengverdi = pCharacteristic-> getValue ();
hvis (verdi.lengde ()> 0)

Serie.print ("Oppdatert karakteristisk verdi:");
for (int i = 0; i Createservice (Service_uuid);
Blecharacteristic *pCharacteristic = Pservice-> CreateCharacteristic (
Karakteristisk_uuid,
Blecharacteristics :: Property_read |
Blecharacteristics :: Property_write
);
pCharacteristic-> setCallbacks (nye MyCallbacks ());
Pcharacteristic-> setValue ("Linuxhint.Com ");
Pservice-> start ();
BLEADVERTISING *PADVERTISING = PSERVER-> getAdDadStising ();
Padvertising-> start ();

ugyldig sløyfe ()

forsinkelse (2000);

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.