Mesurer et exploiter la luminosité ambiante avec une carte Micro:bit
On présente ici des expériences à base de photorésistances (adaptation d'une activité expérimentale proposée dans Le Livre Scolaire 2nde) et de la fonction "luxmètre" de la carte.
Simuler l'adaptation automatique de luminosité d'un afficheur en fonction de la luminosité ambiante
Texte légal : Points du programme concernés
Classe de 2nde
Mesurer une grandeur physique à l'aide d'un capteur électrique résistif. Produire et utiliser une courbe d'étalonnage reliant la résistance d'un système avec une grandeur d'intérêt (température, pression, intensité lumineuse, etc.). Utiliser un dispositif avec microcontrôleur et capteur.
Objectif
Il s'agit ici d'exploiter les variations de la résistance en fonction de l'intensité lumineuse pour simuler quelques dispositifs automatiques : éclairage automatique, ajustement automatique de la luminosité d'un écran de téléphone, etc...
Comme dans la partie précédente, la photorésistance est montée en pont diviseur de tension afin de recueillir la tension sur une borne de la carte Micro:bit utilisée en entrée analogique.
On présente ici une adaptation d'une activité expérimentale publiée dans Le livre scolaire - 2nde.
Méthode : Montage
Le montage ci-contre permet de mesurer la tension aux bornes de la photorésistance sur la borne 0 de la carte Micro:bit.
On exploite la valeur retournée pour calculer le niveau d'intensité lumineuse des DEL du panneau de la carte, ajustable entre 0 et 9.
Ci-dessous, le programme correspondant. La ligne calculant la valeur de la variable niveau
peut nécessiter une adaptation en fonction des conditions de luminosité de la pièce.
from microbit import *
while True:
lum = pin0.read_analog() # On recueille le signal analogique sur la broche 0
niveau = int(-0.0133*lum+13.0) # Calcul du niveau d'éclairage des DEL tenant compte des contraintes et de l'environnement lumineux de l'expérience
#Intensité de 1 dans l'obscurité et 9 en pleine lumière
if (niveau > 9):
niveau = 9 # Pour éviter une valeur hors bornes
if (niveau < 1):
niveau = 1 # Pour éviter une valeur hors bornes
print("Lum ",lum) # Pour vérification des valeurs sur la console Python (pas indispensable).
print(niveau)
# Allumage de la matrice de DEL avec le niveau correct
for x in range(5):
for y in range(5):
display.set_pixel(x,y,niveau)
Exemple : Activité élèves - Simuler un dispositif d'ajustement automatique de la luminosité
Cette activité propose de simuler l'adaptation automatique de la luminosité d'un écran de téléphone portable en fonction de l'environnement lumineux extérieur.
On montre dans un premier temps qu'une tension lue sur une entrée analogique de la carte peut être exploitée pour ajuster la luminosité du panneau de DEL de la carte. On utilise ensuite une photorésistance afin d'automatiser l'ajustement de la luminosité moyennant des ajustements dans le programme.
L'activité est téléchargeable à l'aide des deux liens ci-dessous : en pdf
et dans une version éditable au format odt
.
Remarque : Variante plus simple
Le calcul du niveau d'intensité des DEL peut être bloquant pour certains élèves.
On peut envisager de proposer la simulation d'un système d'allumage automatique : si la luminosité est en dessous d'un seuil défini, on allume le panneau de DEL, sinon il est éteint.
Exploiter la fonction de mesure de luminosité intégrée à la carte
Fonctionnement
Le panneau de DEL peut être utilisé en capteur de luminosité basique en inversant la polarisation des DEL. Cela ne requiert aucun câblage additionnel.
La mesure du niveau de luminosité passe par la commande ci-dessous.
display.read_light_level()
Elle renvoie une valeur entière comprise entre 0 et 255 : 0 pour l'obscurité et 255 pour le niveau maximal de luminosité.
Exemple : Afficher le niveau de luminosité sur la console Python
Le programme simple ci-dessous se contente de renvoyer la valeur de luminosité captée par la carte Micro:bit.
from microbit import *
while True:
lum = display.read_light_level()
print(lum)
Exemple : Déclenchement d'un éclairage à distance
Avec deux cartes Micro:bit, on peut envisager de déclencher l'allumage du panneau de DEL d'une carte à partir de la mesure de luminosité effectuée par une autre carte en utilisant la communication radio.
Ci-dessous le programme pour la carte qui effectue la mesure de luminosité.
"""Programme de mesure de l'intensité lumineuse et déclenchement d'un éclairage - Émetteur"""
from microbit import *
import radio
radio.on()
radio.config(channel=2) """ Définir un canal est indispensable en classe pour
éviter les brouillages si les cartes communiquent sur le même canal par défaut """
while True:
lum = display.read_light_level() # On lit le niveau de luminosité
print(lum) # Pas indispensable
if lum < 65: # On fixe comme seuil de déclenchement la valeur de 65
radio.send("sombre")
else: radio.send("clair")
Ci-dessous le programme pour la carte réceptrice.
""" Déclenchement automatique d'un éclairage - Programme pour la carte réceptrice"""
from microbit import *
import radio
radio.on()
radio.config(channel=2) # On définit le même canal que pour la carte émettrice
display.clear() # On efface l'écran
while True:
lum = radio.receive()
if lum == "sombre": # Si on a reçu "sombre", on commande l'allumage du panneau
for i in range(5):
for j in range(5):
display.set_pixel(i,j,9)
if lum == "clair": # Si on a reçu "clair", on commande l'extinction du panneau
for i in range(5):
for j in range(5):
display.set_pixel(i,j,0)