Table des matières:

ESP32 Xiaomi Hack - Obtenir des données sans fil: 6 étapes (avec photos)
ESP32 Xiaomi Hack - Obtenir des données sans fil: 6 étapes (avec photos)

Vidéo: ESP32 Xiaomi Hack - Obtenir des données sans fil: 6 étapes (avec photos)

Vidéo: ESP32 Xiaomi Hack - Obtenir des données sans fil: 6 étapes (avec photos)
Vidéo: Caméra sans fil WIFI à 5€ incroyable ! DIY Vidéosurveillance Raspberry Pi [Chmaude77 - EP03] 2024, Novembre
Anonim
Image
Image
ESP32 Xiaomi Hack - Obtenez des données sans fil
ESP32 Xiaomi Hack - Obtenez des données sans fil

Chers amis, bienvenue dans un autre Instructable ! Aujourd'hui, nous allons apprendre à obtenir les données que ce moniteur de température et d'humidité Xiaomi transmet à l'aide de la fonctionnalité Bluetooth de la carte ESP32.

Comme vous pouvez le voir, j'utilise une carte ESP32 et un écran TFT couleur de 2,8 pouces. Sur l'écran, nous affichons la température et l'humidité. Ce qui est cool, c'est que je n'ai connecté aucun capteur à la carte ESP32. J'obtiens la température et l'humidité sans fil à partir de ce moniteur de température et d'humidité Xiaomi commercial. À quel point cela est cool! L'affichage de l'appareil Xiaomi est mis à jour toutes les secondes, mais je mets à jour l'affichage connecté à la carte ESP32 toutes les 10 secondes pour économiser l'énergie de l'appareil Xiaomi.

Ce capteur de température et d'humidité Xiaomi affiche la température et l'humidité sur son écran LCD et peut également transmettre les données à d'autres appareils ou applications Xiaomi à l'aide du protocole Bluetooth. Les appareils utilisent une seule pile AAA et comme il s'agit d'un produit commercial, la durée de vie de la batterie de l'appareil est excellente. Il peut durer des mois avec une seule pile AAA, ce que nous ne pouvons pas réaliser sur nos projets de bricolage. Il y a quelques semaines, j'ai découvert que des gars intelligents avaient réussi à désosser le protocole que Xiaomi utilise pour transmettre les données du capteur et ont réussi à obtenir ces données à l'aide d'une carte ESP32. Alors j'ai essayé, et comme vous pouvez le voir ça marche !

Étape 1: Obtenez toutes les pièces

Obtenez toutes les pièces
Obtenez toutes les pièces

Voyons maintenant comment construire ce projet. Nous avons besoin d'une carte ESP32, d'un écran ILI9341 de 2,8 pouces, du capteur de température et d'humidité Xiaomi, d'une maquette et de quelques fils.

Voici quelques liens vers les parties que je vais utiliser dans ce Instructable.

  • ESP32 ▶
  • Écran 2,8" ▶
  • Capteur Xiaomi ▶
  • Planche à pain ▶
  • Fils ▶
  • Compteur USB ▶
  • Powerbank ▶

Étape 2: La carte ESP32

Image
Image
La carte ESP32
La carte ESP32

Si vous ne la connaissez pas, la puce ESP32 est le successeur de la populaire puce ESP8266 que nous avons utilisée à plusieurs reprises dans le passé. L'ESP32 est une bête ! Il propose deux 32 cœurs de traitement qui fonctionnent à 160MHz, une quantité massive de mémoire, le WiFi, le Bluetooth et bien d'autres fonctionnalités pour un coût d'environ 7$ ! Des trucs incroyables !

Veuillez regarder l'examen détaillé que j'ai préparé pour ce forum. J'ai joint la vidéo sur ce Instructable. Cela aidera à comprendre pourquoi cette puce changera notre façon de faire les choses pour toujours ! L'une des choses les plus excitantes à propos de l'ESP32 est que même s'il est si puissant, il offre un mode veille profonde qui ne nécessite que 10 s de courant. Cela fait de l'ESP32 la puce idéale pour les applications à faible consommation.

Étape 3: Écran TFT 2,8" pour Arduino et ESP32

Image
Image
2.8
2.8
2.8
2.8
2.8
2.8

L'écran est grand et offre une résolution de 320x240 pixels. Par rapport à l'un de mes écrans préférés, l'écran TFT couleur de 1,8 , vous pouvez le voir beaucoup plus grand. L'écran offre également une fonctionnalité tactile qui est un bonus supplémentaire et un emplacement pour carte SD à l'arrière. Il utilise l'interface SPI, donc la connexion avec l'Arduino ou la carte ESP32 est très simple. Le coût de l'affichage est relativement faible; il coûte environ 11$, ce qui, à mon avis, est un prix juste pour ce que propose cet écran.

Une autre chose à propos de cet écran est qu'il ne se présente pas comme un bouclier comme l'écran tactile que nous utilisions jusqu'à présent. De cette façon, nous pouvons connecter l'écran à n'importe quelle carte, l'Arduino Pro mini, le STM32, l'ESP8266 et l'ESP32. C'est très important car nous avons maintenant un écran à faible coût que nous pouvons utiliser avec chaque carte. Jusqu'à présent, les seuls écrans tactiles que nous pouvions utiliser avec ces cartes étaient les écrans Nextion qui sont plus chers, et pour être honnête même si je les utilise de temps en temps, je ne les aime pas vraiment.

Étape 4: connexion de l'écran

Connexion de l'écran
Connexion de l'écran
Connexion de l'écran
Connexion de l'écran
Connexion de l'écran
Connexion de l'écran
Connexion de l'écran
Connexion de l'écran

Tout d'abord, nous devons connecter la carte ESP32 à l'écran 2,8 . Vous pouvez trouver le schéma joint à Instructable. J'utilise cette carte DOIT ESP32 qui est sortie il y a environ deux ans. Cette version de la carte n'est plus disponible car il existe maintenant une version plus récente qui offre plus de broches, celle-ci. La seule raison pour laquelle j'utilise l'ancienne version de la carte est que la broche GND de la carte est placée à côté des broches SPI, du même côté de la carte, ce qui la rend conviviale pour la planche à pain.

Après avoir connecté l'écran à la carte, nous pouvons mettre le projet sous tension. Après quelques secondes, nous recevons des données en direct de l'appareil Xiaomi à proximité. Étant donné que l'appareil utilise Bluetooth 4, sa portée est plutôt bonne. Nous pouvons facilement obtenir les données que cet appareil transmet à des distances allant jusqu'à 10 mètres ou plus ! Nous pouvons également recevoir le niveau de batterie de l'appareil Xiaomi mais je n'affiche pas cette valeur à l'écran.

Si nous utilisons ce compteur USB, nous pouvons voir que la consommation actuelle de ce projet est d'environ 120-150 mA en utilisant ce grand écran. Si nous utilisons un écran e-paper, mettons la carte ESP32 en mode veille prolongée et obtenons les données du capteur toutes les quelques minutes, nous pouvons rendre ce projet convivial pour la batterie. Je vais essayer ça dans une future vidéo. Ce projet est juste une démonstration que nous pouvons obtenir des données de cet appareil sans fil.

Étape 5: Le code du projet

Le code du projet
Le code du projet

Voyons maintenant le côté logiciel du projet.

Le code du projet est basé sur ce projet:

J'ai utilisé le code qui récupère ces données de l'appareil Xiaomi et j'ai construit un projet autonome avec.

Dans cette variable, nous déclarons que nous devons obtenir de nouvelles données toutes les 10 secondes.

#define SCAN_TIME 10 // secondes

Ici, nous déclarons que nous voulons afficher la température en degrés Celsius. Si vous souhaitez utiliser le système impérial, définissez simplement cette variable sur false.

booléen METRIC = vrai; //Définir vrai pour le système métrique; faux pour impérial

A la fonction de configuration nous initialisons l'affichage et le module Bluetooth de la carte ESP32 puis nous dessinons l'interface utilisateur sur l'écran.

void setup() {

WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //désactiver le détecteur de baisse de tension

tft.begin();

Serial.begin(115200);

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

dessinerUI();

}

Ensuite, nous recherchons les appareils Bluetooth à proximité toutes les 10 secondes. Nous n'établissons pas de connexion avec l'appareil Xiaomi car il n'est pas nécessaire. Nous recherchons uniquement les périphériques Bluetooth à faible consommation à proximité et vérifions les paquets publicitaires diffusés.

void loop() { char printLog[256]; Serial.printf("Démarrer le scan BLE pendant %d secondes…\n", SCAN_TIME); BLEScanResults foundDevices = pBLEScan->start(SCAN_TIME); int count = foundDevices.getCount(); printf("Nombre de périphériques trouvés: %d\n", nombre);

retard (100);

}

Les valeurs d'humidité et de température sont stockées dans ces paquets, nous n'avons donc qu'à les lire. Après avoir lu les valeurs, nous les affichons à l'écran. Comme toujours, vous pouvez trouver un lien vers le code de ce projet dans la description jointe à ce Instructable.

Étape 6: Réflexions finales et améliorations

Réflexions finales et améliorations
Réflexions finales et améliorations
Réflexions finales et améliorations
Réflexions finales et améliorations

Maintenant que nous savons comment obtenir des données sans fil à partir de ce capteur, nous pouvons construire une station météorologique complète alimentée par batterie. Étant donné que cet appareil Xiaomi est un produit commercial, il offre une excellente autonomie. Malheureusement, nous ne pouvons pas encore atteindre une consommation de batterie similaire sur nos projets. Donc, je prévois d'utiliser ce capteur comme capteur extérieur pour un projet de station météo qui utilisera un grand écran de papier électronique. Ce sera cool. De plus, je vais rechercher d'autres appareils compatibles Bluetooth Xiaomi que nous pouvons pirater de la même manière. Restez à l'écoute.

J'aimerais connaître votre avis sur ce projet. Trouvez-vous utile que nous puissions obtenir des données de certains appareils Bluetooth commerciaux ? Qu'allez-vous construire en utilisant cette fonctionnalité ? J'aimerais lire vos idées, alors n'hésitez pas à les publier dans la section commentaires ci-dessous. Merci!

Conseillé: