Capteur de lumière numérique TSL2561

Ce tutoriel explique comment mettre en oeuvre 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.

Ce capteur renvoie des valeurs en lux (symbôle lx) ; il est capable de mesure 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, 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. La carte NUCLEO-WB55
  3. Un module capteur de lumière numérique TSL2561 Grove

Le module Grove capteur de lumière numérique :

Grove - Digital Light Sensor

Crédit image : Crédit image : CREATRON INC

Connectez le capteur sur une broche I2C.

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 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 oeuvre 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.

Grove digital light sensor output


L’éclairement passe de 2.7 lx à 196.3 lx lorsque le capteur est exposé à la LED flash d’un smartphone.