Cuprins:

ESP32 Xiaomi Hack - Obțineți date fără fir: 6 pași (cu imagini)
ESP32 Xiaomi Hack - Obțineți date fără fir: 6 pași (cu imagini)

Video: ESP32 Xiaomi Hack - Obțineți date fără fir: 6 pași (cu imagini)

Video: ESP32 Xiaomi Hack - Obțineți date fără fir: 6 pași (cu imagini)
Video: How to use ESP32 WiFi and Bluetooth with Arduino IDE full details with examples and code 2024, Noiembrie
Anonim
Image
Image
ESP32 Xiaomi Hack - Obțineți date fără fir
ESP32 Xiaomi Hack - Obțineți date fără fir

Dragi prieteni bun venit la un alt instructabil! Astăzi vom învăța cum să obținem datele pe care le transmite acest monitor Xiaomi de temperatură și umiditate utilizând funcționalitatea Bluetooth a plăcii ESP32.

După cum puteți vedea, folosesc o placă ESP32 și un ecran TFT color de 2,8”. Pe afișaj, afișăm temperatura și umiditatea. Interesant este că nu am conectat niciun senzor la placa ESP32. Obțin temperatura și umiditatea fără fir de la acest monitor comercial Xiaomi de temperatură și umiditate. Cat de tare e asta! Afișajul de pe dispozitivul Xiaomi este actualizat în fiecare secundă, dar actualizez afișajul care este conectat la placa ESP32 la fiecare 10 secunde pentru a economisi energie pe dispozitivul Xiaomi.

Acest senzor rece de temperatură și umiditate Xiaomi afișează temperatura și umiditatea pe afișajul LCD și poate transmite datele și către alte dispozitive Xiaomi sau aplicații utilizând protocolul Bluetooth. Dispozitivele folosesc o singură baterie AAA și, deoarece este un produs comercial, durata de viață a bateriei dispozitivului este excelentă. Poate dura o singură baterie AAA luni de zile, lucru pe care nu îl putem realiza în proiectele noastre de bricolaj. Cu câteva săptămâni în urmă, am descoperit că unii băieți isteți au reușit să transforme protocolul pe care Xiaomi îl folosește pentru a transmite datele de la senzor și au reușit să obțină aceste date folosind o placă ESP32. Așa că am încercat-o și, după cum puteți vedea, funcționează!

Pasul 1: obțineți toate părțile

Obțineți toate piesele
Obțineți toate piesele

Să vedem acum cum să construim acest proiect. Avem nevoie de o placă ESP32, un afișaj ILI9341 de 2,8”, un senzor de temperatură și umiditate Xiaomi, o placă de măsurare și câteva fire.

Iată câteva linkuri către părțile pe care le voi folosi în acest instructabil.

  • ESP32 ▶
  • Afișaj de 2,8 "▶
  • Senzor Xiaomi ▶
  • Breadboard ▶
  • Sârme ▶
  • USB Meter ▶
  • Powerbank ▶

Pasul 2: placa ESP32

Image
Image
Placa ESP32
Placa ESP32

Dacă nu sunteți familiarizați cu acesta, cipul ESP32 este succesorul popularului cip ESP8266 pe care l-am folosit de mai multe ori în trecut. ESP32 este o bestie! Oferă două 32 de nuclee de procesare care funcționează la 160 MHz, o cantitate masivă de memorie, WiFi, Bluetooth și multe alte caracteristici cu un cost de aproximativ 7 USD! Lucruri uimitoare!

Vă rugăm să urmăriți recenzia detaliată pe care am pregătit-o pentru acest forum. Am atașat videoclipul la acest instructabil. Vă va ajuta să înțelegeți de ce acest cip va schimba modul în care facem lucrurile pentru totdeauna! Unul dintre cele mai interesante lucruri despre ESP32 este că, deși este atât de puternic, acesta oferă un mod de somn profund care necesită doar 10μΑs de curent. Acest lucru face ca ESP32 să fie cipul ideal pentru aplicații cu putere redusă.

Pasul 3: Afișaj TFT de 2,8 "pentru Arduino și ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Afișajul este mare și oferă o rezoluție de 320x240 pixeli. Comparativ cu unul dintre afișajele mele preferate, afișajul TFT color de 1,8”îl puteți vedea mult mai mare. Ecranul oferă, de asemenea, funcționalitate tactilă, care este un bonus suplimentar și un slot pentru card SD în spate. Folosește interfața SPI, astfel încât conexiunea cu placa Arduino sau ESP32 este foarte simplă. Costul afișajului este relativ scăzut; costă în jur de 11 $, ceea ce, în opinia mea, este un preț corect pentru ceea ce oferă acest afișaj.

Un alt lucru de genul acestui ecran este că nu vine ca un scut precum afișajul tactil pe care îl foloseam până acum. În acest fel, putem conecta afișajul la orice placă, Arduino Pro mini, STM32, ESP8266 și ESP32. Acest lucru este foarte important, deoarece acum avem un afișaj low-cost pe care îl putem folosi cu fiecare placă. Până acum, singurul afișaj tactil pe care l-am putut folosi cu aceste plăci erau afișajele Nextion, care sunt mai scumpe și, sincer să fiu, chiar dacă le folosesc din când în când, nu prea îmi plac.

