### 4.3.3 Solarer Ultraviolett-Detektor
#### 4.3.3.1 Übersicht

Der Solar-Ultraviolett-Detektor ist ein Präzisionsinstrument, das zur Messung der Intensität der ultravioletten Strahlung der Sonne verwendet wird. Er detektiert ultraviolette (UV) Strahlung, die für das menschliche Auge unsichtbar ist, und quantifiziert deren Intensität. Ähnlich wie Helligkeitssensoren beruhen diese Detektoren auf dem photoelektrischen Effekt, wobei der Schwerpunkt auf der selektiven Erfassung von Ultraviolettstrahlen liegt.
In diesem Projekt zeigt das OLED die erkannte Ultraviolett-Intensität in Echtzeit an. Wenn diese einen bestimmten Wert überschreitet, gibt der Lautsprecher auf der Platine Alarm und die 5×5-LED-Matrix zeigt ein Muster als Warnung.
Der Solar-Ultraviolett-Detektor wird vielfach in nahezu allen Anwendungsfällen eingesetzt, die die Quantifizierung von „UV-Licht“ erfordern, einschließlich Tests von UV-Härtungsleuchten und Sonnenschutzmitteln, UV-Phototherapie-Geräten, Überwachung von UV-Desinfektionslampen in Wasseraufbereitungs- und Luftreinigungssystemen usw.

#### 4.3.3.2 Bauteilkenntnisse

**Solarer Ultraviolett-Sensor**

Der Ultraviolett-Sensor dient der Erkennung von Ultraviolettstrahlung und besteht hauptsächlich aus dem G365S01M, basierend auf Halbleiter-Photodioden. Er kann die UV-Strahlungsintensität in der Umgebung in ein analoges Spannungssignal umwandeln, das von einem Mikrocontroller (z. B. einem micro:bit-Board) ausgelesen werden kann. Das Schaltbild ist wie folgt:

Photoelektrische Umwandlung: Wenn die Photodiode im Sensor der Ultraviolettstrahlung ausgesetzt wird, erzeugt sie einen sehr schwachen Strom (proportional zur UV-Intensität).
Stromverstärkung: Dieser schwache Strom wird durch einen intern integrierten Operationsverstärker verstärkt.
Signalausgang: Das verstärkte Signal gibt direkt eine analoge Spannung an einem Pin aus. Der Spannungswert liegt üblicherweise zwischen 0V und 1V (bei 3.3V Versorgung). Je stärker die UV-Intensität, desto höher die Spannung.
**Parameter:**
- Betriebsspannung: DC 5V
- Wellenlänge mit Maximumantwort: 355nm (λmax)
- Spitzenempfindlichkeit (355nm) : 0.18A/W (Rmax)
- Spektraler Ansprechbereich: 220~370nm
- UV/ sichtbares Licht Empfindlichkeitsverhältnis (Rmax/R400nm): > (VB)
**micro:bit 5×5-LED-Matrix**

Die LED-Matrix des micro:bit-Boards enthält 25 LEDs in einem Raster. Wir können eine bestimmte LED durch Integration ihres Positionswertes in den Testcode steuern. Theoretisch können viele LEDs gleichzeitig eingeschaltet werden, um Muster, Ziffern und scrollende Zeichen darzustellen.

#### 4.3.3.3 Benötigte Komponenten
| |  | |
| :--: | :--: | :--: |
| micro:bit V2 Hauptplatine ×1 | micro:bit Shield ×1 | OLED-Display ×1 |
|| ||
| Ultraviolett-Sensor ×1 | micro USB-Kabel ×1 | 4-poliges Kabel ×1 |
||||
| 3-poliges Kabel ×1 | Batteriehalter ×1 | AA-Batterien (**selbst bereitgestellt**) ×6 |
#### 4.3.3.4 Schaltplan
⚠️ **Achten Sie beim Verkabeln bitte auf die Drahtfarben.**
| 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 Programmablauf

#### 4.3.3.6 Testcode
⚠️ **Tipp 1: Bevor Sie den Code auf das Microbit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306\.py” gemäß ** “[Import Library on MU](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” .

⚠️ **Tipp 2: Der Schwellenwert 5 in der if()-Bedingung kann je nach tatsächlicher Situation angepasst werden.**
**Vollständiger Code:**
```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
'''
# benötigte Bibliotheken importieren
from microbit import *
from oled_ssd1306 import *
import music
import math
# OLED initialisieren und löschen
initialize() # initialize oled
clear_oled() # clear oled
# ADC-Pin initialisieren (der Ultraviolett-Sensor ist an Pin1 angeschlossen)
uv_sensor = pin1
def read_uv_index():
# Analogen Wert auslesen (0-1023 entspricht 0-5.0V)
raw_value = uv_sensor.read_analog()
# Sicherstellen, dass der Wert im gültigen Bereich liegt
if raw_value > 1023:
raw_value = 1023
elif raw_value < 0:
raw_value = 0
# Auf den UV-Indexbereich von 0 bis 15 abbilden
# Der Abbildungsbereich kann entsprechend den tatsächlichen Eigenschaften des Sensors angepasst werden
uvi = raw_value * (15.0 / 1023)
return round(uvi, 1)
while True:
clear_oled() # OLED löschen
uv = read_uv_index() # Die vom Ultraviolett-Sensor erkannte UV-Intensität lesen
add_text(0, 0, "UV Intensity:") # Zeichenkette an der entsprechenden Position auf dem OLED anzeigen
add_text(14, 0, str(int(uv))) # UV-Intensitätsstufe an der entsprechenden Position auf dem OLED anzeigen
if uv >= 5: # wenn UV-Stufe >=5
display.show(Image.NO) # LED-Matrix zeigt das NO-Muster an
music.play("B5:4") # Lautsprecher spielt Ton B5
sleep(100)
music.play("C5:4") # Lautsprecher spielt Ton C5
display.show(Image.SAD) # LED-Matrix zeigt das SAD-Muster an
sleep(100)
else: # sonst
display.show(Image.HAPPY) # LED-Matrix zeigt das HAPPY-Muster an
music.reset() # kein Ton
sleep(1000)
```

**Kurzbeschreibung:**
① Bibliotheken microbit, oled_ssd1306, music und math importieren.
```Python
from microbit import *
from oled_ssd1306 import *
import music
import math
```
② OLED initialisieren und löschen.
```Python
initialize() # initialize oled
clear_oled() # clear oled
```
③ Den Pin des Solar-Ultraviolett-Sensors initialisieren.
```Python
uv_sensor = pin1
```
④ Die Unterfunktion zur Ermittlung des vom Sensor detektierten Ultraviolett-Werts definieren.
```Python
def read_uv_index():
# Analogen Wert auslesen (0-1023 entspricht 0-3.3V)
raw_value = uv_sensor.read_analog()
# Sicherstellen, dass der Wert im gültigen Bereich liegt
if raw_value > 1023:
raw_value = 1023
elif raw_value < 0:
raw_value = 0
# Auf den UV-Indexbereich von 0 bis 15 abbilden
# Der Abbildungsbereich kann entsprechend den tatsächlichen Eigenschaften des Sensors angepasst werden
uvi = raw_value * (15.0 / 1023)
return round(uvi, 1)
```
⑤ Den vom Sensor gelesenen Ultraviolett-Wert auslesen und auf dem OLED anzeigen.
```Python
uv = read_uv_index() # Die vom Ultraviolett-Sensor erkannte UV-Intensität lesen
add_text(0, 0, "UV Intensity:") # Zeichenkette an der entsprechenden Position auf dem OLED anzeigen
add_text(14, 0, str(int(uv))) # UV-Intensitätsstufe an der entsprechenden Position auf dem OLED anzeigen
```
⑥ Verzweigungsanweisung: if()...else...
Wenn die vom Sonnenlicht ermittelte Ultraviolett-Intensität größer oder gleich 5 ist, zeigt die 5×5-LED-Matrix  und  an und der Lautsprecher gibt Alarm. Andernfalls zeigt die Matrix  an und der Lautsprecher bleibt stumm.
```Python
if uv >= 5: # wenn UV-Stufe >=5
display.show(Image.NO) # LED-Matrix zeigt das NO-Muster an
music.play("B5:4") # Lautsprecher spielt Ton B5
sleep(100)
music.play("C5:4") # Lautsprecher spielt Ton C5
display.show(Image.SAD) # LED-Matrix zeigt das SAD-Muster an
sleep(100)
else: # sonst
display.show(Image.HAPPY) # LED-Matrix zeigt das HAPPY-Muster an
music.reset() # kein Ton
```
⑦ Verzögerung 1000ms (1 s).
```Python
sleep(1000)
```
#### 4.3.3.7 Testergebnis

Nach dem Verkabeln und dem Einschalten per micro USB-Kabel schließen Sie die externe Stromversorgung (6 AA-Batterien) an, um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie “Flash”, um den Code auf das micro:bit-Board herunterzuladen.

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

⚠️ **Hinweis:** Testumgebung für den Ultraviolett-Sensor: Mittagssonne (10:00–14:00); Abschattung vermeiden; Sensor direkt zur Sonne ausrichten.
Das OLED zeigt die erkannte Ultraviolett-Intensität in Echtzeit an. Wenn die erkannte Ultraviolett-Intensität des Sonnenlichts größer oder gleich 5 ist, zeigt die 5×5-LED-Matrix  und  an und der Lautsprecher gibt Alarm. Andernfalls zeigt die Matrix  an und der Lautsprecher bleibt stumm.

⚠️ **Hinweis: Die Bausteine im Experiment sind nicht im Lieferumfang dieses Kits enthalten.**
(**Tipp:** Wenn kein Ergebnis beobachtet wird, drücken Sie bitte die Reset-Taste des micro:bit-Boards.)
