Cuprins:

Cum se utilizează Bluetooth (BLE) cu ESP32: 3 pași
Cum se utilizează Bluetooth (BLE) cu ESP32: 3 pași

Video: Cum se utilizează Bluetooth (BLE) cu ESP32: 3 pași

Video: Cum se utilizează Bluetooth (BLE) cu ESP32: 3 pași
Video: Placă dezvoltare WIFI + Bluetooth ESP32 2024, Septembrie
Anonim

#####NOTĂ#####

Metoda prezentată în acest Instructables este veche și învechită. Urmăriți acest videoclip pentru cea mai recentă metodă.

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

În timp ce ESP32 se mândrește cu o listă extinsă de caracteristici (Wikipedia), cea mai mare caracteristică care atrage atenția este Bluetooth v4.2 încorporat cu suport BLE. Dar această afirmație poate fi înșelătoare, în timp ce hardware-ul este acolo, suportul software pentru utilizarea Bluetooth lipsește. (Este în curs de dezvoltare)

Pentru cei care nu știu ce este BLE, acesta înseamnă Bluetooth Low Energy. Este un protocol bluetooth care crește consumul de energie considerabil mai mic în comparație cu Bluetooth „clasic”.

În acest Instructables vă voi arăta cum puteți utiliza resursele limitate (software) la dispoziția dvs. pentru a trimite date de pe o placă ESP32 pe telefonul dvs. prin BLE.

Câteva declinări de responsabilitate …

Câteva lucruri de remarcat pe care ar trebui să le menționez înainte de a continua cu acest ghid..

Notă 1: Când spun că suportul Bluetooth nu este încă disponibil, mă refer la mediul de dezvoltare arduino.

Suportul poate fi foarte bine disponibil în SDK-ul oficial, precum și în IDF, dar nu am găsit nicio instrucțiune competentă pentru acestea.

Notă 2: Metoda pe care o folosesc este o soluție și nu modul în care ar trebui să funcționeze BLE în mod ideal. Biblioteca suportată pentru crearea de servicii în BLE nu este aici pentru mediul arduino.

Singurul lucru pe care îl puteți face în mod fiabil este să creați un Beacon care să-și promoveze numele. Un comentariu de pe YouTube a spus-o foarte elegant: "LOL, un hack brutal. Dar ce poți face?"

Notă 3: Singurul tip de date pe care le puteți trimite este șirul.

S-ar putea foarte bine să decideți să codificați și să decodificați alte tipuri de date către și de la șir, dar acest lucru depășește sfera acestui ghid.

Pasul 1: Construirea exemplului

Image
Image
Exemplul Build
Exemplul Build
Exemplul Build
Exemplul Build
Exemplul Build
Exemplul Build

Dacă sunteți doar aici pentru explicație, atunci puteți sări peste acest pas, dar parcurgerea acestuia ar putea să vă ofere ceva mai multă claritate..

Mai întâi voi construi un exemplu de proiect și apoi voi încerca să explic cum funcționează și cum puteți replica comunicația Bluetooth. Vom construi un senzor de temperatură portabil care să trimită un flux live către smartphone-ul dvs. Construcția poate rula zile întregi pe un singur li-po și demonstrează cu ușurință beneficiile BLE.

Puteți utiliza modulul ca un coaster pentru a vă izola băuturile și pentru a primi o notificare de îndată ce băutura dvs. atinge temperatura optimă. Pentru că ar fi o greșeală dacă ar fi să bei un ceai cu un grad peste 40.

Singurul hardware de care aveți nevoie este o placă ESP32 și un senzor digital de temperatură. Placa mea acceptă bateria externă, așa că folosesc un li-po de 3.7v pe care l-am recuperat de pe un dispozitiv vechi pentru a face acest proiect portabil.

Hardware

Conexiunile pentru senzorul de temperatură sunt simple. Sârmă roșie se conectează la 3.3v, negru se conectează la masă (gnd), galben se conectează la GPIO 2 care pe placa mea este marcat ca D9. Conectați un rezistor de 4,7 k ohm între firul roșu și galben. Nu folosesc rezistența, în schimb, folosesc un terminal cu 3 pini conectat la senzor. Are un rezistor încorporat.

Li-po-ul ar trebui să fie conectat într-adevăr folosind un conector JST, dar nu m-aș putea deranja să cumpăr unul, așa că am pus doar câteva cabluri jumper (de la feminin la feminin) în conector și am lipit o altă pereche la bornele bateriei. Acest lucru asigură o conexiune fiabilă și un comutator de alimentare improvizat.

Acum, ca o incintă de proiect, folosesc un disc din Styrofoam care a fost decupat dintr-o foaie mai mare. Acest lucru face ca un izolator excelent. Un alt disc mult mai mic este blocat deasupra, dar puțin lateral. Aceasta este pentru a înfășura lungimea suplimentară a firelor, astfel încât acestea să nu atârne peste tot. După o utilizare generoasă a adezivului și o mică gaură pentru sonda senzorului, sunteți gata să treceți la software.

Software

Dacă nu aveți deja ID-ul arduino instalat, accesați acest link pentru al descărca. Software-ul arduino în mod implicit nu vine cu definițiile plăcii pentru diversele plăci ESP32. Pentru a-i determina să acceseze acest link și să descarce fișierele într-un fișier zip. Trebuie să le dezarhivați în această locație:

C: / Utilizatori // Documente / Arduino / hardware / espserrif / ESP32

