Cuprins:
- Pasul 1: obțineți toate părțile
- Pasul 2: placa ESP32
- Pasul 3: Afișaj TFT de 2,8 "pentru Arduino și ESP32
- Pasul 4: Conectarea afișajului
- Pasul 5: Codul proiectului
- Pasul 6: Gânduri finale și îmbunătățiri
Video: ESP32 Xiaomi Hack - Obțineți date fără fir: 6 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
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
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
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
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
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
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
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:
Date despre senzori de vibrații și temperatură fără fir către MySQL folosind Node-RED: 40 de pași
Date despre senzori de vibrație și temperatură fără fir către MySQL folosind Node-RED: Prezentarea senzorului de temperatură și vibrații wireless IoT Industrial Long Range IoT de la NCD, oferind până la o rază de 2 mile utilizarea unei structuri de rețea fără fir mesh. Incorporând un senzor de precizie de vibrație și temperatură pe 16 biți, acest dispozitiv
Robot Arduino fără fir folosind modulul HC12 fără fir: 7 pași
Robot wireless Arduino folosind modulul HC12 fără fir: Hei băieți, bine ați revenit. În postarea mea anterioară, am explicat ce este un circuit H Bridge, circuitul de conducător auto L293D IC, piggybacking L293D driverul IC pentru conducerea driverelor de curent mare și modul în care puteți proiecta și crea propriul dvs. driver de motor L293D
Microfon fără fir DIY la sistem de chitară fără fir: 4 pași
Sistem de microfon fără fir DIY la sistem de chitară fără fir: Am urmărit câteva videoclipuri și câteva trupe și aproape dintre ele folosesc un sistem wireless pe chitară. Înnebunind, mișcându-se, mergând și fac tot ce vor fără cablu, așa că visez să am unul .. Dar … pentru mine acum este prea scump, așa că am ajuns la asta
Răcitor / suport pentru laptop cu cost zero (fără lipici, fără găurire, fără piulițe și șuruburi, fără șuruburi): 3 pași
Zero Cost Laptop Cooler / Stand (Fără lipici, fără găurire, fără piulițe și șuruburi, fără șuruburi): ACTUALIZARE: VĂ RUGĂM VOTĂ PENTRU MEA MEA MEA INTRAREA PE www.instructables.com/id/Zero-Cost-Aluminum-Furnace-No-Propane-No-Glue-/ SAU POATE VOTA PENTRU CEL MAI BUN PRIETEN AL MEU
Hack un clopoțel fără fir într-un comutator de alarmă fără fir sau întrerupător de pornire / oprire: 4 pași
Spargerea unui clopoțel wireless într-un comutator de alarmă fără fir sau întrerupător de pornire / oprire: recent am construit un sistem de alarmă și l-am instalat în casa mea. Am folosit întrerupătoare magnetice la ușă și le-am conectat prin pod la ferestre. Ferestrele erau o altă poveste, iar cablarea dură a acestora nu era o opțiune. Aveam nevoie de o soluție wireless și asta este