4.3.3 Rilevatore di raggi ultravioletti solari
4.3.3.1 Panoramica

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.

4.3.3.2 Conoscenze sui componenti

Sensore di raggi ultravioletti

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:

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): >
(VB)
Microbit 5×5LED Matrix

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.

4.3.3.3 Componenti richiesti
|
|
|
|---|---|---|
micro:bit V2 main board ×1 |
micro:bit shield ×1 |
OLED display ×1 |
|
|
|
ultraviolet sensor ×1 |
micro USB cable×1 |
4 pin wire ×1 |
|
|
|
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 |

4.3.3.5 Flusso del codice

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

⚠️ 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)

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
e
, e l’altoparlante emette l’allarme. Altrimenti, la matrice mostra
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

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.

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

⚠️ 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
e
, e l’altoparlante emette l’allarme. Altrimenti, la matrice mostra
e l’altoparlante non suona.

⚠️ 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.)









