4.3.3 Détecteur ultraviolet solaire

4.3.3.1 Aperçu

Img

Le détecteur ultraviolet solaire est un instrument de précision utilisé pour mesurer l’intensité du rayonnement ultraviolet du soleil. Il détecte le rayonnement ultraviolet (UV) invisible à l’œil nu et en quantifie l’intensité. Similaires aux détecteurs d’intensité lumineuse, ils sont également basés sur l’effet photoélectrique, mais leur cœur réside dans la détection sélective des rayons ultraviolets.

Dans ce projet, l’OLED affichera en temps réel l’intensité d’ultraviolet détectée. Lorsqu’elle dépasse une certaine valeur, le haut-parleur sur la carte alertera, et la matrice LED 5×5 affichera un motif servant d’avertissement.

Le détecteur ultraviolet solaire est largement utilisé dans presque toutes les situations nécessitant la quantification de la « lumière ultraviolette », notamment les tests de lampes de durcissement UV et de produits solaires, les équipements de photothérapie UV, la surveillance des lampes de stérilisation UV dans les systèmes de purification d’eau et d’air, etc.

Img

4.3.3.2 Connaissances sur les composants

Img

Capteur ultraviolet solaire

Img

Le capteur ultraviolet est utilisé pour détecter les rayons ultraviolets ; il est principalement composé du G365S01M basé sur des photodiodes semi-conductrices. Il peut convertir l’intensité du rayonnement UV dans l’environnement en un signal de tension analogique lisible par un microcontrôleur (comme une carte micro:bit). Son schéma est le suivant :

Img

Conversion photoélectrique : Lorsque la photodiode UV à l’intérieur du capteur est exposée à la lumière ultraviolette, elle génère un courant extrêmement faible (proportionnel à l’intensité UV).

Amplification du courant : Ce courant faible est amplifié par l’amplificateur opérationnel intégré en interne.

Sortie du signal : Le signal amplifié sort directement une tension analogique par une broche. La valeur de tension est généralement comprise entre 0V et 1V (sous alimentation 3.3V). Plus l’intensité UV est élevée, plus la tension sera élevée.

Paramètres :

  • Tension de fonctionnement : DC 5V

  • Longueur d’onde de réponse maximale : 355nm (λmax)

  • Responsivité maximale (355nm) : 0.18A/W (Rmax)

  • Plage de réponse spectrale : 220~370nm

  • Rapport de responsivité UV/lumière visible (Rmax/R400nm) : > Img(VB)

Matrice LED 5×5 de micro:bit

Img

La matrice LED de la carte micro:bit contient 25 LED disposées en grille. Nous pouvons contrôler une LED particulière en intégrant sa position dans le code de test. Théoriquement, nous pouvons allumer plusieurs LED en même temps pour afficher des motifs, des chiffres et des caractères déroulants.

Img

4.3.3.3 Composants requis

Img

Img

Img

carte micro:bit V2 ×1

shield micro:bit ×1

écran OLED ×1

Img

Img

Img

capteur ultraviolet ×1

câble micro USB×1

câble 4 broches ×1

Img

Img

Img

câble 3 broches ×1

support de piles ×1

piles AA (fournies par l’utilisateur) ×6

4.3.3.4 Schéma de câblage

⚠️ Lors du câblage, veuillez prêter attention à la couleur des fils.

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 Diagramme de flux

Img

4.3.3.6 Code de test

⚠️ Astuce 1 : Avant de télécharger le code sur la carte micro:bit, veuillez importer le fichier de bibliothèque “oled_ssd1306.py” en vous référant à Importer la bibliothèque sur MU” .

Img

⚠️ Astuce 2 : Le seuil 5 dans la condition if() peut être modifié en fonction de la situation réelle.

Code complet :

'''
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

Brève explication :

① Importer les bibliothèques microbit, oled_ssd1306, music et math.

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

② Initialiser les pixels de l’OLED, effacer l’OLED.

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

③ Initialiser la broche du capteur ultraviolet solaire.

uv_sensor = pin1

④ Définir la sous-fonction de la valeur d’ultraviolet détectée par le capteur.

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)

⑤ Lire la valeur ultraviolet du capteur et l’afficher sur l’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

⑥ Instruction conditionnelle : if()…else…

Lorsque l’intensité ultraviolet détectée de la lumière solaire est supérieure ou égale à 5, la matrice LED 5×5 affiche Img et Img, et le haut-parleur s’active. Sinon, la matrice affiche Img et le haut-parleur ne s’active pas.

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

⑦ Délai 1000ms (1 s).

sleep(1000)

4.3.3.7 Résultat du test

Img

Après avoir réalisé le câblage et alimenté via le câble micro USB, connectez une alimentation externe (6 piles AA) pour assurer une alimentation suffisante, et cliquez sur “Flash” pour télécharger le code sur la carte micro:bit.

Img

Après avoir téléversé le code de test, appuyez sur le bouton reset à l’arrière du micro:bit.

Img

⚠️ Remarque : Environnement de test pour le capteur ultraviolet : soleil de midi (10:00-14:00) ; éviter l’ombre ; orienter directement le capteur vers le soleil.

L’OLED affiche en temps réel l’intensité d’ultraviolet détectée. Lorsque l’intensité ultraviolet détectée de la lumière solaire est supérieure ou égale à 5, la matrice LED 5×5 affiche Img et Img, et le haut-parleur s’active. Sinon, la matrice affiche Img et le haut-parleur ne s’active pas.

Img

⚠️ Remarque : Les blocs de construction de l’expérience ne sont pas inclus dans ce kit.

(Astuce: Si aucun résultat n’est observé, veuillez appuyer sur le bouton reset de la carte micro:bit.)

Img