FEATHER-MICROPYTHON-TSL2561
Introduction
Le senseur de luminosité TSL2561 est un senseur de lumière avancé, idéal pour une utilisation dans un large champs d'application relatif à la lumière. Ce senseur est plus précis qu'une photo résistance (CdS) et permet un calcul précis de la luminosité (en lux). Il peut être configuré pour différents gains/gamme de fréquences (gain/timing ranges) pour détecter de la lumière à la volée entre 0.1 et plus de 40,000 Lux.
Ce senseur inclus un régulateur 3.3V et "level shifter" 3-5V (circuit d'adaptation de niveaux logique). Vous pouvez donc utiliser ce TSL2561 avec n'importe quel microcontrôleur 3 ou 5v.
Le plus grand intérêt de ce senseur réside dans le fait qu'il contient deux diodes: une infrarouge et une pour le spectre lumineux entier! Cela signifie que vous pouvez séparément mesurer la lumière infrarouge, le spectre entier ou la lumière visible (par nous les humains). La plupart des senseurs peuvent mesurer l'un ou l'autre... ce qui ne reproduit pas fidèlement ce que les yeux humains perçoivent (puisque les yeux humains ne perçoivent pas les InfraRouges pourtant détecté par la plupart des photo-diodes).
Ce senseur dispose d'une interface (I2C). Vous pouvez sélectionner une des trois adresses disponibles, ce qui signifie que vous pouvez en brancher 3 sur une seule carte - chacun avec une adresse I2C différente. Le convertisseur Analogique/Digital interne permet de l'utiliser avec n'importe quel microcontrôleur, même s'il n'a pas d'entrée analogique. La consommation en courant est extrêmement faible, c'est pour cela qu'il convient particulièrement bien pour les système d'enregistrement de donnée (data-logging). Environ 0.5mA lorsque le senseur est actif et moins de 15 µA lorsqu'il est en veille.
N'hésitez pas à consulter notre tutoriel Arduino, il reprend des informations très utiles.
Détails techniques
- Approche la réponse de l'oeil humain
- Mesure précisément la luminosité dans différentes conditions lumineuse.
- Gamme de température: -30 à 80 °C
- Gamme de mesure dynamique (Lux): 0.1 à 40,000 Lux
- Gamme de tension: 2.7-3.6V
- Inclus un régulateur 3.3v et un Level Shifter 3-5V pour une utilisation avec microcontrôleur 3 & 5 volts
- Interface: I2C
- Ce composant utilise l'adresse I2C 7 bits 0x39, 0x29, 0x49 (sélectionnable à l'aide de cavalier à souder)
- Fiche technique du TSL2561.
Schéma
Depuis la création de ce tutoriel, nous avons compris pourquoi SCL ne semblait pas fiable avec certains capteurs.
Vous pouvez donc utiliser la broche SCL du Feather sans problème :-) Pour mémoire, certains capteurs comme l'AM2315, nécessitent des résistance pull-up sur SDA et SCL! |
Installer
L'utilisation requière l'installation d'une bibliothèque spécifique. Vous trouvez celle-ci ici:
Vous devrez copier les fichiers suivant sur votre carte MicroPython
- tsl2561.py dans le répertoire racine.
Pour savoir comment copier vos fichiers sur votre carte MicroPython Feather ESP8266 Huzza, vous pouvez vous référer aux ressources suivantes:
Outil simplifié de transfert de fichiers et de contrôlez de carte depuis une connexion série. ESP8266 compatible.
Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.
Tester
Nous allons nous connecter en WebREPL pour tester notre code. Vous pouvez également réaliser ce test en REPL Série via la liaison USB-Série (si celle-ci est disponible).
La connexion REPL et WEBRepl sont abordés dans nos tutoriels généraux ESP8266 sous MicroPython
# Mesure de lumière avec Adafruit TSL2561 (ADA439) et ESP8266 MicroPython
* Shop: Adafruit TSL2561 (ADA439) - http://shop.mchobby.be/product.php?id_product=238
* Wiki: https://wiki.mchobby.be/index.php?title=MicroPython-Accueil#ESP8266_en_MicroPython
from tsl2561 import *
from machine import I2C, Pin
# Ne pas utiliser la broche 7 pour SCL parce ce qu'il perturbe la sequence
# de boot lorsqu'une alimentation est branchée sur le connecteur microUSB
#
i2c = I2C( sda=Pin(4), scl=Pin(2), freq=20000 )
tsl = TSL2561( i2c )
# 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( tsl.read(autogain=True) )
Informations pratiques
Luminosité vs Lux
Voici un petit tableau récapitulatif mettant en correspondance une mesure en Lux et la luminosité ambiante à laquelle elle correspond.
Lux' | Luminosité correspondante |
0.002 lux | Nuit par temps clair sans lune. |
0.2 lux | Minimum de lumière que doit produire un éclairage d'urgence (AS2293). |
1 lux | Pleine lune par temps clair. |
3.4 lux | Limite crépusculaire (sombre) au couché du soleil en zone urbaine. |
50 lux | Eclairage d'un living room |
80 lux | Eclairage des toilette/Hall |
100 lux | Journée très sombre/temps très couvert. |
300 - 500 lux | Levé du soleil, luminosité par temps clair. Zone de bureau correctement éclairée. |
1,000 lux | Temps couvert; Eclairage typique d'un studio TV |
10,000 - 25,000 lux | Pleine journée (pas de soleil direct) |
32,000 - 130,000 lux | Soleil direct |
Adresse I2C
L'adresse par défaut est 0x39 (lorsque la broche d'adresse reste déconnectée).
La broche d'adresse peut être utilisé pour modifier l'adresse I2C en cas de conflit. Connectez la broche ADDR sur la masse pour fixer l'adresse sur 0x29. Connectez sur 3.3V (vcc) pour fixer l'adresse sur 0x49.
La broche INT
La broche INT est une sortie du senseur utilisé lorsque vous avez configuré le senseur pour signaler une modification du niveau lumineux. Si vous désirez utiliser ce signal, vous devez utiliser une résistance pull-up de 10K-100K branchée entre INT et 3.3V
Encore Plus
Voyez:
- nos autres tutoriels MicroPython sur ESP8266
- tutoriels MicroPython (généraux).
- Le GitHub de MCHobby consacré à l' ESP8266 sous MicroPython
Où acheter
Tutoriel réaliser par Meurisse D. pour MC Hobby SPRL
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.