### 4.3.3 Solar Ultraviolet Detector #### 4.3.3.1 Overview ![Img](./media/top1.png) El detector de radiación ultravioleta solar es un instrumento de precisión utilizado para medir la intensidad de la radiación ultravioleta procedente del sol. Detecta la radiación ultravioleta (UV) que es invisible al ojo humano y cuantifica su intensidad. De manera similar a los detectores de intensidad de luz, también se basan en el efecto fotoeléctrico, pero su núcleo radica en la detección selectiva de los rayos ultravioleta. En este proyecto, el OLED mostrará en tiempo real la intensidad ultravioleta detectada. Cuando supere cierto valor, el altavoz de la placa emitirá una alarma y la matriz de LED 5×5 mostrará un patrón para servir como advertencia. El detector de radiación ultravioleta solar se utiliza ampliamente en casi todas las ocasiones que requieren la cuantificación de la “luz ultravioleta”, incluyendo pruebas de lámparas de curado UV y productos solares, equipos de fototerapia ultravioleta, monitorización de lámparas de esterilización ultravioleta en sistemas de purificación de agua y sistemas de purificación de aire, etc. ![Img](./media/bottom1.png) #### 4.3.3.2 Component Knowledge ![Img](./media/2top.png) **Solar Ultraviolet Sensor** ![Img](./media/UV-sensor.png) El sensor de ultravioleta se utiliza para detectar rayos ultravioleta, y está compuesto principalmente por G365S01M basado en fotodiodos semiconductores. Puede convertir la intensidad de la radiación UV en el entorno en una señal de voltaje analógico que puede ser leída por un microcontrolador (por ejemplo, una placa micro:bit). Su diagrama esquemático es el siguiente: ![Img](./media/UV.png) Conversión fotoeléctrica: Cuando el fotodiodo ultravioleta dentro del sensor se expone a luz ultravioleta, genera una corriente extremadamente débil (proporcional a la intensidad UV). Amplificación de la corriente: Esta corriente débil se amplifica mediante el amplificador operacional integrado internamente. Salida de la señal: La señal amplificada sale directamente como un voltaje analógico por un pin. El valor de voltaje suele estar entre 0V y 1V (con alimentación de 3.3V). Cuanto mayor sea la intensidad UV, mayor será el voltaje. **Parámetros:** - Operating voltage: DC 5V - Peak response wavelength: 355nm (λmax) - Peak responsivity (355nm) : 0.18A/W (Rmax) - Spectral response range: 220~370nm - UV/visible light responsivity ratio(Rmax/R400nm): > ![Img](media/103.png)(VB) **Microbit 5×5LED Matrix** ![Img](./media/j101.png) La matriz de LED de la placa micro:bit contiene 25 LEDs en una cuadrícula. Podemos controlar un LED concreto integrando su valor de posición en el código de prueba. Teóricamente, podemos encender muchos LEDs al mismo tiempo para mostrar patrones, dígitos y caracteres en desplazamiento. ![Img](./media/2bottom.png) #### 4.3.3.3 Required Components | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | micro:bit V2 main board ×1 | micro:bit shield ×1 | OLED display ×1 | |![Img](./media/UV-sensor1.png)|![Img](./media/usb.png) |![Img](./media/4pin.png)| | ultraviolet sensor ×1 | micro USB cable×1 | 4 pin wire ×1 | |![Img](./media/3pin.png)|![Img](./media/batterycase.png)|![Img](./media/AAbattery.png)| | 3 pin wire ×1 | battery holder ×1 | AA battery(**self-prepared**) ×6 | #### 4.3.3.4 Wiring Diagram ⚠️ **Cuando realice el cableado, preste atención al color del cable.** | 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 Code Flow ![Img](./media/flow-chart-03.png) #### 4.3.3.6 Test Code ⚠️ **Consejo 1: Antes de descargar el código a la placa Microbit, importe el archivo de la librería “oled_ssd1306\.py” refiriéndose a ** “[Import Library on MU](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” . ![Img](./media/WPSA1.png) ⚠️ **Consejo 2: El umbral 5 en la condición if() puede modificarse según la situación real.** **Complete 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 ''' # importar bibliotecas relacionadas from microbit import * from oled_ssd1306 import * import music import math # inicializar y limpiar oled initialize() # initialize oled clear_oled() # clear oled # Inicializar el pin ADC (el sensor de ultravioleta está conectado al pin1) uv_sensor = pin1 def read_uv_index(): # Leer el valor analógico (0-1023 corresponde a 0-5.0V) raw_value = uv_sensor.read_analog() # Asegurarse de que el valor esté dentro del rango válido if raw_value > 1023: raw_value = 1023 elif raw_value < 0: raw_value = 0 # Mapear al rango del índice ultravioleta de 0 a 15 # El rango de mapeo puede ajustarse según las características reales del sensor uvi = raw_value * (15.0 / 1023) return round(uvi, 1) while True: clear_oled() # limpiar OLED uv = read_uv_index() # Leer el nivel de intensidad ultravioleta detectado por el sensor ultravioleta add_text(0, 0, "UV Intensity:") # Mostrar la cadena de caracteres en la posición correspondiente del OLED add_text(14, 0, str(int(uv))) # Mostrar el nivel de intensidad ultravioleta en la posición correspondiente del 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) **Breve explicación:** ① Importar las librerías microbit, oled_ssd1306, music y math. ```Python from microbit import * from oled_ssd1306 import * import music import math ``` ② Inicializar los píxeles del OLED, limpiar el OLED. ```Python initialize() # initialize oled clear_oled() # clear oled ``` ③ Inicializar el pin del sensor de radiación ultravioleta solar. ```Python uv_sensor = pin1 ``` ④ Definir la subfunción del valor ultravioleta detectado por el sensor. ```Python def read_uv_index(): # Leer el valor analógico (0-1023 corresponde a 0-3.3V) raw_value = uv_sensor.read_analog() # Asegurarse de que el valor esté dentro del rango válido if raw_value > 1023: raw_value = 1023 elif raw_value < 0: raw_value = 0 # Mapear al rango del índice ultravioleta de 0 a 15 # El rango de mapeo puede ajustarse según las características reales del sensor uvi = raw_value * (15.0 / 1023) return round(uvi, 1) ``` ⑤ Leer el valor ultravioleta del sensor y mostrarlo en el 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 ``` ⑥ Sentencia de juicio: if()...else... Cuando la intensidad ultravioleta detectada de la luz solar es mayor o igual a 5, la matriz de LED 5×5 muestra ![Img](./media/ab1.png) y ![Img](./media/ab2.png), y el altavoz emite la alarma. De lo contrario, la matriz muestra ![Img](./media/ab3.png) y el altavoz no suena. ```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 ``` ⑦ Retardo de 1000ms (1s). ```Python sleep(1000) ``` #### 4.3.3.7 Test Result ![Img](./media/4top.png) Después de realizar el cableado y encender mediante el cable micro USB, conéctese a la alimentación externa (6 pilas AA) para asegurar un suministro de energía suficiente, y haga clic en “Flash” para descargar el código a la placa micro:bit. ![Img](./media/A125.png) Después de subir el código de prueba, presione el botón de reinicio en la parte trasera de la micro:bit. ![Img](./media/A455.png) ⚠️ **Nota:** Entorno de prueba para el sensor ultravioleta: Luz solar del mediodía (10:00-14:00); Evitar sombras; Apuntar directamente el sensor hacia el sol. El OLED muestra en tiempo real la intensidad ultravioleta detectada. Cuando la intensidad ultravioleta detectada de la luz solar es mayor o igual a 5, la matriz de LED 5×5 muestra ![Img](./media/ab1.png) y ![Img](./media/ab2.png), y el altavoz emite la alarma. De lo contrario, la matriz muestra ![Img](./media/ab3.png) y el altavoz no suena. ![Img](./media/dongtu-3.gif) ⚠️ **Nota: Los bloques de construcción en el experimento no están incluidos en este kit.** (**Consejo:** Si no se observa ningún resultado, por favor presione el botón de reinicio de la placa micro:bit.) ![Img](./media/4bottom.png)