Pasul 4: Conectarea afișajului

Conectarea afișajului
Conectarea afișajului
Conectarea afișajului
Conectarea afișajului
Conectarea afișajului
Conectarea afișajului
Conectarea afișajului
Conectarea afișajului

Mai întâi, trebuie să conectăm placa ESP32 la afișajul de 2,8”. Puteți găsi schema atașată la Instructable. Folosesc această placă DOIT ESP32 care a fost lansată acum aproximativ doi ani. Această versiune a plăcii nu mai este disponibilă, deoarece există acum o versiune mai nouă a acesteia, care oferă mai mulți pini, aceasta. Singurul motiv pentru care folosesc versiunea veche a plăcii este că știftul GND al plăcii plasat lângă știfturile SPI, pe aceeași parte a plăcii, ceea ce îl face prietenos.

După conectarea afișajului la tablă, putem porni proiectul. După câteva secunde, primim date live de pe dispozitivul Xiaomi din apropiere. Deoarece dispozitivul utilizează Bluetooth 4, gama acestuia este destul de bună. Putem obține cu ușurință datele pe care acest dispozitiv le transmite de la distanțe de până la 10 metri sau mai mult! De asemenea, putem primi nivelul bateriei dispozitivului Xiaomi, dar nu afișez această valoare pe ecran.

Dacă folosim acest contor USB, putem vedea că atragerea actuală a acestui proiect este de aproximativ 120-150 mA folosind acest afișaj mare. Dacă folosim un afișaj de hârtie electronică, punem placa ESP32 în modul de repaus profund și obținem date de la senzor la fiecare câteva minute, putem face acest proiect prietenos cu bateria. Voi încerca acest lucru într-un viitor videoclip. Acest proiect este doar o demonstrație că putem obține date de la acest dispozitiv fără fir.

Pasul 5: Codul proiectului

Codul proiectului
Codul proiectului

Să vedem acum partea software a proiectului.

Codul proiectului se bazează pe acest proiect:

Am folosit codul care obține acele date de pe dispozitivul Xiaomi și am construit un proiect independent cu el.

În această variabilă, declarăm că trebuie să obținem date noi la fiecare 10 secunde.

#define SCAN_TIME 10 // secunde

Aici declarăm că dorim să afișăm temperatura în grade Celsius. Dacă doriți să utilizați sistemul Imperial, setați această variabilă la fals.

boolean METRIC = adevărat; // Setați true pentru sistemul metric; fals pentru imperial

La funcția de configurare inițializăm afișajul și modulul Bluetooth al plăcii ESP32 și apoi desenăm interfața utilizatorului pe ecran.

configurare nulă () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // dezactivați detectorul brownout

tft.begin ();

Serial.begin (115200);

Serial.println ("ESP32 XIAOMI DISPLAY"); initBluetooth ();

drawUI ();

}

Apoi, căutăm dispozitive Bluetooth în apropiere la fiecare 10 secunde. Nu facem o conexiune la dispozitivul Xiaomi, deoarece nu este necesar. Căutăm numai periferice Bluetooth din apropiere cu consum redus de energie și verificăm pachetele publicitare difuzate.

void loop () {char printLog [256]; Serial.printf ("Începeți scanarea BLE pentru% d secunde … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Număr dispozitiv găsit:% d / n", număr);

întârziere (100);

}

Valorile umidității și temperaturii sunt stocate în acele pachete, deci trebuie doar să le citim. După ce citim valorile, le afișăm pe ecran. Ca întotdeauna, puteți găsi un link către codul acestui proiect în descrierea atașată acestui instructabil.

Pasul 6: Gânduri finale și îmbunătățiri

Gânduri finale și îmbunătățiri
Gânduri finale și îmbunătățiri
Gânduri finale și îmbunătățiri
Gânduri finale și îmbunătățiri

Acum, că știm cum să obținem date fără fir de la acest senzor, putem construi o stație meteo completă alimentată de baterie. Deoarece acest dispozitiv Xiaomi este un produs comercial, oferă o durată de viață excelentă a bateriei. Din păcate, încă nu putem realiza un consum similar de baterie în proiectele noastre. Deci, intenționez să folosesc acest senzor ca senzor în aer liber pentru un proiect de stație meteo care va utiliza un afișaj mare de hârtie electronică. Va fi misto. De asemenea, voi căuta alte dispozitive cu funcție Bluetooth Xiaomi pe care le putem hack într-un mod similar. Rămâneți aproape.

Mi-ar plăcea să vă spun părerea despre acest proiect. Vi se pare util să putem obține date de pe unele dispozitive Bluetooth comerciale? Ce vei construi folosind această funcționalitate? Aș dori să vă citesc ideile, așa că vă rugăm să le postați în secțiunea de comentarii de mai jos. Mulțumiri!

Recomandat: