Comment construire une boîte à animaux intelligente avec M5StickC Plus2
Introduction
Avec le développement rapide de la technologie de l'Internet des Objets (IoT), la Smart Pet Box a émergé comme un nouveau domaine d'application. Les propriétaires d'animaux sont de plus en plus préoccupés par la qualité de vie de leurs animaux, mais les boîtes pour animaux traditionnelles manquent de contrôle automatisé et de surveillance environnementale. La Smart Pet Box, en intégrant des capteurs et des systèmes de contrôle automatisés, est capable de surveiller et ajuster l'environnement de vie des animaux en temps réel.
Ce projet utilise la technologie IoT et une variété de modules de capteurs pour surveiller des paramètres tels que la température, l'humidité, la concentration de CO₂ et l'intensité lumineuse à l'intérieur de la boîte pour animaux, garantissant que l'environnement reste toujours dans une plage confortable. De plus, le projet intègre une fonctionnalité de contrôle à distance via une plateforme cloud, permettant aux utilisateurs de visualiser les données environnementales et ajuster des dispositifs tels que des humidificateurs, des ventilateurs et des coussins chauffants à tout moment. La Smart Pet Box facilite la tâche des propriétaires d'animaux pour gérer l'environnement de leurs animaux, améliorant ainsi la qualité de vie des animaux.
Qu'est-ce que le M5StickC Plus2 ?
-
Design Compact : Mesurant seulement 54 mm × 54 mm, il est facile à transporter et à intégrer dans divers projets.
-
Écran intégré : Un écran TFT couleur de 1,14 pouce prenant en charge plusieurs polices et affichages graphiques.
-
Capteurs Multifonctionnels : Comprend un accéléromètre, un gyroscope, des capteurs de température et d'humidité, entre autres, adaptés à divers scénarios d'application.
-
Haut-parleur intégré : Prend en charge la lecture audio, idéal pour les retours sonores et les fonctions d'alarme.
-
Interfaces Riches : Prend en charge GPIO, I2C, UART et d'autres interfaces de communication, facilitant l'expansion des périphériques.
-
Alimenté par batterie : La batterie intégrée prend en charge un fonctionnement à long terme, adaptée aux applications mobiles.
Cette section décrit le matériel et construit l'environnement.
1. Matériel utilisé
2. Méthode de connexion
M5StickC Plus 2 et connexion PaHub :
Connexions PaHub et capteurs:
-
Le canal 0 sur le PaHub est connecté au SCD40 Capteur de CO2.
-
Le canal 1 sur le PaHub est connecté au capteur de température infrarouge MLX90614.
-
Le canal 2 sur le PaHub est connecté à PbHub.
PbHub et Périphérique Relations:
-
Le canal 0 sur le PbHub est connecté à un capteur de lumière.
-
Le canal 2 sur le PbHub est connecté au module caméra (utilisé uniquement pour l'alimentation).
-
La chaîne 3 sur le PbHub contrôle le humidificateur via un relais.
-
Le canal 4 sur le PbHub contrôle le coussin chauffant via un relais.
-
La chaîne 5 sur le PbHub contrôle la lumière UVA via un relais.
-
Le canal 1 sur le PbHub contrôle le ventilateur via un relais (optionnel).
Configuration du logiciel
1. Environnement logiciel
Développement Environnement:
Pour certaines des bibliothèques utilisées par le capteur, allez directement à PIO Accueil -> Bibliothèques -> Registre -> et recherchez un mot-clé.
Bibliothèques requises :
-
M5GFX – Utilisé pour l'affichage de graphiques et de texte, contrôlant l'affichage M5Stack.
-
M5Unified – Fournit une interface API unifiée pour un contrôle plus facile des appareils M5Stack.
-
IRremote – Pour recevoir et transmettre des signaux IR afin de communiquer avec d'autres appareils.
-
M5StickCPlus2 – Contrôle la carte M5StickC Plus2, gérant l'initialisation et le fonctionnement de l'appareil.
-
Sensirion I2C SCD4x – Pour contrôler le capteur environnemental SCD40 afin de lire la température, l'humidité et les niveaux de CO2.
-
ArduinoJson – Utilisé pour traiter et analyser les données JSON afin de télécharger les données des capteurs sur la plateforme cloud.
-
M5Unit-HUB et M5Unit-PbHub – Pour interagir avec les modules PaHub et PbHub, étendre les interfaces I2C et GPIO, et connecter des dispositifs externes supplémentaires.
-
TimerOne – Pour contrôler les intervalles de temps, garantissant une collecte régulière des données des capteurs.
-
PubSubClient – Implémente la communication MQTT pour échanger des données avec la plateforme cloud.
-
Bibliothèque Adafruit MLX90614 – Utilisée pour contrôler le capteur de température infrarouge MLX90614 afin de lire la température inférieure de la boîte pour animaux.
2. Structure du code
-
Connexion WiFi : Se connecte au réseau via WiFi, permettant l'accès à la plateforme cloud pour l'abonnement et la publication de données.
-
MQTT Communication:Utilise la bibliothèque PubSubClient pour mettre en œuvre la communication MQTT, téléchargeant des données environnementales sur la plateforme cloud et recevant des instructions de celle-ci.
-
Récupération des données du capteur : Chaque donnée du capteur est lue périodiquement et téléchargée à l'aide d'une méthode de sondage :
-
SCD40 : Lit la température, l'humidité et la concentration de CO2.
-
MLX90614 : Lit les données du capteur de température (température inférieure).
-
Contrôle des appareils :Contrôle des relais pour allumer et éteindre des appareils, tels que des coussins chauffants, des humidificateurs, des lumières UVA, etc. Les appareils peuvent être contrôlés automatiquement ou manuellement en réglant la température et l'humidité cibles.
3. Plateforme IoT et Téléversement de Données
-
Sélection de la plateforme : Nous utilisons Alibaba Cloud IoT pour télécharger des données et gérer des appareils à distance.
-
Connexion et Liaison de l'Appareil : Suivez le tutoriel de configuration pour lier votre appareil à la plateforme cloud.
-
Téléchargement de données : Les données des capteurs sont téléchargées via le protocole MQTT au format JSON.
// Parse the received JSON message void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); // Convert the received payload to a string char msg[length + 1]; for (unsigned int i = 0; i < length; i++) { msg[i] = (char)payload[i]; } msg[length] = '\0'; // Null terminator for the string // Output the received message Serial.println(msg); // Parse the JSON data JsonDocument doc; // Use JsonDocument to parse JSON DeserializationError error = deserializeJson(doc, msg); // Parse the message into a JSON object // Check if parsing was successful if (error) { Serial.printf("deserializeJson() failed: "); Serial.println(error.f_str()); return; // Exit if parsing failed } // Get the temperature value and print it, correctly retrieving the target_temperature from the nested "params" field if (doc["params"]["target_temperature"].is()) { target_temperature = doc["params"]["target_temperature"]; Serial.print("Température cible reçue : "); Serial.println(target_temperature); } // Get the humidity value and print it, correctly retrieving the target_humidity from the nested "params" field if (doc["params"]["target_humidity"].is ()) { target_humidity = doc["params"]["target_humidity"]; Serial.print("Humidité cible reçue : "); Serial.println(target_humidity); } }
4. Rappel pour recevoir des données de la plateforme cloud
// Parse the received JSON message void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); // Convert the received payload to a string char msg[length + 1]; for (unsigned int i = 0; i < length; i++) { msg[i] = (char)payload[i]; } msg[length] = '\0'; // Null terminator for the string // Output the received message Serial.println(msg); // Parse the JSON data JsonDocument doc; // Use JsonDocument to parse JSON DeserializationError error = deserializeJson(doc, msg); // Parse the message into a JSON object // Check if parsing was successful if (error) { Serial.printf("deserializeJson() failed: "); Serial.println(error.f_str()); return; // Exit if parsing failed } // Get the temperature value and print it, correctly retrieving the target_temperature from the nested "params" field if (doc["params"]["target_temperature"].is()) { target_temperature = doc["params"]["target_temperature"]; Serial.print("Température cible reçue : "); Serial.println(target_temperature); } // Get the humidity value and print it, correctly retrieving the target_humidity from the nested "params" field if (doc["params"]["target_humidity"].is ()) { target_humidity = doc["params"]["target_humidity"]; Serial.print("Humidité cible reçue : "); Serial.println(target_humidity); } }
IoT Configuration de la plateforme
1. Alibaba Cloud IoT:
-
Connectez-vous à la plateforme IoT d'Alibaba Cloud, créez un nouveau projet et configurez les noms des appareils, les clés de produit, etc.
-
Récupérez l'ID client, le nom d'utilisateur, le mot de passe et assurez-vous que les paramètres de communication MQTT sont corrects.
2. Contrôle des applications :
-
Créez un produit sur la plateforme IoT d'Alibaba Cloud et configurez l'interface pour le contrôle des appareils.
-
Utilisez le SDK d'Alibaba Cloud pour développer une application mobile qui permet la surveillance en temps réel et le contrôle à distance des appareils.
Notes et problèmes courants
1. Initialisation du capteur :
-
Le capteur de CO2 SCD40 nécessite environ 6 secondes pour l'initialisation avant que des lectures précises ne soient disponibles.
-
Le capteur MLX90614 nécessite que la vitesse du bus I2C soit réglée à 100 kHz pour fonctionner correctement.
2. Conflits de périphériques :
-
Assurez-vous que les adresses I2C pour les modules PaHub et PbHub sont uniques afin d'éviter les conflits.
-
Attribuez différents canaux pour les capteurs et les périphériques sur PaHub afin d'éviter les interférences.
3. Débogage et Optimisation:
-
Ajustez la connexion de l'appareil et les intervalles de téléchargement des données pour éviter des téléchargements de données excessifs et réduire la charge sur la plateforme cloud.
-
Si les données ne sont pas reçues sur la plateforme cloud, assurez-vous que les connexions des appareils sont stables et vérifiez les paramètres MQTT.
Cas d'utilisation
1. Environnemental Surveillance et Gestion :
2. Télécommande et réglages :
3. Automatisation :
4. Surveillance des animaux de compagnie :
5. Utilisation polyvalente :
Possibilités futures et expansion
1. Environnements pour animaux de compagnie aquatiques :
2. Fonctionnalités DIY et personnalisation :
3. Santé Surveillance:
4. Intelligence Cloud et Automatisation :
Conclusion
laissez un commentaire
Tous les commentaires du blog sont vérifiés avant la publication