MICROPYTHON-MOD-LTR501ALS

De MCHobby - Wiki
Aller à : navigation, rechercher

Introduction

Le module utilise un MOD-LTR-501ALS pour effectuer:

  • Une lecture de luminosité de 2 à 64.000 Lux (64K lux)
  • Une lecture de luminosité de précision de 0.01 à 320 Lux
  • ET détection de proximité (jusqu'à 10cm) pour détecter des objets, même en condition de forte luminosité.

MOD-LTR-501ALS.png

Cette carte:

  • Utilise le bus I2C
  • Propose une lecture de la luminosité 2 à 64.000 Lux (ou 0.01 à 320 Lux).
  • S'utilise également comme senseur de proximité (jusqu'à 10cm).
  • Un connecteur UEXT pour faciliter le raccordement.

La carte dispose également de caractéristiques intéressantes:

Senseur de luminosité:

  • Réponse spectrale proche de l'oeil humain
  • Senseur immunisé contre les sources Infrarouge (IR) et UltraViolet (UV)
  • Rejet automatique du scintillement lumineux à 50 / 60 Hz (ex: tubes néon)
  • Gain dynamique de 2 lux à 64K lux
  • Gain dynamique (gamme haute résolution) de 0.01 lux à 320 lux
  • Résolution 16-bits

Senseur de proximité:

  • Contrôleur LED intégré, émetteur et récepteur
  • contrôleur LED programmable (train d'impulsion, courant max, temps de lecture)
  • Suppression de la lumière ambiante
  • Lecture avec résolution 11-bits

Fonctionnalités avancées

Documenté dans la fiche technique, le senseur de proximité offre des fonctionnalités avancées comme la détection d'objet si celui-ci se trouve à une distance configurée par l'utilisateur, des seuils utilisateurs et une broche d'interruption.

La broche d'interruption (cf. fiche technique) qui élimine la nécessité de lire cycliquement les données du senseur de façon à améliorer l'efficacité du système.

C'est fonctionnalités ne sont pas implémentés dans la bibliothèque car le senseur n'expose qu'un connecteur UEXT (et donc une fonctionnalité de base). Il est cependant possible de consulté la fiche technique (voir fiche produit).

La fonction init() utilise un paramétrage par défaut qui conviendra dans de nombreux cas. Il est possible d'ajouter des paramètres complémentaires pour ajuster plus finement le paramétrage en fonction des paramètres que vous trouverez dans la fiche technique (voir fiche produit).

Matériel utilisé

Pour réaliser ce test, nous avons utilisé:

  Description Quantité
ESP8266-EVB
ESP8266-EVB.png
ESP8266 Evaluation Board d'Olimex
disponible ici chez MCHobby
1
MOD-LTR-501ALS
MOD-LTR-501ALS.png
Carte MOD-LTR-501ALS d'Olimex utilisant le LTR-501ALS
disponible ici chez MCHobby
1
UEXT-SPLITTER
UEXT-SPLITTER.png
Multiplicateur de port UEXT. Permettra de brancher la carte + Interface USB-Serie
disponible ici chez MCHobby
1
USB-SERIE-TTL
USB-SERIE-TTL.png
Un cable console pour pouvoir communiquer avec l'ESP8266
disponible ici chez MCHobby
1

Raccordements

Les raccordements sont effectués comme suit:

MICROPYTHON-LTR-501ALS-20.png

  • La carte MOD-LTR-501ALS est branché sur l'UEXT Splitter.

Le raccordement du convertisseur USB-Série est identique à celui décrit dans le tutoriel ESP8266-DEV sous MicroPython.

Etant donné que le l'ESP8266-DEV (et donc ESP8266-EVB) ne disposent pas de convertisseur USB-Série, il sera donc nécessaire d'utiliser un câble console (USB-Série-TTL) pour communiquer avec la carte ESP8266.

Flasher MicroPython

Pour flasher MicroPython sur l'ESP8266-DEV (module ESP8266) qui équipe la carte d'évaluation d'Olimex (ESP8266-EVB), nous vous proposons les lectures suivantes:

Utiliser MicroPython sur ESP8266 nécessite de Flasher le MicroContrôleur avec le Firmware et d'utiliser des outils appropriés pour communiquer avec lui. Vous trouverez ci-dessous une sélection de tutoriel pour vous préparer. Nous recommandons vivement l'usage de RSHell, même si Ampy reste une solution plus simpliste (mais aussi nettement plus limitée).

Charger MicroPython

Tlogo-feather-load-upy.jpg

Apprenez comment charger le Firmware MicroPython sur une carte Pyboard, ESP8266 (Feather, Wemos, NodeMcu), etc.

RShell

Tlogo-micropython-RShell.jpg

Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.

Ampy

Tlogo-micropython-Debugger.jpg

Outil simplifié de transfert de fichiers et de contrôlez de carte depuis une connexion série. ESP8266 compatible.

 

RShell sur ESP8266

Une petite pointe de rappel pour l'utilisation des ESP8266 avec RShell...

rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano

Nous avons également un petit script shell rsheel-esp8266.sh pour faciliter faciliter le démarrage de rshell pour un esp8266.

Bibliothèque ltr501

Avant d'utiliser le script d'exemple, il est nécessaire de transférer la bibliothèque ltr501 sur votre carte MicroPython.

La bibliothèque ltr5013 et sa documentation sont disponibles dans le GitHub esp8266-uPy.

Download-icon.pngTélécharger la bibliothèque ESP8266-uPy

Puis:

  • Copier le fichier ltr501.py sur la carte MicroPython.

Vous pouvez également transférer le script de test test.py.

Code

BUS I2C

La carte MOD-MAG3110 utilise le bus I2C (adresse par défaut est 0x0E) pour communiquer avec le MicroContrôleur.

Ce bus I2C est disponible sur le connecteur UEXT de notre ESP8266-EVB comme le montre le tableau suivant.

ESP8266-DEV-12.jpg

En adaptant le code (et les raccordements du bus I2C), vous pourriez tout aussi facilement faire fonctionner des cartes ESP8266 comme Feather ESP8266 Huzza ou Wemos D1 ou même MicroPython Pyboard.

Exemple: lecture Lux et Proximité

L'exemple suivant fait une lecture des données senseur Lux et du senseur de proximité et affiches les résultats dans la sessions REPL.

Luminosité:

La propriété lux retourne la luminosité exprimée en Lux. Attention: retourne un tuple de valeur correspondant respectivement au convertisseur 0 et 1 (Nommé ADC_0, ADC_1 ou encore ALS_0 et ALS_1. ALS signifiant Lux Senseur).

Nous avons remarqués que ADC_0 retournait une valeur similaire à la valeur en Lux (mesuré avec un TSL). Nous en avons conclus que ADC_1 retourne une valeur correspondant à l'InfraRouge (IR). Cependant, rien de pertinent n'est indiqué la datasheet!

MICROPYTHON-MOD-LTR501ALS-30.png

Proximité:

La propriété proximity retourne un tuple avec la valeur brute du convertisseur et un calcul de la distance en cm.

from time import sleep
from ltr501 import * 

i2c = I2C( sda=Pin(2), scl=Pin(4) ) 
ltr = LTR_501ALS( i2c ) # gamme par défaut, 2 à 64000 Lux

# Utiliser cet autre constructeur la lecture haute 
# résolution dans la gamme de 0.01 à 320 Lux.
#
# ltr = LTR_501ALS( i2c, lux_range = LUX_RANGE_320 ) 

while True:
    # Y a t'il des données disponibles?
    dr = ltr.data_ready

    # Luminosité disponible? 
    if DR_LUX in dr:
        # Lecture des convertisseurs analogiques ALS_0 et ALS_1.
        l = ltr.lux  

        # ALS_0 semble être en lumière visible 
        # ALS_1 devrait être l'infrarouge.
        print( "Lux ALS_0, ALS_1 = ", l )

    # Proximité disponible ?
    if DR_PROXIMITY in dr:
        # Lecture de valeur_senseur et distance en cm
        p = ltr.proximity

        print( "Proximity value, cm =" , p )

    # Separateur et attendre
    print( '-'*40 )
    sleep( 1 )

print( "That's the end folks")

Résultats rendu par le script dans la session REPL sont les suivants:

Lux ALS_0, ALS_1 =  (11, 26)
Proximity value, cm = (1453, 2.90181)
----------------------------------------
Lux ALS_0, ALS_1 =  (12, 25)
Proximity value, cm = (953, 5.34441)
----------------------------------------
Lux ALS_0, ALS_1 =  (13, 25)
Proximity value, cm = (827, 5.95994)
----------------------------------------
Lux ALS_0, ALS_1 =  (13, 25)
Proximity value, cm = (760, 6.28725)
----------------------------------------
Lux ALS_0, ALS_1 =  (14, 25)
Proximity value, cm = (737, 6.39961)

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.