Blog

Déploiement d'un système de surveillance environnementale basé sur Raspberry Pi

0
Déploiement d'un système de surveillance environnementale basé sur Raspberry Pi

Ce projet a commencé par une problème opérationnel pratique, plutôt qu'un exercice de recherche ou d'apprentissage. Une petite salle d'équipement a connu des arrêts de système inexpliqués pendant les mois les plus chauds, mais aucun défaut cohérent n'a pu être identifié à l'aide des outils de surveillance standard. Des vérifications de température étaient effectuées occasionnellement, mais celles-ci mesures ponctuelles n'a pas réussi à saisir les conditions ayant précédé les défaillances.

Il était suspecté que fluctuations de température ou d'humidité pourrait contribuer au problème. Cependant, sans données continues, il n'existait aucun moyen fiable de confirmer ou d'infirmer cette théorie. Ce qu'il fallait, c'était un système simple capable d'enregistrer les conditions environnementales sur de longues périodes, permettant d'analyser les schémas et les tendances rétrospectivement plutôt que de se fier uniquement à l'observation en temps réel.

A Solution basée sur Raspberry Pi a été sélectionné à la place d'un microcontrôleur pour plusieurs raisons pratiques :

  • Stockage de données local Les mesures devaient être enregistrées de manière fiable, même en l'absence de connexion réseau.
  • Accès direct au terminal : Lors des premiers tests, il était utile de visualiser les relevés des capteurs directement sur l'appareil via une interface terminal, sans avoir à configurer d'outils de visualisation supplémentaires.
  • Traitement sur appareil : La capacité à effectuer localement des traitements de données et des gestions de fichiers simples a facilité l'analyse a posteriori une fois que suffisamment de données avaient été collectées.

Parce que le système était prévu pour Déploiement à long terme À l'intérieur d'une salle technique, la fiabilité et la stabilité ont été privilégiées par rapport à l'expérimentation ou à la minimisation des coûts des composants. L'objectif n'était pas de construire une plateforme de surveillance riche en fonctionnalités, mais plutôt un système d'enregistrement de données fiable, capable de fonctionner sans surveillance et de fournir des données significatives pour soutenir le dépannage et la prise de décisions éclairées.

Un cadre pour un système de surveillance environnementale basé sur Raspberry Pi

Vue d'ensemble du système et pensée design

L'ensemble du système a été conçu en mettant l'accent sur fiabilité, simplicité et fonctionnalité à long terme plutôt qu'une densité maximale de fonctionnalités. L'objectif principal était de collecter des données environnementales cohérentes au fil du temps avec une intervention minimale une fois déployé. En conséquence, l'architecture matérielle et logicielle a été intentionnellement maintenue simple.

Au niveau du système, le Raspberry Pi sert de Unité centrale de traitement et de stockage, s'interfaçant directement avec un capteur numérique de température et d'humidité via le connecteur GPIO. Les relevés du capteur sont acquis à intervalles fixes, horodatés et enregistrés dans le stockage local. Cette conception garantit que la collecte de données reste ininterrompue, même en l'absence de connectivité réseau ou de services externes.

Au lieu d'ajouter des périphériques tels que des écrans, des modules sans fil ou des dispositifs de stockage externes, le système repose principalement sur les capacités intégrées du Raspberry Pi. Cette approche réduit la complexité du câblage et diminue le risque de connexions lâches ou de défaillances de périphériques pendant une opération prolongée.

L'emplacement des capteurs et l'agencement du boîtier ont été pris en compte dès le début du processus de conception. Le capteur a été positionné à l'écart du processeur du Raspberry Pi et des composants de régulation de puissance afin d'éviter Effets d'auto-échauffement ce qui pourrait fausser les relevés de température. Parallèlement, il a été placé suffisamment près des ouvertures de ventilation pour refléter fidèlement les conditions ambiantes à l'intérieur de la salle des équipements.

Du point de vue de la puissance, le système a été conçu pour fonctionner en continu à partir d'une source stable Alimentation 5V. Aucune stratégie agressive d'économie d'énergie n'a été mise en œuvre, car une disponibilité constante était plus importante que la minimisation de la consommation d'énergie dans cette application. La plateforme Raspberry Pi s'est avérée bien adaptée à cette exigence, offrant un comportement prévisible lors des redémarrages et des cycles d'alimentation.

L'architecture du système permet également de expansion progressive sans refonte. Des capteurs ou des mécanismes d'alerte supplémentaires pourraient être introduits ultérieurement si nécessaire, mais l'implémentation initiale a délibérément évité la sur-ingénierie. En axant la conception sur la tâche de surveillance principale, le système reste facile à comprendre, à maintenir et à dépanner tout au long de sa durée de vie.

Structure du Système de Projet

Sélection et Câblage du Matériel

La sélection du matériel pour ce projet a été guidée par fiabilité, disponibilité et stabilité à long terme plutôt que la nouveauté ou le coût minimal. Le système étant destiné à fonctionner en continu dans une salle d'équipement, des composants au comportement bien documenté et bénéficiant d'un fort soutien communautaire ont été privilégiés.

Le Framboise Pi 4 a été choisi comme contrôleur central en raison de ses performances stables, de sa capacité de stockage local via une carte microSD, et de son support natif du système d'exploitation et des bibliothèques requis. Son connecteur GPIO offre une flexibilité suffisante pour l'intégration directe de capteurs sans nécessiter de cartes d'interface ou d'adaptateurs supplémentaires.

Un capteur numérique de température et d'humidité a été choisi pour simplifier le câblage et réduire la charge de calibration. Comparés aux capteurs analogiques, les dispositifs numériques fournissent une sortie cohérente et sont moins sensibles au bruit sur de courtes distances de câble. Ceci était particulièrement important dans un environnement clos, où la minimisation de la complexité du câblage et la variabilité du signal étaient une priorité.

Trois liaisons électriques seulement étaient nécessaires entre le capteur et le Raspberry Pi :

  • Une connexion d'alimentation fournie directement depuis le Raspberry Pi
  • Un terrain d'entente commun
  • Une seule ligne de données GPIO pour la communication de capteurs

Cette approche de câblage minimal a réduit la probabilité de problèmes de connexion lors du fonctionnement à long terme et a simplifié le dépannage en cas de maintenance.

La sélection de la broche GPIO utilisée pour la communication des données a été effectuée avec soin. Les broches associées à la configuration de démarrage ou aux fonctions système alternatives ont été délibérément évitées afin de prévenir tout comportement inattendu au démarrage ou au redémarrage. Le choix d'une GPIO à usage général a assuré un fonctionnement cohérent lors des cycles d'alimentation et des mises à jour logicielles.

Tous les câblages ont été maintenus aussi courts que possible et acheminés de manière ordonnée à l'intérieur du boîtier afin d'éviter toute contrainte mécanique sur les connecteurs. Cela a permis de préserver l'intégrité du signal et de réduire le risque de défauts intermittents dus aux vibrations ou aux mouvements accidentels.

Schéma de connexion des broches du projet

Implémentation de logiciels et enregistrement de données

Le composant logiciel du système a été conçu pour prioriser simplicité, lisibilité et fiabilité au détriment de la richesse des fonctionnalités. Le système étant conçu pour fonctionner de manière autonome pendant de longues périodes, la prévisibilité et la facilité de maintenance ont été jugées plus importantes qu'une optimisation agressive ou des abstractions avancées.

Python a été choisi comme langage d'implémentation car il est facilement disponible sur Raspberry Pi OS et offre des bibliothèques matures pour l'interface des capteurs et la manipulation de fichiers. L'utilisation de Python a également facilité l'inspection ou la modification du script directement sur l'appareil pendant les tests, sans introduire d'étapes de compilation supplémentaires ni de dépendances externes.

Les responsabilités principales du logiciel sont intentionnellement limitées :

  • Lire les valeurs de température et d'humidité du capteur à intervalles fixes
  • Joignez un horodatage à chaque lecture
  • Ajouter les données à un fichier journal local
  • Fournir une sortie visible pendant les tests pour confirmer le bon fonctionnement

Plutôt que de s'appuyer sur des services d'arrière-plan ou des mécanismes de planification complexes, le script s'exécute dans une boucle simple avec un délai contrôlé. Cette approche s'est avérée fiable lors de longs cycles de test et a rendu le comportement du programme facile à comprendre lors de la lecture des journaux ou du dépannage de résultats inattendus.

Logique d'acquisition de données

Chaque itération de la boucle effectue une seule opération de lecture de capteur. Les valeurs de température et d'humidité renvoyées sont stockées temporairement avant d'être écrites sur le disque. Les horodatages sont générés au moment de l'acquisition plutôt que déduits ultérieurement, garantissant ainsi que chaque point de donnée reflète fidèlement le moment où la mesure a été effectuée.

La décision d'ajouter des données à un fichier journal en texte brut a été intentionnelle. Les journaux en texte brut sont faciles à inspecter manuellement, à transférer vers un autre système ou à importer dans des outils d'analyse courants tels que les feuilles de calcul ou les logiciels de traçage. Cela a permis d'éviter de verrouiller les données dans un format propriétaire ou de nécessiter des utilitaires d'analyse spécialisés.

Exemple de code représentatif

				
					import time
from datetime import datetime

while True:
    température = read_temperature()
    humidité = read_humidity()
    horodatage = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

    with open("environment_log.txt", "a") as log :
        log.write(f"{timestamp}, {temperature}, {humidity}\n")

    print(f"{timestamp} Température : {temperature} °C Humidité : {humidity}%")
    time.sleep(30)
				
			

Cette structure permet de modifier facilement le script. Les intervalles d'échantillonnage peuvent être ajustés en modifiant une seule valeur, et des champs de journalisation supplémentaires peuvent être ajoutés sans restructurer le programme. Lors des tests initiaux, la sortie imprimée a fourni une confirmation immédiate de la stabilité des relevés des capteurs avant de s'engager dans des exécutions prolongées sans surveillance.

Une tolérance aux pannes de base était préférée à une gestion stricte des erreurs. En cas d'échec de lecture transitoire, le système continue son fonctionnement plutôt que de s'interrompre. Ceci est conforme à l'objectif du projet de collecte de données à long terme, où les échantillons manqués occasionnels sont préférables à un arrêt complet du système.

Sortie du terminal

Tests, Validation et Observations

Tests axés sur la confirmation La stabilité du système et la cohérence des données plutôt que d'atteindre une précision de niveau laboratoire. Comme l'objectif du projet était d'identifier les tendances environnementales au fil du temps, la répétabilité et le comportement prévisible ont été privilégiés par rapport à un étalonnage précis.

La validation initiale a été effectuée en faisant fonctionner le système en continu tout en surveillant la sortie en direct via le terminal. Cela a permis d'observer les relevés des capteurs en temps réel et a contribué à confirmer que le processus d'enregistrement fonctionnait correctement avant de laisser le système sans surveillance. Pendant cette phase, les relevés ont été comparés à un appareil de référence portable pour vérifier que les valeurs restaient dans une marge raisonnable.

L'une des premières observations concernait le placement des composants à l'intérieur du boîtier. Lorsque le capteur était positionné trop près du Raspberry Pi, les relevés de température étaient systématiquement élevés en raison de la chaleur générée par le processeur et le circuit de régulation de puissance. Le déplacement du capteur vers les ouvertures de ventilation a eu pour résultat des mesures plus stables et représentatives.

L'intervalle d'échantillonnage a également été affiné pendant les tests. Des intervalles plus courts ont produit des données plus granulaires mais ont entraîné une croissance rapide des fichiers journaux au fil du temps, tandis que des intervalles plus longs ont réduit l'utilisation du stockage au risque de manquer les fluctuations à court terme. Un intervalle équilibré a été sélectionné en fonction du taux de changement environnemental attendu dans la pièce.

Après plusieurs jours d'exploitation continue, les données enregistrées ont commencé à révéler des tendances claires et répétables. L'augmentation de température pendant les heures de pointe diurnes était corrélée à des périodes de charge système plus élevée, soutenant ainsi l'hypothèse initiale selon laquelle les conditions environnementales contribuaient à l'instabilité de l'équipement.

Défis pratiques et leçons apprises

Plusieurs considérations pratiques ont émergé lors du déploiement qui n'étaient pas immédiatement apparentes lors de la configuration initiale. Conception d'enceinte, par exemple, a nécessité un équilibre entre la protection physique et une circulation d'air adéquate. Les boîtiers entièrement scellés retardaient la réponse des capteurs aux changements ambiants, tandis que les conceptions trop ouvertes augmentaient l'exposition à la poussière et aux débris.

Une autre leçon portait sur Sélection des broches GPIO. Les premiers prototypes présentaient un comportement incohérent lors du redémarrage jusqu'à ce que les broches associées aux fonctions alternatives du système soient évitées.

Le fonctionnement à long terme a également souligné la valeur de en gardant le système simple. En évitant les périphériques inutiles et les couches logicielles complexes, le système s'est avéré plus facile à entretenir et à dépanner. Les erreurs occasionnelles de lecture de capteur n'ont pas interrompu le fonctionnement, et l'enregistrement des données s'est poursuivi sans intervention manuelle.

Pensées finales

Dans l'ensemble, le projet a réaffirmé que la surveillance environnementale efficace dépend autant des détails de déploiement que du choix du matériel. Une prise en compte attentive de l'emplacement, du câblage et du comportement du système dans les conditions opérationnelles réelles a considérablement amélioré la qualité des données et la fiabilité du système.

Si vous prévoyez un déploiement de surveillance similaire et souhaitez réduire les risques de problèmes de conception ou d'intégration, PCBCool peut prendre en charge le cycle de vie complet, de la sélection du matériel au prototypage, en passant par l'assemblage et le déploiement à long terme. Notre expérience des environnements industriels réels contribue à garantir la fiabilité des systèmes dans le temps.

Foire Aux Questions (FAQ)

Un Raspberry Pi peut-il fonctionner 24h/24 et 7j/7 pendant des mois sans problème ?

Oui, mais la fiabilité à long terme dépend de la stabilité de l'alimentation, de la qualité de la carte SD, du refroidissement et de la résilience du logiciel.

Q2 : Comment prévenir l'usure d'une carte SD due à une journalisation continue ?

Utilisez la rotation des journaux, réduisez la fréquence d'écriture et envisagez d'utiliser une carte SD de haute endurance. Vous pouvez également écrire sur un disque USB externe ou utiliser la mise en mémoire tampon de la RAM pour réduire les écritures constantes.

Q3 : Est-il préférable d'utiliser un microcontrôleur plutôt qu'un Raspberry Pi pour la surveillance environnementale ?

A : Cela dépend de vos besoins. Les microcontrôleurs sont plus économes en énergie et plus simples, mais un Raspberry Pi est plus facile pour le stockage local, le débogage et la flexibilité logicielle.

Q4 : Comment garantir que les lectures des capteurs ne sont pas affectées par la chaleur du Raspberry Pi ?

A : Gardez le capteur à distance du processeur et des régulateurs de tension du Pi, et assurez une ventilation. Vous pouvez également ajouter un petit ventilateur ou utiliser des matériaux d'isolation thermique.

Q5 : Quelle est la fréquence à laquelle je devrais échantillonner la température et l'humidité ?

Cela dépend de la rapidité avec laquelle l'environnement change. Pour la plupart des salles d'équipement, un intervalle de 30 secondes à 5 minutes est suffisant. Des intervalles plus courts génèrent plus de données et augmentent les écritures sur la carte SD.

Q6 : Comment gérer les pannes de courant sans perdre de données ?

Utilisez un onduleur ou une alimentation sans interruption, et concevez le logiciel de manière à gérer les arrêts brusques en vidant les journaux et en fermant les fichiers en toute sécurité. Vous pouvez également conserver le dernier état connu dans un fichier séparé.

Faut-il un calibrage pour un capteur numérique ?

Les capteurs numériques sont souvent livrés calibrés, mais la dérive environnementale et le positionnement peuvent tout de même introduire des biais. Un étalonnage est recommandé si une grande précision est requise.

Q8 : Puis-je ajouter d'autres capteurs ultérieurement sans avoir à redessiner le système ?

Oui, si le système est conçu de manière modulaire. Il faudrait prévoir dès le départ des broches GPIO supplémentaires, le budget d'alimentation et le format des données.

Q9 : Dois-je utiliser le Wi-Fi ou l'Ethernet pour la surveillance à distance ?

A : Le Wi-Fi est pratique, mais l'Ethernet est plus stable dans les environnements industriels. Si la fiabilité du réseau est incertaine, l'enregistrement local doit rester la méthode principale.

Q10 : Comment puis-je faire redémarrer le système automatiquement après un plantage ?

Utilisez un gestionnaire de processus (tel que systemd) pour redémarrer automatiquement le script. Envisagez également des mécanismes de surveillance (watchdog) et une gestion adéquate des erreurs.

Q11 : Quelle est la meilleure façon de visualiser les données enregistrées ?

R : Exportez les journaux au format CSV et utilisez des feuilles de calcul, ou employez des scripts Python pour générer des graphiques. Pour une utilisation plus avancée, vous pourrez ensuite intégrer Grafana ou InfluxDB.

Q12 : Comment puis-je m'assurer que le système est sécurisé s'il se connecte à un réseau ?

Désactivez les services inutiles, utilisez des mots de passe forts, maintenez le système d'exploitation à jour et considérez les règles de pare-feu.

Faut-il utiliser un boîtier pour le Raspberry Pi dans une salle d'équipement ?

A : Un boîtier aide à protéger contre la poussière et les contacts accidentels, mais il doit également permettre la circulation de l'air. De nombreux déploiements utilisent des boîtiers ventilés ou perforés.

Q14 : Quelle est la meilleure façon d'horodater des données avec précision sans connexion Internet ?

Utilisez l'horloge interne du Raspberry Pi et assurez-vous qu'elle est synchronisée périodiquement lorsque Internet est disponible. Si la précision est essentielle, envisagez un module d'horloge en temps réel (RTC).

Q15 : Que dois-je faire si le capteur affiche des pics inhabituels ?

Vérifiez le positionnement, la circulation de l'air et les sources de chaleur à proximité. Validez également le câble du capteur et assurez-vous qu'il n'est pas sujet à des interférences ou à des connexions lâches.

Georges
Georges | Ingénieur en électricité et spécialiste des systèmes embarqués

George est un ingénieur électricien certifié, expérimenté dans la conception de PCB, les systèmes embarqués et le développement matériel IoT. Il collabore avec PCBCool pour transformer une expérience d'ingénierie réelle en guides pratiques pour développeurs et ingénieurs.

Tags apparentés
Partager