Cloudsensor – Raspberry PI

Cloudsensor – Raspberry PI

Voici une version lite, pour coupler un capteur Melexis MLX 90614 sur un RPI v2 ou supérieure.
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.

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, …
– un RPI V2 ou supérieur et un boitier. Le cloudsensor décrit ici fonctionne sur une plateforme RPI 2
– 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.

 

 

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.


adminfolio