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

image principale Pimometre: météo de salon connectée

Difficulté:

Dans ce tutoriel je m'attaque à la chasse aux piles des petites stations de météo de salon, vous savez ces drôles de boîtiers qui vous donnent la température et l'humidité avec des capteurs déportés qui mangent des piles tous les ans: dans le mien j'en ai 4 dans le boitier principal et 2 dans chacun des 3 capteurs déportés: 10 piles au total qui tiennent à peine 1 an pour un système qui ne fait aucune prédiction et perd les pédales dès qu'il se prend un rayon de soleil pleine poire... De ce constat agaçant j'ai réfléchi à créer ma propre station météo de salon, zéro pile et très basse consommation en énergie.

Pour les fonctionnalités ça reste simple: affichage de la température et humidité ambiante de la pièce dans laquelle le système est branché, et connexion à un API météo pour afficher la météo extérieure (température, humidité, vitesse du vent, probabiti de pluie et bulletin météo)  ainsi que les prévisions sur les 12 prochaines heures: j'élimine ainsi les capteurs déportés qu'on ne sait pas où mettre en extérieur et qui mangent des piles. 

Côté consommation électrique on est sur un chargeur 5v qui ne consomme même pas 5 watts.

Aller OUST du balais les piles ? Suivez ce tuto et n'hésitez pas à le liker ;-)

Matériel :

Budget : 30€

  • 1 résistance 4,7 k ohms (souvent vendu avec le capteur DHT22)
  • 1 jeux d'entretoises nylons M2.5 pour fixer le LCD et surélever le PCB.
  • 1 Raspberry piZERO WH avec une carte SD 16Go
  • 1 écran LCD 16*2 avec backpack I2C à base de PCF8574
  • 1 capteur température et humidité: DHT22
  • 1 prise jack Barrel DC 3 pattes à souder
  • 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)
  • 1 circuit imprimé à faire fabriquer chez un fabriquant de PCB de votre choix, à partir des fichiers GERBER fournis ci-dessous (ou voir le Github du projet)
  • 2 condensateurs céramiques 100nf
  • 2 boutons poussoirs 6mm 4 pattes
  • 4 résistances 10 k ohms
  • 7 câbles dupond souples femelle/femelle pour raccorder le LCD et le DHT22 à la carte

Fichiers :

Etape 1 : Circuit sur platine d'essai

Vous pouvez réaliser le circuit sur une platine d'essai en suivant ce schéma: pas besoin du circuit imprimé dans ce cas, mais le résultat sera plus joli et pratique sur avec les composants soudés sur le circuit imprimé réalisé sur mesure.

Etape 2 : Soudure des composants sur circuit imprimé

J'ai sérigraphié sur le circuit imprimé toutes les informations utiles, il n'y a aucun piège avec des 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 (dernière photo) 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.

Etape 3 : Assemblage du circuit

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 hauteur: 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...)

Etape 4 : 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 la commande: sudo raspi-config

Reboot nécessaire (commande: sudo reboot)

Il faut ensuite 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 .

Etape 5 : 1er démarrage

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 principal s'exécute, vous devez voir l'écran afficher des informations: 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 ?
Etape 6 : Usage

  • 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.

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 tout seul.

Sources :

https://papsdroidfr.github.io/tutoriels/pimometre/

https://github.com/papsdroidfr/pimometre


Ces tutoriels devraient vous plaire

vignette Arduino Uno - Capteur d'humidité au sol.
Arduino Uno - Capteur d'humidité au sol.
vignette Fabriquer une lampe à lave
Fabriquer une lampe à lave
vignette Montez facilement votre console de jeu rétrogaming avec RECALBOX !
Montez facilement votre console de jeu rétrogaming avec RECALBOX !

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers