Tartalomjegyzék:

ESP32 Xiaomi Hack - Vezeték nélküli adatgyűjtés: 6 lépés (képekkel)
ESP32 Xiaomi Hack - Vezeték nélküli adatgyűjtés: 6 lépés (képekkel)

Videó: ESP32 Xiaomi Hack - Vezeték nélküli adatgyűjtés: 6 lépés (képekkel)

Videó: ESP32 Xiaomi Hack - Vezeték nélküli adatgyűjtés: 6 lépés (képekkel)
Videó: Dyson V10 & Xiaomi G10 2024, November
Anonim
Image
Image
ESP32 Xiaomi Hack - vezeték nélküli adatgyűjtés
ESP32 Xiaomi Hack - vezeték nélküli adatgyűjtés

Kedves barátaink, üdvözöljük egy másik Instructable -ban! Ma megtanuljuk, hogyan szerezhetjük be azokat az adatokat, amelyeket ez a Xiaomi hőmérséklet- és páratartalom -monitor továbbít az ESP32 kártya Bluetooth funkciójának használatával.

Mint látható, ESP32 kártyát és 2,8 hüvelykes színes TFT kijelzőt használok. A kijelzőn a hőmérsékletet és a páratartalmat jelenítjük meg. A jó dolog az, hogy nem csatlakoztattam semmilyen érzékelőt az ESP32 kártyához. A hőmérsékletet és a páratartalmat vezeték nélkül kapom ettől a Xiaomi hőmérséklet- és páratartalom -figyelőtől. Milyen klassz ez! A Xiaomi készülék kijelzője másodpercenként frissül, de az ESP32 kártyához csatlakoztatott kijelzőt 10 másodpercenként frissítem, hogy a Xiaomi eszköz energiatakarékos legyen.

Ez a hűvös Xiaomi hőmérséklet- és páratartalom -érzékelő kijelzi a hőmérsékletet és a páratartalmat az LCD -kijelzőjén, és továbbítja az adatokat más Xiaomi eszközökhöz vagy alkalmazásokhoz a Bluetooth protokoll használatával. Az eszközök egyetlen AAA elemet használnak, és mivel kereskedelmi termékről van szó, az eszköz élettartama kiváló. Hónapokig tart egyetlen AAA elemmel, amit nem tudunk elérni barkácsprojektjeinkkel. Néhány héttel ezelőtt felfedeztem, hogy néhány okos fickónak sikerült megváltoztatnia azt a protokollt, amelyet a Xiaomi használ az adatok érzékelőből történő továbbítására, és sikerült ezeket az adatokat egy ESP32 kártya segítségével beszerezni. Szóval kipróbáltam, és ahogy látod működik!

1. lépés: Szerezze be az összes alkatrészt

Szerezd meg az összes alkatrészt
Szerezd meg az összes alkatrészt

Most nézzük meg, hogyan építsük fel ezt a projektet. Szükségünk van egy ESP32 kártyára, egy 2,8 hüvelykes ILI9341 kijelzőre, a Xiaomi hőmérséklet- és páratartalom -érzékelőre, egy kenyérlapra és néhány vezetékre.

Íme néhány link azokra az alkatrészekre, amelyeket ebben az utasításban fogok használni.

  • ESP32 ▶
  • 2,8 "Kijelző ▶
  • Xiaomi szenzor ▶
  • Breadboard ▶
  • Vezetékek ▶
  • USB -mérő ▶
  • Powerbank ▶

2. lépés: Az ESP32 kártya

Image
Image
Az ESP32 tábla
Az ESP32 tábla

Ha még nem ismerné, az ESP32 chip a népszerű ESP8266 chip utódja, amelyet a múltban sokszor használtunk. Az ESP32 egy vadállat! Két 32 processzormagot kínál, amelyek 160 MHz -en működnek, hatalmas mennyiségű memóriát, WiFi -t, Bluetooth -ot és sok más funkciót kínál, körülbelül 7 dollár költséggel! Elképesztő dolgok!

Kérjük, nézze meg a részletes áttekintést, amelyet erre a táblára készítettem. Csatoltam a videót ehhez az Instructable -hez. Segít megérteni, hogy ez a chip miért változtatja meg örökre a dolgok elkészítésének módját! Az egyik legizgalmasabb dolog az ESP32-ben az, hogy annak ellenére, hogy annyira erős, mély alvó üzemmódot kínál, amely mindössze 10μΑs áramot igényel. Ez teszi az ESP32 -t ideális lapkává az alacsony teljesítményű alkalmazásokhoz.

3. lépés: 2,8 hüvelykes TFT kijelző Arduino és ESP32 készülékekhez

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

A kijelző nagy, felbontása 320x240 pixel. Az egyik kedvenc kijelzőmhöz képest az 1,8 hüvelykes színes TFT kijelző sokkal nagyobb méretű. A képernyő érintő funkciókat is kínál, ami plusz bónusz, és SD kártyahely a hátlapon. Az SPI interfészt használja, így a kapcsolat az Arduino vagy az ESP32 kártyával nagyon egyszerű. A kijelző ára viszonylag alacsony; körülbelül 11 dollárba kerül, ami véleményem szerint korrekt ár ahhoz, amit ez a kijelző kínál.

Egy másik dolog, mint ez a kijelző, az, hogy nem olyan pajzs, mint az eddig használt érintőképernyő. Így bármilyen kijelzőhöz csatlakoztathatjuk a kijelzőt, az Arduino Pro mini -t, az STM32 -et, az ESP8266 -ot és az ESP32 -t. Ez nagyon fontos, mert most van egy olcsó kijelzőnk, amelyet minden táblával használhatunk. Eddig az egyetlen érintőképernyő, amelyet ezekkel a táblákkal használhattunk, a Nextion kijelzők voltak, amelyek drágábbak, és őszintén szólva, bár időnként használom őket, nem igazán szeretem őket.

4. lépés: A kijelző csatlakoztatása

A kijelző csatlakoztatása
A kijelző csatlakoztatása
A kijelző csatlakoztatása
A kijelző csatlakoztatása
A kijelző csatlakoztatása
A kijelző csatlakoztatása
A kijelző csatlakoztatása
A kijelző csatlakoztatása

Először az ESP32 kártyát kell csatlakoztatnunk a 2,8 hüvelykes kijelzőhöz. A vázlatot az Instructable csatolásában találja. Ezt a DOIT ESP32 kártyát használom, amely körülbelül két éve jelent meg. A tábla ezen verziója már nem érhető el, mivel most már rendelkezésre áll egy újabb verziója, amely több tűt kínál, ez az egyik. Az egyetlen ok, amiért a tábla régi verzióját használom, az, hogy a tábla GND csapja az SPI csapok mellé, a tábla ugyanazon oldalára van helyezve, ami kenyérpirítóbarát.

Miután csatlakoztattuk a kijelzőt a táblához, bekapcsolhatjuk a projektet. Néhány másodperc múlva élő adatokat kapunk a közeli Xiaomi eszközről. Mivel a készülék Bluetooth 4 -et használ, a hatótávolsága elég jó. Könnyen beszerezhetjük az eszköz által továbbított adatokat akár 10 méteres vagy annál nagyobb távolságból is! Fogadhatjuk a Xiaomi eszköz akkumulátorának töltöttségi szintjét is, de ezt az értéket nem jelenítem meg a képernyőn.

Ha ezt az USB-mérőt használjuk, láthatjuk, hogy a projekt jelenlegi húzása 120-150 mA körül van ezzel a nagy kijelzővel. Ha e-papír kijelzőt használunk, tegyük az ESP32 kártyát mély alvás üzemmódba, és néhány percenként lekérjük az érzékelő adatait, így barátságosabbá tehetjük ezt a projektet. Ezt egy későbbi videóban kipróbálom. Ez a projekt csak demonstráció, hogy vezeték nélkül tudunk adatokat szerezni erről az eszközről.

5. lépés: A projekt kódja

A projekt kódja
A projekt kódja

Nézzük most a projekt szoftveres oldalát.

A projekt kódja ezen a projekten alapul:

Azt a kódot használtam, amely ezeket az adatokat a Xiaomi eszközről kapja, és önálló projektet építettem vele.

Ebben a változóban kijelentjük, hogy 10 másodpercenként friss adatokat kell beszereznünk.

#define SCAN_TIME 10 // másodperc

Itt kijelentjük, hogy a hőmérsékletet Celsius fokban szeretnénk megjeleníteni. Ha az Imperial rendszert szeretné használni, állítsa ezt a változót hamis értékre.

boolean METRIC = igaz; // Igazítsa be a metrikus rendszerhez; hamis a császári

A beállítási funkciónál inicializáljuk az ESP32 kártya kijelzőjét és Bluetooth modulját, majd rajzoljuk a felhasználói felületet a képernyőn.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // letiltja a barnulásérzékelőt

tft.begin ();

Sorozat.kezdet (115200);

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

drawUI ();

}

Ezután 10 másodpercenként keressük a közelben lévő Bluetooth -eszközöket. Nem hozunk létre kapcsolatot a Xiaomi készülékkel, mivel nincs rá szükség. Csak a közeli Bluetooth alacsony energiájú perifériákat keressük, és ellenőrizzük a sugárzott reklámcsomagokat.

void loop () {char printLog [256]; Serial.printf ("Indítsa el a BLE vizsgálatot %d másodpercig… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Talált eszközök száma: %d / n", count);

késleltetés (100);

}

A páratartalom és a hőmérséklet értékei ezekben a csomagokban vannak tárolva, ezért csak ki kell olvasnunk őket. Az értékek elolvasása után megjelenítjük azokat a képernyőn. Mint mindig, az útmutatóhoz csatolt leírásban talál linket a projekt kódjára.

6. lépés: Végső gondolatok és fejlesztések

Végső gondolatok és fejlesztések
Végső gondolatok és fejlesztések
Végső gondolatok és fejlesztések
Végső gondolatok és fejlesztések

Most, hogy tudjuk, hogyan lehet vezeték nélkül adatokat szerezni erről az érzékelőről, felépíthetünk egy teljes, akkumulátorral működő időjárás-állomást. Mivel ez a Xiaomi készülék kereskedelmi termék, nagy akkumulátor -élettartamot kínál. Sajnos a projektjeinkben még nem tudunk hasonló akkumulátor -fogyasztást elérni. Tehát azt tervezem, hogy ezt az érzékelőt kültéri érzékelőként fogom használni egy időjárás-állomás projektnél, amely nagy e-papír kijelzőt fog használni. Hűvös lesz. Ezenkívül más Xiaomi Bluetooth -kompatibilis eszközöket fogok keresni, amelyeket hasonló módon feltörhetünk. Maradjon velünk.

Szeretném tudni a véleményét erről a projektről. Hasznosnak tartja, hogy bizonyos kereskedelmi Bluetooth -eszközökről adatokat szerezhetünk? Mit fogsz építeni ezzel a funkcióval? Szeretném elolvasni ötleteit, ezért kérjük, tegye közzé őket az alábbi megjegyzések részben. Kösz!

Ajánlott: