Tabla de contenido:

ESP32 Xiaomi Hack - Obtenga datos de forma inalámbrica: 6 pasos (con imágenes)
ESP32 Xiaomi Hack - Obtenga datos de forma inalámbrica: 6 pasos (con imágenes)

Video: ESP32 Xiaomi Hack - Obtenga datos de forma inalámbrica: 6 pasos (con imágenes)

Video: ESP32 Xiaomi Hack - Obtenga datos de forma inalámbrica: 6 pasos (con imágenes)
Video: ESP32 desde Cero - Tutorial 7: Mostrar los Datos de un Sensor en una Página Web 2024, Mes de julio
Anonim
Image
Image
ESP32 Xiaomi Hack - Obtener datos de forma inalámbrica
ESP32 Xiaomi Hack - Obtener datos de forma inalámbrica

Queridos amigos, ¡bienvenidos a otro Instructable! Hoy vamos a aprender cómo obtener los datos que transmite este monitor de Temperatura y Humedad Xiaomi usando la funcionalidad Bluetooth de la placa ESP32.

Como puede ver, estoy usando una placa ESP32 y una pantalla TFT a color de 2.8”. En la pantalla mostramos la temperatura y la humedad. Lo bueno es que no he conectado ningún sensor a la placa ESP32. Obtengo la temperatura y la humedad de forma inalámbrica desde este monitor comercial de temperatura y humedad de Xiaomi. ¡Cuan genial es eso! La pantalla del dispositivo Xiaomi se actualiza cada segundo, pero actualizo la pantalla que está conectada a la placa ESP32 cada 10 segundos para ahorrar energía en el dispositivo Xiaomi.

Este fresco sensor de temperatura y humedad de Xiaomi muestra la temperatura y la humedad en su pantalla LCD y también puede transmitir los datos a otros dispositivos o aplicaciones Xiaomi mediante el protocolo Bluetooth. Los dispositivos utilizan una sola batería AAA y, dado que es un producto comercial, la duración de la batería del dispositivo es excelente. Puede durar meses con una sola batería AAA, algo que no podemos lograr en nuestros proyectos de bricolaje. Hace unas semanas, descubrí que algunos tipos inteligentes lograron realizar ingeniería inversa del protocolo que usa Xiaomi para transmitir los datos del sensor y lograron obtener esos datos usando una placa ESP32. ¡Así que lo probé y, como pueden ver, funciona!

Paso 1: obtenga todas las piezas

Obtenga todas las piezas
Obtenga todas las piezas

Veamos ahora cómo construir este proyecto. Necesitamos una placa ESP32, una pantalla ILI9341 de 2,8”, el sensor de temperatura y humedad Xiaomi, una placa de pruebas y algunos cables.

Aquí hay algunos enlaces a las partes que voy a usar en este Instructable.

  • ESP32 ▶
  • Pantalla de 2.8 "▶
  • Sensor Xiaomi ▶
  • Protoboard ▶
  • Cables ▶
  • Medidor USB ▶
  • Banco de energía ▶

Paso 2: la placa ESP32

Image
Image
La placa ESP32
La placa ESP32

Si no está familiarizado con él, el chip ESP32 es el sucesor del popular chip ESP8266 que hemos usado muchas veces en el pasado. ¡El ESP32 es una bestia! Ofrece dos 32 núcleos de procesamiento que operan a 160MHz, una gran cantidad de memoria, WiFi, Bluetooth y muchas otras características con un costo de alrededor de 7 $. ¡Cosas asombrosas!

Por favor, mire la revisión detallada que he preparado para esta placa. He adjuntado el video en este Instructable. ¡Ayudará a comprender por qué este chip cambiará la forma en que hacemos las cosas para siempre! Una de las cosas más emocionantes del ESP32 es que, aunque es tan poderoso, ofrece un modo de suspensión profunda que requiere solo 10μΑs de corriente. Esto hace que el ESP32 sea el chip ideal para aplicaciones de baja potencia.

Paso 3: Pantalla TFT de 2.8 "para Arduino y ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

La pantalla es grande y ofrece una resolución de 320x240 píxeles. Comparada con una de mis pantallas favoritas, la pantalla TFT en color de 1.8”se puede ver mucho más grande. La pantalla también ofrece funcionalidad táctil que es una ventaja adicional y una ranura para tarjeta SD en la parte posterior. Utiliza la interfaz SPI, por lo que la conexión con Arduino o la placa ESP32 es muy sencilla. El costo de la pantalla es relativamente bajo; Cuesta alrededor de 11 $ que, en mi opinión, es un precio justo para lo que ofrece esta pantalla.

Otra cosa similar a esta pantalla es que no viene como un escudo como la pantalla táctil que estábamos usando hasta ahora. De esta manera, podemos conectar la pantalla a cualquier placa, la Arduino Pro mini, la STM32, la ESP8266 y la ESP32. Esto es muy importante porque ahora tenemos una pantalla de bajo costo que podemos usar con cada placa. Hasta ahora, la única pantalla táctil que podíamos usar con estas placas eran las pantallas Nextion, que son más caras y, para ser honesto, aunque las uso de vez en cuando, realmente no me gustan.

Paso 4: Conexión de la pantalla

Conexión de la pantalla
Conexión de la pantalla
Conexión de la pantalla
Conexión de la pantalla
Conexión de la pantalla
Conexión de la pantalla
Conexión de la pantalla
Conexión de la pantalla

Primero, tenemos que conectar la placa ESP32 a la pantalla de 2.8”. Puede encontrar el esquema adjunto a Instructable. Estoy usando esta placa DOIT ESP32 que se lanzó hace unos dos años. Esta versión de la placa ya no está disponible ya que ahora hay una versión más nueva disponible que ofrece más pines, este. La única razón por la que estoy usando la versión anterior de la placa es que el pin GND de la placa se coloca junto a los pines SPI, en el mismo lado de la placa, lo que la hace compatible con la placa de pruebas.

Después de conectar la pantalla a la placa, podemos encender el proyecto. Después de unos segundos, recibimos datos en vivo del dispositivo Xiaomi cercano. Dado que el dispositivo usa Bluetooth 4, el alcance es bastante bueno. ¡Podemos obtener fácilmente los datos que transmite este dispositivo desde distancias de hasta 10 metros o más! También podemos recibir el nivel de batería del dispositivo Xiaomi, pero no muestro este valor en la pantalla.

Si usamos este medidor USB, podemos ver que el consumo de corriente de este proyecto es de alrededor de 120-150 mA usando esta gran pantalla. Si usamos una pantalla de papel electrónico, ponemos la placa ESP32 en modo de suspensión profunda y obtenemos datos del sensor cada pocos minutos, podemos hacer que este proyecto sea compatible con la batería. Intentaré esto en un video futuro. Este proyecto es solo una demostración de que podemos obtener datos de este dispositivo de forma inalámbrica.

Paso 5: el código del proyecto

El Código del Proyecto
El Código del Proyecto

Veamos ahora el lado del software del proyecto.

El código del proyecto se basa en este proyecto:

Usé el código que obtiene esos datos del dispositivo Xiaomi y construí un proyecto independiente con él.

En esta variable, declaramos que necesitamos obtener datos nuevos cada 10 segundos.

#define SCAN_TIME 10 // segundos

Aquí, declaramos que queremos mostrar la temperatura en grados Celsius. Si desea utilizar el sistema Imperial, establezca esta variable en falso.

MÉTRICA booleana = verdadero; // Establecer verdadero para el sistema métrico; falso para imperial

En la función de configuración inicializamos la pantalla y el módulo Bluetooth de la placa ESP32 y luego dibujamos la interfaz de usuario en la pantalla.

configuración vacía () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // deshabilitar el detector de apagones

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

A continuación, buscamos dispositivos Bluetooth cercanos cada 10 segundos. No hacemos una conexión con el dispositivo Xiaomi porque no es necesario. Solo buscamos periféricos Bluetooth de baja energía cercanos y verificamos los paquetes de anuncios de transmisión.

bucle vacío () {char printLog [256]; Serial.printf ("Iniciar escaneo BLE durante% d segundos … / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); int count = foundDevices.getCount (); printf ("Recuento de dispositivos encontrados:% d / n", recuento);

retraso (100);

}

Los valores de humedad y temperatura se almacenan en esos paquetes, por lo que solo necesitamos leerlos. Después de leer los valores, los mostramos en la pantalla. Como siempre, puede encontrar un enlace al código de este proyecto en la descripción adjunta a este Instructable.

Paso 6: Reflexiones finales y mejoras

Reflexiones finales y mejoras
Reflexiones finales y mejoras
Reflexiones finales y mejoras
Reflexiones finales y mejoras

Ahora que sabemos cómo obtener datos de forma inalámbrica de este sensor, podemos construir una estación meteorológica completa que funcione con baterías. Dado que este dispositivo Xiaomi es un producto comercial, ofrece una gran duración de batería. Desafortunadamente, todavía no podemos lograr un consumo de batería similar en nuestros proyectos. Entonces, planeo usar este sensor como sensor exterior para un proyecto de estación meteorológica que usará una gran pantalla de papel electrónico. Será guay. Además, voy a buscar otros dispositivos con Bluetooth de Xiaomi que podamos piratear de manera similar. Manténganse al tanto.

Me encantaría conocer tu opinión sobre este proyecto. ¿Le resulta útil que podamos obtener datos de algunos dispositivos Bluetooth comerciales? ¿Qué vas a construir usando esta funcionalidad? Me gustaría leer sus ideas, así que publíquelas en la sección de comentarios a continuación. ¡Gracias!

Recomendado: