Fondo
Estoy construyendo una aplicación web simple usando raspberry como servidor. Estoy usando esta frambuesa también para controlar un arduino. ¡Un usuario puede enviar comandos a través del navegador a la frambuesa y puede controlar algunas funciones de arduino!
Lo que quiero
Quiero usar un arduino para encender y apagar una lámpara, paralelo a un interruptor manual normal que puedo usar para encender y apagar la lámpara, así:
1: Si la lámpara está apagada y el interruptor también está en la posición de APAGADO (interruptor abierto), puedo encender la lámpara usando el interruptor, colocándolo en la posición de ENCENDIDO (cerrando el interruptor). Luego, el sistema de monitoreo le dirá a arduino (y al servidor web) que el interruptor está encendido/cerrado y la luz está encendida.
2: Puedo usar arduino para apagar la luz, sin necesariamente poner el interruptor en la posición de APAGADO. Si la luz está APAGADA (porque la apagué usando un arduino) y el interruptor está en la posición de ENCENDIDO (cerrado), debería cambiarlo a la posición de APAGADO y luego a la posición de ENCENDIDO nuevamente, de manera que pueda sentir estos cambios y enviarlo a arduino (y en consecuencia, al servidor web).
3 (¿Posible mejora?): Cada vez que cambio el estado del interruptor, la luz cambiaría su estado al opuesto al actual: si la luz está encendida, se apaga y viceversa, independientemente del interruptor estado.
El problema
¿Cómo puedo saber realmente si el interruptor está encendido y apagado? ¿Hay alguna forma de usar un sensor, algún circuito electrónico o componente que pueda decir si el interruptor está encendido o apagado? Estaba pensando en usar un relé para controlar la luz, dependiendo del estado de la luz que se almacena en arduino/servidor web. ¿Es esta una forma confiable (quiero decir, usando un relé) para hacer eso?
Agradezco cualquier posible ayuda al respecto, me ha interesado IOT y quiero hacer algunas aplicaciones sencillas para domótica; ¡Este es mi primero! Gracias de antemano por cualquier ayuda, de nuevo.
Para obtener la funcionalidad que describe, debe tener interruptores de "3 vías" (SPDT): uno manual y un relé que controla Arduino. Esto es como tener dos interruptores que controlan las luces desde cualquier extremo de un pasillo, excepto que uno de ellos está controlado por su MCU.
Detectar el estado de la luz es un asunto aparte. Hay muchos circuitos en este sitio y otros para detectar de manera segura la presencia de voltaje de línea en el enchufe de la luz.
Como necesitaría controlar la red de todos modos, solo puede conectar relés y luces en serie. El interruptor existente se conecta a GPIO de Arduino. De esta manera, Arduino conoce el estado del interruptor y puede controlar las luces sin conexiones ni sensores adicionales. Existe el problema de que su Arduino tiene que funcionar correctamente para controlar las luces, incluso si solo desea usar el botón físico. Entonces, esta solución solo es apropiada si puede vivir con la incapacidad de cambiar el estado de las luces hasta que repare Arduino.
Respecto a la fiabilidad. Tengo exactamente la misma solución que en esta respuesta y he experimentado algunos problemas menores con el relé que no se desconecta (contactos soldados), por lo que recomendaría comprar un relé de calidad y no una pieza desconocida de eBay, incluso si sus "parámetros" se ven bien.
Si no se siente cómodo trabajando con 120 VCA (podría ser desastroso si no sabe lo que está haciendo), entonces una solución mecánica es mucho más segura. Vas a odiar esto, pero como prueba de concepto, puedes pegar un interruptor de límite en la placa frontal debajo del interruptor de la luz como se muestra en la imagen a continuación (pintarlo de blanco podría hacerlo más tolerable). Usaría una resistencia desplegable para darle una señal ALTA activa que generalmente es más intuitiva. Consulte este tutorial de cambio para obtener orientación.
Para una solución más avanzada, reduciría y rectificaría el voltaje a través del interruptor para ver si hay lo mismo en ambos lados del interruptor (CERRADO) o cosas diferentes (ABIERTO). Idealmente, tendría un pequeño transformador reductor de aislamiento entre cualquier voltaje de red y su microcontrolador sensible. Sin embargo, en aras de una solución económica, puede usar condensadores "clasificados X" para el aislamiento. Cualquiera de las soluciones deberá rectificarse a CC para que su microcontrolador pueda leerla y funcione entre 0 y 5 voltios.
simular este circuito : esquema creado con CircuitLab
Hermosa salida, diría yo, y solo absorbe alrededor de 25 mW según el simulador (el azul es el voltaje aislado y rectificado y el naranja es el voltaje regulado por zener). ¡Lea esa salida con una de las entradas de su microcontrolador y obtendrá un indicador! (FYI 0V significa que no hay diferencia en el interruptor = CERRADO)
Otra idea curiosa que aporto aquí. ¿Existe una solución de sensor optoelectrónico simple que pueda resolverlo? Nos brindan dos ventajas, aislamiento para mantener la seguridad, cambio de nivel de voltaje en las piezas de su MCU. Imagen de que hay una conexión física dentro del interruptor de encendido, cuando está ENCENDIDO para emitir una luz para activar el sensor óptico, obtenemos una señal lógica como 1. Cuando está apagado, no obtenemos señales como 0.
Roger Peixoto
Goswin de Brederlow