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

  1. Une carte d’extension de base Grove
  2. Un câble adaptateur Grove Qwiic 100mm de SparkFun Electronics
  3. La carte NUCLEO-WB55
  4. Un module capteur de lumière numérique TSL2591 Adafruit à large plage dynamique

Le module Adafruit capteur de lumière numérique TSL2591 :

Adafruit TSL2591 High Dynamic Range Digital Light Sensor - STEMMA QT

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.


Grove digital light sensor output


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.