Capteur de lumière numérique TSL2561
Ce tutoriel explique comment mettre en œuvre un module I2C capteur de lumière numérique Grove avec MicroPython. Ce module est équipé d’un capteur TSL2561 de AMS qui utilise deux canaux (un IR et un autre IR + visible) pour réaliser ses mesures d’éclairement. La fiche technique du capteur est disponible ici.
Le module Grove capteur de lumière numérique :
Crédit image : CREATRON INC
Ce capteur renvoie des valeurs en lux (symbole lx) ; il est capable de mesurer une intensité lumineuse entre 0.1 et 40 000+ lx. Un lux est l’éclairement d’une surface qui reçoit, d’une manière uniformément répartie, un flux lumineux d’un lumen par mètre carré. Le lumen est une unité photométrique, tout comme la candela dont elle est dérivée, elle est fondée sur la perception humaine de la lumière à l’aide de la fonction d’efficacité lumineuse spectrale. Bref, ce n’est pas simple … pour illustrer ce que cela signifie concrètement, sont reproduits ci-dessous les éléments de comparaisons donnés par MC Hobby :
- 0.002 lx : Nuit par temps clair sans lune
- 0.2 lx : Minimum de lumière que doit produire un éclairage d’urgence (AS2293)
- 0.5 lx : Pleine lune par temps clair
- 3.4 lx : Limite crépusculaire (sombre) au couché du soleil en zone urbaine
- 50 lx : Eclairage d’un living room
- 80 lx : Eclairage d’un hall
- 100 lx : Journée très sombre/temps très couvert
- 300 - 500 lx : Levé du soleil, luminosité par temps clair. Zone de bureau correctement éclairée
- 1 000 lx : Temps couvert ; éclairage typique d’un studio TV
- 10 000 - 25 000 lx : Pleine journée (pas de soleil direct)
- 32 000 - 130 000 lx : Soleil direct
Matériel requis
- Une carte d’extension de base Grove
- La carte NUCLEO-WB55
- Un module capteur de lumière numérique TSL2561 Grove
Connectez le capteur sur une broche I2C.
Le code MicroPython
Vous pouvez télécharger les scripts MicroPython de ce tutoriel (entre autres) en cliquant ici.
Commencez par copier le fichier tsl2561.py dans le dossier PYBFLASH. Créez ensuite un fichier main.py dans PYBFLASH et copiez-collez dans celui-ci le code qui suit :
# Objet du script :
# Mise en œuvre du module Grove I2C Capteur de lumière numérique (TLS2561)
# Sources : https://GitHub.com/mchobby/esp8266-upy/tree/master/tsl2561
from tsl2561 import * # Pilote du module
from machine import I2C # Pilote du bus I2C
from time import sleep # pour temporiser
# On utilise l'I2C n°1 de la carte NUCLEO-WB55 pour communiquer avec le capteur
i2c = I2C(1)
# Pause d'une seconde pour laisser à l'I2C le temps de s'initialiser
sleep(1)
# Instanciation du capteur
tsl = TSL2561( i2c )
while True:
# Lecture d'une valeur
# Cela activera automatiquement le senseur (ce qui prend du temps)
# puis effectue la lecture ensuite désactive le senseur.
# Retourne une valeur en lux (ex: 6.815804 Lux)
#print( tsl.read() )
# Note: vous pouvez activer/désactiver manuellement le senseur avec
# active(True/False).
# Vous pouvez changer manuellement le gain et temps d'intégration
# * Le gain peut être 1 ou 16
# * Le temps d'intégration : 0 ou 13 ou 101 ou 402 (0=manuel)
#tsl.gain( 16 )
#tsl.integration_time( 402 )
#print( tsl.read() )
# Vous pouvez également utiliser une sélection automatique du gain (AutoGain)
# (uniquement si vous n'utilisez pas d'intégration manuelle)
tsl.integration_time( 402 )
print( "Eclairement : %.1f lx" % tsl.read(autogain=True))
# Temporisation d'une seconde
sleep(1)
Affichage sur le terminal série
Une fois le script lancé avec [CTRL]-[D], une série de valeurs s’affiche dans le terminal série de l’USB user toutes les secondes.
L’éclairement passe de 2.7 lx à 196.3 lx lorsque le capteur est exposé à la LED du flash d’un smartphone.