INHOUDSOPGAWE:

Hoe om Bluetooth (BLE) te gebruik met ESP32: 3 stappe
Hoe om Bluetooth (BLE) te gebruik met ESP32: 3 stappe

Video: Hoe om Bluetooth (BLE) te gebruik met ESP32: 3 stappe

Video: Hoe om Bluetooth (BLE) te gebruik met ESP32: 3 stappe
Video: Как подключить встроенный Bluetooth ESP32 к смартфону 2024, November
Anonim

##### NOTA #####

Die metode wat in hierdie instruksies getoon word, is oud en verouderd. Kyk na hierdie video vir die nuutste metode.

###############

Terwyl die ESP32 spog met 'n uitgebreide funksielys (Wikipedia), is die ingeboude Bluetooth v4.2 met BLE-ondersteuning die grootste kenmerk. Maar die stelling kan misleidend wees, terwyl die hardeware daar is, ontbreek die sagteware -ondersteuning vir die gebruik van Bluetooth. (Dit is in ontwikkeling)

Vir diegene wat nie weet wat BLE is nie, staan dit vir Bluetooth Low Energy. Dit is 'n Bluetooth -protokol wat 'n aansienlik laer kragverbruik verhoog in vergelyking met 'klassieke' Bluetooth.

In hierdie instruksies sal ek u wys hoe u die beperkte (sagteware) hulpbronne tot u beskikking kan gebruik om data vanaf 'n ESP32 -bord oor BLE na u telefoon te stuur.

'N Paar vrywarings …

'N Paar opmerkings wat ek moet noem voordat u verder gaan met hierdie gids.

Opmerking 1: As ek sê dat Bluetooth -ondersteuning nog nie beskikbaar is nie, bedoel ek in die arduino -ontwikkelingsomgewing.

Die ondersteuning is heel moontlik beskikbaar in die amptelike SDK sowel as in die IDF, maar ek het geen bekwame instruksies daarvoor gekry nie.

Opmerking 2: Die metode wat ek gebruik, is in werklikheid 'n oplossing, en nie hoe BLE die ideaal is om te werk nie. Die biblioteekondersteuning vir die skep van dienste in BLE is nie hier vir die arduino -omgewing nie.

Die enigste ding wat u betroubaar kan doen, is om 'n baken te skep wat sy naam adverteer. 'N Opmerking op YouTube stel dit baie elegant: "LOL, 'n wrede hack. Maar wat kan jy doen?"

Nota 3: Die enigste soort data wat u kan stuur, is string.

U kan heel moontlik besluit om ander soorte data van en na string te kodeer en te ontsyfer, maar dit is buite die omvang van hierdie gids.

Stap 1: Die voorbeeld bou

Image
Image
Die voorbeeld bou
Die voorbeeld bou
Die voorbeeld bou
Die voorbeeld bou
Die voorbeeld bou
Die voorbeeld bou

As u net hier is vir die verduideliking, kan u hierdie stap oorslaan, maar as u daardeur gaan, kan u 'n bietjie meer duidelikheid gee..

Eers gaan ek 'n voorbeeldprojek bou, en dan sal ek probeer verduidelik hoe dit werk en hoe u die Bluetooth -kommunikasie kan herhaal. Ons bou 'n draagbare temperatuursensor wat 'n lewendige voer na u slimfoon stuur. Die opbou kan dae lank op 'n enkele li-po werk en toon maklik die voordele van BLE aan.

U kan die module as 'n onderlegger gebruik om u drankies te isoleer en 'n kennisgewing te ontvang sodra u drank die optimale temperatuur bereik. Omdat dit 'n travestie sou wees as u 'n tee moes drink wat 'n graad bo 40 was.

Die enigste hardeware wat u benodig, is 'n ESP32 -bord en 'n digitale temperatuursensor. My bord ondersteun 'n eksterne battery, en ek gebruik 'n 3.7v li-po wat ek van 'n ou toestel gered het om hierdie projek draagbaar te maak.

Hardeware

Die verbindings vir die temperatuursensor is eenvoudig. Die rooi draad sluit aan op 3.3v, swart verbind met grond (gnd), geel verbind met GPIO 2 wat op my bord gemerk is as D9. Koppel 'n weerstand van 4.7k ohm tussen die rooi en geel draad. Ek gebruik nie die weerstand nie, maar ek gebruik 'n 3-polige aansluiting wat by my sensor kom. Dit het 'n ingeboude optrekweerstand.

Die li-po moet regtig met 'n JST-aansluiting gekoppel word, maar ek kon nie die moeite doen om een te koop nie, en ek het net 'n paar (vroulike tot vroulike) springkabels in die aansluiting vasgemaak en nog 'n paar aan die batteryklemme gesoldeer. Dit sorg vir 'n betroubare verbinding en 'n tydelike skakelaar.

As 'n projekomhulsel gebruik ek 'n piepschuimskyf wat uit 'n groter vel gesny is. Dit sorg vir 'n uitstekende isolator. Nog 'n baie kleiner skyf sit bo -op vas, maar 'n bietjie aan die kant. Dit is bedoel om die ekstra lengte drade te draai sodat hulle nie oral hang nie. Na 'n ruim gebruik van u gom en 'n klein gaatjie vir die sensorsonde, is u gereed om na die sagteware te gaan.

Sagteware

As u nog nie die arduino IDE geïnstalleer het nie, gaan dan na hierdie skakel om dit af te laai. Die arduino -sagteware bevat standaard nie die borddefinisies vir die verskillende ESP32 -borde nie. Om hulle te laat gaan, laai hierdie skakel af en laai die lêers in 'n zip af. U moet dit na die volgende plek uitpak:

C:/Gebruikers // Dokumente/Arduino/hardware/espserrif/ESP32

Waar is u gebruikersnaam op u rekenaar. Maak seker dat die verskillende lêers onder die ESP32 -lêergids beskikbaar is en nie onder 'n ander gids nie.

As u nou die arduino-sagteware begin en na gereedskap-> borde gaan, moet u verskillende ESP32-borde sien as u afrol.

Die meeste digitale temperatuursensors gebruik die OneWire -protokol om met die mikrobeheerders te kommunikeer, sodat ons die biblioteek moet kry. Gaan na skets-> sluit biblioteek in-> bestuur biblioteke en soek na onewire en installeer die biblioteek wat te veel skrywers het. U het nie die onewire -hub nodig nie. Ignoreer dit.

Nou kan u die kode wat aan hierdie stap geheg is, aflaai en oopmaak (temperatuur-voorbeeld.ino).

As u 'n ander sensor as ek gebruik, moet u die kode dienooreenkomstig verander. Vervang die kode onder getTemp (). Gee net die finale temperatuur terug in die vorm van

Terugkeer;

Waar is die vlotter wat die temperatuur bevat?

Sluit die bord aan, kies die korrekte bord en poort onder die gereedskap en druk oplaai.

As die kode weier om op te laai, ontkoppel die sensor en koppel die GPIO 0 aan op die grond. Herstel die verbindings na die oplaai.

U ESP moet nou die temperatuur van u koffie na die wêreld skree, maar u het iemand nodig wat dit kan verstaan.

Die Android -app

Jammer iPhone -gebruikers (… nie regtig nie).

Laai die APK hier af en installeer dit. As u die app begin, word u begroet met 'n baie eenvoudige koppelvlak.

As u 'n foutboodskap kry wat sê 'advertensies word nie ondersteun nie', klik dan op OK en ignoreer dit, maar as u 'n boodskap kry dat 'BLE nie ondersteun word' nie, het u telefoon nie Bluetooth 4.0 of hoër nie en kan dit nie werk nie die app.

Maak seker dat Bluetooth op u telefoon aan is en klik op 'Begin skandering', solank die ESP binne bereik is en aangeskakel is, moet u 'n temperatuurwaarde kry.

Moontlike foute:

  • -1000:: Dit beteken dat u toestel nie die ESP kon vind nie. maak seker dat Bluetooth aan is en probeer om die ESP weer te begin.
  • SNA:: Dit beteken dat u telefoon data van die ESP ontvang, maar die ESP self kon nie 'n temperatuursensor op die GPIO vind nie 2. Maak seker dat die verbindings veilig is, kyk of u 'n weerstand van die korrekte waarde gebruik. Kontroleer met u bordskemas of u aan die GPIO 2 gekoppel is en nie 'n speld gemerk as D2 nie.

Stap 2: Die verduideliking

Hoe BLE normaalweg werk, is dat 'n toestel sy naam soos 'n baken adverteer; hierdie naam kan deur almal gesien word en word gebruik om die toestel te identifiseer. Dan kan die toestel verskillende dienste skep wat deur ander mense gesien word wanneer hulle daarby aansluit. Hierdie dienste kan verskillende datastrome hê.

Vir bv. 'N Toestel met die naam' Weerstasie 'kan daaronder gedien word soos' temperatuur ',' humiditeit 'en' wind '. As 'n ander BLE -toestel soos u slimfoon na toestelle soek, sien dit die weerstasie, en as dit daarby aansluit, kan dit die datastrome ontvang wat ooreenstem met die verskillende dienste.

Met die biblioteke (vir die ESP32) wat ons tans beskikbaar het, kan ons 'n baken skep wat ander kan ontdek, maar dit is die omvang daarvan. Ons kan nie dienste skep nie, en geen toestel kan daarmee aansluit nie.

Dus, hoe ek data stuur sonder om dienste te skep, is deur 'n tegniek te gebruik wat soortgelyk is aan die WiFi -protokol genaamd Beacon Stuffing. Dit beteken dat ek data insluit wat binne die bakennaam self gestuur moet word. Dit stel my in staat om data te adverteer sonder dat ander toestelle aan die baken moet koppel.

ble.begin (bakenMsg); // beaconMsg is die geadverteerde naam

Ons gebruik die SimpleBLE -biblioteek om 'n baken met sy naam in die formaat van ESP te skep. Waar 'ESP' altyd onveranderd bly aan die begin van die naam en word vervang met die nuutste data wat deur die getValue () -funksie elke 100 millisekondes teruggestuur word.

float getValue () {return sensorValue;}

Die Android -app soek na BLE -toestelname wat begin met 'ESP', sodra dit gevind is, verdeel dit die naam en word slegs die data van die einde af vertoon.

Die kommunikasie is slegs een manier; die app stuur niks terug nie.

Stap 3: Gevolgtrekking

Aan die einde van die dag kan hierdie metode nie 'n plaasvervanger vir 'n behoorlik geïmplementeerde BLE -biblioteek wees nie, maar dit kan genoeg wees om 'n paar projekte af te lê totdat die volledige BLE -ondersteuning na Arduino kom. Hopelik was hierdie instruksies vir u van hulp.

'N GROOT dankie aan DFRobot.com dat u hierdie produkte vir my gestuur het:

  • ESP32 FireBeetle Board
  • FireBeetle Expantion Shield
  • DS18B20 Temperatuursensor

Ek het onlangs hierdie biblioteek gevind. Die ReadME beweer dat u met ander BLE -toestelle kan skakel om data te ontvang (kan nie self adverteer nie). Ek het dit nie probeer nie, maar as u belangstel, kan u dit besoek.

U kan die projekvideo kyk op: YouTube

Aanbeveel: