Table des matières:

Surveillance de la température et de l'humidité à l'aide de Raspberry Pi : 6 étapes (avec photos)
Surveillance de la température et de l'humidité à l'aide de Raspberry Pi : 6 étapes (avec photos)

Vidéo: Surveillance de la température et de l'humidité à l'aide de Raspberry Pi : 6 étapes (avec photos)

Vidéo: Surveillance de la température et de l'humidité à l'aide de Raspberry Pi : 6 étapes (avec photos)
Vidéo: Station de surveillance RASPBERRY PI - Caméra, température et relay 2024, Juillet
Anonim
Surveillance de la température et de l'humidité à l'aide de Raspberry Pi
Surveillance de la température et de l'humidité à l'aide de Raspberry Pi
Surveillance de la température et de l'humidité à l'aide de Raspberry Pi
Surveillance de la température et de l'humidité à l'aide de Raspberry Pi

L'été arrive et ceux qui n'ont pas de climatiseur doivent être prêts à contrôler manuellement l'atmosphère à l'intérieur. Dans cet article, je décris la façon moderne de mesurer les paramètres les plus importants pour le confort humain: la température et l'humidité. Ces données collectées sont envoyées vers le cloud et y sont traitées.

J'utilise une carte Raspberry Pi 1 et le capteur DHT22. Vous pouvez faire la même chose sur n'importe quel ordinateur doté d'Internet, de GPIO et de Python. Le capteur DHT11 moins cher fonctionne également très bien.

Étape 1: Préparation du matériel

Préparation du matériel
Préparation du matériel
Préparation du matériel
Préparation du matériel

Commençons par le tout début, car je n'ai pas utilisé mon Raspberry Pi depuis assez longtemps.

Nous aurons besoin:

  • Carte Raspberry Pi (ou autre plateforme orientée IoT).
  • Carte SD ou microSD (selon la plateforme).
  • 5V/1A via micro-USB.
  • Câble LAN, qui fournit la connexion Internet.
  • Affichage HDMI, affichage RCA ou port UART (pour activer SSH).

La toute première étape consiste à télécharger Raspbian. J'ai choisi la version Lite, car je vais utiliser SSH au lieu d'afficher. Les choses ont changé depuis la dernière fois que je l'ai fait: il existe maintenant un excellent logiciel de gravure appelé Etcher, qui fonctionne parfaitement et a un design époustouflant.

Une fois la gravure de l'image terminée, j'ai inséré la carte SD dans mon Pi, branché les câbles LAN et d'alimentation, et après un certain temps, mon routeur a enregistré le nouveau périphérique.

Étape 2: Activer SSH

Activer SSH
Activer SSH
Activer SSH
Activer SSH
Activer SSH
Activer SSH

SSH est désactivé par défaut. Je peux utiliser un convertisseur UART-USB ou simplement connecter un écran pour accéder au shell et activer SSH.

Après le redémarrage, je suis enfin dedans. Tout d'abord, mettons à jour:

sudo apt update && sudo apt upgrade -y

Connectons maintenant ce nouvel appareil au Cloud.

Étape 3: Installation de Cloud4RPi

Installation de Cloud4RPi
Installation de Cloud4RPi

J'ai décidé d'essayer la plate-forme cloud appelée Cloud4RPi, conçue pour l'IoT.

D'après la documentation, nous avons besoin des packages suivants pour le faire fonctionner:

sudo apt installer git python python-pip -y

La bibliothèque cliente peut être installée en une seule commande:

sudo pip installer cloud4rpi

Maintenant, nous avons besoin d'un exemple de code pour nous assurer que cela fonctionne.

git clone https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python && cd cloud4rpi-raspberrypi-python git clone https://gist.github.com/f8327a1ef09ceb1ef142fa68701270de.git e && mv e/minimal.py minimal.py && rmdir -re

J'ai décidé d'exécuter minimal.py, mais je n'aime pas les fausses données. Heureusement, j'ai remarqué un moyen simple de rendre les données de diagnostic réelles dans cet exemple. Ajoutez une autre importation à la section des importations:

à partir de l'importation rpi *

Supprimez ensuite ces fonctions qui fournissent de fausses données (le rpi.py les définit maintenant):

def cpu_temp():

return 70 def ip_address(): return '8.8.8.8' def host_name(): return 'hostname' def os_name(): return 'osx'

Nous avons maintenant besoin d'un jeton, qui permet à Cloud4RPi de lier les appareils aux comptes. Pour en obtenir un, créez un compte sur cloud4rpi.io et cliquez sur le bouton Nouvel appareil sur cette page. Remplacez la chaîne _YOUR_DEVICE_TOKEN_ dans le fichier minimal.py par le jeton de votre appareil et enregistrez le fichier. Nous sommes maintenant prêts pour le premier lancement.

python minimal.py

Ouvrez la page de l'appareil et vérifiez que les données sont là.

Passons maintenant aux données du monde réel.

Étape 4: connexion du capteur

Connexion du capteur
Connexion du capteur

Nous aurons besoin:

  • Capteur d'humidité DHT22 ou DHT11
  • Résistance pull-up (5-10 KΩ)
  • Fils

Le capteur DHT22 mesure simultanément la température et l'humidité. Le protocole de communication n'est pas standardisé, nous n'avons donc pas besoin de l'activer dans raspi-config - une simple broche GPIO est plus que suffisante.

Pour acquérir les données, j'utiliserai la grande bibliothèque d'Adafruit pour les capteurs DHT, mais cela peut ne pas fonctionner tel quel. Une fois, j'ai trouvé un étrange retard constant dans le code, qui ne fonctionnait pas pour mon matériel, et après deux ans, ma demande d'extraction est toujours en attente. J'ai également modifié les constantes de détection de la carte car mon Raspberry Pi 1 avec BCM2835 a été étonnamment détecté comme Raspberry Pi 3. J'aimerais que ce soit vrai… Ainsi, je recommande d'utiliser mon fork. Si vous rencontrez des problèmes avec celui-ci, veuillez essayer le référentiel d'origine, cela fonctionne peut-être pour quelqu'un, mais je ne suis pas l'un d'entre eux.

git clone https://github.com/Himura2la/Adafruit_Python_DHT…. Adafruit_Python_DHT

Comme la bibliothèque est écrite en C, elle nécessite une compilation, vous avez donc besoin des packages build-essential et python-dev.

sudo apt install build-essential python-dev -ysudo python setup.py install

Pendant l'installation des packages, connectez le DHT22 comme indiqué sur l'image.

Et testez-le:

cd ~python -c "importer Adafruit_DHT en tant que d; imprimer d.read_retry(d. DHT22, 4)"

Si vous voyez quelque chose comme (39.2000076293945, 22.600000381469727), vous devez savoir qu'il s'agit de l'humidité en pourcentage et de la température en degrés Celsius.

Maintenant, assemblons le tout !

Étape 5: Envoi des lectures des capteurs au cloud

Envoi des lectures des capteurs vers le cloud
Envoi des lectures des capteurs vers le cloud

Je vais utiliser le minimal.py comme base et y ajouter l'interaction DHT22.

cd cloud4rpi-framboisepi-python

cp minimal.py ~/cloud_dht22.py cp rpi.py ~/rpi.py cd vi cloud_dht22.py

Comme DHT22 renvoie à la fois la température et l'humidité en un seul appel, je les stocke globalement et ne les mets à jour qu'une seule fois dans une requête, en supposant que le délai entre eux est supérieur à 10 secondes. Considérez le code suivant, qui acquiert les données DHT22:

importer Adafruit_DHT

temp, hum = None, None last_update = time.time() - 20 def update_data(): global last_update, hum, temp if time.time() - last_update > 10: hum, temp = Adafruit_DHT.read_retry(Adafruit_DHT. DHT22, 4) last_update = time.time() def get_t(): update_data() retourne round(temp, 2) si temp n'est pas None else None def get_h(): update_data() retourne round(hum, 2) si hum n'est pas Aucun d'autre Aucun

Insérez ce code après les importations existantes et modifiez la section des variables afin qu'elle utilise les nouvelles fonctions:

variables = {

'DHT22 Temp': { 'type': 'numeric', 'bind': get_t }, 'DHT22 Humidity': { 'type': 'numeric', 'bind': get_h }, 'CPU Temp': { 'type ': 'numeric', 'bind': cpu_temp } }

Appuyez sur le bouton rouge pour démarrer le transfert de données:

python cloud_dht22.py

Ensuite, vous pouvez consulter la page de l'appareil.

Vous pouvez le laisser tel quel, mais je préfère avoir un service pour tout. Cela garantit que le script est toujours en cours d'exécution. Création d'un service avec le script entièrement automatisé:

wget -O https://github.com/cloud4rpi/cloud4rpi-raspberrypi-python/blob/master/service_install.sh | sudo bash -s cloud_dht22.py

Démarrage du service:

démarrage du service sudo cloud4rpi

Et en vérifiant:

pi@raspberrypi:~ $ sudo service cloud4rpi status -l

● cloud4rpi.service - Démon Cloud4RPi Chargé: chargé (/lib/systemd/system/cloud4rpi.service; activé) Actif: actif (en cours d'exécution) depuis le mercredi 2017-05-17 20:22:48 UTC; il y a 1 min PID principal: 560 (python) CGroup: /system.slice/cloud4rpi.service └─560 /usr/bin/python /home/pi/cloud_dht22.py17 mai 20:22:51 raspberrypi python[560]: Publishing iot -hub/messages: {'type': 'config', 'ts': '2017-05-17T20…y'}]}17 mai 20:22:53 raspberrypi python[560]: Publication iot-hub/messages: {'type': 'data', 'ts': '2017-05-17T20:2…40'}}17 mai 20:22:53 raspberrypi python[560]: Publication iot-hub/messages: {'type': 'système', 'ts': '2017-05-17T20….4'}}

Si tout fonctionne comme prévu, nous pouvons continuer et utiliser les capacités de la plate-forme Cloud4RPi pour manipuler les données.

Étape 6: Graphiques et alarmes

Graphiques et alarmes
Graphiques et alarmes
Graphiques et alarmes
Graphiques et alarmes
Graphiques et alarmes
Graphiques et alarmes

Tout d'abord, traçons les variables pour voir comment elles changent. Cela peut être fait en ajoutant un nouveau panneau de contrôle et en y mettant les graphiques requis.

Une autre chose que nous pouvons faire ici est de définir une alerte. Cette fonction vous permet de configurer la plage de sécurité d'une variable. Dès que la plage est dépassée, il envoie une notification par e-mail. Sur la page d'édition du Panneau de configuration, vous pouvez passer aux alertes et en configurer une.

Juste après cela, l'humidité dans ma chambre a commencé à diminuer rapidement sans aucune raison apparente, et l'alarme a rapidement suivi.

Vous pouvez utiliser Cloud4RPi gratuitement avec n'importe quel matériel capable d'exécuter Python. Quant à moi, maintenant je sais toujours quand allumer l'humidificateur d'air, et je peux même le connecter à un relais pour le contrôle à distance via Cloud4RPi. Je suis prêt pour la chaleur ! Bienvenue l'été!

Conseillé: