Nous créons un capteur de contrôle de la qualité de l'air sur InfluxDB, Grafana, Docker et Raspberry Pi

Avez-vous déjà pensé à surveiller la qualité de l'air à l'intérieur ou à l'extérieur de votre maison: où habitez-vous et travaillez-vous? Ce projet, que nous avons baptisé balenaSense , est une unité de mesure de la température, de l'humidité, de la pression barométrique et de la qualité de l'air, ainsi qu'un tableau de bord auquel vous pouvez accéder de n'importe où pour consulter des statistiques récapitulatives et suivre les tendances.



Table des matières



Présentation


Pour contrôler la qualité de l'air et de la station météo, de nombreux fils et divers capteurs sont nécessaires, mais la situation est devenue plus facile après l'apparition de capteurs qui combinent toutes les lectures sur une bonne petite planche, ce qui est facile au départ.



Envisagez de surveiller la température, l'humidité, la pression barométrique et la qualité de l'air à l'aide d'un capteur tout-en-un qui se connecte directement au Raspberry Pi sans composants supplémentaires. Vous n'avez besoin d'aucune expérience en électronique, mais un fer à souder serait le bienvenu (bien qu'il soit également optionnel). Ce projet met en œuvre une base de données pour stocker les relevés historiques ainsi qu'une interface graphique pour visualiser les relevés actuels et voir immédiatement les tendances.





Équipement nécessaire


Voici ce que vous devez acheter pour ce projet. Selon que vous souhaitez ou non utiliser un fer à souder, nous choisissons une carte capteur: certaines fonctionnent tout de suite, d'autres nécessitent un peu de soudure.



Je ne veux pas souder


Si vous ne souhaitez pas souder, vous aurez besoin de:


Je veux souder - donnez-moi!


Si vous êtes heureux de prendre un fer à souder, vous aurez besoin de:


Autres capteurs


Si vous avez déjà une sorte de capteur, ce projet prend en charge Sense HAT avec un bonus supplémentaire: un smiley sur la matrice LED (en fonction de la qualité de l'air, bien sûr)!



Bosch BME680 avec contremarche peut être commandé auprès de différents fournisseurs à des prix différents.


Remarque Dans l'article, nous utilisons Pimoroni: cette carte a l'avantage supplémentaire que les contacts sont rompus dans le bon ordre pour le Raspberry Pi GPIO. Lorsque vous utilisez d'autres cartes, vous devez vérifier que les broches d'alimentation, de masse et de bus I2C (SDA et SCL) correspondent, comme expliqué plus loin dans le manuel.

Logiciels


Nous avons ouvert le projet balena-sense sur GitHub, qui contient tous les logiciels, la configuration et le code dont vous avez besoin pour un système fonctionnel. Nous allons déployer ce projet sur un compte balenaCloud gratuit pour distribuer tous les logiciels du Raspberry Pi, ainsi que pour fournir un accès à distance. Par conséquent, vous aurez besoin de:


Assemblage d'équipement


Il y a peu de travail sur le front matériel de ce projet. Notre objectif est de connecter la carte capteur à la broche GPIO du Raspberry Pi.

Le BME680 communique avec le Raspberry Pi via un bus appelé I2C (eye-squared-see), qui est un bus série à deux fils. Ces deux fils sont appelés ligne de synchronisation (SCK) et ligne de données (SDA). En plus des deux fils, il est nécessaire d'alimenter le capteur (3,3V ou 3V3) et de le mettre à la terre.

Si vous choisissez l'option sans soudure de Pimoroni ou Sparkfun ou en utilisant le Sense HAT, connectez simplement les nouveaux composants brillants au Raspberry Pi et toutes les connexions seront faites pour vous: passez à l'étape suivante!

Si vous décidez de connecter le capteur directement au Raspberry Pi à l'aide de Pimoroni ou d'un autre riser, l'essentiel est d'assurer la bonne connexion des contacts décrits ci-dessus (SDA, SCK, 3V3 et GND).



Un site utile pour travailler avec GPIO sur Raspberry Pi est pinout.xyz ; cela montre clairement que nous avons besoin des broches 1 (alimentation 3V3), 3 (SDA), 5 (SCL) et 9 (masse). Un GPIO à 40 broches est standard sur Pi 2 et versions ultérieures. Si vous utilisez une carte Pimoroni, les contacts sont dans le bon ordre pour connecter les cartes. Remarquez comment l'inscription sur le tableau correspond au schéma de brochage ci-dessus.



Mais si vous connectez le capteur de cette manière, la chaleur du processeur Raspberry Pi affectera les lectures. Pour collecter des lectures plus précises, vous devez retirer le capteur de la carte: nous le faisons avec des câbles mère-à-mère (ou Jumper Jerky ) DuPont , comme indiqué ci-dessous:



De même, si vous utilisez un autre capteur, où les diagrammes de brochage ne correspondent pas exactement, vous pouvez connecter ces cartes au Pi en utilisant la même méthode. L'essentiel est de garantir la conformité avec 3V3, SDA, SCL et GND. Si la carte a des contacts pour SDI, SDO, CS - vous pouvez les ignorer, car ils sont utilisés pour une interface SPI alternative, que nous n'utilisons pas dans ce projet.

Sur les photos ci-dessus, nous avons le Raspberry Pi 3A +, mais Pi Zero est également une solution moins chère.

Configurer Raspberry Pi


Nous allons flasher la carte SD avec le système d'exploitation balenaOS, l'attacher au cloud balenaCloud, y ajouter notre appareil et configurer le projet afin qu'il puisse être facilement mis à jour plus tard.

Vous devez d'abord configurer un compte balenaCloud. Cela signifie enregistrer, ajouter une application et ajouter un appareil.

Étape 1. Inscrivez-vous à balenaCloud


Si vous avez déjà un compte GitHub ou Google, vous pouvez l'utiliser pour vous connecter sans passer par le processus d' inscription .

Étape 2. Création de l'application


Ajoutez l'application en sélectionnant le type d'appareil correct et Starter comme type d'application, puis cliquez sur Create New Application . Ce type prend en charge tous les microservices et est gratuit jusqu'à dix appareils.

Ensuite, vous serez redirigé vers le tableau de bord de l'application nouvellement créée, où vous pourrez passer à l'étape suivante et ajouter l'appareil. Vous pouvez donner à l'application un nom arbitraire, mais vous en aurez besoin plus tard dans le manuel lorsque nous écrirons le code.

Étape 3. Ajoutez l'appareil et démarrez le système d'exploitation


Après avoir créé l'application, vous pouvez ajouter un appareil à cette application en cliquant sur le bouton vert Ajouter un appareil . Lors de l'ajout d'un périphérique, spécifiez le type de périphérique correct. Si vous vous connectez à un réseau sans fil, vous pouvez définir votre SSID WiFI et votre phrase secrète.

Remarque: Raspberry Pi 3 est indiqué dans l'animation, n'oubliez pas de sélectionner le bon type de votre appareil!



Ce processus crée une image personnalisée pour l'application et le type de périphérique, qui inclut les paramètres réseau, le cas échéant.

Remarque: pour commencer, il est préférable de choisir une image de développement pour effectuer certains tests et dépanner. Pour plus d'informations sur les différences entre les images de développement et de production, voir ici . Si vous êtes sûr de pouvoir commencer à déployer une image de production dès maintenant - veuillez.

Étape 4. Enregistrez la carte SD et le périphérique de démarrage


Lorsque l'image du système d'exploitation est chargée, il est temps de flasher la carte SD. Vous pouvez utiliser balenaEtcher pour cela.



Une fois le processus terminé, insérez la carte SD dans le Raspberry Pi et connectez la source d'alimentation.



Lorsque l'appareil démarre pour la première fois, il se connecte au tableau de bord balenaCloud, après quoi vous pouvez le voir dans la liste en ligne et passer à l'étape suivante.



Dépannage: l' appareil devrait apparaître sur le panneau dans quelques minutes. S'il n'apparaît pas, quelque chose s'est mal passé. La documentation contient un guide de dépannage complet avec de nombreuses informations sur les raisons de ce problème . Si la documentation n'a pas aidé, veuillez contacter les forums .

Déploiement de logiciels


Lorsque votre Raspberry Pi est préparé, téléchargé et connecté à balenaCloud, vous êtes prêt à installer le code d'application sur l'appareil.

Installer les outils CLI de Balena sur un poste de travail


BalenaCloud vous permet de transférer à distance le logiciel / code d'application vers le Raspberry Pi et d'autres appareils. Pour rendre cela possible, votre station de travail (pas le Raspberry Pi) doit répondre à certaines exigences logicielles minimales. Remarque: pour déployer ce projet avec succès, vous n'avez pas besoin d'exécuter de commandes sur le périphérique lui-même, via SSH ou à partir du tableau de bord balenaCloud. Tout se fait à distance!

Si vous avez déjà (ou vous pouvez configurer) npm sur votre ordinateur, c'est le moyen le plus rapide d'exécuter les outils CLI. Il existe également des binaires pour Windows, macOS et Linux . Remarque: si vous avez déjà installé ces outils pour nos autres projets, vous pouvez ignorer cette partie et passer directement à l'étape suivante.

La documentation des outils CLI décrit l'installation et la configuration du package npm, ainsi que les binaires.

Lorsque la CLI est installée et en cours d'exécution, la première étape consiste à se connecter à balenaCloud en exécutant la commande de balena login :





Lorsqu'une CLI fonctionnelle est enregistrée dans le compte, vous êtes prêt à installer des programmes sur le Raspberry Pi.

Téléchargement d'un projet depuis GitHub


L'étape suivante consiste à télécharger le code de ce projet depuis GitHub .

Le bouton bleu chargera le fichier zip du projet, mais si vous êtes déjà familier avec Git, vous pouvez utiliser git clone manière habituelle.

Installer sur Raspberry Pi


Étant donné que la CLI et le dernier code sont installés, vous pouvez exécuter ce code sur balenaCloud avec une seule commande. Là, l'image Docker est collectée et configurée, qui s'exécutera sur votre appareil.

Dans le répertoire du projet après l'avoir décompressé, exécutez la commande balena push <appName> , où appName est le nom de l'application spécifié au début du manuel. Par exemple, balena push balenaSense .

Si tout est fait correctement, après quelques minutes, l'écran d'informations de votre appareil sur le panneau de commande devrait afficher les services en cours d'exécution, un pour chacun des composants logiciels, quelque chose comme ceci:



La première fois que le téléchargement peut prendre plusieurs minutes (selon la vitesse de votre connexion Internet), mais seules les modifications dans le conteneur sont téléchargées, donc tout se passe beaucoup plus rapidement.

Remarque: lorsque l'application démarre pour la première fois (et que vous utilisez BME680, et non Sense HAT), le capteur effectue un «rodage» pendant environ cinq minutes. Pendant cette période, les lectures ne seront pas prises et insérées dans la base de données. L'application enregistrera le compte à rebours, qui s'affiche dans le panneau balenaCloud:



Lorsque le compte atteint zéro, vous verrez le message 'Boucle de démarrage ...'. Après cela, les lectures seront prises et insérées dans la base de données toutes les 10 secondes.

Afficher le tableau de bord


J'espère que vous avez flashé l'appareil, connecté au réseau et démarré sans aucun problème. L'un des grands avantages de l'utilisation d'un compte balenaCloud gratuit est la Public Device URL .



Activez ce commutateur et cliquez sur l'icône de flèche bleue pour accéder au tableau de bord. Vous pouvez partager ce lien ou le mettre en signet sur votre téléphone ou un autre appareil. Pendant que l'appareil balenaSense est connecté et fonctionne, vous pouvez consulter le tableau de bord de n'importe où!



Si vous ne souhaitez pas activer l'accès public, vous pouvez toujours afficher le tableau de bord à partir de votre propre réseau local par adresse IP, comme le montre la capture d'écran ci-dessus. Le vôtre sera différent, mais entrez simplement http://<ip-> dans le navigateur, et vous aurez toujours accès au tableau de bord si vous êtes sur le même réseau que l'appareil. Par exemple, pour accéder à mon appareil, http://10.1.231.36 .

Si vous souhaitez vous connecter à Grafana et jouer avec les paramètres, les informations d'identification par défaut sont admin et admin .

Comment ça marche?


Ce projet comprend trois composantes principales, trois services. Ces noms figurent sur le tableau de bord de balenaCloud:

  • InfluxDB - une base de données utilisée pour stocker les lectures des capteurs
  • Capteur - bibliothèque Python et code pour accéder au capteur, prendre des lectures et les enregistrer dans la base de données
  • Grafana - utilisé pour créer un tableau de bord avec des graphiques et des rapports

Le capteur BME680 de Bosch détecte la température, l'humidité, la pression et la résistance aux gaz. Les capteurs de température, d'humidité et de pression fonctionnent dès la sortie de l'emballage, mais les relevés de résistance aux gaz seuls ne sont pas très utiles. Ce sont des indicateurs de changements dans la composition de l'air. Lorsque le capteur démarre, il définit la base, puis surveille les modifications. Les indicateurs indicatifs de la qualité de l'air sont donnés en pourcentage et tiennent compte de l'influence de l'humidité et de la résistance aux gaz.

Si vous utilisez le Sense HAT, où il n'y a pas de capteur de résistance aux gaz, nous approchons les lectures de la qualité de l'air en fonction des valeurs de température et d'humidité cibles.

Et ensuite?


J'espère que vous avez maintenant complètement lancé le projet, accédé au tableau de bord, pris des lectures et commencé à remplir votre base de données. Mentionnez des choses plus importantes.

Changer le mot de passe


Si vous ouvrez l'appareil pour un accès public, il est recommandé de changer le mot de passe de Grafana.



Nous avons configuré le système avec le nom d'utilisateur et le mot de passe par défaut admin admin . Pour les modifier, connectez-vous à Grafana en utilisant le bouton dans le coin inférieur gauche du panneau. Vous serez invité à modifier le mot de passe lors de votre première connexion.

Personnalisation


Le programme Grafana pour le tableau de bord et les rapports contient de nombreux paramètres et paramètres de configuration. Nous avons créé un panneau de base qui présente un tableau et un graphique pour chacune des quatre options de mesure.



Vous pouvez personnaliser chaque panneau Grafana en survolant le titre et en passant à l'édition. Je recommande de jouer avec les paramètres - les modifications dans le tableau de bord ne sont pas enregistrées automatiquement, donc si vous faites une erreur, rechargez simplement la page, et tout reviendra à sa forme d'origine. Si vous souhaitez enregistrer les modifications, cliquez sur Enregistrer en haut du panneau de configuration et tous les paramètres seront enregistrés sur votre appareil.



Vous pouvez également configurer les capteurs. Par exemple, sur le diagramme du manomètre, nous avons configuré plusieurs plages de base et valeurs de texte au lieu de chiffres. Tout cela change à votre goût!

Logement


Ces capteurs sont idéaux pour être placés dans une cabine météorologique , qui protège les capteurs de la lumière du soleil et de la chaleur rayonnée. Si vous contrôlez l'environnement dans la pièce, ce n'est pas si important, mais si le capteur est installé à l'extérieur, son positionnement et sa protection sont importants pour obtenir des lectures précises.

Les cabines météo sont en vente , mais elles peuvent être assez chères, alors pensez aux options de bricolage .

Thingiverse possède plusieurs bâtiments BME680 et cabines météo .

Dernières pensées


Merci d'avoir lu! Si vous décidez de construire votre propre station météorologique avec contrôle de la qualité de l'air - dites-nous comment tout s'est passé, quels problèmes sont survenus. Des idées pour le développement de notre projet peuvent être exprimées sur les forums .

Source: https://habr.com/ru/post/fr449484/


All Articles