Station Météo: Pilote MicroPython & Pico pour décoder les données d'un kit station météo

Bonjour à tous,

Cela faisait un petit moment que je voulais me pencher sur le kit station météo permettant de créer plus facilement une station météo.

Je m'étais déjà décidé à écrire un pilote MicroPython pour ce kit... voila qui est fait.

Kit Station Météo

Kit station météo

Commençons par kit Météo et ses différents éléments: 

  • un anémomètre, 
  • une girouette, 
  • un pluviomètre 
  • un capteur de température, humidité et pression atmosphérique.
Kit station météo

L'intérêt de ce kit est est qui est déjà équipé d'un microcontrôleur prenant en charge le décodage des capteurs ainsi que l'envoi des données sur une ligne série.

Kit station météo

L'utilisation d'une ligne série simplifie singulièrement la prise en charge de ce matériel avec des microcontrôleurs ou nano-ordinateur.

Il suffit de suivre le protocole d'encodage des données... quand il est disponible!

Brancher sur un Pico

Voici le schéma de raccordement utilisé avec mon Raspberry-Pi Pico.

source: pilote MicroPython pour la station météo

Comme le kit fonctionne en logique 5V, les signaux série sont en 5V. Il faut donc utiliser un convertisseur de niveau logique. 

J'ai utilisé un convertisseur 4 bits compatible I2C (mon convertisseur 8bits ne laissait pas passer les données séries).

Bibliothèque weather

Il y a bien entendu un bibliothèque MicroPython disponible dans le dépôt ESP8266-upy/weather-station .

Après avoir copié la bibliothèque weather.py dans le système de fichiers MicroPython du Pico, il est possible de réceptionner très facilement les données.

Du code pour le peuple

Voici un exemple de quelques lignes qui permet de réceptionner les données de la station météo.

from machine import UART
from weather import WeatherStation

# Raspberry-Pi Pico, GP4=TX, GP5=RX
u = UART( 1, 9600, timeout=100 )

ws = WeatherStation( u )
iter = 0
while True:
	iter += 1
	print( '' )
	# update() retourne True lorsque qu'une nouvelle série de données est réceptionnée
	print( 'New data received: %s - iteration %i' % (ws.update(),iter) )
	# Direction du vent (en degrés)
	print( '  Wind Direction: %i degrees' % ws.wind_dir ) # 0..360
	# Vitesse du vent (mesure instantanée)
	print( '  Wind speed    : %f m/s (instantaneous)' % ws.wind_speed_real )
	# vitesse moyenne la dernière minute
	print( '  Wind speed    : %f m/s (mean last minute)' % ws.wind_speed )
	# Vitesse max sur les 5 dernières minutes
	print( '  Wind speed    : %f m/s (max last 5 minutes)' % ws.wind_speed_max )
	# Compteur de basculement du pluviomètre
	print( '  Rain cycles   : %i bucket (counter, 0-9999)' % ws.rain_cycle_real )
	# Compte de basculement sur la dernière minute
	print( '  Rain cycles   : %i bucket (last minute)' % ws.rain_cycle )
	# mm d'eau sur la dernière minutes
	print( '  Rain          : %f mm (last minute)' % ws.rain_mm )
	# mm d'eau sur la derniere heure
	print( '  Rain          : %f mm (last hour)' % ws.rain_mm_hour )
	# mm d'eau sur les dernières 24h
	print( '  Rain          : %f mm (last 24H)' % ws.rain_mm_day )
	# température en degrés Celcius
	print( '  Temperature   : %f Celcius' % ws.temp )
	# Humidité relative en pourcent
	print( '  Humidity      : %f %%Rel' % ws.hrel )
	# pression athmosphérique en hectoPascal.
	print( '  Pressure      : %f hPa' % ws.pressure )

Quelques petites explications:

  1. On commence par ouvrir un port série (UART) à 9600 bauds 8N1.
    Le timeout de 100ms est ici utilisé pour indiquer le temps maximum autorisé pour recevoir une ligne de données (terminée par LineFeed).
  2. Par la suite, on crée une instance (nommée ws) de la classe WeatherStation en passant l'UART en paramètre.
  3. L'appel de la méthode ws.update() demande à la bibliothèque de réceptionner un nouvel enregistrement de données météo. Cette méthode retourne True si un nouvel enregistrement est réceptionné, sinon il retourne False.
  4. Par la suite, toute les données sont accessible via une ribambelle de propriétés (voir le code d'exemple et les commentaires).

Conclusion

C'était un projet amusant qui pourrait déboucher sur de nombreux projets de surveillance environnementale.

Cela faisait un moment que je ne m'étais plus penché sur un pilote MicroPython. Cela m'avait manqué.

MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible. 

SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Ressources


Aucun commentaire