### 4.3.3 Détecteur ultraviolet solaire #### 4.3.3.1 Aperçu ![Img](./media/top1.png) 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](./media/bottom1.png) #### 4.3.3.2 Connaissances sur les composants ![Img](./media/2top.png) **Capteur ultraviolet solaire** ![Img](./media/UV-sensor.png) 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](./media/UV.png) 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](media/103.png)(VB) **Matrice LED 5×5 de micro:bit** ![Img](./media/j101.png) 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](./media/2bottom.png) #### 4.3.3.3 Composants requis | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | carte micro:bit V2 ×1 | shield micro:bit ×1 | écran OLED ×1 | |![Img](./media/UV-sensor1.png)|![Img](./media/usb.png) |![Img](./media/4pin.png)| | capteur ultraviolet ×1 | câble micro USB×1 | câble 4 broches ×1 | |![Img](./media/3pin.png)|![Img](./media/batterycase.png)|![Img](./media/AAbattery.png)| | 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](./media/couj3.png) #### 4.3.3.5 Diagramme de flux ![Img](./media/flow-chart-03.png) #### 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)” . ![Img](./media/WPSA1.png) ⚠️ **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) ``` ![Img](./media/line1.png) **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 ![Img](./media/ab1.png) et ![Img](./media/ab2.png), et le haut-parleur s'active. Sinon, la matrice affiche ![Img](./media/ab3.png) 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 ![Img](./media/4top.png) 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](./media/A125.png) Après avoir téléversé le code de test, appuyez sur le bouton reset à l'arrière du micro:bit. ![Img](./media/A455.png) ⚠️ **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](./media/ab1.png) et ![Img](./media/ab2.png), et le haut-parleur s'active. Sinon, la matrice affiche ![Img](./media/ab3.png) et le haut-parleur ne s'active pas. ![Img](./media/dongtu-3.gif) ⚠️ **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](./media/4bottom.png)