Kazalo:

ESP32 Xiaomi Hack - Brezžično pridobivanje podatkov: 6 korakov (s slikami)
ESP32 Xiaomi Hack - Brezžično pridobivanje podatkov: 6 korakov (s slikami)

Video: ESP32 Xiaomi Hack - Brezžično pridobivanje podatkov: 6 korakov (s slikami)

Video: ESP32 Xiaomi Hack - Brezžično pridobivanje podatkov: 6 korakov (s slikami)
Video: Объяснение протоколов защиты беспроводных сетей WIFi - WEP, WPA, WPS 2024, December
Anonim
Image
Image
ESP32 Xiaomi kramp - Pridobite podatke brezžično
ESP32 Xiaomi kramp - Pridobite podatke brezžično

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

Pridobite vse dele
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

Image
Image
Plošča ESP32
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

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

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

Priključitev zaslona
Priključitev zaslona
Priključitev zaslona
Priključitev zaslona
Priključitev zaslona
Priključitev zaslona
Priključitev zaslona
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

Kodeks projekta
Kodeks 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

Zadnje misli in izboljšave
Zadnje misli in izboljšave
Zadnje misli in izboljšave
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: