Estoy tratando de usar un RPi3 para producir / controlar una lámpara usando este módulo de relé.
También quiero poder leer desde un botón pulsador y un interruptor.
El problema que tengo es que parece que cambiar el relé está introduciendo ruido en la entrada GPIO y creando falsos positivos.
El módulo RPi y el módulo de relé están en un recinto exterior de 190 mm x 145 mm x 140 mm. Ellos están bien el uno con el otro.
Intenté usar un relé de estado sólido y eso resolvió el problema de la interferencia, pero preferiría usar un relé convencional debido al tamaño y los precios.
He intentado ver el ruido captado por el GPIO con un osciloscopio digital USB Hantek, pero desafortunadamente no pude ver nada. Sigo esperando para comprobarlo con mi osciloscopio analógico. Además, estoy pensando en probar un cable blindado desde el botón pulsador y cambiar al GPIO y también envolver el módulo de relé en una malla metálica con conexión a tierra para crear una jaula de Faraday.
Hasta ahora he intentado colocar un filtro de paso bajo para cada entrada.
El primer circuito que probé fue: C1 - 10n y 100n
Luego probé un filtro de paso bajo:
R1 - 100 y 1k
C1 - 1u, 10n, 100n
También probé con la activación y desactivación de GPIO
En cualquier caso, ninguno de ellos mejora el resultado.
En el lado del software, estoy usando Python, RPi.GPIO event_detect; Intenté aumentar el tiempo de rebote e insertar un retardo después de la detección de eventos para "filtrar" los eventos generados por humanos, pero esto solo funcionaría para el caso del botón pulsador, no para cambiar.
Cualquier consejo sería apreciado.
ACTUALIZACIÓN : este módulo de relé inserta mucho ruido, lo probé con la porción de RPI HAT de verdad y el mismo código funcionó bien, podría detectar falsos positivos en una prueba rápida.
este es el código:
#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(26, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def read2(channel):
print "GPIO 2"
def read20(channel):
print "Button"
def read23(channel):
print "Switch"
if __name__ == '__main__':
GPIO.add_event_detect(26, GPIO.BOTH, callback=read2, bouncetime=300)
GPIO.add_event_detect(20, GPIO.BOTH, callback=read20, bouncetime=300)
GPIO.add_event_detect(23, GPIO.BOTH, callback=read23, bouncetime=300)
while True:
pass
A pesar de todo, sigo buscando cómo poder usar esa placa.