Unde este numele dvs. de utilizator pe computerul dvs. Asigurați-vă că diferitele fișiere sunt disponibile sub folderul ESP32 și nu se află sub alt folder.

Acum, dacă porniți software-ul arduino și mergeți la instrumente-> plăci, ar trebui să vedeți diverse plăci ESP32 când derulați în jos.

Majoritatea senzorilor de temperatură digitale utilizează protocolul OneWire pentru a comunica cu microcontrolerele, deci trebuie să obținem biblioteca. Accesați schiță-> includeți bibliotecă-> gestionați bibliotecile și căutați onewire și instalați biblioteca care este prea mult autorii. Nu aveți nevoie de hub-ul onewire. Ignora.

Acum puteți descărca și deschide codul atașat la acest pas (temperature-example.ino).

Dacă utilizați un senzor diferit de mine, va trebui să modificați codul în consecință. Înlocuiți codul sub getTemp (). Întoarceți temperatura finală sub formă de

Întoarcere;

Unde este plutitorul care conține temperatura.

Conectați placa, selectați placa și portul corecte din sub instrumente și apăsați încărcare.

Dacă codul refuză încărcarea, deconectați senzorul și conectați GPIO 0 la masă. Restabiliți conexiunile după încărcare.

ESP-ul tău ar trebui să țipe acum temperatura cafelei către lume, dar ai nevoie de cineva care să o înțeleagă.

Aplicația Android

Ne pare rău utilizatorii de iPhone (… nu chiar).

Descărcați apk de aici și instalați-l. Când porniți aplicația, veți fi întâmpinat cu o interfață foarte simplă.

Dacă primiți un mesaj de eroare care spune „publicitatea nu este acceptată”, faceți clic pe OK și ignorați-o, dar dacă primiți mesajul „BLE nu este acceptat”, atunci telefonul dvs. nu are Bluetooth 4.0 sau o versiune ulterioară și nu ar putea rula aplicația.

Asigurați-vă că funcția Bluetooth de pe telefon este activată și dați clic pe „Începeți scanarea”, atâta timp cât ESP este în raza de acțiune și este pornit, ar trebui să primiți o anumită valoare a temperaturii.

Posibile erori:

  • -1000:: Aceasta înseamnă că dispozitivul dvs. nu a putut găsi ESP. asigurați-vă că Bluetooth este activat și încercați să reporniți ESP.
  • SNA:: Aceasta înseamnă că telefonul dvs. primește date de la ESP, dar ESP în sine nu a putut găsi un senzor de temperatură pe GPIO 2. Asigurați-vă că conexiunile sunt sigure, vedeți dacă utilizați un rezistor cu valoarea corectă. Verificați de două ori cu schemele de pe placa dvs. că sunteți conectat la GPIO 2 și nu la un pin marcat ca D2.

Pasul 2: Explicația

Cum funcționează în mod normal BLE este că un dispozitiv își face publicitate numele ca un far, acest nume poate fi văzut de oricine și este folosit pentru a identifica dispozitivul. Apoi, dispozitivul poate crea diverse servicii care sunt văzute de alții atunci când se conectează la acesta. Aceste servicii pot avea fluxuri diferite de date.

De exemplu. Un dispozitiv numit „Stație meteo” poate fi deservit sub acesta, cum ar fi „Temperatură”, „Umiditate” și „Vânt”. Când un alt dispozitiv BLE, precum smartphone-ul dvs., scanează dispozitivele, va vedea stația meteo și, atunci când se conectează la acesta, va putea primi fluxurile de date în conformitate cu diferitele servicii.

Bibliotecile (pentru ESP32) care sunt disponibile în prezent ne permit să creăm un far pe care alții îl pot descoperi, dar aceasta este amploarea acestuia. Nu putem crea servicii și nici un dispozitiv nu se poate conecta la acesta.

Deci, cum trimit date fără a crea servicii este prin utilizarea unei tehnici similare protocolului WiFi numit Beacon Stuffing. Aceasta înseamnă că includ date care urmează să fie trimise chiar în numele balizei. Acest lucru îmi permite să fac publicitate de date fără a necesita alte dispozitive pentru conectarea la baliză.

ble.begin (beaconMsg); // beaconMsg este numele promovat

Folosim biblioteca SimpleBLE pentru a crea un far cu numele său în formatul ESP. În cazul în care „ESP” rămâne întotdeauna neschimbat la începutul numelui și este înlocuit cu cele mai recente date returnate de funcția getValue () la fiecare 100 de milisecunde.

float getValue () {return sensorValue;}

Aplicația pentru Android caută numele dispozitivelor BLE începând cu „ESP”, odată găsit, împarte numele și afișează doar datele de la sfârșit.

Comunicarea este doar o modalitate, aplicația nu trimite nimic înapoi.

Pasul 3: Concluzie

La sfârșitul zilei, această metodă nu este un înlocuitor pentru o bibliotecă BLE implementată corespunzător, dar ar putea fi suficient să derulați unele proiecte până când suportul complet BLE vine pe Arduino. Sperăm că acest Instructables ți-a fost de ajutor.

O MARE Mulțumire DFRobot.com pentru că mi-a trimis aceste produse:

  • ESP32 FireBeetle Board
  • Scutul de expansiune FireBeetle
  • Senzor de temperatură DS18B20

Am găsit recent această bibliotecă. ReadME susține că vă puteți conecta la alte dispozitive BLE pentru a primi date (nu vă puteți face publicitate). Nu l-am încercat, dar îl puteți verifica dacă sunteți interesat.

Puteți verifica videoclipul proiectului la: YouTube

Recomandat: