Obsah:

ESP32 Xiaomi Hack - získejte data bezdrátově: 6 kroků (s obrázky)
ESP32 Xiaomi Hack - získejte data bezdrátově: 6 kroků (s obrázky)

Video: ESP32 Xiaomi Hack - získejte data bezdrátově: 6 kroků (s obrázky)

Video: ESP32 Xiaomi Hack - získejte data bezdrátově: 6 kroků (s obrázky)
Video: jak vytvořit, řídicí obvod vysílače a přijímače, jlcpcb 2024, Červenec
Anonim
Image
Image
ESP32 Xiaomi Hack - získejte data bezdrátově
ESP32 Xiaomi Hack - získejte data bezdrátově

Vážení přátelé, vítejte u dalšího Instructable! Dnes se naučíme, jak získat data, která tento monitor teploty a vlhkosti Xiaomi přenáší pomocí funkce Bluetooth desky ESP32.

Jak vidíte, používám desku ESP32 a 2,8”barevný TFT displej. Na displeji zobrazujeme teplotu a vlhkost. Skvělé je, že jsem k desce ESP32 nepřipojil žádné senzory. Teplotu a vlhkost získávám bezdrátově z tohoto komerčního monitoru teploty a vlhkosti Xiaomi. Jak je to cool! Displej na zařízení Xiaomi se aktualizuje každou sekundu, ale displej, který je připojen k desce ESP32, aktualizuji každých 10 sekund, abych šetřil energii na zařízení Xiaomi.

Tento skvělý senzor teploty a vlhkosti Xiaomi zobrazuje teplotu a vlhkost na svém LCD displeji a také může přenášet data do jiných zařízení nebo aplikací Xiaomi pomocí protokolu Bluetooth. Zařízení používají jednu baterii AAA a protože se jedná o komerční produkt, je výdrž baterie zařízení vynikající. Může to trvat jednu baterii AAA měsíce, což je něco, čeho na našich kutilských projektech nemůžeme dosáhnout. Před několika týdny jsem zjistil, že se některým chytrým lidem podařilo zpětně analyzovat protokol, který Xiaomi používá k přenosu dat ze senzoru, a podařilo se mu tato data získat pomocí desky ESP32. Tak jsem to zkusil a jak vidíte, funguje to!

Krok 1: Získejte všechny díly

Získejte všechny díly
Získejte všechny díly

Pojďme se nyní podívat, jak tento projekt postavit. Potřebujeme desku ESP32, 2,8”displej ILI9341, snímač teploty a vlhkosti Xiaomi, prkénko a nějaké dráty.

Zde je několik odkazů na součásti, které budu používat v tomto Instructable.

  • ESP32 ▶
  • 2,8 "displej ▶
  • Senzor Xiaomi ▶
  • Breadboard ▶
  • Dráty ▶
  • USB měřič ▶
  • Powerbank ▶

Krok 2: Deska ESP32

Image
Image
Deska ESP32
Deska ESP32

Pokud jej neznáte, čip ESP32 je nástupcem populárního čipu ESP8266, který jsme v minulosti mnohokrát použili. ESP32 je bestie! Nabízí dvě 32 procesorových jader, která pracují na frekvenci 160 MHz, obrovské množství paměti, WiFi, Bluetooth a mnoho dalších funkcí za cenu kolem 7 $! Úžasné věci!

Podívejte se prosím na podrobnou recenzi, kterou jsem pro tuto desku připravil. Připojil jsem video k tomuto Instructable. Pomůže to pochopit, proč tento čip navždy změní způsob, jakým věci děláme! Jednou z nejzajímavějších věcí na ESP32 je, že přestože je tak výkonný, nabízí režim hlubokého spánku, který vyžaduje pouze 10μΑs proudu. Díky tomu je ESP32 ideálním čipem pro aplikace s nízkým výkonem.

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

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

Displej je velký a nabízí rozlišení 320 x 240 pixelů. Ve srovnání s jedním z mých oblíbených displejů, 1,8palcovým barevným TFT displejem jej můžete vidět mnohem větší. Obrazovka také nabízí dotykové funkce, což je další bonus, a slot pro kartu SD na zadní straně. Využívá rozhraní SPI, takže propojení s deskou Arduino nebo ESP32 je velmi jednoduché. Náklady na displej jsou relativně nízké; stojí kolem 11 $, což je podle mého názoru férová cena za to, co tento displej nabízí.

Další věcí, jako je tento displej, je to, že nepřichází jako štít jako dotykový displej, který jsme dosud používali. Tímto způsobem můžeme připojit displej k jakékoli desce, Arduino Pro mini, STM32, ESP8266 a ESP32. To je velmi důležité, protože nyní máme levný displej, který můžeme použít na každé desce. Dosud jediným dotykovým displejem, který jsme s těmito deskami mohli používat, byly displeje Nextion, které jsou dražší, a abych byl upřímný, i když je čas od času používám, nemám je moc rád.

Krok 4: Připojení displeje

Připojení displeje
Připojení displeje
Připojení displeje
Připojení displeje
Připojení displeje
Připojení displeje
Připojení displeje
Připojení displeje

Nejprve musíme připojit desku ESP32 k 2,8”displeji. Schéma najdete v příloze Instructable. Používám tuto desku DOIT ESP32, která byla vydána asi před dvěma lety. Tato verze desky již není k dispozici, protože nyní je k dispozici její novější verze, která nabízí více pinů, tuto. Jediný důvod, proč používám starou verzi desky, je ten, že GND pin desky je umístěn vedle kolíků SPI, na stejné straně desky, což z ní dělá prkénko přátelské.

Po připojení displeje k desce můžeme projekt zapnout. Po několika sekundách přijímáme živá data z blízkého zařízení Xiaomi. Protože zařízení používá Bluetooth 4, jeho dosah je docela dobrý. Můžeme snadno získat data, která toto zařízení přenáší, ze vzdálenosti až 10 metrů nebo více! Můžeme také obdržet úroveň baterie zařízení Xiaomi, ale tuto hodnotu nezobrazuji na obrazovce.

Pokud použijeme tento USB měřič, můžeme vidět, že aktuální odběr tohoto projektu je kolem 120-150 mA pomocí tohoto velkého displeje. Pokud použijeme displej z elektronického papíru, uvedeme desku ESP32 do režimu hlubokého spánku a každých několik minut získáme data ze senzoru, můžeme tento projekt přizpůsobit baterii. Zkusím to v budoucím videu. Tento projekt je jen ukázkou toho, že můžeme data z tohoto zařízení získávat bezdrátově.

Krok 5: Kód projektu

Kodex projektu
Kodex projektu

Pojďme se nyní podívat na softwarovou stránku projektu.

Na tomto projektu je založen kód projektu:

Použil jsem kód, který tato data získává ze zařízení Xiaomi, a vytvořil jsem s ním samostatný projekt.

V této proměnné prohlašujeme, že potřebujeme každých 10 sekund získávat nová data.

#define SCAN_TIME 10 // sekund

Zde prohlašujeme, že chceme zobrazit teplotu ve stupních Celsia. Pokud chcete použít systém Imperial, nastavte tuto proměnnou na hodnotu false.

boolean METRIC = true; // Set true pro metrický systém; falešný pro imperiální

Při funkci nastavení inicializujeme displej a modul Bluetooth desky ESP32 a poté nakreslíme uživatelské rozhraní na obrazovku.

neplatné nastavení () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // deaktivujte detektor Brownout

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Dále každých 10 sekund hledáme zařízení Bluetooth poblíž. Nepřipojujeme se k zařízení Xiaomi, protože to není potřeba. Prohledáváme pouze blízká nízkoenergetická periferie Bluetooth a kontrolujeme vysílané reklamní pakety.

void loop () {char printLog [256]; Serial.printf ("Spustit BLE skenování na %d sekund … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Počet nalezených zařízení: %d / n", počet);

zpoždění (100);

}

V těchto paketech jsou uloženy hodnoty vlhkosti a teploty, takže je musíme pouze přečíst. Poté, co hodnoty přečteme, je zobrazíme na obrazovce. Jako vždy můžete najít odkaz na kód tohoto projektu v popisu připojeném k tomuto Instructable.

Krok 6: Poslední myšlenky a vylepšení

Závěrečné myšlenky a vylepšení
Závěrečné myšlenky a vylepšení
Závěrečné myšlenky a vylepšení
Závěrečné myšlenky a vylepšení

Nyní, když víme, jak bezdrátově získávat data z tohoto senzoru, můžeme postavit kompletní meteorologickou stanici napájenou bateriemi. Protože je toto zařízení Xiaomi komerčním produktem, nabízí skvělou výdrž baterie. U našich projektů zatím bohužel nemůžeme dosáhnout podobné spotřeby baterie. Plánuji tedy použít tento senzor jako venkovní senzor pro projekt meteorologické stanice, který bude používat velký displej z elektronického papíru. Bude to skvělé. Také budu hledat další zařízení Xiaomi s podporou Bluetooth, která můžeme hacknout podobným způsobem. Zůstaňte naladěni.

Rád bych znal váš názor na tento projekt. Považujete za užitečné, že můžeme získávat data z některých komerčních zařízení Bluetooth? Co budete stavět pomocí této funkce? Rád bych si přečetl vaše nápady, proto je prosím uveďte v sekci komentáře níže. Dík!

Doporučuje: