4.3.3 Rilevatore di raggi ultravioletti solari

4.3.3.1 Panoramica

Img

Il rilevatore di raggi ultravioletti solari è uno strumento di precisione usato per misurare l’intensità della radiazione ultravioletta proveniente dal sole. Rileva la radiazione ultravioletta (UV) invisibile all’occhio umano e ne quantifica l’intensità. Simili ai rilevatori di intensità luminosa, si basano anch’essi sull’effetto fotoelettrico, ma il loro nucleo risiede nella rilevazione selettiva dei raggi ultravioletti.

In questo progetto, l’OLED mostrerà in tempo reale l’intensità ultravioletta rilevata. Quando supera un certo valore, l’altoparlante sulla scheda emetterà un allarme e la matrice LED 5×5 mostrerà un pattern come avviso.

Il rilevatore di raggi ultravioletti solari è ampiamente usato in quasi tutte le occasioni che richiedono la quantificazione della “luce ultravioletta”, inclusi test di lampade per polimerizzazione UV e prodotti solari, apparecchi per fototerapia UV, monitoraggio di lampade di sterilizzazione UV in sistemi di purificazione dell’acqua e dell’aria, ecc.

Img

4.3.3.2 Conoscenze sui componenti

Img

Sensore di raggi ultravioletti

Img

Il sensore ultravioletti è utilizzato per rilevare i raggi UV, ed è principalmente composto da G365S01M basato su fotodiodi a semiconduttore. Può convertire l’intensità della radiazione UV nell’ambiente in un segnale di tensione analogico leggibile da un microcontrollore (come una scheda micro:bit). Il suo schema è il seguente:

Img

Conversione fotoelettrica: Quando il fotodiodo ultraviolettà interno al sensore è esposto alla luce UV, genera una corrente estremamente debole (proporzionale all’intensità UV).

Amplificazione della corrente: Questa debole corrente viene amplificata dall’amplificatore operazionale integrato internamente.

Uscita del segnale: Il segnale amplificato esce direttamente come tensione analogica da un pin. Il valore di tensione è solitamente compreso tra 0V e 1V (con alimentazione 3.3V). Più intensa è l’UV, più alta sarà la tensione.

Parametri:

  • Tensione di funzionamento: DC 5V

  • Lunghezza d’onda di risposta di picco: 355nm (λmax)

  • Responsività di picco (355nm) : 0.18A/W (Rmax)

  • Intervallo di risposta spettrale: 220~370nm

  • Rapporto di responsività UV/luce visibile (Rmax/R400nm): > Img(VB)

Microbit 5×5LED Matrix

Img

La matrice LED della scheda micro:bit contiene 25 LED disposti a griglia. Possiamo controllare un determinato LED integrando il suo valore di posizione nel codice di prova. Teoricamente possiamo accendere più LED contemporaneamente per mostrare pattern, cifre e scorrimento di caratteri.

Img

4.3.3.3 Componenti richiesti

Img

Img

Img

micro:bit V2 main board ×1

micro:bit shield ×1

OLED display ×1

Img

Img

Img

ultraviolet sensor ×1

micro USB cable×1

4 pin wire ×1

Img

Img

Img

3 pin wire ×1

battery holder ×1

AA battery(self-prepared) ×6

4.3.3.4 Schema di collegamento

⚠️ Quando effettuate i collegamenti, prestate attenzione al colore dei fili.

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

black

G

G

VCC

red

V2

V

SDA

blue

20

P20

SCL

green

19

P19

ultraviolet sensor

wire color

micro:bit shield pin

micro:bit board pin

G

black

G

G

V

red

V2

V

S

yellow

1

P1

Img

4.3.3.5 Flusso del codice

Img

4.3.3.6 Codice di prova

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

Img

⚠️ Suggerimento 2: La soglia 5 nella condizione if() può essere modificata in base alla situazione reale.

Codice completo:

'''
Theme: Solar ultraviolet detector
Function: OLED displays the intensity of ultraviolet rays and the ultraviolet sensor controls the 5×5 dot matrix and speaker
Compiling IDE: MU 1.2.0
Author: https://docs.keyestudio.com
'''
# import related libraries
from microbit import *
from oled_ssd1306 import *
import music
import math

# initialize and clear oled
initialize()  # initialize oled
clear_oled()  # clear oled

# Initialize the ADC pin (the ultraviolet sensor is connected to pin1)
uv_sensor = pin1

def read_uv_index():
    # Read the analog value (0-1023 corresponds to 0-5.0V)
    raw_value = uv_sensor.read_analog()
    # Make sure the value is within the valid range
    if raw_value > 1023:
        raw_value = 1023
    elif raw_value < 0:
        raw_value = 0
    # Map to the ultraviolet index range of 0 to 15
    # The mapping range can be adjusted according to the actual characteristics of the sensor
    uvi = raw_value * (15.0 / 1023)

    return round(uvi, 1)

while True:
    clear_oled()   # clear OLED
    uv = read_uv_index() # Read the ultraviolet intensity level detected by the ultraviolet sensor
    add_text(0, 0, "UV Intensity:")  # Display the character string in the corresponding position of OLED
    add_text(14, 0, str(int(uv)))  # Display Ultraviolet intensity level in the corresponding position of OLED
    if uv >= 5:    # when uv level >=5
       display.show(Image.NO)    # LED matrix displays the no pattern
       music.play("B5:4")        # speaker plays B5 tone
       sleep(100)
       music.play("C5:4")        # speaker plays C5 tone
       display.show(Image.SAD)   # LED matrix displays the sad pattern
       sleep(100)
    else: # or
       display.show(Image.HAPPY)  # LED matrix displays the happy pattern
       music.reset()              # no tone
    sleep(1000)

Img

Spiegazione breve:

① Importare le librerie microbit, oled_ssd1306, music e math.

from microbit import *
from oled_ssd1306 import *
import music
import math

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

initialize()  # initialize oled
clear_oled()  # clear oled

③ Inizializzare il pin del sensore di raggi ultravioletti solari.

uv_sensor = pin1

④ Definire la sotto-funzione per il valore ultravioletti rilevato dal sensore.

def read_uv_index():
    # Read the analog value (0-1023 corresponds to 0-3.3V)
    raw_value = uv_sensor.read_analog()
    # Make sure the value is within the valid range
    if raw_value > 1023:
        raw_value = 1023
    elif raw_value < 0:
        raw_value = 0
    # Map to the ultraviolet index range of 0 to 15
    # The mapping range can be adjusted according to the actual characteristics of the sensor
    uvi = raw_value * (15.0 / 1023)

    return round(uvi, 1)

⑤ Leggere il valore ultravioletti del sensore e visualizzarlo sull’OLED.

uv = read_uv_index() # Read the ultraviolet intensity level detected by the ultraviolet sensor
add_text(0, 0, "UV Intensity:")  # Display the character string in the corresponding position of OLED
add_text(14, 0, str(int(uv)))  # Display Ultraviolet intensity level in the corresponding position of OLED

⑥ Istruzione di giudizio: if()…else…

Quando l’intensità ultravioletta rilevata dalla luce solare è maggiore o uguale a 5, la matrice LED 5×5 mostra Img e Img, e l’altoparlante emette l’allarme. Altrimenti, la matrice mostra Img e l’altoparlante non suona.

if uv >= 5:    # when uv level >=5
   display.show(Image.NO)    # LED matrix displays the no pattern
   music.play("B5:4")        # speaker plays B5 tone
   sleep(100)
   music.play("C5:4")        # speaker plays C5 tone
   display.show(Image.SAD)   # LED matrix displays the sad pattern
   sleep(100)
else: # or
   display.show(Image.HAPPY)  # LED matrix displays the happy pattern
   music.reset()              # no tone

⑦ Ritardo 1000ms (1s).

sleep(1000)

4.3.3.7 Risultato del test

Img

Dopo aver collegato e acceso 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 test, premere il pulsante di reset sul retro della micro:bit.

Img

⚠️ Nota: Ambiente di test per il sensore ultravioletti: luce solare di metà giornata (10:00-14:00); evitare ombreggiature; puntare direttamente il sensore verso il sole.

L’OLED mostra in tempo reale l’intensità ultravioletta rilevata. Quando l’intensità ultravioletta rilevata dalla luce solare è maggiore o uguale a 5, la matrice LED 5×5 mostra Img e Img, e l’altoparlante emette l’allarme. Altrimenti, la matrice mostra Img e l’altoparlante non suona.

Img

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

(Suggerimento: Se non si osserva alcun risultato, premere il pulsante di reset della scheda micro:bit.)

Img