Taula de continguts:
- Pas 1: Obteniu totes les parts
- Pas 2: el tauler ESP32
- Pas 3: Pantalla TFT de 2,8 "per a Arduino i ESP32
- Pas 4: connectar la pantalla
- Pas 5: el codi del projecte
- Pas 6: Pensaments finals i millores
Vídeo: ESP32 Xiaomi Hack: obtenir dades sense fils: 6 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
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
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
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
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
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
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
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:
Shelly Sense: alimentació sense fils (WPC Qi Standard): 5 passos (amb imatges)
Shelly Sense: alimentació sense fils (WPC Qi Standard): ATENCIÓ: després d’aquest tutorial perdreu la garantia i també corre el risc de trencar el vostre Shelly Sense. Feu-ho només si sabeu què feu i si sou conscients dels riscos. El Shelly Sense és un producte increïble per percebre tots els
Estació meteorològica amb transmissió de dades sense fils: 8 passos
Estació meteorològica amb transmissió de dades sense fils: aquesta instrucció és l’actualització del meu projecte anterior: estació meteorològica amb registre de dades. Es pot veure el projecte anterior aquí - Estació meteorològica amb registre de dades Si teniu alguna pregunta o problema, podeu posar-vos en contacte amb mi al meu correu electrònic: iwx.production@gmai
Com obtenir dades d'una base de dades de Firebase a NodeMCU: 7 passos
Com obtenir dades d'una base de dades de Firebase a NodeMCU: per fer-ho, obtindrem dades d'una base de dades a Google Firebase i les recuperarem mitjançant un NodeMCU per analitzar-les més. REQUISITS DEL PROJECTE: 1) NodeMCU o ESP8266 Controller2) G-Mail compte per crear una base de dades de Firebase. 3) Descarregueu el
Registrador de dades GPS sense fils per a la vida salvatge: 9 passos (amb imatges)
Registrador de dades GPS sense fils per a la vida salvatge: en aquest instructiu, us mostrarem com fer un registrador de dades GPS basat en Arduino, petit i econòmic, amb capacitat sense fils. L’ús de telemetria per estudiar el moviment de la vida salvatge pot ser una eina molt important per als biòlegs. Us pot dir on
Introduïu un timbre sense fils en un interruptor d'alarma sense fils o un interruptor d'encesa / apagat: 4 passos
Introduïu un timbre sense fils en un interruptor d'alarma sense fils o en un interruptor d'encès / apagat: recentment he construït un sistema d'alarma i l'he instal·lat a casa. Vaig fer servir interruptors magnètics a les portes i els vaig connectar a través de les golfes: les finestres eren una altra història i el cablejat dur no era una opció. Necessitava una solució sense fils i això és