Índice:
- Etapa 1: Obtenha todas as peças
- Etapa 2: a placa ESP32
- Etapa 3: Display TFT de 2,8 "para Arduino e ESP32
- Etapa 4: conectando o monitor
- Etapa 5: O Código do Projeto
- Etapa 6: Considerações Finais e Melhorias
Vídeo: ESP32 Xiaomi Hack - Obtenha dados sem fio: 6 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:35
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
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
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
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
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
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
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:
Robô Arduino sem fio usando módulo sem fio HC12: 7 etapas
Robô Arduino sem fio usando módulo sem fio HC12: Olá pessoal, bem-vindos de volta. Em meu post anterior, eu expliquei o que é um circuito de ponte H, L293D motor driver IC, pegando carona L293D Motor driver IC para dirigir drivers de motor de alta corrente e como você pode projetar e fazer sua própria placa de driver de motor L293D
Ponto de acesso sem fio com alcance de cinquenta metros com adaptador sem fio TP Link WN7200ND USB no trecho Raspbian: 6 etapas
Ponto de acesso sem fio com alcance de cinquenta metros com adaptador sem fio USB TP Link WN7200ND no Raspbian Stretch: Raspberry Pi é ótimo para criar pontos de acesso sem fio seguros, mas não tem um bom alcance, usei um adaptador sem fio USB TP Link WN7200ND para estendê-lo. Quero compartilhar como fazer por que quero usar um pi de framboesa em vez de um roteador?
Faça você mesmo de microfone sem fio para sistema de guitarra sem fio: 4 etapas
Faça você mesmo de microfone sem fio para sistema de guitarra sem fio: Tenho assistido a alguns vídeos e bandas e quase todas usam um sistema sem fio na guitarra. Enlouquecer, mover-se, caminhar e fazer o que quiserem sem o cabo, então sonho em ter um .. Mas .. para mim agora é muito caro então eu vim para isso
Transforme uma campainha sem fio em um interruptor de alarme sem fio ou botão liga / desliga: 4 etapas
Transforme uma campainha sem fio em um interruptor de alarme sem fio ou botão liga / desliga: recentemente construí um sistema de alarme e o instalei em minha casa. Usei interruptores magnéticos nas portas e os conectei através do sótão. As janelas eram outra história e fiação direta não era uma opção. Eu precisava de uma solução sem fio e isso é
Converter roteador sem fio em ponto de acesso 2x do extensor sem fio: 5 etapas
Converter Roteador Wireless em Ponto de Acesso Wireless Extender 2x: Eu tinha uma conexão de internet wireless ruim em minha casa devido a um RSJ (viga de suporte de metal no teto) e queria aumentar o sinal ou adicionar um extensor extra para o resto da casa. Eu tinha visto extensores por cerca de £ 50 em um eletro