Voici une version lite, pour coupler un capteur Melexis MLX 90614 sur un RPI v2 ou supérieure.
EDIT : 11/2022 le RPI ZERO WH s’avère être une très bonne plateforme aucune panne en deux ans de service en haut du mât.
EDIT : 12/2020 la solution tourne parfaitement sur un modèle RPI ZERO WH
Si vous ne maitrisez pas trop le langage Python et Linux ou plus généralement le RPI, des notions à acquérir sont indispensables pour poursuivre ce montage. Se documenter sur I2C et sur la librairie d’Adafruit permettra aussi de comprendre le fonctionnement plus rapidement.
Un véritable petit projet de Maker, qui permet de découvrir pas mal de domaines.
Matériel
– breakout MLX de votre choix (avec optique / objectif ou pas)
– nappes Dupont de raccordement Femelles – Femelles si vous utilisez un breakout.
– un boitier de votre choix, connecteur étanche, …ou imprimé par vos soins.
– un RPI V2 ou supérieur et un boitier. Le cloudsensor décrit ici fonctionne sur une plateforme RPI 2 et testé sur Pi Zero WH
– une alimentation pour votre RPI
Câblage de mlx 90614 sur le RPI
Les broches qui nous intéressent sont pour l’I2C : 3-5 , le +5V à la 2 et le GND à la 6. Bien se renseigner sur le « breakout » de votre mlx la tension VCC de certain requiert une alimentation en 3.3V donc la pin 1 au lieu de 2 sur votre carte Raspberry. Attention on parle de broche physique pas de gpio sur la carte.
Voici le brochage d’un breakout MLX 90614
Il suffit de raccorder tout cela avec une nappe Dupont (4) et de démarrer votre Raspberry Pi.
Préparation du RPI
Mon cloudsensor Lite est installé sur un RPI v.2 avec une « fresh install » en raspian « Buster »
https://www.raspberrypi.org/downloads/raspberry-pi-os/ en version 32bits Lite.
Python doit être aussi installé ainsi que le gestionnaire de paquet Python pip pour les téléchargements de librairies.
Le programme s’exécutera en Shell c’est un basique permettant ensuite de déployer votre propre application.
Vous devez aussi installer quelques outils pour diagnostiquer la connexion du capteur.
i2cdetect va nous permettre de voir si le capteur répond bien après son branchement.
root@raspberrypi:/home/pi# apt-get install i2c-tools
La principale commande utile pour notre projet est la suivante
root@raspberrypi:/home/pi# i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- 5a -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Nous remarquons ci dessus que le mlx est bien détecté par le Raspberry Pi sur son Port I2C. C’est l’adresse fixe 7 bits, donnée par le constructeur en 0x5A.
Nous utiliserons la librairie d’Adafruit, je rappelle que l’on est pas développeur mais utilisateur, cette librairie nous fera gagner beaucoup de temps. Le site d’Adafruit est une ressource inestimable d’informations pour les librairies et les composants en tout genre.
Pour l’installer
pip3 install adafruit-circuitpython-mlx90640
Si vous disposez d’une version Python 3 pensez à utiliser pip au lieu de pip3. Je suis en 2.7 pour ce tuto.
Pour connaitre votre version de Python il suffit de taper dans votre shell :
python -V
Le code Python
Nous entrons la dans l’utilisation de Python, je vous livre le code de test tout fait pour avoir un affichage en boucle dans le SHELL et donc une lecture toutes les 5 secondes du capteur. A vous d’ouvrir de nouvelles perspectives du MLX 90640 pour vos applications.
#!/usr/bin/env python3
import board
import busio as io
import adafruit_mlx90614
import time
i2c = io.I2C(board.SCL, board.SDA, frequency=100000)
mlx = adafruit_mlx90614.MLX90614(i2c)
# temperature en celsius
def readtemp() :
print("Ambient : ", round(mlx.ambient_temperature,2),"-","Object :", round(mlx.object_temperature,2))
while True :
readtemp()
time.sleep(5)
Et le résultat après enregistrement du fichier et un chmod +x
root@raspberrypi:/home/pi# ./mlx.py
Ambient : 21.03 - Object : 19.87
Ambient : 21.05 - Object : 19.89
Ambient : 21.01 - Object : 19.87
Python dispose de toutes les ressources pour le calcul, l’export et le graphisme des données scientifiques/mathématiques.
Le cloudsensor en service à l’observatoire tourne avec Python qui génère tous les calculs et exporte le critère Safe ou Unsafe (json) pour la détection de nuages, c’est lui aussi qui permet de déclencher une alerte par un relais (contact sec) qui actionne un automate en cas de mauvais temps.
J’ai testé pas mal de solution pour traitement des données issues du Cloudsensor, php, python, si vous êtes un peu utilisateur des OS Linux il existe Grafana une solution qui peut vous permettre de générer de magnifiques graphiques et templates. Attention tout de même on cherche ici l’efficacité, mais on a le droit de faire du joli aussi ! Je ne saurais trop vous conseiller de vous documenter sur le matériel commercial existant qui donne pas mal d’indication dans les documentations (calcul de constante de correction en fonction de la saison etc …).
NB : les périphériques en bus I2C ne supportent pas de grandes longueurs de raccordement (50cm max), il faut faire attention à bien les rapprocher des microcontrôleurs qui les gèrent sinon vos mesures seront instables. Il existe des amplificateurs de signal mais cela sort du cadre de cet article.
NB’ : la solution a été aussi testée sur un RPI Zéro Wifi aucun pb particulier. Cela permet de mettre en place une solution sans fil (batterie + solaire) si nécessaire.
Que peut on en attendre …
Les mesures sont relativement fiables, l’algorithme doit permettre un minimum de corrections saisonnières, par exemple en période de fortes chaleurs estivales il n’est pas certains que les données soient bonnes du fait de températures élevées au sol. De nuit le reste de l’année et selon votre site, la détection est très satisfaisante, et permet d’anticiper l’arrivée des perturbations nuageuses. Attention il est souhaitable de coupler le détecteur de nuages avec un détecteur de pluie et une caméra Allsky. En pilotage distant ces trois éléments vous affranchiront de tous les problèmes météorologiques. Je ne rentre pas dans le détail mais avec tout le matériel et les logiciels actuellement disponibles il est vraiment possible de réaliser de petits automates très sympathiques ( envoie d’alerte mails ou sms etc …).
Concernant le cout matériel il est bien évident que c’est assez bon marché, par contre le coté logiciel et investissement personnel est fonction de chacun mais peut vite devenir chronophage. Enfin pour terminer il existe des solutions clé en main qui pour ma part m’ont semblé vraiment très fiables mais aussi vraiment très chères (coût R&D des marchés de niche).
Edit : j’ai oublié de signaler que je n’utilise le cloudsensor que du crépuscule à l’aurore, de jour les faux positifs, les écarts de températures sont plus fréquents même si limités à des cas très particuliers.
In fine pour ceux qui liraient ces lignes à la recherche d’une solution d’observatoire tout autonome, sachez que le critère prépondérant sur mon site est le cloudsensor qui est maitre de fermer l’abri en urgence à la moindre détection. Pour d’autres ce sera la pluie mais je considère que une fois qu’il pleut il est trop tard pour fermer le toit ou le dôme.