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

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éthodeMontage

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.

1
from microbit import *
2
3
while True:
4
    lum = pin0.read_analog()  # On recueille le signal analogique sur la broche 0
5
    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
6
    #Intensité de 1 dans l'obscurité et 9 en pleine lumière
7
    if (niveau > 9):
8
        niveau = 9  # Pour éviter une valeur hors bornes
9
    if (niveau < 1):
10
        niveau = 1  # Pour éviter une valeur hors bornes
11
    print("Lum ",lum)  # Pour vérification des valeurs sur la console Python (pas indispensable).
12
    print(niveau)
13
    # Allumage de la matrice de DEL avec le niveau correct
14
    for x in range(5):
15
        for y in range(5):
16
            display.set_pixel(x,y,niveau)

ExempleActivité é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.

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

1
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é.

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

1
from microbit import *
2
while True:
3
    lum = display.read_light_level()
4
    print(lum)

ExempleDé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.

Déclenchement à distance d'un éclairage par une mesure de luminosité
Informations[1]

Ci-dessous le programme pour la carte qui effectue la mesure de luminosité.

1
"""Programme de mesure de l'intensité lumineuse et déclenchement d'un éclairage - Émetteur"""
2
3
from microbit import *
4
import radio
5
radio.on()
6
radio.config(channel=2)  """ Définir un canal est indispensable en classe pour
7
éviter les brouillages si les cartes communiquent sur le même canal par défaut """
8
9
while True:
10
    lum = display.read_light_level()  # On lit le niveau de luminosité
11
    print(lum)  # Pas indispensable
12
    if lum < 65:  # On fixe comme seuil de déclenchement la valeur de 65
13
        radio.send("sombre")
14
    else: radio.send("clair")

Ci-dessous le programme pour la carte réceptrice.

1
""" Déclenchement automatique d'un éclairage - Programme pour la carte réceptrice"""
2
3
from microbit import *
4
import radio
5
radio.on()
6
radio.config(channel=2)  # On définit le même canal que pour la carte émettrice
7
display.clear()  # On efface l'écran
8
9
while True:
10
    lum = radio.receive()
11
    if lum == "sombre":  # Si on a reçu "sombre", on commande l'allumage du panneau
12
        for i in range(5):
13
            for j in range(5):
14
                display.set_pixel(i,j,9)
15
    if lum == "clair":  # Si on a reçu "clair", on commande l'extinction du panneau
16
        for i in range(5):
17
            for j in range(5):
18
                display.set_pixel(i,j,0)