Kazalo:
- Korak: Pridobite vse dele
- Korak: Plošča ESP32
- Korak 3: 2,8 -palčni zaslon TFT za Arduino in ESP32
- 4. korak: Priključitev zaslona
- 5. korak: Koda projekta
- Korak 6: Zadnje misli in izboljšave
Video: ESP32 Xiaomi Hack - Brezžično pridobivanje podatkov: 6 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:02
Dragi prijatelji, dobrodošli v drugem Instructable! Danes se bomo naučili, kako pridobiti podatke, ki jih ta Xiaomi -jev monitor temperature in vlažnosti prenaša s funkcijo Bluetooth na plošči ESP32.
Kot vidite, uporabljam ploščo ESP32 in 2,8 -palčni barvni zaslon TFT. Na zaslonu prikažemo temperaturo in vlažnost. Kul stvar je, da na ploščo ESP32 nisem priključil nobenega senzorja. Temperaturo in vlago brezžično dobivam s tega komercialnega monitorja za temperaturo in vlažnost Xiaomi. Kako kul je to! Zaslon na napravi Xiaomi se posodobi vsako sekundo, vendar posodabljam zaslon, ki je priključen na ploščo ESP32 vsakih 10 sekund, da prihrani energijo v napravi Xiaomi.
Ta hladni senzor temperature in vlažnosti Xiaomi prikazuje temperaturo in vlažnost na LCD zaslonu, podatke pa lahko prek protokola Bluetooth prenese tudi na druge naprave ali aplikacije Xiaomi. Naprave uporabljajo eno samo baterijo AAA in ker je komercialni izdelek, je življenjska doba naprave odlična. Z eno baterijo AAA lahko zdrži več mesecev, česar pri naših projektih »naredi sam« ne moremo doseči. Pred nekaj tedni sem odkril, da je nekaterim pametnim fantom uspelo spremeniti protokol, ki ga Xiaomi uporablja za prenos podatkov s senzorja, in do teh podatkov je prišlo z uporabo plošče ESP32. Tako sem poskusil in kot vidite deluje!
Korak: Pridobite vse dele
Zdaj pa poglejmo, kako zgraditi ta projekt. Potrebujemo ploščo ESP32, 2,8 -palčni zaslon ILI9341, senzor temperature in vlažnosti Xiaomi, ploščico in nekaj žic.
Tukaj je nekaj povezav do delov, ki jih bom uporabil v tem navodilu.
- ESP32 ▶
- 2.8 "Zaslon ▶
- Senzor Xiaomi ▶
- Breadboard ▶
- Žice ▶
- Merilnik USB ▶
- Powerbank ▶
Korak: Plošča ESP32
Če ga ne poznate, je čip ESP32 naslednik priljubljenega čipa ESP8266, ki smo ga v preteklosti že večkrat uporabljali. ESP32 je zver! Ponuja dve 32 procesorskih jeder, ki delujejo pri 160 MHz, ogromno pomnilnika, WiFi, Bluetooth in številne druge funkcije s stroški okoli 7 $! Neverjetne stvari!
Oglejte si podroben pregled, ki sem ga pripravil za to tablo. Priložil sem videoposnetek o tem navodilu. Pomagal bo razumeti, zakaj bo ta čip za vedno spremenil način izdelave stvari! Ena najbolj vznemirljivih stvari pri ESP32 je, da čeprav je tako močan, ponuja način globokega spanja, ki zahteva le 10 μΑs toka. Zaradi tega je ESP32 idealen čip za aplikacije z nizko porabo energije.
Korak 3: 2,8 -palčni zaslon TFT za Arduino in ESP32
Zaslon je velik in ponuja ločljivost 320x240 slikovnih pik. V primerjavi z enim izmed mojih najljubših zaslonov, 1,8 -palčni barvni TFT zaslon, ga lahko vidite veliko večjega. Zaslon ponuja tudi funkcijo na dotik, ki je dodaten bonus in režo za kartico SD na zadnji strani. Uporablja vmesnik SPI, zato je povezava z Arduino ali ploščo ESP32 zelo enostavna. Stroški zaslona so relativno nizki; stane okoli 11 $, kar je po mojem mnenju poštena cena za ponudbo tega zaslona.
Druga značilnost tega zaslona je, da ne deluje kot ščit, kot je zaslon na dotik, ki smo ga uporabljali doslej. Na ta način lahko zaslon povežemo s katero koli ploščo, Arduino Pro mini, STM32, ESP8266 in ESP32. To je zelo pomembno, saj imamo zdaj poceni zaslon, ki ga lahko uporabljamo z vsako ploščo. Doslej so bili pri teh ploščah edini zaslon na dotik, ki so bili dražji, in če sem iskren, čeprav jih občasno uporabljam, mi niso všeč.
4. korak: Priključitev zaslona
Najprej moramo ploščo ESP32 povezati z 2,8 -palčnim zaslonom. Shemo najdete v priponki Instructable. Uporabljam to ploščo DOIT ESP32, ki je bila izdana pred približno dvema letoma. Ta različica plošče ni več na voljo, saj je zdaj na voljo njena novejša različica, ki ponuja več zatičev, to je ta. Edini razlog, zakaj uporabljam staro različico plošče, je, da je pin GND plošče nameščen poleg zatičev SPI, na isti strani plošče, zaradi česar je prijazna do plošče.
Po priključitvi zaslona na ploščo lahko projekt vklopimo. Po nekaj sekundah prejemamo podatke v živo iz bližnje naprave Xiaomi. Ker naprava uporablja Bluetooth 4, je njen domet precej dober. Z lahkoto dobimo podatke, ki jih ta naprava prenaša z razdalj do 10 metrov ali več! Prav tako lahko prejemamo raven baterije naprave Xiaomi, vendar te vrednosti ne prikažem na zaslonu.
Če uporabimo ta merilnik USB, lahko vidimo, da je trenutna poraba tega projekta okoli 120-150 mA z uporabo tega velikega zaslona. Če uporabljamo zaslon za e-papir, ploščo ESP32 preklopite v način globokega spanja in vsakih nekaj minut od senzorja pridobite podatke, ki jih lahko naredimo, da bo ta projekt prijazen do baterij. To bom poskusil v prihodnjem videu. Ta projekt je le dokaz, da lahko brezžično dobimo podatke iz te naprave.
5. korak: Koda projekta
Poglejmo zdaj programsko stran projekta.
Koda projekta temelji na tem projektu:
Uporabil sem kodo, ki te podatke dobi iz naprave Xiaomi, in z njo zgradil samostojen projekt.
V tej spremenljivki izjavljamo, da moramo dobiti sveže podatke vsakih 10 sekund.
#define SCAN_TIME 10 // sekund
Tu izjavljamo, da želimo temperaturo prikazati v stopinjah Celzija. Če želite uporabiti sistem Imperial, preprosto nastavite to spremenljivko na false.
logična METRIKA = res; // Nastavi true za metrični sistem; napačno za cesarsko
Pri namestitveni funkciji inicializiramo zaslon in modul Bluetooth na plošči ESP32, nato pa na zaslonu narišemo uporabniški vmesnik.
void setup () {
WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // onemogoči detektor rjavenja
tft.begin ();
Serial.begin (115200);
Serial.println ("ZASLON ESP32 XIAOMI"); initBluetooth ();
drawUI ();
}
Nato vsakih 10 sekund iščemo naprave Bluetooth v bližini. Ne vzpostavljamo povezave z napravo Xiaomi, ker ni potrebna. Skeniramo samo bližnje zunanje naprave z nizko porabo energije Bluetooth in preverjamo pakete oglasov za oddajanje.
void loop () {char printLog [256]; Serial.printf ("Začni skeniranje BLE za %d sekunde… / n", SCAN_TIME); BLEScanResult foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Število najdenih naprav: %d / n", število);
zamuda (100);
}
Vrednosti vlažnosti in temperature so shranjene v teh paketih, zato jih moramo le prebrati. Ko preberemo vrednosti, jih prikažemo na zaslonu. Kot vedno lahko najdete povezavo do kode tega projekta v opisu, priloženem temu navodilu.
Korak 6: Zadnje misli in izboljšave
Zdaj, ko vemo, kako brezžično priti do podatkov s tega senzorja, lahko zgradimo popolno vremensko postajo na baterije. Ker je ta naprava Xiaomi komercialni izdelek, ponuja odlično življenjsko dobo baterije. Na žalost pri naših projektih še ne moremo doseči podobne porabe baterije. Zato nameravam ta senzor uporabiti kot zunanji senzor za projekt vremenske postaje, ki bo uporabljal velik zaslon e-papirja. To bo kul. Prav tako bom iskal druge naprave, ki podpirajo Xiaomi Bluetooth, ki jih lahko vdremo na podoben način. Ostani na vezi.
Zanima me vaše mnenje o tem projektu. Se vam zdi koristno, da lahko dobimo podatke iz nekaterih komercialnih naprav Bluetooth? Kaj boste zgradili s to funkcionalnostjo? Rad bi prebral vaše ideje, zato jih objavite v spodnjem razdelku za komentarje. Hvala!
Priporočena:
Simulirano pridobivanje signala EKG z uporabo LTSpice: 7 korakov
Simulirano pridobivanje signala EKG z uporabo LTSpice: Sposobnost srca, da črpa, je funkcija električnih signalov. Zdravniki lahko te signale preberejo na EKG -ju za diagnosticiranje različnih težav s srcem. Preden lahko signal ustrezno pripravi zdravnik, ga je treba ustrezno filtrirati in ojačati
Načrt vezja za pridobivanje, ojačanje in filtriranje osnovnega elektrokardiograma: 6 korakov
Načrt vezja za pridobivanje, ojačanje in filtriranje osnovnega elektrokardiograma: Če želite dokončati ta navodila, potrebujete le računalnik, dostop do interneta in nekaj simulacijske programske opreme. Za namene te zasnove bodo vsa vezja in simulacije izvedeni na LTspice XVII. Ta simulacijska programska oprema vsebuje
Kako narediti snemalnik podatkov o vlažnosti in temperaturi v realnem času z Arduino UNO in kartico SD - Simulacija zapisovalnika podatkov DHT11 v Proteusu: 5 korakov
Kako narediti snemalnik podatkov o vlažnosti in temperaturi v realnem času z Arduino UNO in kartico SD | Simulacija zapisovalnika podatkov DHT11 v Proteusu: Uvod: zdravo, to je Liono Maker, tukaj je povezava YouTube. Z Arduinom ustvarjamo projekt in delamo na vgrajenih sistemih. Data-Logger: Zapisovalnik podatkov (tudi zapisovalnik podatkov ali zapisovalnik podatkov) je elektronska naprava, ki sčasoma beleži podatke z
EKG zapisovalnik - nosljiv srčni monitor za dolgoročno pridobivanje in analizo podatkov: 3 koraki
EKG zapisovalnik - nosljiv srčni monitor za dolgoročno pridobivanje in analizo podatkov: prva izdaja: oktober 2017 Najnovejša različica: 1.6.0 Stanje: Stabilno Težave: Visoko Predpogoj: Arduino, programiranje, gradnja strojne opreme Edinstveno skladišče: SF (glej povezave spodaj) Podpora: samo forum, noben PMECG Logger ni nosljiv srčni monitor za dolgo
EAM-Industri4.0-RFID zbirka podatkov do baze podatkov: 10 korakov (s slikami)
EAM-Industri4.0-RFID podatkovno razvrščanje podatkovnih zbirk v zbirko podatkov: Dette projekt omhandler opsamling af v æ gtdata, register up identiteter vha. RFID, zaostajanje podatkov v bazi podatkov MySQL vha. node-RED, samostojno obnašanje in ravnanje z opsamlede podatki v programu et C#, ki se oblikujejo v aplikaciji Windows Form.