Prototipo final

Sensor de aparcamiento: combina un LED RGB y un sensor de proximidad

En el artículo de hoy vais a combinar el montaje del sensor de proximidad HC-SR04 con el del LED RGB que vimos la semana pasada, aprovechando que los prototipos que vamos probando son reutilizables como módulos para montajes más complejos. De esa forma, este artículo es una idea que os doy para que comprobéis cómo, yendo componente a componente, acabaréis teniendo una “librería” de soluciones que ir combinando para hacer proyectos más completos.

Si partís en este punto de cero, porque llegáis a este artículo directamente, os recuerdo lo que necesitáis saber:

Material que necesitarás:

Vamos a ello.

Montar el prototipo del sensor de aparcamiento

Con la Raspberry Pi desconectada, ensambla el prototipo del sensor de proximidad como te explico en este artículo, y asegúrate de que funciona correctamente con el código en Python que allí te propongo.

Una vez superado esa fase del experimento, desconecta la Raspberry Pi de nuevo para montar el LED RGB en una zona que no hayas usado de la placa, teniendo cuidado de distinguir el cátodo común (patilla más larga), que es el que debe ir conectado a tierra. Tienes instrucciones detalladas aquí.

En mi caso he conectado el LED RGB a los pines GPIO 16 (ánodo rojo), 20 (ánodo verde) y 26 (ánodo azul), de tal forma que mi prototipo queda de la siguiente forma:

Prototipo final. Si lo necesitas, haz click para ampliarlo en otra ventana de tu navegador.
Prototipo final. Si lo necesitas, haz click para ampliarlo en otra ventana de tu navegador.
Prototipo de nuestra imitación de un sensor de aparcamiento. Si lo necesitas, haz click para ampliarlo en otra ventana de tu navegador.
Prototipo de nuestra imitación de un sensor de aparcamiento. Si lo necesitas, haz click para ampliarlo en otra ventana de tu navegador.

Importante: date cuenta de que he colocado el LED RGB del revés con respecto al prototipo original, con lo que, repito: siempre identifica el cátodo común por la longitud mayor de la patilla, y luego a un lado tendrás el ánodo rojo, y al otro el verde y el azul.

Programar el sensor usando Python

Ya sólo queda combinar nuestros conocimientos de cómo programar esos dos dispositivos mediante Python. Mi propuesta (que no tienes por qué seguirla) es aprovechar el programa que hicimos en su día para probar el sensor, y añadirle unas cuantas sentencias de control del LED que puedes ver enmarcadas en comentarios:

#!/usr/bin/python3

import time
import RPi.GPIO as GPIO

## Sensor de aparcamiento
from gpiozero import RGBLED

led = RGBLED(16,20,26)
## Sensor de aparcamiento

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# trig (cable amarillo en el prototipo)
GPIO.setup(12, GPIO.OUT)
# echo (cable verde en el prototipo)
GPIO.setup(6, GPIO.IN)

try:
    while True:
        start = 0
        end = 0
        # Configura el sensor
        GPIO.output(12, False)
        time.sleep(2) # 2 segundos
        # Empezamos a medir
        GPIO.output(12, True)
        time.sleep(10*10**-6) #10 microsegundos
        GPIO.output(12, False)

        # Flanco de 0 a 1 = inicio 
        while GPIO.input(6) == GPIO.LOW:
            start = time.time()
        # Flanco de 1 a 0 = fin
        while GPIO.input(6) == GPIO.HIGH:
            end = time.time()

        # el tiempo que devuelve time() está en segundos
        distancia = (end-start) * 340 / 2
        #print ("Distancia al objeto =", str(distancia))

        ## Sensor de aparcamiento
        if distancia < 0.05:
            led.color = (1,0,0)
        elif 0.05 <= distancia < 0.15:
            led.color = (1,1,0)
        else:
            led.color = (0,1,0)
        ## Sensor de aparcamiento        
        
except KeyboardInterrupt:
    print("\nFin del programa")
    ## Sensor de aparcamiento
    led.off()
    ## Sensor de aparcamiento
    GPIO.output(12, False)
    GPIO.cleanup()

He usado 2 segundos de espera entre cada medición para poderlo probar cómodamente, y eso se ve en el vídeo de Vine que tenéis más abajo. En cuanto lo hayas depurado bien, podrías bajar ese tiempo de espera a un valor más práctico para la aplicación en la que estamos haciendo ensayos, como es el aparcar de un coche. Con una espera de dos segundos verías la luz roja demasiado tarde 🙂 También he comentado la línea que saca por el terminal la distancia al objeto, puesto que ya tenemos esa medición de distancia en el LED RGB.

Colores raros en mi LED, ¿por qué?

Podrás haber notado que el color amarillo sale un poco verdoso, como os planteaba la semana pasada. Eso ocurre porque no todos los componentes de color del LED RGB operan con los mismos valores de corriente y voltaje como podéis ver en las especificaciones de los LED y en muchos foros: al usar el mismo valor de resistencia en cada ánodo estamos limitando la corriente para protegerlo, sí, pero no estamos consiguiendo la misma luminosidad en cada componente de color. Además, el que el LED sea tan cristalino como en mi caso no ayuda: normalmente los LED RGB ofrecen un color mucho más uniforme si son de lente difusa (encapsulamiento traslúcido). Os enlazo aquí la hoja de especificaciones de un LED RGB de cátodo común que, aunque es de lente traslúcida, sirve para comprobar lo que os decía de los diferentes voltajes y luminancias: YSL-R596CR4G3B5W-F12.

Y esto es todo: espero que haya resultado interesante. Puedes dejarme cualquier comentario en esta misma entrada, enviándome cualquier comentario a través del formulario de contacto, y también a través de la dirección de correo que allí encontrarás.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *