Table des matières:

Système de surveillance du climat intérieur basé sur Raspberry Pi : 6 étapes
Système de surveillance du climat intérieur basé sur Raspberry Pi : 6 étapes

Vidéo: Système de surveillance du climat intérieur basé sur Raspberry Pi : 6 étapes

Vidéo: Système de surveillance du climat intérieur basé sur Raspberry Pi : 6 étapes
Vidéo: Caméra sans fil WIFI à 5€ incroyable ! DIY Vidéosurveillance Raspberry Pi [Chmaude77 - EP03] 2024, Novembre
Anonim
Système de surveillance du climat intérieur basé sur Raspberry Pi
Système de surveillance du climat intérieur basé sur Raspberry Pi

Lisez ce blog et créez votre propre système afin de recevoir des alertes lorsque votre pièce est trop sèche ou humide.

Qu'est-ce qu'un système de surveillance du climat intérieur et pourquoi en avons-nous besoin ?

Les systèmes de surveillance du climat intérieur offrent un aperçu rapide des principales statistiques liées au climat, telles que la température et l'humidité relative. Pouvoir voir ces statistiques et recevoir des alertes sur votre téléphone lorsque la pièce est trop humide ou trop sèche peut être très utile. À l'aide des alertes, vous pouvez prendre rapidement les mesures nécessaires pour atteindre un maximum de confort dans la pièce en allumant le chauffage ou en ouvrant les fenêtres. Dans ce projet, nous verrons comment utiliser Simulink pour:

1) importer les statistiques climatiques (température, humidité relative et pression) du Sense HAT dans le Raspberry Pi

2) afficher les données mesurées sur la matrice LED 8x8 du Sense HAT

3) concevoir un algorithme pour décider si l'humidité intérieure est « bonne », « mauvaise » ou « laid ».

4) enregistrez les données sur le cloud et envoyez une alerte si les données sont catégorisées « Laides » (trop humides ou sèches).

Fournitures

Raspberry Pi 3 modèle B

CHAPEAU Raspberry Pi Sense

Étape 1: Logiciel requis

Logiciel requis
Logiciel requis

Vous avez besoin de MATLAB, Simulink et de certains modules complémentaires pour suivre et créer votre propre système de surveillance du climat intérieur.

Ouvrez MATLAB avec un accès administrateur (cliquez avec le bouton droit sur l'icône MATLAB et sélectionnez Exécuter en tant qu'administrateur). Sélectionnez Add-Ons dans la barre d'outils MATLAB et cliquez sur Get Add-Ons.

Recherchez ici les packages de support avec leurs noms répertoriés ci-dessous et « Ajoutez-les ».

une. Package de support MATLAB pour le matériel Raspberry Pi: Acquérir des entrées et envoyer des sorties aux cartes Raspberry Pi et aux appareils connectés

b. Package de support Simulink pour le matériel Raspberry Pi: exécutez des modèles Simulink sur des cartes Raspberry Pi

c. RPi_Indoor_Climate_Monitoring_System: exemples de modèles nécessaires pour ce projet

Remarque - Pendant l'installation, suivez les instructions à l'écran pour configurer votre Pi pour qu'il fonctionne avec MATLAB et Simulink.

Étape 2: Apportez les données du capteur au Raspberry Pi à l'aide de Simulink

Apportez les données du capteur au Raspberry Pi à l'aide de Simulink
Apportez les données du capteur au Raspberry Pi à l'aide de Simulink

Pour ceux qui ne sont pas familiers avec Simulink, il s'agit d'un environnement de programmation graphique utilisé pour modéliser et simuler des systèmes dynamiques. Une fois que vous avez conçu votre algorithme dans Simulink, vous pouvez générer automatiquement du code et l'intégrer sur un Raspberry Pi ou un autre matériel.

Tapez ce qui suit dans la fenêtre de commande MATLAB pour ouvrir le premier exemple de modèle. Nous utiliserons ce modèle pour apporter des données de température, de pression et d'humidité relative dans le Raspberry Pi.

>rpiSenseHatBringSensorData

Les blocs Capteur de pression LPS25H et Capteur d'humidité HTS221 proviennent de la bibliothèque Sense HAT sous Simulink Support Package pour les bibliothèques matérielles Raspberry Pi.

Les blocs de portée proviennent de la bibliothèque Sinks sous les bibliothèques Simulink. Pour vous assurer que votre modèle est correctement configuré, cliquez sur l'icône d'engrenage dans votre modèle Simulink. Accédez à Implémentation matérielle > Paramètres de la carte matérielle > Ressources matérielles cibles.

Remarque – Vous n'avez pas besoin de configurer si vous avez suivi les instructions de configuration lors de l'installation du Simulink Support Package pour Raspberry Pi. L'adresse de l'appareil est automatiquement renseignée sur celle de votre Pi.

Assurez-vous que l'adresse de l'appareil ici correspond à l'adresse IP que vous entendez lorsque votre Pi démarre. Vous devrez peut-être réalimenter votre Pi avec un écouteur connecté à la prise pour entendre l'adresse de l'appareil.

Cliquez sur OK et appuyez sur le bouton Exécuter comme indiqué ci-dessous. Assurez-vous que votre Pi est soit physiquement connecté au PC via un câble USB, soit sur le même réseau Wi-Fi que votre PC.

Lorsque vous appuyez sur le bouton Exécuter en mode Externe, Simulink génère automatiquement le code C équivalent à votre modèle et télécharge un exécutable sur le Raspberry Pi. Les deux blocs de portée sont configurés pour s'ouvrir une fois que le modèle commence à s'exécuter. Lorsque Simulink a terminé de déployer le code sur le Raspberry Pi, vous verrez les données de pression, de température et d'humidité relative sur les oscilloscopes, comme indiqué ci-dessous.

Remarque - Le code s'exécute sur le Raspberry Pi et vous visualisez les signaux réels via les blocs d'oscilloscope Simulink, comme vous le feriez si vous aviez un oscilloscope connecté au matériel lui-même. La valeur de température des deux capteurs est légèrement différente l'une de l'autre. N'hésitez pas à choisir celle qui reflète plus fidèlement la température réelle de votre pièce et à l'utiliser dans les sections suivantes. Dans tous les tests avec le Sense HAT que nous avons eus, les valeurs de température du capteur d'humidité HTS221 étaient plus proches de la température réelle dans la pièce. Avec cela, nous avons vu les bases de la façon d'importer des données de capteur du Sense HAT dans le Raspberry Pi.

Étape 3: Affichage des données du capteur sur la matrice LED 8x8

Afficher les données du capteur sur la matrice LED 8x8
Afficher les données du capteur sur la matrice LED 8x8
Afficher les données du capteur sur la matrice LED 8x8
Afficher les données du capteur sur la matrice LED 8x8

Dans cette section, nous verrons comment la partie affichage visuel de ce projet a été ajoutée au dernier modèle. Les éléments Sense HAT qui sont utilisés dans cette section sont le capteur d'humidité (pour obtenir l'humidité relative et la température), le capteur de pression, la matrice LED et le joystick. Le joystick est utilisé pour sélectionner le capteur que nous voulons afficher.

Pour ouvrir l'exemple de modèle suivant, tapez ce qui suit dans la fenêtre de commande MATLAB.

> rpiSenseHatDisplay

Le bloc Joystick provient de la bibliothèque Sense HAT. Cela nous aide à importer les données du joystick dans le Raspberry Pi, tout comme les blocs de capteurs de pression et d'humidité l'ont fait dans l'exemple précédent. Pour l'instant, nous utilisons le bloc Test Comfort pour afficher « bon » (lorsque la valeur du bloc est 1) sur la matrice LED. Il affichera « mauvais » lorsque la valeur du bloc est 2 ou « moche » lorsque la valeur est soit 3, soit 4. Dans la section suivante, nous verrons l'algorithme réel qui décide si l'humidité intérieure est bonne, mauvaise ou moche. Explorons le bloc Sélecteur en double-cliquant dessus. Les blocs fonctionnels MATLAB sont utilisés pour intégrer le code MATLAB dans votre modèle Simulink. Dans ce cas, nous apportons SelectorFcn ci-dessous.

fonction [valeur, état] = SelectorFcn (JoyStickIn, pression, humidité, température, ihval)

JoyStickCount persistant

si est vide (JoyStickCount)

JoyStickCount = 1;

finir

si JoyStickIn == 1

JoyStickCount = JoyStickCount + 1;

si JoyStickCount == 6

JoyStickCount = 1;

finir

finir

changer JoyStickCount

cas 1 % Affichage de la température en C

valeur = temp;

État = 1;

cas 2 % Affichage de la pression en atm

valeur = pression/1013,25;

État = 2;

cas 3 % Affichage humidité relative en %

valeur = humidité;

État = 3;

cas 4 % Affichage de la température en F

valeur = température*(9/5)+32;

État = 4;

cas 5 % Affichage Bon/Mauvais/Moche

valeur = ihval;

État = 5;

sinon % Ne pas afficher/Afficher 0

valeur = 0;

État = 6;

finir

Les instructions Switch-case sont généralement utilisées comme mécanisme de contrôle de sélection. Dans notre cas, nous voulons que l'entrée du joystick soit le contrôle de sélection et sélectionne les données suivantes à afficher à chaque fois que le bouton du joystick est enfoncé. Pour cela, nous avons mis en place une boucle if qui incrémente la variable JoyStickCount à chaque pression de bouton (la valeur JoyStickIn est de 1 s'il y a une pression de bouton). Dans la même boucle, pour nous assurer que nous ne faisons que passer entre les cinq options données ci-dessus, nous avons ajouté une autre condition qui réinitialise la valeur de la variable à 1. En utilisant cela, nous sélectionnons quelle valeur sera affichée sur la matrice LED. Le cas 1 sera la valeur par défaut car nous définissons JoyStickCount pour commencer à 1, ce qui signifie que la matrice LED affichera la température en Celsius. La variable State est utilisée par le bloc de données Scroll pour comprendre quelle valeur de capteur est actuellement affichée et quelle unité doit être affichée. Maintenant que nous savons comment sélectionner le bon capteur à afficher, voyons comment fonctionne l'affichage réel.

Affichage des caractères et des nombres

Pour afficher sur la matrice Sense HAT LED, nous avons créé des matrices 8x8 pour:

1) tous les nombres (0-9)

2) toutes les unités (°C, A, % et °F)

3) virgule décimale

4) alphabets des mots bon, mauvais et laid.

Ces matrices 8x8 ont été utilisées comme entrée du bloc de matrice LED RGB 8x8. Ce bloc allume les LED correspondant aux éléments de la matrice qui ont une valeur de 1 comme indiqué ci-dessous.

Faire défiler le texte

Le bloc de données Scroll dans notre modèle fait défiler des chaînes pouvant contenir jusqu'à 6 caractères. La valeur 6 a été choisie car il s'agit de la chaîne la plus longue que nous allons sortir dans ce projet, par exemple 23,8 °C ou 99,1 °F. Remarque, ici °C est considéré comme un caractère. La même idée peut également être étendue pour faire défiler des chaînes d'autres longueurs.

Voici un-g.webp

www.element14.com/community/videos/29400/l/gif

Pour afficher une chaîne de 6 caractères chacun sur la matrice 8x8, nous avons besoin d'une image de taille 8x48 au total. Pour afficher une chaîne de 4 caractères maximum, nous devrons créer une matrice 8x32. Voyons maintenant toute l'inaction en appuyant sur le bouton Exécuter. L'affichage par défaut sur la matrice LED est la valeur de température en °C. Le bloc Scope affichera l'état et la valeur du bloc Selector. Appuyez sur le bouton du joystick du Sense HAT et maintenez-le enfoncé pendant une seconde pour vérifier que la valeur passe à la prochaine sortie du capteur et répétez ce processus jusqu'à ce qu'il atteigne la valeur d'état de 5. Pour observer l'algorithme basculer dans tous les cas de la catégorisation de l'humidité intérieure, modifiez la valeur du bloc Test Comfort sur n'importe quel nombre compris entre 1 et 4. Remarquez comment la modification de la valeur d'un bloc sur le modèle Simulink modifie immédiatement la façon dont le code se comporte sur le matériel. Cela peut être utile dans les situations où l'on souhaite modifier le comportement du code à partir d'un emplacement distant. Avec cela, nous avons vu les éléments clés derrière l'aspect visualisation du système de surveillance du climat. Dans la section suivante, nous apprendrons comment compléter notre système de surveillance du climat intérieur.

Étape 4: Concevez un algorithme dans Simulink pour décider si l'humidité intérieure est « bonne », « mauvaise » ou « laide »

Concevez un algorithme dans Simulink pour décider si l'humidité intérieure est « bonne », « mauvaise » ou « laide »
Concevez un algorithme dans Simulink pour décider si l'humidité intérieure est « bonne », « mauvaise » ou « laide »

Pour comprendre si votre pièce est trop humide/sèche ou pour savoir quel taux d'humidité intérieure est considéré comme confortable, il existe plusieurs méthodes. À l'aide de cet article, nous avons établi une courbe de surface pour relier l'humidité relative intérieure et les températures extérieures, comme indiqué ci-dessus.

Toute valeur d'humidité relative dans cette zone signifie que votre pièce est dans un cadre confortable. Par exemple, si la température extérieure est de -30 °F, toute valeur d'humidité relative inférieure à 15 % est acceptable. De même, si la température extérieure est de 60 °F, toute humidité relative inférieure à 50 % est acceptable. Pour classer l'humidité intérieure en confort maximum (bon), confort moyen (mauvais) ou trop humide/sec (laide), vous avez besoin de la température extérieure et de l'humidité relative. Nous avons vu comment faire entrer l'humidité relative dans le Raspberry Pi. Concentrons-nous donc sur la température extérieure. Tapez ce qui suit dans la fenêtre de commande MATLAB pour ouvrir le modèle:

> rpiOutdoorWeatherData

Le bloc WeatherData est utilisé pour entrer la température extérieure de votre ville (en K) en utilisant https://openweathermap.org/. Pour configurer ce bloc, vous avez besoin d'une clé API du site Web. Après avoir créé votre compte gratuit sur ce site, rendez-vous sur la page de votre compte. L'onglet Clés API ci-dessous vous donne la clé.

Le bloc WeatherData nécessite la saisie du nom de votre ville dans un format spécifique. Visitez cette page et saisissez le nom de votre ville, puis le symbole de la virgule suivi de 2 lettres pour indiquer le pays. Exemples – Natick, États-Unis et Chennai, IN. Si la recherche renvoie un résultat pour votre ville, utilisez-le dans le bloc WeatherData dans ce format spécifique. En cas d'indisponibilité de votre ville, utilisez une ville voisine dont les conditions météorologiques sont plus proches des vôtres. Maintenant, double-cliquez sur le bloc WeatherData et saisissez le nom de votre ville et votre clé API à partir du site Web.

Appuyez sur Exécuter sur ce modèle Simulink pour vérifier que le bloc peut faire entrer la température de votre ville dans le Raspberry Pi. Voyons maintenant l'algorithme qui décide si l'humidité intérieure est bonne, mauvaise ou moche. Tapez ce qui suit dans la fenêtre de commande MATLAB pour ouvrir l'exemple suivant:

>rpisenseHatIHval

Vous avez peut-être remarqué que le bloc Test Comfort du modèle précédent est manquant et qu'un nouveau bloc appelé FindRoom Comfort fournit le bloc ihval to Selector. Double-cliquez sur ce bloc pour l'ouvrir et l'explorer.

Nous utilisons le bloc WeatherData pour entrer la température extérieure. Le sous-système des limites d'humidité représente le graphique d'humidité relative par rapport à la température extérieure que nous avons vu ci-dessus. En fonction de la température extérieure, il affichera la valeur limite d'humidité maximale. Ouvrons le bloc fonction DecideIH MATLAB en double-cliquant dessus.

Si la valeur d'humidité relative dépasse la limite d'humidité maximale, le signe sera alors positif en fonction de la façon dont nous soustrayons les données, ce qui implique que la pièce est trop humide. Nous affichons un 3 (moche) pour ce scénario. La raison derrière l'utilisation de nombres au lieu de chaînes est qu'il est facile d'afficher sur des graphiques et de créer des alertes. Les autres classifications de la fonction MATLAB sont basées sur des critères arbitraires que nous avons proposés. Lorsque la différence est inférieure à 10, il est classé confort maximum et lorsqu'il est inférieur à 20, il est confort moyen et au-dessus, c'est trop sec. N'hésitez pas à utiliser ce modèle et à vérifier le niveau de confort de votre pièce.

Étape 5: Enregistrez les données de climat intérieur et les données catégorisées sur le cloud

Enregistrez les données de climat intérieur et les données catégorisées sur le cloud
Enregistrez les données de climat intérieur et les données catégorisées sur le cloud

Dans cette section suivante, nous verrons comment enregistrer des données sur le cloud. Pour ouvrir cet exemple, tapez ce qui suit dans la fenêtre de commande MATLAB.

> rpiSenseHatLogData

Dans ce modèle, la partie d'affichage de l'exemple de modèle précédent est volontairement supprimée car nous n'avons pas besoin que le système de surveillance affiche les statistiques lors de l'enregistrement des données et de l'envoi d'alertes. Nous utilisons ThingSpeak, une plate-forme IoT open source gratuite qui inclut l'analyse MATLAB, pour l'aspect d'enregistrement des données. Nous avons choisi ThingSpeak car il existe des moyens directs de programmer Raspberry Pi et d'autres cartes matérielles à faible coût pour envoyer des données à ThingSpeak à l'aide de Simulink. Le bloc d'écriture ThingSpeak provient du package de support Simulink pour la bibliothèque matérielle Raspberry Pi et peut être configuré à l'aide de la clé d'API d'écriture de votre canal ThingSpeak. Des instructions détaillées sur la façon de créer le canal sont fournies ci-dessous. Pour enregistrer en permanence des données sur le cloud, vous souhaitez que votre Pi fonctionne indépendamment de Simulink. Pour cela, vous pouvez appuyer sur le bouton « Déployer sur le matériel » dans votre modèle Simulink.

Créez votre propre chaîne ThingSpeak

Ceux qui n'ont pas de compte peuvent s'inscrire sur le site Web de ThingSpeak. Si vous avez un compte MathWorks, vous avez automatiquement un compte ThingSpeak.

  • Une fois connecté, vous pouvez créer une chaîne en allant dans Chaînes > Mes chaînes et en cliquant sur Nouvelle chaîne.
  • Tout ce dont vous avez besoin est un nom pour le canal et des noms pour les champs que vous allez enregistrer comme indiqué ci-dessous.
  • L'option Afficher l'emplacement du canal a besoin de la latitude et de la longitude de votre ville comme entrée et peut afficher l'emplacement à l'intérieur du canal sur une carte. (Les exemples de valeurs utilisés ici sont pour Natick, MA)
  • Appuyez ensuite sur Enregistrer la chaîne pour terminer la création de votre chaîne.

4a. Alerte si les données sont catégorisées « laides »

Pour compléter notre système de surveillance du climat intérieur, nous devons voir comment recevoir des alertes basées sur les données du cloud. Ceci est essentiel car, sans cela, vous ne pourrez pas prendre les mesures nécessaires pour modifier le niveau de confort de la pièce. Dans cette section, nous verrons comment recevoir une notification sur votre téléphone chaque fois que les données du cloud indiquent que la pièce est trop humide ou sèche. Nous y parviendrons en utilisant deux services: IFTTT Webhooks et ThingSpeak TimeControl. IFTTT (signifie If this, then that) est un service en ligne qui peut gérer des événements et déclencher des actions en fonction des événements.

Étapes pour configurer les Webhooks IFTTT

Remarque: essayez-les sur un ordinateur pour de meilleurs résultats.

1) Créez un compte sur ifttt.com (si vous n'en avez pas) et créez une Nouvelle Applet depuis la page Mes Applets.

2) Cliquez sur le bouton bleu « ceci » pour sélectionner votre service de déclenchement.

3) Recherchez et choisissez Webhooks comme service.

4) Sélectionnez Recevoir une demande Web et attribuez un nom à l'événement.

5) Sélectionnez Créer un déclencheur.

6) Sélectionnez « ça » sur la page suivante et recherchez les notifications.

7) Sélectionnez envoyer une notification depuis l'application IFTTT.

8) Saisissez le nom de l'événement que vous avez créé à l'étape 2 de IFTTT et sélectionnez Créer une action.

9) Continuez jusqu'à ce que vous atteigniez la dernière étape, passez en revue et appuyez sur Terminer.

10) Accédez à https://ifttt.com/maker_webhooks et cliquez sur le bouton Paramètres en haut de la page.

11) Accédez à l'URL dans la section Informations sur le compte.

12) Saisissez le nom de votre événement ici et cliquez sur « Test It ».

13) Copiez l'URL sur la dernière ligne pour une utilisation future (avec la clé).

Étapes pour configurer ThingSpeak TimeControl

1) Sélectionnez Applications> Analyse MATLAB

2) Cliquez sur Nouveau sur la page suivante et choisissez Déclencher l'e-mail d'IFTTT et cliquez sur Créer.

Les éléments importants ici dans le code du modèle sont:

ID de canal – Entrez votre canal ThingSpeak qui contient les informations « valeur d'humidité intérieure ».

IFTTTURL - Entrez l'URL copiée de la section précédente Étape 13.

readAPIKey – Entrez la clé de la section ThingSpeak Channel. Action – celle qui agit sur la dernière valeur. Remplacez-le par le suivant pour déclencher des alertes.

3) Sur le site Web de ThingSpeak, cliquez sur Applications > TimeControl.

4) Sélectionnez Récurrent et choisissez une fréquence horaire.

5) Cliquez sur Enregistrer TimeControl.

Désormais, MATLAB Analysis s'exécute automatiquement toutes les demi-heures et envoie un déclencheur au service IFTTT Webhooks si la valeur est supérieure ou égale à 3. Ensuite, l'application téléphonique IFTTT alertera l'utilisateur avec une notification comme indiqué au début de cette section.

Étape 6: Conclusion

Avec cela, nous avons vu tous les aspects importants de la façon de construire votre propre système de surveillance du climat. Dans ce projet, nous avons vu comment Simulink peut être utilisé pour –

  • programmez un Raspberry Pi pour importer les données de Sense HAT. Highlight - Visualisez les données dans Simulink car le code est toujours en cours d'exécution sur le Raspberry Pi.
  • construire l'affichage visuel du système de surveillance du climat intérieur. Highlight - Modifiez le comportement de votre code sur le matériel depuis Simulink.
  • concevoir l'algorithme du système de surveillance du climat intérieur.
  • enregistrez les données du Raspberry Pi sur le cloud et créez des alertes à partir des données enregistrées.

Quels changements apporteriez-vous à ce système de surveillance du climat intérieur ? Merci de partager vos suggestions via les commentaires.

Conseillé: