4.3.2 Rilevatore di intensità luminosa

4.3.2.1 Panoramica

Img

Il rivelatore di intensità luminosa, noto anche come illuminance meter o Lux meter, è uno strumento specializzato utilizzato per misurare la quantità totale di luce (ossia l’illuminamento) che incide su una superficie. Funziona principalmente basandosi sull’effetto fotoelettrico.

In questo progetto, la luminosità rilevata dal sensore di luce verrà visualizzata in tempo reale sull’OLED. Quando supera un certo valore, l’altoparlante sulla scheda emetterà un allarme come avviso e promemoria.

I rivelatori di intensità luminosa sono ampiamente utilizzati in quasi tutte le situazioni che richiedono la quantificazione della “luce”, come illuminazione esterna e stradale, progettazione e collaudo dell’illuminazione interna, fotografia e produzione video, architettura e salute, ecc.

Img

4.3.2.2 Conoscenze dei componenti

Img

Microbit Light Sensor

Img

Poiché la scheda micro:bit non contiene un proprio fotoresistore, la matrice LED svolge questo compito. Il segnale luminoso viene convertito in input, e viene campionato il tempo di decadimento della tensione in modo che l’intensità luminosa rilevata sia un valore relativo. (Nota: la luminosità viene inviata alla porta seriale ed è un valore relativo.)

Microbit Speaker

Img

La scheda Micro: Bit dispone di un altoparlante integrato, che facilita la produzione di suoni per i programmi. È in grado di emettere suoni come risatine, saluti e sbadigli, oltre a tutti i tipi di toni, note e battiti. Per esempio, può riprodurre la canzone Ode to Joy.

Img

4.3.2.3 Componenti necessari

Img

Img

Img

micro:bit V2 main board ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

micro USB cable ×1

4 pin wire ×1

battery holder ×1

Img

AA battery(self-prepared) ×6

4.3.2.4 Schema di collegamento

⚠️ Quando esegui i collegamenti, presta attenzione al colore dei fili.

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

nero

G

G

VCC

rosso

V2

V

SDA

blu

20

P20

SCL

verde

19

P19

Img

4.3.2.5 Flusso del codice

Img

4.3.2.6 Codice di prova

⚠️ Suggerimento 1: Prima di scaricare il codice sulla scheda Microbit, importa il file di libreria “oled_ssd1306.py” facendo riferimento a Import Library on MU” .

Img

⚠️ Suggerimento 2: la soglia nella condizione “if()…elif()…” può essere modificata in base alla situazione reale.

Codice completo:

'''
Theme: Light intensity detector
Function: OLED displays the light intensity and the microbit light sensor controls the 5×5 dot matrix and speaker
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# importa le librerie correlate
from microbit import *
from oled_ssd1306 import *
import music

val1 = Image("90909:""09990:""99999:""09990:""90909")  # Imposta il pattern
val2 = Image("00000:""00900:""09990:""00900:""00000")  # Imposta il pattern

# inizializza e cancella oled
initialize()  # inizializza oled
clear_oled()  # cancella oled

while True:
    clear_oled()  # cancella OLED
    Lightintensity = display.read_light_level() # Legge l'intensità luminosa rilevata dal sensore di luce del microbit e la assegna alla variabile Lightintensity
    add_text(0, 0, 'Lightintensity:')  # Visualizza la stringa di caratteri nella posizione corrispondente dell'OLED
    add_text(16, 0, str(Lightintensity))  # Visualizza Lightintensity nella posizione corrispondente dell'OLED
    if Lightintensity >= 100: # quando l'intensità luminosa > 100
       display.show(val1)   # la matrice LED mostra il pattern impostato1
       music.play("C5:1")   # l'altoparlante riproduce il tono C5
       sleep(50)
       music.play("D5:2")   # l'altoparlante riproduce il tono D5
       sleep(50)
       music.play("B5:4")   # l'altoparlante riproduce il tono B5
       sleep(50)
    elif Lightintensity > 0 and Lightintensity < 100:  # quando 0 < intensità luminosa < 100
       display.show(val2)   # la matrice LED mostra il pattern impostato2
       music.play("C3:1")   # l'altoparlante riproduce il tono C3
    else: # altrimenti
       display.clear()   # Imposta la luminosità di tutti i LED a 0 (spento)
       music.reset()     # nessun tono
    sleep(1000)

Img

Breve spiegazione:

① Importare le librerie microbit, oled_ssd1306 e music.

# importa le librerie correlate
from microbit import *
from oled_ssd1306 import *
import music

② Definire due pattern.

val1 = Image("90909:""09990:""99999:""09990:""90909")  # Imposta il pattern
val2 = Image("00000:""00900:""09990:""00900:""00000")  # Imposta il pattern

③ Inizializzare i pixel dell’OLED, cancellare l’OLED.

initialize()  # inizializza oled
clear_oled()  # cancella oled

④ Leggere il valore di luminosità dal microbit e visualizzarlo sull’OLED.

Lightintensity = display.read_light_level() # Legge l'intensità luminosa rilevata dal sensore di luce del microbit e la assegna alla variabile Lightintensity
add_text(0, 0, 'Lightintensity:')  # Visualizza la stringa di caratteri nella posizione corrispondente dell'OLED
add_text(16, 0, str(Lightintensity))  # Visualizza Lightintensity nella posizione corrispondente dell'OLED

⑤ Istruzione di selezione: if()…elif()…else…

Quando la luminosità rilevata è maggiore o uguale a 100, la matrice 5×5 di LED mostra Img, e l’altoparlante emette il suono di allarme 1.

if Lightintensity >= 100: # quando l'intensità luminosa > 100
   display.show(val1)   # la matrice LED mostra il pattern impostato1
   music.play("C5:1")   # l'altoparlante riproduce il tono C5
   sleep(50)
   music.play("D5:2")   # l'altoparlante riproduce il tono D5
   sleep(50)
   music.play("B5:4")   # l'altoparlante riproduce il tono B5
   sleep(50)

Se la luminosità rilevata è compresa tra 0 e 100, la matrice 5×5 di LED mostra Img, e l’altoparlante emette il suono di allarme 2.

elif Lightintensity > 0 and Lightintensity < 100:  # quando 0 < intensità luminosa < 100
   display.show(val2)   # la matrice LED mostra il pattern impostato2
   music.play("C3:1")   # l'altoparlante riproduce il tono C3

Altrimenti, la matrice 5×5 di LED non mostra nulla e l’altoparlante non emette suoni.

else: # altrimenti
   display.clear()  # Imposta la luminosità di tutti i LED a 0 (spento)
   music.reset()    # nessun tono

⑥ Pausa di 1000 ms (1 s).

sleep(1000)

4.3.2.7 Risultato del test

Img

Dopo aver effettuato i collegamenti e aver alimentato tramite cavo micro USB, collegare l’alimentazione esterna (6 batterie AA) per garantire un’alimentazione sufficiente, e cliccare “Flash” per scaricare il codice sulla scheda micro:bit.

Img

Dopo aver caricato il codice di prova, premere il pulsante di reset sul retro del micro:bit.

Img

L’OLED mostra in tempo reale il valore di luminosità rilevato dal sensore di luce. Quando la luminosità rilevata è maggiore di 100, la matrice 5×5 di LED mostra Img, e l’altoparlante emette il suono di allarme 1 come avviso di livello elevato. Se la luminosità rilevata è compresa tra 0 e 100, la matrice 5×5 di LED mostra Img, e l’altoparlante emette il suono di allarme 2 come avviso di livello basso. Altrimenti, la matrice 5×5 di LED non mostra nulla e l’altoparlante non emette suoni.

Img

⚠️ Nota: I mattoncini da costruzione nell’esperimento non sono inclusi in questo kit.

(Suggerimento: Se non si osservano risultati, premere il pulsante di reset della scheda micro:bit.)

Img