Logo avisador de timbre
Arduino,  Hardware

Avisador de timbre casero

¡Ding-dong!

Toda casa tiene un timbre. Ya sea más básico, más avanzado, nuevo, viejo… Pero no siempre lo escuchamos. Ya sea porque estamos en un rincón recóndito de nuestro hogar, porque estamos haciendo más ruido de lo normal (obras, aspiradora…), porque estamos disfrutando de ese temazo de moda con los auriculares, o porque nuestro sistema auditivo ha decidido no captar las ondas sonoras que nos avisan que el repartidor de Amazon está en la puerta esperando que le abramos.

Agregar notificaciones al móvil puede ser la solución en este caso (y si tenéis un smartwatch aun mejor, porque será más difícil que se pase por alto). No me he puesto a mirar el mercado, pero seguro que hay modelos de timbre super guays del paraguay que se conectan al móvil, pero ¿por qué cambiar el timbre que ya tengo?. Me gusta mi ding-dong marca blanca, y no quiero tener otra app más del fabricante del timbre en mi teléfono.

¿Por qué no sacar una solución casera entonces? Vamos allá 🙂

Mi timbre es básico y recibe corriente de 230v cuando se presiona el pulsador, estando sin corriente si no está sonando. Así que lo primero que habrá que hacer, es detectar la presencia de esos 230v, de forma segura a ser posible, para que una avería no nos fría nuestro microcontrolador. Hablando de microcontrolador, necesitaremos uno con capacidad WiFi, y qué mejor que el ya conocido ESP-01: barato, pequeño y fácil de usar.

Para la detección de los 230v podríamos comprar una pequeña placa como ésta. La placa usa un optoacoplador, para que exista una separación física entre la parte de potencia y la parte lógica (los optoacopladores se activan mediante luz, por lo que no hay conexión eléctrica entre una parte y otra). En mi caso, lo que hice fue replicar el funcionamiento de esta placa: se trata de un pequeño puñado de componentes que son fáciles de encontrar, y se monta rápido. Podéis encontrar el esquema la placa original y más información en la web del creador.

Nuestro microcontrolador funciona a 3.3v, por lo que habrá que usar una fuente de alimentación adecuada. Como no tengo ningún adaptador a 3.3v en mi colección de cargadores viejos, lo que hice fue usar uno de 5v y bajar a 3.3v con un regulador LM317T.

El esquema completo es el siguiente. También está disponible en formato EAGLE al final de esta entrada.

Una vez más realicé el montaje en una placa perforada (algún día empezaré a montar de forma apropiada placas PCB, lo prometo 😊), dejando separación especialmente grande entre la parte de potencia, por donde van los 230v y la parte del microcontrolador y regulador de tensión.

Me dispuse entonces a encapsularlo todo en una caja impresa en 3D. Coincidió que la suma de las longitudes de la placa para el ESP-01 y la placa de la fuente de alimentación (más un pequeño hueco para una clema) era exactamente el tamaño que mi timbre ding-dong.

El diseño 3D de la caja
La caja ya impresa y con los componentes montados.

En la clema dejé los cables de fase del timbre, fase de alimentación (debe ir por separado, ya que el microcontrolador debe tener siempre alimentación) y neutros.

Para la parte del software, el sketch define el pin 3, normalmente usado para el RX del puerto serie, como interrupción, para lanzar la subrutina onDoorbellStateChange(), que define el estado como true y actualiza una variable de tiempo en milisegundos, para resetear el estado más adelante.

.
.
.

attachInterrupt(digitalPinToInterrupt(sensePin), onDoorbellStateChange, FALLING);

.
.
.

void ICACHE_RAM_ATTR onDoorbellStateChange() {
  lastTrueState = millis();
  doorbellState = true;
}

void loop() {
  .
  .
  .

  //After some time, reset doorbell state
  if (doorbellState && (now - lastTrueState) > 5000) {
    doorbellState = false;
    isStateSent = false;
  }

  .
  .
  .
}

El resto del sketch está al final de esta entrada.

Mi servidor MQTT está montado con OpenHAB, por lo que es necesario definir un Thing y un item, y para mandar la notificación, el plugin que queramos. En mi caso, pushbullet. También será necesaria una nueva regla (rule) que se active cuando el estado pase de OFF a ON:

rule "<NombreRegla>"
when
    Item <NombreItem> changed from OFF to ON
then
    val actions = getActions("pushbullet", "<NombreItemPushbulletBot>")
    if (actions !== null)
    {
        actions.sendPushbulletNote("Timbre puerta principal", "Timbre puerta principal", "Alguien llama a la puerta principal")
    }
end
¡Y funcionando!

Solo queda el montaje, para el cual tuve que pasar un nuevo cable de fase hasta el timbre, pero fue sencillo, ya que el tubo me lo permitía, y la caja de empalmes estaba cerca.

Una vez montado en la pared
Y una vez cerrada

Podéis encontrar todo en mi GitHub y aquí abajo. ¡Nos vemos en la siguiente entrada!

4 Comentarios

  • Diego

    Hola,
    he replicado el circuito y no me va. Fijándome en el timbre he visto que aunque por fuera parece igual, tiene una etiqueta que pone 6~ así que en vez de 220 debe ir a 6 (no me da el tester para pinchar los bornes de conexión y a la vez pulsar el timbre :D)
    Cambiando la resistencia de 390K podría funcionar? por cual valor?

    El sketch lo he probado sin nada para que avisara, y el aviso sin pulsador funcionaba; lo pongo para caso de que alguien lo quiera hacer más directo, pueda
    Pongo sólo lo básico, ya que el sketch va con elegantota, NTPClient,ESPAsyncWebServer…. pero la parte que afectaría es la que sigue

    #define Signal_Pin 2
    void setup(void) {
    pinMode(Signal_Pin , INPUT_PULLUP);
    }
    void loop() {
    if ( digitalRead(Signal_Pin) == 0 )
    Serial.println (» AC Mains 230v Detected «);
    }

    gracias por el proyecto!

    • admin

      ¡Hola Diego! ¡Gracias por leerme!

      Creo que deberías asegurarte de que realmente llegan 6v al timbre en vez de 230. Pide ayuda a alguien para medirlo 😉

      El cálculo de la resistencia es (voltaje_alimentación – voltaje_led) / intensidad_led. Aquí el voltaje del led lo da el modelo de optoacoplador. En el caso del modelo que usé yo, está entre 1,1 y 1,5v. La intensidad del led con 1-2mA vale. Esto da 4.7kohm si es 6v en corriente continua o unos 7.2kohm si es alterna.

      (Si es corriente continua, en realidad puedes eliminar el puente de diodos que uso para rectificar y pasar a corriente continua en mi esquema).

      Revisa mis cálculos y haz pruebas, no te fíes de algo que he calculado yo en un rato sin tener delante tu instalación. Y ve con cuidado siempre con la electricidad ;).

      ¡Un saludo!

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad