Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Të dashur miq, mirë se vini në një Udhëzues tjetër! Sot ne do të mësojmë se si të marrim të dhënat që transmeton ky monitor Xiaomi Temperatura dhe Lagështia duke përdorur funksionalitetin Bluetooth të bordit ESP32.
Siç mund ta shihni, unë jam duke përdorur një bord ESP32 dhe një ekran TFT me ngjyra 2.8 . Në ekran, ne shfaqim temperaturën dhe lagështinë. Gjëja e lezetshme është se unë nuk kam lidhur asnjë sensor në bordin ESP32. Unë marr temperaturën dhe lagështinë pa tel nga ky monitor komercial i temperaturës dhe lagështisë Xiaomi. Sa e ftohte eshte! Ekrani në pajisjen Xiaomi azhurnohet çdo sekondë, por unë azhurnoj ekranin që është i lidhur me tabelën ESP32 çdo 10 sekonda për të kursyer energji në pajisjen Xiaomi.
Ky sensor i ftohtë i temperaturës dhe lagështisë Xiaomi shfaq temperaturën dhe lagështinë në ekranin e tij LCD dhe gjithashtu mund të transmetojë të dhënat në Pajisjet ose aplikacionet e tjera Xiaomi duke përdorur protokollin Bluetooth. Pajisjet përdorin një bateri të vetme AAA dhe meqenëse është një produkt komercial, jeta e baterisë së pajisjes është e shkëlqyeshme. Mund të zgjasë me një bateri të vetme AAA për muaj, diçka që nuk mund ta arrijmë në projektet tona DIY. Disa javë më parë, zbulova se disa djem të zgjuar arritën të ndryshonin inxhinierinë e protokollit që Xiaomi përdor për të transmetuar të dhënat nga sensori dhe arritën t'i marrin ato të dhëna duke përdorur një bord ESP32. Kështu që e provova, dhe siç mund ta shihni, funksionon!
Hapi 1: Merrni të gjitha pjesët
Le të shohim tani se si ta ndërtojmë këtë projekt. Ne kemi nevojë për një tabelë ESP32, një ekran 2.8”ILI9341, sensorin e temperaturës dhe lagështisë Xiaomi, një tabelë buke dhe disa tela.
Këtu janë disa lidhje me pjesët që do të përdor në këtë Udhëzues.
- ESP32 ▶
- 2.8 "Shfaq ▶
- Sensori Xiaomi ▶
- Breadboard ▶
- Telat ▶
- USB Metër ▶
- Powerbank ▶
Hapi 2: Bordi ESP32
Nëse nuk jeni të njohur me të, çipi ESP32 është pasardhësi i çipit popullor ESP8266 që kemi përdorur shumë herë në të kaluarën. ESP32 është një bishë! Ofron dy 32 bërthama përpunimi të cilat funksionojnë në 160MHz, një sasi masive memorie, WiFi, Bluetooth dhe shumë veçori të tjera me një kosto prej rreth 7 $! Gjëra të mahnitshme!
Ju lutemi shikoni rishikimin e detajuar që kam përgatitur për këtë tabelë. Unë kam bashkangjitur videon në këtë Instructable. Do të ndihmojë të kuptoni pse ky çip do të ndryshojë mënyrën se si i bëjmë gjërat përgjithmonë! Një nga gjërat më emocionuese në lidhje me ESP32 është se edhe pse është kaq i fuqishëm, ai ofron një gjendje gjumi të thellë e cila kërkon vetëm 10μΑ të rrymës. Kjo e bën ESP32 çipin ideal për aplikime me fuqi të ulët.
Hapi 3: Ekran TFT 2.8 "për Arduino dhe ESP32
| |Ekrani është i madh dhe ofron një rezolucion prej 320x240 piksele. Krahasuar me një nga ekranet e mia të preferuara, ekranin TFT me ngjyra 1.8”ju mund ta shihni atë shumë më të madh. Ekrani gjithashtu ofron funksionalitet me prekje i cili është një bonus i shtuar dhe një vend i kartës SD në pjesën e pasme. Ai përdor ndërfaqen SPI, kështu që lidhja me Arduino ose bordin ESP32 është shumë e drejtpërdrejtë. Kostoja e ekranit është relativisht e ulët; kushton rreth 11 $ që sipas mendimit tim është një çmim i drejtë për atë që ofron ky ekran.
Një gjë tjetër si në lidhje me këtë ekran është se nuk vjen si një mburojë si ekrani me prekje që kishim përdorur deri më tani. Në këtë mënyrë, ne mund ta lidhim ekranin me çdo bord, Arduino Pro mini, STM32, ESP8266 dhe ESP32. Kjo është shumë e rëndësishme sepse tani kemi një ekran me kosto të ulët që mund ta përdorim me çdo tabelë. Deri më tani, ekrani i vetëm me prekje që mund të përdorim me këto tabela ishin ekranet Nextion të cilat janë më të shtrenjta, dhe të jem i sinqertë edhe pse i përdor herë pas here, nuk më pëlqejnë vërtet.
Hapi 4: Lidhja e ekranit
Së pari, ne duhet të lidhim Bordin ESP32 me ekranin 2.8 . Ju mund ta gjeni skemën e bashkangjitur në Instructable. Unë jam duke përdorur këtë bord DOIT ESP32 i cili u lëshua rreth dy vjet më parë. Ky version i bordit nuk është më i disponueshëm pasi tani ekziston një version më i ri i tij i cili ofron më shumë kunja, ky. Arsyeja e vetme që po përdor versionin e vjetër të tabelës është se kunja GND e tabelës e vendosur pranë kunjave SPI, në të njëjtën anë të tabelës, gjë që e bën atë miqësore me pjatën.
Pas lidhjes së ekranit me tabelën, ne mund ta fuqizojmë projektin. Pas disa sekondash, marrim të dhëna të drejtpërdrejta nga Pajisja Xiaomi aty pranë. Meqenëse pajisja përdor Bluetooth 4, diapazoni i saj është mjaft i mirë. Ne lehtë mund të marrim të dhënat që transmeton kjo pajisje nga distanca deri në 10 metra ose më shumë! Ne gjithashtu mund të marrim nivelin e baterisë të Pajisjes Xiaomi, por unë nuk e shfaq këtë vlerë në ekran.
Nëse e përdorim këtë matës USB, mund të shohim se tërheqja aktuale e këtij projekti është rreth 120-150 mA duke përdorur këtë ekran të madh. Nëse përdorim një ekran letre elektronike, vendoseni bordin ESP32 në modalitetin e gjumit të thellë dhe merrni të dhëna nga sensori çdo disa minuta ne mund ta bëjmë këtë projekt miqësor me baterinë. Unë do ta provoj këtë në një video të ardhshme. Ky projekt është vetëm një demonstrim se ne mund të marrim të dhëna nga kjo pajisje pa tel.
Hapi 5: Kodi i Projektit
Le të shohim tani anën softuerike të projektit.
Kodi i projektit bazohet në këtë projekt:
Kam përdorur kodin që merr ato të dhëna nga pajisja Xiaomi dhe ndërtova një projekt të pavarur me të.
Në këtë variabël, ne deklarojmë se duhet të marrim të dhëna të reja çdo 10 sekonda.
#përcaktoni SCAN_TIME 10 // sekonda
Këtu, ne deklarojmë se duam të shfaqim temperaturën në gradë Celsius. Nëse dëshironi të përdorni sistemin Imperial, thjesht vendoseni këtë ndryshore në false.
boolean METRIC = e vërtetë; // Vendosja e vërtetë për sistemin metrik; e rreme per perandorake
Në funksionin e konfigurimit ne inicializojmë ekranin dhe modulin Bluetooth të bordit ESP32 dhe më pas vizatojmë ndërfaqen e përdoruesit në ekran.
void setup () {
WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // çaktivizoni detektorin e kaftës
tft.filloj ();
Serial.filloj (115200);
Serial.println ("ESP32 XIAOMI DISPLAY"); initBluetooth ();
drawUI ();
}
Tjetra, ne kërkojmë pajisje Bluetooth aty pranë çdo 10 sekonda. Ne nuk bëjmë një lidhje me Pajisjen Xiaomi pasi nuk është e nevojshme. Ne skanojmë vetëm për pajisje periferike me energji të ulët Bluetooth aty pranë dhe kontrollojmë paketat e reklamave të transmetuara.
void loop () {char printLog [256]; Serial.printf ("Fillo skanimin BLE për %d sekonda… / n", SCAN_TIME); BLEScanRezultatet e gjeturaPajisjet = pBLEScan-> fillimi (SCAN_TIME); int count = foundDevices.getCount (); printf ("Numri i pajisjeve të gjetura: %d / n", numërimi);
vonesë (100);
}
Vlerat e lagështisë dhe temperaturës ruhen në ato pako, kështu që ne vetëm duhet t'i lexojmë ato. Pasi lexojmë vlerat i shfaqim në ekran. Si gjithmonë, ju mund të gjeni një lidhje me kodin e këtij projekti në përshkrimin e bashkangjitur me këtë Udhëzues.
Hapi 6: Përfundimet dhe Përmirësimet Finale
Tani që ne e dimë se si të marrim të dhëna pa tel nga ky sensor, ne mund të ndërtojmë një stacion moti të plotë me bateri. Meqenëse kjo pajisje Xiaomi është një produkt komercial, ajo ofron jetë të madhe të baterisë. Fatkeqësisht, ne nuk mund të arrijmë konsum të ngjashëm të baterisë në projektet tona. Pra, kam në plan ta përdor këtë sensor si një sensor jashtë për një projekt të stacionit të motit i cili do të përdorë një ekran të madh të letrës elektronike. Do të jetë e ftohtë. Gjithashtu, unë do të kërkoj për pajisje të tjera të aktivizuara me Xiaomi Bluetooth që ne mund t'i hakojmë në një mënyrë të ngjashme. Qëndroni të sintonizuar.
Do të doja të dija mendimin tuaj për këtë projekt. A ju duket e dobishme që ne mund të marrim të dhëna nga disa pajisje komerciale Bluetooth? Çfarë do të ndërtoni duke përdorur këtë funksionalitet? Unë do të doja të lexoja idetë tuaja kështu që ju lutemi postojini ato në pjesën e komenteve më poshtë. Faleminderit!