Pimometre: station météo de salon connectée

Mis à jour : oct. 15


Ce tutoriel #pimometre concerne la création d'une mini station météo de salon pilotée par un Raspberry piZERO. Elle affiche sur un écran LCD la température et humidité ambiante d'un capteur DHT22, ainsi que les prévisions météo locale des 12 prochaines heures via une connexion à une API de météo.


Matériel nécessaire


  • 1 Raspberry pi Zero WH avec Raspbian os lite et WIFI

  • 1 capteur température et humidité: DHT22 (précision T°: 0.5°C, précision humidité: 5%)

  • 1 résistance 4,7 k ohms (généralement fournie avec le capteur DHT22)

  • 1 écran LCD 16*2 avec backpack I2C à base de PCF8574

  • 2 condensateurs céramiques 100nf

  • 4 résistances 10 k ohms

  • 2 boutons poussoirs 6mm 4 pattes

  • 1 jack Barrel DC

  • 1 alimentation 5v 2A jack DC (n’apparaît pas sur la photo)

  • 1 barrette femelle 2*20pin pas 2,54mm pour Raspberry pi

  • 1 connecteur 4 pin header coudé mâle 2,54mm (pour brancher le LCD)

  • 1 connecteur 3 pin header coudé mâle 2,54mm (popur brancher le capteur DHT22)

  • des câbles dupond souples femelle/femelle pour raccorder le LCD et le DHT22 à la carte

  • un jeux d'entretoises nylons M2.5 pour fixer le LCD et surélever le PCB.

  • 1 circuit imprimé à faire fabriquer chez un fabriquant de PCB de votre choix, à partir des fichiers GERBER fournis dans le Github du projet. Il s'agit du fichier zippé GERBER_pimometre.zip


Circuit électronique



Le LCD (avec son backpack I2C) ainsi que le capteur DHT22 sont connectés à la carte avec des connecteurs souples femelles raccordés sur les connecteurs coudés. La soudure des composants sur la carte est simple car toutes les explications sont sérigraphiées directement sur la carte, il n'y a aucun piège avec les sens à respecter. En dessous de la carte il faut souder le connecteur Jack DC et la barrette 2*20 pin, et tout le reste est au dessus.




Vous noterez que le capteur DHT22 est composé de 4 pattes, mais seules 3 sont raccordées à la carte. C'est bien normal, en lisant le datasheet du DHT22 la 3ème patte "NULL" ne doit pas être reliée (ne me demandez pas pourquoi ils en ont mis 4 ...). Il faut donc relier la 1 à VCC, la 2 à SIG, et la 4 à la masse GND sur la carte.




Pour assembler le tout, utilisez des petites entretoises en nylon M2.5. Si vous voulez un effet d'inclinaison il suffit d'utiliser au dessous deux paires d'entretoises qui ne sont pas de la même taille: le support est ainsi posé incliné et c'est plus agréable pour les yeux. Le Raspberry pi vient s'enficher par dessous sur le connecteur 2*20 pin, il ne doit pas dépasser de la carte (sinon c'est qu'il est dans le mauvais sens...)



Configuration du système


Pour voir tout le détail du projet (circuit électronique, explications pas à pas, tests prototypes et explications sur les scripts Python): je vous encourage à lire toutes les sections du Github du projet.


Étapes de configurations

  • Il faut dans un premier temps configurer le piZERO: cet article est dédié à la préparation d'un Raspberry piZERO.

  • Pour faire fonctionner l'API de météo, il faut déclarer votre propre TOKEN sur le site meteo.concept. Déclarez un token standard gratuit qui vous permet d'interroger l'API jusqu'à 500 fois par jour. Le script Python va interroger l'API toutes les 5mn, ce qui génère au maximum 288 interrogations par jour. Sauvegarder votre token dans un fichier tokenAPI.txt.

  • Déposez ensuite dans le répertoire /home/pi/pimometre les fichiers tokenAPI.txt (avec votre propre token en 1ère ligne), I2C_LCD_DRIVER.py, et pimometre.py

  • Installez bien toutes les dépendances nécessaires pour faire fonctionner le capteur DHT22, comme expliqué ans la partie "tests" du Github:


Il faut tout d'abord activer l'interface I2C du Raspberry pi avec:


sudo raspi-config

Reboot nécessaire (sudo reboot)


Il faut installer les dépendances et bibliothèques circuit-python d'Adafruit en suivant ce guide. Pour ce qui me concerne j'ai enchaîné ces commandes:

sudo pip3 install rpi.GPIO
sudo pip3 install adafruit-blinka
sudo pip3 install adafruit-circuitpython-dht
sudo apt-get install libgpiod2

Démarrage automatique


Le srcipt pimometre.py prend en paramètre le code INSEE de votre ville (à ne pas confondre avec le CODE POSTAL!). Pour retrouver le code INSEE de votre ville, c'est par ici. Sinon vous pouvez aussi utilisez les scripts de tests fournis dans le Github du projet où l'API est interrogée avec un code postal et fourni en retour les codes INSEE à choisir (un même code postal peut regrouper plusieurs villes).


Pour que le script soit exécuté au démarrage du Raspberry pi, on va passer par la crontab:


Editer la crontab en édition:

sudo nano /etc/crontab -e

ajouter ces deux lignes à la fin, avant le #:


@reboot pi python3 -u 'pimometre/pimometre.py' [INSEE] > 'pimometre/pimometre.log' 2>&1 & 
@monthly reboot


pensez à remplacer [INSEE] par le code INSEE de votre ville (à ne pas confondre avec le code postal ...). CTRL-O pour sauvegarder les changements, puis CTRL-X pour quitter.


Et voilà, vous pouvez rebooter le Raspberry (sudo reboot) et lorsqu'il démarre la météo doit s'afficher . S'il ne se passe rien au bout de quelques minutes, vous pouvez consulter le fichier de logs /home/pi/pimometre/pimometre.log .


Normalement lorsque le Raspberry démarre le LCD s'allume et vous devez voir en surbrillance la 1ère ligne (pensez à régler la luminosité du LCD sur la petite vis au niveau du backpack I2C).


Quand le script s'exécute, vous devez voir cet écran: c'est bon signe. La première ligne indique que le DHT22 est en cours d'initialisation (ça peut lui prendre plusieurs secondes avant de fournir un résultat: c'est normal). La seconde ligne indique tout simplement que l'interrogation API n'est pas possible sans le WIFI: c'est normal car les services WIFI prennent du temps à démarrer sur le Raspberry pi, il faut patienter quelques dizaines de secondes tout au plus.


Si au bout de quelques minutes il ne se passe rien, c'est qu'il y a un problème avec l'appel d'API: connectez vous en SSH au piZERO et regardez le fichier de log pimometre/pimometre.log il y a sûrement un message d'erreur. Avez vous bien mis un code INSEE valable? Avez vous bien mis votre TOKEN dans le fichier tokenAPI.txt ?


Utilisation


  • la première ligne indique la température et humidité ambiante captée par le DHT22

  • la seconde ligne indique les prévisions météo locales via l'API: un premier écran avec la température et l'humidité pendant 2 secondes, puis un second écran avec la vitesse du vent et la probabilité de pluie (2s), un troisième écran avec le bulletin météo en scrolling. La légende à gauche de l'écran indique l'heure de la prévision et une petite icône représentative de ce qui est affiché (thermomètre / soleil / pluie / 5 niveaux de pluie)

  • Un appui sur le bouton Select va afficher les prévisions météo dans 3h, puis 6h, 9h et retour à l'heure courante

  • un appui sur le bouton Off va éteindre le système. Pour le redémarrer: il faut enlever et rebrancher le +5v.

Enchaînement automatique des 3 écrans.


En cas de coupure WIFI, vous aurez le message "pb cnx API" affiché sur la seconde ligne. Dès que le WIFI est réactivé tout reprend.


Le pimometre à côté de l'aquapi :-)





logo_papsdroid_64x64.png
suivre l'actualité du blog sur Facebook:
  • Facebook Social Icône

© 2019, de papsdroid.fr,  administré depuis un Raspberry pi4