Obsah:

ESP32 Xiaomi Hack - získajte údaje bezdrôtovo: 6 krokov (s obrázkami)
ESP32 Xiaomi Hack - získajte údaje bezdrôtovo: 6 krokov (s obrázkami)

Video: ESP32 Xiaomi Hack - získajte údaje bezdrôtovo: 6 krokov (s obrázkami)

Video: ESP32 Xiaomi Hack - získajte údaje bezdrôtovo: 6 krokov (s obrázkami)
Video: Добавление градусника XIaomi lywsd03mmc в ESPHome и в Home Assistant через ESP32 2024, November
Anonim
Image
Image
ESP32 Xiaomi Hack - získajte údaje bezdrôtovo
ESP32 Xiaomi Hack - získajte údaje bezdrôtovo

Milí priatelia, vitajte pri ďalšom pokyne! Dnes sa naučíme získať údaje, ktoré tento monitor teploty a vlhkosti Xiaomi prenáša, pomocou funkcie Bluetooth dosky ESP32.

Ako vidíte, používam dosku ESP32 a 2,8 -palcový farebný TFT displej. Na displeji zobrazujeme teplotu a vlhkosť. Skvelé je, že som k doske ESP32 nepripojil žiadne senzory. Teplotu a vlhkosť získavam bezdrôtovo z tohto komerčného monitora teploty a vlhkosti Xiaomi. Aké je to cool! Displej na zariadení Xiaomi sa aktualizuje každú sekundu, ale aktualizujem displej, ktorý je pripojený k doske ESP32 každých 10 sekúnd, aby sa šetrila energia v zariadení Xiaomi.

Tento chladný snímač teploty a vlhkosti Xiaomi zobrazuje teplotu a vlhkosť na svojom LCD displeji a pomocou protokolu Bluetooth môže tiež prenášať údaje do iných zariadení alebo aplikácií Xiaomi. Zariadenia používajú jednu batériu AAA a keďže ide o komerčný produkt, životnosť batérie je vynikajúca. Na jednu batériu AAA môže vydržať niekoľko mesiacov, čo v projektoch pre domácich majstrov nemôžeme dosiahnuť. Pred niekoľkými týždňami som zistil, že niektorým šikovným chlapcom sa podarilo spätne analyzovať protokol, ktorý spoločnosť Xiaomi používa na prenos údajov zo senzora, a podarilo sa im ich získať pomocou dosky ESP32. Skúsil som to a ako vidíte, funguje to!

Krok 1: Získajte všetky diely

Získajte všetky diely
Získajte všetky diely

Teraz sa pozrime, ako vytvoriť tento projekt. Potrebujeme dosku ESP32, 2,8 -palcový displej ILI9341, snímač teploty a vlhkosti Xiaomi, dosku a niekoľko vodičov.

Tu je niekoľko odkazov na diely, ktoré použijem v tomto návode.

  • ESP32 ▶
  • 2,8 "displej ▶
  • Senzor Xiaomi ▶
  • Breadboard ▶
  • Drôty ▶
  • Merač USB ▶
  • Powerbank ▶

Krok 2: Doska ESP32

Image
Image
Doska ESP32
Doska ESP32

Ak ho nepoznáte, čip ESP32 je nástupcom populárneho čipu ESP8266, ktorý sme v minulosti mnohokrát použili. ESP32 je zver! Ponúka dve 32 procesorových jadier, ktoré pracujú na frekvencii 160 MHz, obrovské množstvo pamäte, WiFi, Bluetooth a mnoho ďalších funkcií za cenu približne 7 $! Úžasné veci!

Pozrite sa na podrobnú recenziu, ktorú som pre túto dosku pripravil. Pripojil som video k tomuto návodu. Pomôže to pochopiť, prečo tento čip navždy zmení spôsob, akým veci vyrábame! Jednou z najvzrušujúcejších vecí na ESP32 je, že aj keď je taký výkonný, ponúka režim hlbokého spánku, ktorý vyžaduje iba 10μΑs prúdu. Vďaka tomu je ESP32 ideálnym čipom pre aplikácie s nízkym výkonom.

Krok 3: 2,8 "TFT displej pre Arduino a ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Displej je veľký a ponúka rozlíšenie 320 x 240 pixelov. V porovnaní s jedným z mojich obľúbených displejov, 1,8 palcovým farebným TFT displejom ho môžete vidieť oveľa väčší. Obrazovka tiež ponúka dotykové funkcie, ktoré sú ďalším bonusom, a slot na kartu SD na zadnej strane. Využíva rozhranie SPI, takže prepojenie s doskou Arduino alebo ESP32 je veľmi priamočiare. Náklady na displej sú relatívne nízke; stojí to okolo 11 $, čo je podľa mňa primeraná cena za to, čo tento displej ponúka.

Ďalšou vecou, ktorá sa týka tohto displeja, je to, že neprichádza ako štít ako dotykový displej, ktorý sme doteraz používali. Týmto spôsobom môžeme displej pripojiť k akejkoľvek doske, Arduino Pro mini, STM32, ESP8266 a ESP32. To je veľmi dôležité, pretože teraz máme lacný displej, ktorý môžeme použiť s každou doskou. Doteraz jediným dotykovým displejom, ktorý sme s týmito doskami mohli používať, boli displeje Nextion, ktoré sú drahšie, a aby som bol úprimný, aj keď ich čas od času používam, veľmi sa mi nepáčia.

Krok 4: Pripojenie displeja

Pripojenie displeja
Pripojenie displeja
Pripojenie displeja
Pripojenie displeja
Pripojenie displeja
Pripojenie displeja
Pripojenie displeja
Pripojenie displeja

Najprv musíme pripojiť dosku 2,8 palca k doske ESP32. Schému nájdete v prílohe k Instructable. Používam dosku DOIT ESP32, ktorá bola vydaná asi pred dvoma rokmi. Táto verzia dosky už nie je k dispozícii, pretože teraz je k dispozícii jej novšia verzia, ktorá ponúka viac pinov, túto. Jediný dôvod, prečo používam starú verziu dosky, je ten, že GND kolík dosky je umiestnený vedľa pinov SPI, na rovnakej strane dosky, čo ju robí priateľskou k doske.

Po pripojení displeja k doske môžeme projekt zapnúť. Po niekoľkých sekundách dostávame živé údaje z blízkeho zariadenia Xiaomi. Pretože zariadenie používa Bluetooth 4, jeho dosah je celkom dobrý. Údaje, ktoré toto zariadenie prenáša, môžeme ľahko získať zo vzdialenosti až 10 metrov alebo viac! Môžeme tiež získať úroveň batérie zariadenia Xiaomi, ale túto hodnotu nezobrazujem na obrazovke.

Ak použijeme tento USB merač, vidíme, že súčasný odber tohto projektu je okolo 120-150 mA pomocou tohto veľkého displeja. Ak použijeme displej z elektronického papiera, uvedieme dosku ESP32 do režimu hlbokého spánku a každých pár minút dostaneme údaje zo senzora, vďaka čomu bude tento projekt šetrný k batérii. Skúsim to v budúcom videu. Tento projekt je len ukážkou toho, že z tohto zariadenia môžeme bezdrôtovo získavať údaje.

Krok 5: Kód projektu

Kódex projektu
Kódex projektu

Pozrime sa teraz na softvérovú stránku projektu.

Kód projektu je založený na tomto projekte:

Použil som kód, ktorý tieto údaje získava zo zariadenia Xiaomi, a vytvoril som s ním samostatný projekt.

V tejto premennej vyhlasujeme, že musíme získavať nové údaje každých 10 sekúnd.

#define SCAN_TIME 10 // sekúnd

Tu vyhlasujeme, že chceme zobrazovať teplotu v stupňoch Celzia. Ak chcete používať systém Imperial, jednoducho nastavte túto premennú na false.

boolean METRIC = true; // Set true pre metrický systém; falošné pre imperiálne

Pri funkcii nastavenia inicializujeme displej a modul Bluetooth dosky ESP32 a potom nakreslíme na obrazovku používateľské rozhranie.

neplatné nastavenie () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // vypnutie detektora vypnutia

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Ďalej každých 10 sekúnd hľadáme zariadenia Bluetooth v okolí. Nepájame sa k zariadeniu Xiaomi, pretože nie je potrebné. Hľadáme iba blízke nízkoenergetické periférne zariadenia Bluetooth a kontrolujeme pakety vysielaných reklám.

void loop () {char printLog [256]; Serial.printf ("Spustiť skenovanie BLE na %d sekúnd … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Počet nájdených zariadení: %d / n", počet);

oneskorenie (100);

}

Hodnoty vlhkosti a teploty sú uložené v týchto paketoch, takže ich musíme iba prečítať. Keď prečítame hodnoty, zobrazíme ich na obrazovke. Ako vždy, odkaz na kód tohto projektu nájdete v popise priloženom k tomuto návodu.

Krok 6: Záverečné myšlienky a vylepšenia

Záverečné myšlienky a vylepšenia
Záverečné myšlienky a vylepšenia
Záverečné myšlienky a vylepšenia
Záverečné myšlienky a vylepšenia

Teraz, keď vieme, ako bezdrôtovo získavať údaje z tohto senzora, môžeme postaviť kompletnú meteorologickú stanicu napájanú z batérie. Pretože je toto zariadenie Xiaomi komerčným výrobkom, ponúka vynikajúcu výdrž batérie. Na našich projektoch bohužiaľ zatiaľ nemôžeme dosiahnuť podobnú spotrebu batérie. Plánujem teda použiť tento senzor ako vonkajší senzor pre projekt meteorologickej stanice, ktorý bude používať veľký displej z elektronického papiera. Bude to v pohode Tiež budem hľadať ďalšie zariadenia Xiaomi s podporou Bluetooth, ktoré môžeme hacknúť podobným spôsobom. Zostaňte naladení.

Rád by som poznal váš názor na tento projekt. Považujete za užitočné, že môžeme získavať údaje z niektorých komerčných zariadení Bluetooth? Čo budete stavať pomocou tejto funkcie? Rád by som si prečítal vaše nápady, preto ich prosím pošlite do sekcie komentárov nižšie. Vďaka!

Odporúča: