Turinys:

Kaip naudoti „Bluetooth“(BLE) su ESP32: 3 veiksmai
Kaip naudoti „Bluetooth“(BLE) su ESP32: 3 veiksmai

Video: Kaip naudoti „Bluetooth“(BLE) su ESP32: 3 veiksmai

Video: Kaip naudoti „Bluetooth“(BLE) su ESP32: 3 veiksmai
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Rugsėjis
Anonim

##### PASTABA #####

Šioje instrukcijoje pateiktas metodas yra senas ir pasenęs. Norėdami sužinoti naujausią metodą, žiūrėkite šį vaizdo įrašą.

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

Nors ESP32 gali pasigirti plačiu funkcijų sąrašu („Wikipedia“), didžiausia akį traukianti savybė yra įmontuotas „Bluetooth“v4.2 su BLE palaikymu. Tačiau šis teiginys gali būti klaidinantis, nors aparatinė įranga yra, trūksta programinės įrangos palaikymo naudojant „Bluetooth“. (Jis kuriamas)

Tiems, kurie nežino, kas yra BLE, tai reiškia „Bluetooth Low Energy“. Tai „Bluetooth“protokolas, kuris žymiai sumažina energijos suvartojimą, palyginti su „klasikiniu“„Bluetooth“.

Šioje instrukcijoje aš jums parodysiu, kaip galite naudoti turimus ribotus (programinės įrangos) išteklius, norėdami siųsti duomenis iš ESP32 plokštės į savo telefoną per BLE.

Keletas atsisakymų…

Prieš tęsdami šį vadovą, turėčiau paminėti keletą dalykų.

1 pastaba: kai sakau, kad „Bluetooth“palaikymas dar nepasiekiamas, turiu omenyje „arduino“kūrimo aplinkoje.

Palaikymas gali būti prieinamas oficialiame SDK ir IDF, tačiau neradau jokių kompetentingų nurodymų.

2 pastaba: mano naudojamas metodas yra labai geras sprendimas, o ne kaip idealiai turėtų veikti BLE. Biblioteka palaiko paslaugų kūrimą BLE nėra skirta arduino aplinkai.

Vienintelis dalykas, kurį galite padaryti patikimai, yra sukurti švyturį, reklamuojantį jo pavadinimą. „YouTube“komentare buvo pasakyta labai elegantiškai: „LOL, žiaurus įsilaužimas. Bet ką tu gali padaryti?“

3 pastaba: Vienintelė duomenų rūšis, kurią galite siųsti, yra eilutė.

Galite labai gerai nuspręsti koduoti ir iššifruoti kitų tipų duomenis į eilutę ir iš jos, tačiau tai nepatenka į šio vadovo taikymo sritį.

1 žingsnis: pavyzdžio kūrimas

Image
Image
Sukūrimo pavyzdys
Sukūrimo pavyzdys
Sukūrimo pavyzdys
Sukūrimo pavyzdys
Sukūrimo pavyzdys
Sukūrimo pavyzdys

Jei esate čia tik dėl paaiškinimo, galite praleisti šį veiksmą, tačiau jį atlikę galite gauti šiek tiek daugiau aiškumo.

Pirmiausia ketinu sukurti pavyzdinį projektą, o tada pabandysiu paaiškinti, kaip jis veikia ir kaip galite atkartoti „Bluetooth“ryšį. Mes sukursime nešiojamą temperatūros jutiklį, kuris siunčia tiesioginį kanalą į jūsų išmanųjį telefoną. Konstrukcija gali veikti kelias dienas viename li-po ir lengvai parodo BLE naudą.

Modulį galite naudoti kaip padėkliuką, kad izoliuotumėte savo gėrimus ir gautumėte pranešimą, kai tik gėrimas pasieks optimalią temperatūrą. Nes būtų beprotiška, jei tektų gurkšnoti arbatą, kurios laipsnis viršija 40 laipsnių.

Vienintelė reikalinga įranga yra ESP32 plokštė ir skaitmeninis temperatūros jutiklis. Mano plokštė palaiko išorinę bateriją, todėl aš naudoju 3,7 V li-po, kurį išgelbėjau iš seno įrenginio, kad šis projektas būtų nešiojamas.

Techninė įranga

Temperatūros jutiklio jungtys yra paprastos. Raudona viela jungiasi prie 3.3v, juoda - prie žemės (gnd), geltona - prie GPIO 2, kuri mano lentoje pažymėta kaip D9. Prijunkite 4,7 kΩ rezistorių tarp raudonos ir geltonos vielos. Aš nenaudoju rezistoriaus, vietoj to naudoju 3 kontaktų kištukinį gnybtą, pateiktą kartu su jutikliu. Jis turi įmontuotą ištraukimo rezistorių.

„Li-po“tikrai turėtų būti prijungtas naudojant JST jungtį, bet man nepavyko jos nusipirkti, todėl tiesiog įkišau į jungtį (iš moterų į moterį) trumpiklius ir prijungiau kitą porą prie akumuliatoriaus gnybtų. Tai užtikrina patikimą ryšį ir laikiną maitinimo jungiklį.

Dabar kaip projekto korpusas naudoju polistirolo diską, iškirptą iš didesnio lapo. Tai yra puikus izoliatorius. Kitas daug mažesnis diskas įstrigo viršuje, bet šiek tiek į šoną. Tai skirta apvynioti papildomą laidų ilgį, kad jie nekabintų visoje vietoje. Gausiai panaudoję klijus ir nedidelę skylę jutiklio zondui, esate pasiruošę tęsti programinę įrangą.

Programinė įranga

Jei dar neįdiegėte „arduino IDE“, eikite į šią nuorodą ir atsisiųskite. Pagal numatytuosius nustatymus „arduino“programinė įranga nėra pateikiama su įvairių ESP32 plokščių plokščių apibrėžimais. Norėdami juos pasiekti, eikite į šią nuorodą ir atsisiųskite failus ZIP formatu. Turite juos išpakuoti į šią vietą:

C:/Vartotojai // Dokumentai/Arduino/hardware/espserrif/ESP32

Kur yra jūsų vartotojo vardas jūsų kompiuteryje. Įsitikinkite, kad įvairūs failai yra aplanke ESP32 ir nėra kitame aplanke.

Dabar, kai paleidžiate „arduino“programinę įrangą ir einate į „Tools-> plates“, slinkdami žemyn turėtumėte pamatyti įvairias ESP32 plokštes.

Dauguma skaitmeninių temperatūros jutiklių naudoja „OneWire“protokolą, kad galėtų bendrauti su mikrovaldikliais, todėl turime gauti biblioteką. Eikite į eskizą-> įtraukite biblioteką-> valdykite bibliotekas ir ieškokite „onewire“bei įdiekite biblioteką, kurioje yra per daug autorių. Jums nereikia vieno laido koncentratoriaus. Ignoruok tai.

Dabar galite atsisiųsti ir atidaryti prie šio veiksmo pridėtą kodą (temperatūra-example.ino).

Jei naudojate kitą jutiklį nei aš, turėsite atitinkamai pakeisti kodą. Pakeiskite kodą pagal getTemp (). Tiesiog grąžinkite galutinę temperatūrą

Grįžimas;

Kur yra plūdė, kurioje yra temperatūra.

Prijunkite plokštę, pasirinkite tinkamą plokštę ir prievadą iš įrankių ir paspauskite „Įkelti“.

Jei kodas atsisako įkelti, atjunkite jutiklį ir prijunkite GPIO 0 prie žemės. Atkurti ryšius po įkėlimo.

Jūsų ESP dabar turėtų šaukti pasauliui kavos temperatūrą, tačiau jums reikia žmogaus, kuris tai suprastų.

„Android“programa

Atsiprašome „iPhone“naudotojų (… tikrai ne).

Atsisiųskite „apk“iš čia ir įdiekite. Kai paleisite programą, būsite pasveikinti labai paprasta sąsaja.

Jei gaunate klaidos pranešimą, kuriame teigiama, kad „reklama nepalaikoma“, spustelėkite Gerai ir nekreipkite į tai dėmesio, bet jei gausite pranešimą, kad „BLE nepalaikomas“, jūsų telefone nėra „Bluetooth 4.0“ar naujesnės versijos ir jis negalės veikti programėlę.

Įsitikinkite, kad jūsų telefone įjungtas „Bluetooth“ir spustelėkite „Pradėti nuskaitymą“, jei esp yra diapazone ir įjungtas, turėtumėte gauti tam tikrą temperatūros vertę.

Galimos klaidos:

  • -1000:: Tai reiškia, kad jūsų įrenginys negalėjo rasti ESP. įsitikinkite, kad „Bluetooth“įjungtas, ir pabandykite iš naujo paleisti ESP.
  • SNA:: Tai reiškia, kad jūsų telefonas gauna duomenis iš ESP, tačiau pats ESP nerado GPIO 2 temperatūros jutiklio. Įsitikinkite, kad jungtys yra saugios, ir įsitikinkite, kad naudojate teisingos vertės rezistorių. Dar kartą patikrinkite savo plokštės schemas, ar esate prisijungę prie GPIO 2, o ne kaiščio, pažymėto kaip D2.

2 žingsnis: paaiškinimas

Paprastai BLE veikia taip, kad įrenginys savo pavadinimą reklamuoja kaip švyturėlį, šį pavadinimą gali matyti visi ir jis naudojamas įrenginiui identifikuoti. Tada įrenginys gali sukurti įvairias paslaugas, kurias mato kiti prisijungę prie jo. Šios paslaugos gali turėti skirtingus duomenų srautus.

Pavyzdžiui, pvz. Prietaisas, pavadintas „Meteorologinė stotis“, gali būti aptarnaujamas kaip „Temperatūra“, „Drėgmė“ir „Vėjas“. Kai kitas BLE įrenginys, pavyzdžiui, jūsų išmanusis telefonas, ieško įrenginių, jis pamatys orų stotį ir prisijungęs prie jos galės priimti duomenų srautus pagal atitinkamas paslaugas.

Šiuo metu prieinamos bibliotekos (ESP32) leidžia mums sukurti švyturį, kurį gali atrasti kiti, tačiau tai yra apimtis. Negalime kurti paslaugų ir prie jo neprisijungti jokie įrenginiai.

Taigi kaip aš siunčiu duomenis nesukurdamas paslaugų, naudodamas metodą, panašią į „WiFi“protokolą, vadinamą „Beacon Stuffing“. Tai reiškia, kad duomenis, kuriuos reikia siųsti, įtraukiu į patį švyturėlio pavadinimą. Tai leidžia man reklamuoti duomenis nereikalaujant kitų įrenginių prisijungti prie švyturėlio.

ble.begin (švyturysMsg); // beaconMsg yra reklamuojamas pavadinimas

Mes naudojame „SimpleBLE“biblioteką, kad sukurtume švyturį su jo pavadinimu ESP formatu. Kai pavadinimo pradžioje „ESP“visada lieka nepakitęs ir kas 100 milisekundžių pakeičiamas naujausiais duomenimis, kuriuos grąžina funkcija getValue ().

float getValue () {return sensorValue;}

„Android“programa ieško BLE įrenginių pavadinimų, prasidedančių „ESP“, radusi, ji padalija pavadinimą ir rodo tik pabaigos duomenis.

Bendravimas yra tik vienas būdas, programa nieko nesiunčia atgal.

3 žingsnis: Išvada

Dienos pabaigoje šis metodas nepakeičia tinkamai įdiegtos BLE bibliotekos, tačiau gali pakakti, kad kai kurie projektai būtų baigti tol, kol „Arduino“gaus visišką BLE palaikymą. Tikimės, kad ši instrukcija jums šiek tiek padėjo.

DIDELIS Ačiū DFRobot.com, kad atsiuntė man šiuos produktus:

  • ESP32 „FireBeetle“lenta
  • „FireBeetle“išplėtimo skydas
  • DS18B20 temperatūros jutiklis

Neseniai radau šią biblioteką. „ReadME“teigia, kad galite prisijungti prie kitų BLE įrenginių, kad gautumėte duomenų (negalite reklamuoti savęs). Nebandžiau, bet jei domina, galite patikrinti.

Projekto vaizdo įrašą galite peržiūrėti: „YouTube“

Rekomenduojamas: