Installez des capteurs de température dans votre maison avec un Raspberry Pi

  • FrançaisFrançais



  • C’est chaud! Je suppose que je ne peux pas trop me plaindre de vivre au paradis, mais quand ma femme et moi avons déménagé à Hawaï l’automne dernier, je n’ai pas vraiment trop pensé à la météo. Ne vous méprenez pas, il fait beau à peu près tout le temps et nous gardons nos fenêtres ouvertes 24 heures sur 24, 7 jours sur 7, mais cela signifie qu’il fait assez chaud dans la maison en ce moment au milieu de l’été.

    Alors, où se croisent toutes ces humbles vantardises avec l’open source ? Eh bien, nous prévoyons d’avoir un ventilateur pour toute la maison, un de ces gros ventilateurs qui aspirent tout l’air de votre maison et le forcent dans le grenier, poussant ainsi tout l’air chaud hors du grenier. Je suis Bien sur cela rendra la maison beaucoup plus fraîche, mais le geek en moi veut savoir à quel point il fait plus frais.

    Alors aujourd’hui, je joue avec des capteurs de température, Framboise Pis, et Python.

    Jouez à la maison ! Rien de tel qu’un peu de #CitizenScience !

    Oui, d’accord, je pourrais juste acheter un thermomètre ou deux, les vérifier chaque jour et voir ce qui se passe. Mais pourquoi faire cela alors que vous pouvez totalement sur-concevoir une solution, automatiser la collecte de données et la représenter graphiquement au fil du temps, amirite ?

    Voici ce dont j’ai besoin :

    • Raspberry Pi Zero W (ou, vraiment, n’importe quel Raspberry Pi)
    • Capteur numérique DHT22
    • carte SD

    Connectez le capteur DHT22 au Raspberry Pi

    Vous pouvez trouver un tas de capteurs de température et d’humidité DHT22 bon marché avec une recherche rapide sur le Web. Le DHT22 est un capteur numérique, ce qui facilite l’interaction avec. Si vous achetez un capteur brut, vous aurez besoin d’une résistance et de compétences en soudure pour le faire fonctionner (consultez l’article DHT22 de Pi My Life Up pour excellentes instructions pour travailler avec le capteur brut), mais vous pouvez aussi en acheter un avec un petit PCB qui inclut tout ça, c’est ce que j’ai fait.

    Le DHT22 avec le PCB attaché a trois broches : une broche positive (marquée avec +), une broche de données et une broche de terre (marquée par ). Vous pouvez câbler le DHT22 directement au Raspberry Pi Zero W. J’ai utilisé Raspberry Pi Spy’s Guide GPIO Raspberry Pi pour m’assurer que j’ai tout connecté correctement.

    La broche positive fournit l’alimentation du Pi au DHT22. Le DHT22 fonctionne sur 3v-6v, j’ai donc sélectionné l’une des broches 5v du Raspberry Pi pour fournir l’alimentation. J’ai connecté la broche Data du DHT22 à l’une des broches GPIO du Raspberry Pi. J’utilise GPIO4 pour cela, mais tout fonctionnerait; notez simplement celui que vous choisissez, car le code Python qui lit les données du capteur devra savoir à partir de quelle broche lire. Enfin, j’ai connecté la broche de masse du DHT22 à une broche de masse de l’en-tête Raspberry Pi.

    Voici comment je l’ai câblé :

    • Broche positive DHT22 <-> broche Raspberry Pi GPIO v5 (#2)
    • Broche de données DHT22 <-> broche GPIO4 Raspberry Pi (#7)
    • Broche de masse DHT22 <-> Broche du groupe Raspberry Pi (#6)

    Ce schéma de Raspberry Pi Spy montre la disposition des broches pour le Raspberry Pi Zero W (entre autres).

    Installer le logiciel du capteur DHT

    Avant de continuer, assurez-vous que vous avez un système d’exploitation installé sur le Raspberry Pi Zero W et que vous pouvez vous y connecter à distance ou avec un clavier. Sinon, consultez mon article sur la personnalisation des différentes images du système d’exploitation pour Raspberry Pi. j’utilise Raspberry Pi OS Lite, publié le 7 mai 2021, comme image du Raspberry Pi Zero W.

    Une fois que vous avez installé le système d’exploitation sur une carte SD et démarré le Raspberry Pi à partir de la carte, il n’y a que quelques autres packages logiciels à installer pour interagir avec le DHT22.

    Tout d’abord, installez le programme d’installation préféré de Python (pip) avec apt-get, puis utilisez pip pour installer le Bibliothèque de capteurs Adafruit DHT pour Python pour interagir avec le capteur DHT22.

    # Install pip3
    sudo apt-get install python3-pip

    # Install the Adafruit DHT sensor library
    sudo pip3 install Adafruit_DHT

    Obtenir des données de capteurs avec Python

    Une fois les bibliothèques DHT installées, vous pouvez vous connecter au capteur et récupérer les données de température et d’humidité.

    Créez un fichier avec :

    #!/usr/bin/env python3

    import sys
    import argparse
    import time

    # This imports the Adafruit DHT software installed via pip
    import Adafruit_DHT

    # Initialize the DHT22 sensor
    SENSOR = Adafruit_DHT.DHT22

    # GPIO4 on the Raspberry Pi
    SENSOR_PIN = 4

    def parse_args():
        parser = argparse.ArgumentParser()
        parser.add_argument("-f", "--fahrenheit", help="output temperature in Fahrenheit", action="store_true")

        return parser.parse_args()

    def celsius_to_fahrenheit(degrees_celsius):
            return (degrees_celsius * 9/5) + 32

    def main():
        args = parse_args()

        while True:
            try:
                # Gather the humidity and temperature
                # data from the sensor; GPIO Pin 4
                humidity, temperature = Adafruit_DHT.read_retry(SENSOR, SENSOR_PIN)

            except RuntimeError as e:
                # GPIO access may require sudo permissions
                # Other RuntimeError exceptions may occur, but
                # are common.  Just try again.
                print(f"RuntimeError: {e}")
                print("GPIO Access may need sudo permissions.")

                time.sleep(2.0)
                continue

            if args.fahrenheit:
                print("Temp: {0:0.1f}*F, Humidity: {1:0.1f}%".format(celsius_to_fahrenheit(temperature), humidity))
            else:
                print("Temp:{0:0.1f}*C, Humidity: {1:0.1f}%".format(temperature, humidity))

            time.sleep(2.0)

    if __name__ == "__main__":
        main()

    Les bits importants ici sont l’initialisation du capteur et le réglage de la broche GPIO correcte à utiliser sur le Raspberry Pi :

    # Initialize the DHT22 sensor
    SENSOR = Adafruit_DHT.DHT22

    # GPIO4 on the Raspberry Pi
    SENSOR_PIN = 4

    Un autre élément important est la lecture des données du capteur avec les variables définies ci-dessus pour le capteur et la broche :

    # This connects to the sensor "SENSOR"
    # Using the Raspberry Pi GPIO Pin 4, "SENSOR_PIN"
        humidity, temperature = Adafruit_DHT.read_retry(SENSOR, SENSOR_PIN)

    Enfin, lancez le script ! Vous devriez vous retrouver avec quelque chose comme ceci :

    Succès!

    Où aller en partant d’ici

    J’ai trois de ces capteurs DHT22 et trois Raspberry Pi Zero W connectés à mon WiFi. Je les ai installés dans de petites boîtes de projet, j’ai collé les capteurs à l’extérieur et je les ai installés dans mon salon, mon bureau et ma chambre. Avec cette configuration, je peux collecter les données des capteurs à tout moment en me connectant SSH au Raspberry Pi et en exécutant ce script.

    Mais pourquoi s’arrêter là ? SSH manuellement à chaque fois est fastidieux et demande trop de travail. Je peux faire mieux!

    Dans un prochain article, j’expliquerai comment configurer ce script pour qu’il s’exécute automatiquement au démarrage avec un service systemd, configurez un serveur Web pour afficher les données et instrumentez ce script pour exporter les données dans un format pouvant être lu par Prométhée, un système de surveillance et une base de données de séries chronologiques. J’utilise Prometheus au travail pour collecter des données sur les clusters OpenShift/Kubernetes, tracer des tendances et créer des alertes en fonction des données. Pourquoi ne pas aller à l’excès et faire la même chose avec les données de température et d’humidité à la maison ? De cette façon, je peux obtenir des données de base et voir à quel point le ventilateur de toute la maison change les choses !

    #ScienceCitoyenne !

    Source

    N'oubliez pas de voter pour cet article !
    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    Loading...

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée.