Índice:

ESP32 Xiaomi Hack - Obtenha dados sem fio: 6 etapas (com imagens)
ESP32 Xiaomi Hack - Obtenha dados sem fio: 6 etapas (com imagens)

Vídeo: ESP32 Xiaomi Hack - Obtenha dados sem fio: 6 etapas (com imagens)

Vídeo: ESP32 Xiaomi Hack - Obtenha dados sem fio: 6 etapas (com imagens)
Vídeo: ESP32 Xiaomi Bluetooth Hack - Get data wirelessly 2024, Julho
Anonim
Image
Image
ESP32 Xiaomi Hack - Obtenha dados sem fio
ESP32 Xiaomi Hack - Obtenha dados sem fio

Caros amigos bem vindos a mais um Instructable! Hoje vamos aprender como obter os dados que este monitor de temperatura e umidade da Xiaomi transmite usando a funcionalidade Bluetooth da placa ESP32.

Como você pode ver, estou usando uma placa ESP32 e um display TFT colorido de 2,8”. No display, mostramos a temperatura e a umidade. O legal é que não conectei nenhum sensor à placa ESP32. Eu obtenho a temperatura e a umidade sem fio com este monitor comercial de temperatura e umidade da Xiaomi. Quão legal é isso! A tela do dispositivo Xiaomi é atualizada a cada segundo, mas eu atualizo a tela que está conectada à placa ESP32 a cada 10 segundos para economizar energia no dispositivo Xiaomi.

Este sensor de temperatura e umidade da Xiaomi exibe a temperatura e a umidade em seu display LCD e também pode transmitir os dados para outros dispositivos ou aplicativos da Xiaomi usando o protocolo Bluetooth. Os dispositivos usam uma única bateria AAA e, por se tratar de um produto comercial, a vida útil da bateria do dispositivo é excelente. Pode durar meses com uma única bateria AAA, algo que não podemos alcançar em nossos projetos DIY. Algumas semanas atrás, descobri que alguns caras inteligentes conseguiram fazer a engenharia reversa do protocolo que a Xiaomi usa para transmitir os dados do sensor e conseguiram esses dados usando uma placa ESP32. Experimentei e, como podem ver, funciona!

Etapa 1: Obtenha todas as peças

Obtenha todas as peças
Obtenha todas as peças

Vamos agora ver como construir este projeto. Precisamos de uma placa ESP32, uma tela ILI9341 de 2,8”, o sensor de temperatura e umidade Xiaomi, uma placa de ensaio e alguns fios.

Aqui estão alguns links para as partes que irei usar neste Instructable.

  • ESP32 ▶
  • 2.8 "Display ▶
  • Sensor Xiaomi ▶
  • Breadboard ▶
  • Wires ▶
  • Medidor USB ▶
  • Powerbank ▶

Etapa 2: a placa ESP32

Image
Image
A placa ESP32
A placa ESP32

Se você não estiver familiarizado com ele, o chip ESP32 é o sucessor do chip ESP8266 popular que usamos muitas vezes no passado. O ESP32 é uma fera! Ele oferece dois núcleos de processamento de 32 que operam a 160 MHz, uma enorme quantidade de memória, WiFi, Bluetooth e muitos outros recursos com um custo de cerca de 7 $! Coisas incríveis!

Por favor, assista à análise detalhada que preparei para este fórum. Anexei o vídeo neste Instructable. Isso ajudará a entender por que esse chip mudará a maneira como fazemos as coisas para sempre! Uma das coisas mais interessantes sobre o ESP32 é que, embora seja tão poderoso, ele oferece um modo de hibernação que requer apenas 10μΑs de corrente. Isso torna o ESP32 o chip ideal para aplicações de baixo consumo de energia.

Etapa 3: Display TFT de 2,8 "para Arduino e ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

A tela é grande e oferece resolução de 320x240 pixels. Comparado com um dos meus monitores favoritos, o monitor TFT colorido de 1,8”você pode vê-lo muito maior. A tela também oferece funcionalidade de toque, que é um bônus adicional, e um slot para cartão SD na parte traseira. Ele usa a interface SPI, então a conexão com o Arduino ou a placa ESP32 é muito direta. O custo da tela é relativamente baixo; custa cerca de 11 $, o que na minha opinião é um preço justo para o que esta tela oferece.

Outra coisa parecida com esta tela é que ela não vem como uma proteção como a tela de toque que estávamos usando até agora. Dessa forma, podemos conectar o display a qualquer placa, o Arduino Pro mini, o STM32, o ESP8266 e o ESP32. Isso é muito importante porque agora temos uma tela de baixo custo que podemos usar com todas as placas. Até agora, a única tela de toque que podíamos usar com essas placas eram as telas do Nextion, que são mais caras e, para ser honesto, embora eu as use de vez em quando, eu realmente não gosto delas.

Etapa 4: conectando o monitor

Conectando a tela
Conectando a tela
Conectando a tela
Conectando a tela
Conectando o monitor
Conectando o monitor
Conectando a tela
Conectando a tela

Primeiro, temos que conectar a placa ESP32 à tela de 2,8”. Você pode encontrar o esquema anexado ao Instructable. Estou usando esta placa DOIT ESP32 que foi lançada há cerca de dois anos. Esta versão do tabuleiro não está mais disponível, pois agora existe uma versão mais recente que oferece mais pins, este aqui. O único motivo pelo qual estou usando a versão antiga da placa é que o pino GND da placa está localizado próximo aos pinos SPI, no mesmo lado da placa, o que a torna amigável para a breadboard.

Depois de conectar o display ao quadro, podemos ligar o projeto. Depois de alguns segundos, recebemos dados ao vivo do Dispositivo Xiaomi nas proximidades. Como o dispositivo usa Bluetooth 4, o alcance dele é muito bom. Podemos obter facilmente os dados que este dispositivo transmite de distâncias de até 10 metros ou mais! Também podemos receber o nível da bateria do Dispositivo Xiaomi, mas não exibo esse valor na tela.

Se usarmos este medidor USB, podemos ver que o consumo de corrente deste projeto é em torno de 120-150 mA usando este grande display. Se usarmos um display de papel eletrônico, colocar a placa ESP32 no modo de hibernação e obter dados do sensor a cada poucos minutos, podemos tornar este projeto amigável com a bateria. Vou tentar isso em um vídeo futuro. Este projeto é apenas uma demonstração de que podemos obter dados deste dispositivo sem fio.

Etapa 5: O Código do Projeto

O Código do Projeto
O Código do Projeto

Vamos agora ver o lado do software do projeto.

O código do projeto é baseado neste projeto:

Usei o código que obtém os dados do dispositivo Xiaomi e construí um projeto autônomo com ele.

Nesta variável, declaramos que precisamos obter novos dados a cada 10 segundos.

# define SCAN_TIME 10 // segundos

Aqui, declaramos que queremos exibir a temperatura em graus Celsius. Se você quiser usar o sistema Imperial apenas defina esta variável como falsa.

boolean METRIC = true; // Defina verdadeiro para o sistema métrico; falso para imperial

Na função de configuração, inicializamos o display e o módulo Bluetooth da placa ESP32 e, em seguida, desenhamos a interface do usuário na tela.

void setup () {

WRITE_PERI_REG (RTC_CNTL_BROWN_OUT_REG, 0); // desativa o detector de queda de energia

tft.begin ();

Serial.begin (115200);

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

drawUI ();

}

Em seguida, procuramos dispositivos Bluetooth próximos a cada 10 segundos. Não fazemos conexão com o Dispositivo Xiaomi, pois ele não é necessário. Nós apenas verificamos os periféricos Bluetooth de baixa energia próximos e verificamos os pacotes de anúncios de transmissão.

void loop () {char printLog [256]; Serial.printf ("Iniciar varredura BLE por% d segundos… / n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan-> start (SCAN_TIME); contagem interna = foundDevices.getCount (); printf ("Contagem de dispositivos encontrados:% d / n", contagem);

atraso (100);

}

Os valores de umidade e temperatura são armazenados nesses pacotes, portanto, só precisamos lê-los. Depois de ler os valores, nós os exibimos na tela. Como sempre, você pode encontrar um link para o código deste projeto na descrição anexada a este Instructable.

Etapa 6: Considerações Finais e Melhorias

Considerações finais e melhorias
Considerações finais e melhorias
Considerações finais e melhorias
Considerações finais e melhorias

Agora que sabemos como obter dados sem fio desse sensor, podemos construir uma estação meteorológica completa com bateria. Como este Dispositivo Xiaomi é um produto comercial, ele oferece uma grande autonomia de bateria. Infelizmente, ainda não podemos atingir o consumo de bateria semelhante em nossos projetos. Portanto, pretendo usar este sensor como um sensor externo para um projeto de estação meteorológica que usará um grande display de papel eletrônico. Vai ser legal. Além disso, vou procurar outros dispositivos habilitados para Xiaomi Bluetooth que possamos hackear de maneira semelhante. Fique ligado.

Eu adoraria saber sua opinião sobre este projeto. Você acha útil que possamos obter dados de alguns dispositivos Bluetooth comerciais? O que você vai construir usando essa funcionalidade? Eu gostaria de ler suas idéias, por favor, poste-as na seção de comentários abaixo. Obrigado!

Recomendado: