Capteur de lumière numérique TSL2591
Ce tutoriel explique comment mettre en oeuvre un module I2C capteur de lumière numériqueAdafruit avec MicroPython. Ce module est équipé d’un capteur TSL2591 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 ; il s’agit d’une version plus performante du TSL2561 déjà traité dans ce tutoriel.
Ce capteur renvoie des valeurs en lux (symbôle lx) ; il est capable de mesure une intensité lumineuse entre 0.188 et 88 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, j’ai reproduit ici 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
- Un câble adaptateur Grove Qwiic 100mm de SparkFun Electronics
- La carte NUCLEO-WB55
- Un module capteur de lumière numérique TSL2591 Adafruit à large plage dynamique
Le module Adafruit capteur de lumière numérique TSL2591 :

Crédit image : Adafruit
Connectez le capteur sur une broche I2C du Grove Base Shield et sur l’un des connecteurs QWIIC STEMMA du module Adafruit.
Le code MicroPython
Les scripts présentés ci-après sont disponibles dans la zone de téléchargement.
Commencez par copier le fichier tsl2591.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 oeuvre du module Adafruit I2C Capteur de lumière numérique (TLS2591)
# Source : https://github.com/mchobby/esp8266-upy/tree/master/tsl2591
from tsl2591 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 = TSL2591( i2c )
# Attention: manipuler le gain et le temps d'intégration de façon
# inappropriée peut conduire à des résultats totalement erronés.
# GAIN_LOW (1x gain)
# GAIN_MED (25x gain, default)
# GAIN_HIGH (428x gain)
# GAIN_MAX (9876x gain)
# tsl.gain = GAIN_LOW # x25
# INTEGRATIONTIME_100MS (100ms, default)
# INTEGRATIONTIME_200MS
# INTEGRATIONTIME_300MS
# INTEGRATIONTIME_400MS
# INTEGRATIONTIME_500MS
# INTEGRATIONTIME_600MS
# tsl.integration_time = INTEGRATIONTIME_400MS
while True:
# Lecture d'une valeur
print( "Eclairement : %.1f lx" % tsl.lux )
# Valeur entière proportionelle à l'éclairement infrarouge
ir = tsl.infrared
# Valeur entière proportionelle à l'éclairement visible
vi = tsl.visible
# Somme des deux ...
total = ir + vi
if total !=0:
inv_total = 100 / total
print("Infrarouge : %.1f %%" %(ir*inv_total))
print("Lumière visible : %1.f %%" %(vi*inv_total))
print("")
# Temporisation de 5 secondes
sleep(5)
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 5.4 lx à 793.9 lx puis 489.0 lx et enfin 109.2 lx lorsque le capteur est exposé à une lampe de bureau de type LED d’intensité modulable. L’absence de rayonnement infrarouge dans avec cette source d’éclairage artificiel n’est pas surprenante.