Table des matières:
- Étape 1: Obtenez toutes les pièces
- Étape 2: La carte ESP32
- Étape 3: Écran TFT 2,8" pour Arduino et ESP32
- Étape 4: connexion de l'écran
- Étape 5: Le code du projet
- Étape 6: Réflexions finales et améliorations
Vidéo: ESP32 Xiaomi Hack - Obtenir des données sans fil: 6 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
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
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
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
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
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
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
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é:
Envoi des données des capteurs de vibrations et de température sans fil vers Excel à l'aide de Node-RED : 25 étapes
Envoi de données de capteur de vibration et de température sans fil vers Excel à l'aide de Node-RED : Présentation du capteur de vibration et de température sans fil industriel IoT à longue portée de NCD, offrant une portée allant jusqu'à 3 km grâce à l'utilisation d'une structure de réseau maillé sans fil. Intégrant un capteur de vibration et de température de précision 16 bits, cet appareil trans
Robot Arduino sans fil utilisant le module sans fil HC12 : 7 étapes
Robot Arduino sans fil utilisant le module sans fil HC12 : Salut les gars, bon retour. Dans mon article précédent, j'ai expliqué ce qu'est un circuit de pont en H, un circuit intégré de pilote de moteur L293D, un circuit de pilote de moteur L293D superposé pour piloter des pilotes de moteur à courant élevé et comment vous pouvez concevoir et fabriquer votre propre carte de pilote de moteur L293D
Communication sans fil utilisant des modules RF 433 MHz bon marché et des microcontrôleurs Pic. Partie 2 : 4 étapes (avec photos)
Communication sans fil utilisant des modules RF 433 MHz bon marché et des microcontrôleurs Pic. Partie 2: Dans la première partie de cette instructable, j'ai montré comment programmer un PIC12F1822 à l'aide du compilateur MPLAB IDE et XC8, pour envoyer une chaîne simple sans fil à l'aide de modules TX/RX 433MHz bon marché. Le module récepteur était connecté via un USB à UART TTL publicité par câble
Point d'accès sans fil de 50 mètres de portée avec adaptateur sans fil USB TP Link WN7200ND sur Raspbian Stretch: 6 étapes
Point d'accès sans fil de 50 mètres de portée avec adaptateur sans fil USB TP Link WN7200ND sur Raspbian Stretch : Raspberry Pi est idéal pour créer des points d'accès sans fil sécurisés mais il n'a pas une bonne portée, j'ai utilisé un adaptateur sans fil USB TP Link WN7200ND pour l'étendre. Je veux partager comment le fairePourquoi est-ce que je veux utiliser un Raspberry Pi au lieu d'un routeur ?T
Système DIY de micro sans fil pour guitare sans fil : 4 étapes
DIY Wireless Mic to Wireless Guitar System: J'ai regardé des vidéos et des groupes et presque tous utilisent un système sans fil à la guitare. Devenir fou, bouger, marcher et faire ce qu'ils veulent sans le cordon alors je rêve d'en avoir un.. Mais.. pour moi maintenant c'est trop cher alors je suis arrivé à ça