MicroPython sur ESP8266 : Magnétomètre MAG3110 et Luxmètre/proximité LTR-501ALS
Dans la section des pilotes MicroPython, nous avons ajouter le support de deux nouveaux senseurs, le magnétomètre MAG3110 et luxmètre LTR-501ALS (et détecteur de proximité)... code porté depuis Arduino vers MicroPython.
Magnétomètre MAG3110 sous MicroPython
MOD-MAG utilise un MAG3110, un magnétomètre 3 axes. Alimenté en 1.95V à 3.6V, il communique par l'intermédiaire du bus I2C.
La gamme de valeur retournée évolue entre -30000 à +30000 pour la gamme de ±1000µT (micro Tesla).
Ce module magnétomètre 3 axes est équipé d'un connecteur standard UEXT facilitant les branchements mais vous pouvez tout aussi bien effectuer les raccordements avec des fils Dupont.
Avec ce module, il est possible de détecter le champ magnétique terrestre, détecter du métal enterré, créer une boussole et bien plus encore.
Ce senseur permet de détecter rapidement des champs magnétiques dans le voisinage. Les données peuvent être utilisées pour créer une boussole digitale ou détecter le champ magnétique de transformateurs électriques!
L'avantage du module MOG-MAG est qu'il expose un port UEXT facilitant les raccordements.
Une fois la bibliothèque MicroPython mag3110.py installée (voir le tutoriel), l'utilisation du senseur est relativement élémentaire.
Le tutoriel MOD-MAG (MAG3110) propose également un second exemple "Calibration & Orientation".
Le MOD-LTR501ALS offre une réponse linéaire de 2 à 64000 Lux pour une lumière dans le spectre visible. Ce senseur offre une réponse proche de l'oeil humain.
Ce senseur dispose également d'un mode haute résolution entre 0.01 Lux et 320 Lux.
La particularité de ce senseur est qu'il est immunisé contre la lumière UltraViolette (UV) et InfraRouge (IR). De sorte, le senseur de proximité infrarouge qui y est joint est capable de travailler sous de nombreuses conditions de luminosité.
Le senseur de proximité utilise une LED Infrarouge pilotée par le MTR-501ALS configurable (courant max, gestion des impulsions, temps de mesure) permettant de détecter efficacement un objet à une distance allant jusqu'à 10 cm.
La LED IR fonctionne en mode pulsé.
Ce senseur se raccorde comme le MOD-MAG (voir ci-dessus) ou à l'aide de fils Dupond.
Une fois la bibliothèque MicroPython ltr501.py installée (voir le tutoriel), l'utilisation du senseur est relativement élémentaire.
ce qui produit un résultat similaire à ceci :
Où acheter
Si vous êtes intéressé par l'un ou l'autre de ces senseurs (ou encore l'ESP8266 EVB), vous pouvez vous les procurer ici:
Comme nous travaillons toujours avec MicroPython sur ESP8266 (comme dans notre ouvrage "Python, Raspberry Pi et Flask"), nous avons opté pour des module UEXT d'Olimex qui simplifie singulièrement le raccordement.
Magnétomètre MAG3110 sous MicroPython
Le MAG3110 (MOD-MAG) sur connecteur UEXT. |
MOD-MAG utilise un MAG3110, un magnétomètre 3 axes. Alimenté en 1.95V à 3.6V, il communique par l'intermédiaire du bus I2C.
La gamme de valeur retournée évolue entre -30000 à +30000 pour la gamme de ±1000µT (micro Tesla).
Ce module magnétomètre 3 axes est équipé d'un connecteur standard UEXT facilitant les branchements mais vous pouvez tout aussi bien effectuer les raccordements avec des fils Dupont.
Avec ce module, il est possible de détecter le champ magnétique terrestre, détecter du métal enterré, créer une boussole et bien plus encore.
Ce senseur permet de détecter rapidement des champs magnétiques dans le voisinage. Les données peuvent être utilisées pour créer une boussole digitale ou détecter le champ magnétique de transformateurs électriques!
L'avantage du module MOG-MAG est qu'il expose un port UEXT facilitant les raccordements.
Le MAG3110 (MOD-MAG) sur MicroPython ESP8266 |
Une fois la bibliothèque MicroPython mag3110.py installée (voir le tutoriel), l'utilisation du senseur est relativement élémentaire.
from time import sleep from mag3110 import MAG3110, DR_OS_1_25_32 i2c = I2C( sda=Pin(2), scl=Pin(4) ) mag = MAG3110( i2c ) print( "CHIP ID: %s" % mag.who_am_i() ) # Fixer le débit de donnée à 1.25 Hz et l'oversampling à 32 fois mag.setDR_OS( DR_OS_1_25_32 ) # Active le senseur mag.start() while True: # Attendre qu'une donnée soit disponible if mag.data_ready: # Lecture du tuple (x,y,z) xyz = mag.read() print( 'x,y,z = %s,%s,%s ' % xyz ) print( "That's the end folks")
Le tutoriel MOD-MAG (MAG3110) propose également un second exemple "Calibration & Orientation".
Tutoriel
Luxmètre et senseur de proximité LTR-501ALS sous MicroPython- Tutoriel MOD-MAG / MAG3110 (MC Hobby Wiki, Français)
- GitHub contenant le pilote MAG3110 pour MicroPython
Le MOD-LTR501ALS offre une réponse linéaire de 2 à 64000 Lux pour une lumière dans le spectre visible. Ce senseur offre une réponse proche de l'oeil humain.
MOD-LTR-501ALS - Senseur Luminosité & Proximité |
La particularité de ce senseur est qu'il est immunisé contre la lumière UltraViolette (UV) et InfraRouge (IR). De sorte, le senseur de proximité infrarouge qui y est joint est capable de travailler sous de nombreuses conditions de luminosité.
Le senseur de proximité utilise une LED Infrarouge pilotée par le MTR-501ALS configurable (courant max, gestion des impulsions, temps de mesure) permettant de détecter efficacement un objet à une distance allant jusqu'à 10 cm.
La LED IR fonctionne en mode pulsé.
Ce senseur se raccorde comme le MOD-MAG (voir ci-dessus) ou à l'aide de fils Dupond.
Une fois la bibliothèque MicroPython ltr501.py installée (voir le tutoriel), l'utilisation du senseur est relativement élémentaire.
from time import sleep from ltr501 import * i2c = I2C( sda=Pin(2), scl=Pin(4) ) ltr = LTR_501ALS( i2c ) # gamme de 2 Lux à 64000 Lux # Utiliser le contructeur suivant pour la gamme de 0.01 à 320 Lux range # # 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")
ce qui produit un résultat similaire à ceci :
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)
Où acheter
Si vous êtes intéressé par l'un ou l'autre de ces senseurs (ou encore l'ESP8266 EVB), vous pouvez vous les procurer ici:
- UEXT Module MOD-MAG module à base de MAG3110
- UEXT Module MOD-LTR-501ALS module à base de LTR-501ALS
- Module WiFi ESP8266 - carte d'évaluation (ESP8266-EVB)
- UEXT Splitter
- Câble console
Écrire un commentaire