Taula de continguts:

ESP32 Xiaomi Hack: obtenir dades sense fils: 6 passos (amb imatges)
ESP32 Xiaomi Hack: obtenir dades sense fils: 6 passos (amb imatges)

Vídeo: ESP32 Xiaomi Hack: obtenir dades sense fils: 6 passos (amb imatges)

Vídeo: ESP32 Xiaomi Hack: obtenir dades sense fils: 6 passos (amb imatges)
Vídeo: Объяснение протоколов защиты беспроводных сетей WIFi - WEP, WPA, WPS 2024, Desembre
Anonim
Image
Image
ESP32 Xiaomi Hack: obtenir dades sense fils
ESP32 Xiaomi Hack: obtenir dades sense fils

Benvolguts amics, benvinguts a un altre instructable. Avui aprendrem a obtenir les dades que transmet aquest monitor de temperatura i humitat Xiaomi mitjançant la funcionalitat Bluetooth de la placa ESP32.

Com podeu veure, estic fent servir una placa ESP32 i una pantalla TFT de color de 2,8 polzades. A la pantalla, mostrem la temperatura i la humitat. El més interessant és que no he connectat cap sensor a la placa ESP32. Obtinc la temperatura i la humitat sense fils d’aquest monitor comercial de temperatura i humitat Xiaomi. Que guai! La pantalla del dispositiu Xiaomi s’actualitza cada segon, però actualitzo la pantalla que es connecta a la placa ESP32 cada 10 segons per estalviar energia al dispositiu Xiaomi.

Aquest fresc sensor de temperatura i humitat de Xiaomi mostra la temperatura i la humitat a la pantalla LCD i també pot transmetre les dades a altres dispositius o aplicacions Xiaomi mitjançant el protocol Bluetooth. Els dispositius fan servir una sola bateria AAA i, ja que és un producte comercial, la durada de la bateria del dispositiu és excel·lent. Pot durar una sola bateria AAA durant mesos, cosa que no podem aconseguir en els nostres projectes de bricolatge. Fa unes setmanes, vaig descobrir que alguns nois intel·ligents van aconseguir fer un enginy invers del protocol que fa servir Xiaomi per transmetre les dades del sensor i van aconseguir obtenir-les mitjançant una placa ESP32. Així que ho vaig provar i, com podeu veure, funciona!

Pas 1: Obteniu totes les parts

Obteniu totes les parts
Obteniu totes les parts

Vegem ara com construir aquest projecte. Necessitem una placa ESP32, una pantalla ILI9341 de 2,8”, el sensor de temperatura i humitat de Xiaomi, una placa de connexió i alguns cables.

Aquí hi ha alguns enllaços a les parts que faré servir en aquest instructable.

  • ESP32 ▶
  • Pantalla de 2,8 "▶
  • Sensor Xiaomi ▶
  • Tauler de pa ▶
  • Wires ▶
  • Mesurador USB ▶
  • Powerbank ▶

Pas 2: el tauler ESP32

Image
Image
La Junta ESP32
La Junta ESP32

Si no el coneixeu, el xip ESP32 és el successor del popular xip ESP8266 que hem utilitzat moltes vegades en el passat. L’ESP32 és una bèstia! Ofereix dos nuclis de processament de 32 que funcionen a 160 MHz, una gran quantitat de memòria, WiFi, Bluetooth i moltes altres funcions amb un cost d’uns 7 $. Coses increïbles!

Mireu la revisió detallada que he preparat per a aquest fòrum. He adjuntat el vídeo en aquest instructiu. Ajudarà a entendre per què aquest xip canviarà la nostra manera de fer les coses per sempre. Una de les coses més emocionants de l’ESP32 és que, tot i que és tan potent, ofereix un mode de son profund que requereix només 10μΑs de corrent. Això fa que l’ESP32 sigui el xip ideal per a aplicacions de baixa potència.

Pas 3: Pantalla TFT de 2,8 "per a Arduino i ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

La pantalla és gran i ofereix una resolució de 320x240 píxels. En comparació amb una de les meves pantalles preferides, la pantalla TFT a color d’1,8”la podeu veure molt més gran. La pantalla també ofereix una funcionalitat tàctil, que és un avantatge addicional i una ranura per a targetes SD a la part posterior. Utilitza la interfície SPI, de manera que la connexió amb l’Arduino o la placa ESP32 és molt senzilla. El cost de la pantalla és relativament baix; costa uns 11 $, que al meu entendre és un preu just pel que ofereix aquesta pantalla.

Una altra cosa semblant a aquesta pantalla és que no ve com un escut com la pantalla tàctil que fèiem servir fins ara. D’aquesta manera, podem connectar la pantalla a qualsevol tauler, l’Arduino Pro mini, l’STM32, l’ESP8266 i l’ESP32. Això és molt important perquè ara tenim una pantalla de baix cost que podem utilitzar amb tots els taulers. Fins ara, l’única pantalla tàctil que podíem utilitzar amb aquests taulers eren les pantalles Nextion que són més cares i, per ser sincer, tot i que les faig servir de tant en tant, no m’agraden molt.

Pas 4: connectar la pantalla

Connexió de la pantalla
Connexió de la pantalla
Connexió de la pantalla
Connexió de la pantalla
Connexió de la pantalla
Connexió de la pantalla
Connexió de la pantalla
Connexió de la pantalla

En primer lloc, hem de connectar la placa ESP32 a la pantalla de 2,8 polzades. Podeu trobar l'esquema adjunt a Instructable. Estic fent servir aquesta placa DOIT ESP32 que es va llançar fa uns dos anys. Aquesta versió del tauler ja no està disponible, ja que ara hi ha una versió més recent que ofereix més pins, aquesta. L’única raó per la qual faig servir la versió antiga del tauler és que el passador GND del tauler situat al costat dels passadors SPI, al mateix costat del tauler, fa que sigui molt agradable.

Després de connectar la pantalla al tauler, podem encendre el projecte. Al cap d’uns segons, rebem dades en directe des del dispositiu Xiaomi proper. Com que el dispositiu utilitza Bluetooth 4, el seu abast és bastant bo. Podem obtenir fàcilment les dades que aquest dispositiu transmet des de distàncies de fins a 10 metres o més. També podem rebre el nivell de bateria del dispositiu Xiaomi, però no mostro aquest valor a la pantalla.

Si fem servir aquest mesurador USB, podem veure que el dibuix actual d’aquest projecte és d’uns 120-150 mA mitjançant aquesta gran pantalla. Si fem servir una pantalla de paper electrònic, posem el tauler ESP32 en mode de repòs profund i obtenim dades del sensor cada pocs minuts perquè aquest projecte sigui fàcil de fer servir. Ho provaré en un futur vídeo. Aquest projecte és només una demostració que podem obtenir dades d’aquest dispositiu sense fils.

Pas 5: el codi del projecte

El Codi del Projecte
El Codi del Projecte

Vegem ara la part del programari del projecte.

El codi del projecte es basa en aquest projecte:

He utilitzat el codi que obté aquestes dades del dispositiu Xiaomi i he creat un projecte independent amb ell.

En aquesta variable, declarem que hem d’obtenir dades noves cada 10 segons.

#define SCAN_TIME 10 // segons

Aquí, declarem que volem mostrar la temperatura en graus centígrads. Si voleu utilitzar el sistema Imperial, establiu aquesta variable a false.

boolean METRIC = cert; // Estableix cert per al sistema mètric; fals per a imperial

A la funció de configuració inicialitzem la pantalla i el mòdul Bluetooth de la placa ESP32 i després dibuixem la interfície d'usuari a la pantalla.

configuració nul·la () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // desactiva el detector de marró

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

A continuació, cerquem dispositius Bluetooth a prop cada 10 segons. No fem cap connexió amb el dispositiu Xiaomi, ja que no és necessari. Només busquem perifèrics Bluetooth de baix consum propers i comprovem els paquets publicitaris emesos.

bucle buit () {char printLog [256]; Serial.printf ("Inicia l'escaneig BLE durant% d segons … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Recompte de dispositius trobat:% d / n", recompte);

retard (100);

}

Els valors d’humitat i temperatura s’emmagatzemen en aquests paquets, de manera que només cal llegir-los. Després de llegir els valors, els mostrem a la pantalla. Com sempre, podeu trobar un enllaç al codi d’aquest projecte a la descripció adjunta a aquest instructable.

Pas 6: Pensaments finals i millores

Pensaments i millores finals
Pensaments i millores finals
Pensaments finals i millores
Pensaments finals i millores

Ara que ja sabem com obtenir dades sense fils d’aquest sensor, podem construir una estació meteorològica completa amb bateria. Atès que aquest dispositiu Xiaomi és un producte comercial, ofereix una gran autonomia de la bateria. Malauradament, encara no podem aconseguir un consum de bateria similar en els nostres projectes. Per tant, tinc previst utilitzar aquest sensor com a sensor d’exterior per a un projecte d’estació meteorològica que farà servir una gran pantalla de paper electrònic. Serà genial. A més, vaig a buscar altres dispositius compatibles amb Xiaomi Bluetooth que puguem piratejar de manera similar. Estigueu atents.

M'encantaria conèixer la vostra opinió sobre aquest projecte. Trobeu útil que puguem obtenir dades d'alguns dispositius Bluetooth comercials? Què construireu amb aquesta funcionalitat? M'agradaria llegir les vostres idees, així que envieu-les a la secció de comentaris de sota. Gràcies!

Recomanat: