### 4.3.3 Détecteur ultraviolet solaire
#### 4.3.3.1 Aperçu

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.

#### 4.3.3.2 Connaissances sur les composants

**Capteur ultraviolet solaire**

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 :

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) : > (VB)
**Matrice LED 5×5 de micro:bit**

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.

#### 4.3.3.3 Composants requis
| |  | |
| :--: | :--: | :--: |
| carte micro:bit V2 ×1 | shield micro:bit ×1 | écran OLED ×1 |
|| ||
| capteur ultraviolet ×1 | câble micro USB×1 | câble 4 broches ×1 |
||||
| 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 |

#### 4.3.3.5 Diagramme de flux

#### 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](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” .

⚠️ **Astuce 2 : Le seuil 5 dans la condition if() peut être modifié en fonction de la situation réelle.**
**Code complet :**
```Python
'''
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)
```

**Brève explication :**
① Importer les bibliothèques microbit, oled_ssd1306, music et math.
```Python
from microbit import *
from oled_ssd1306 import *
import music
import math
```
② Initialiser les pixels de l'OLED, effacer l'OLED.
```Python
initialize() # initialize oled
clear_oled() # clear oled
```
③ Initialiser la broche du capteur ultraviolet solaire.
```Python
uv_sensor = pin1
```
④ Définir la sous-fonction de la valeur d'ultraviolet détectée par le capteur.
```Python
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.
```Python
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  et , et le haut-parleur s'active. Sinon, la matrice affiche  et le haut-parleur ne s'active pas.
```Python
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).
```Python
sleep(1000)
```
#### 4.3.3.7 Résultat du test

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.

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

⚠️ **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  et , et le haut-parleur s'active. Sinon, la matrice affiche  et le haut-parleur ne s'active pas.

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