Hasta ahora, en las versiones anteriores del receptor del timbre, el avisador consistía en un aro de leds de 3mm y un buzzer activo. Un amigo me regaló un par de matrices led 8×8 monochromo de ánodo común, por lo que decidí ir un paso más allá y jugar con alguna animación mostrada por la matriz.
Al principio, el driver de la matriz lo hice con un desplazador de registro 595. No me convenció mucho pues, nadie te libra de las 8 resistencias por fila/columna. Por lo que investigando un poco en la red, encontré un integrado maravilloso, el MAX7219. Éste te multiplexa 8 ánodos y 8 cátodos por lo que te sirve para usarlo con displays de 7 segmentos de hasta 8 cifras, matrices led, etc. Además la intensidad máxima por segmento se controla con nada más que una resistencia y la interfaz de comunicación es por SPI.
Acabé dando con una librería de Adafruit (para variar) que definiendo un array de 8 bytes, se pueden definir las imágenes de 8×8 a mostrar por la matriz, para luego mandárlos fila por fila por SPI a través de la API de la librería.
Las primeras pruebas las he hecho con un Arduino Uno y luego he portado el código a una nodeMCU para las pruebas de conectividad y recepción de mensajes.
He recurrido al protocolo UDP dada su simplicidad. Si habéis visto los códigos del sensor de luz tanto como del detector, habréis visto que los comandos UDP se mandan a una IP fija. Si tenéis el dhcp activado en vuestro router, que va a ser lo más probable, os recomiendo que en la configuración del dhcp reservéis la IP en cuestión para la MAC del dispositivo al que vayan estos comandos. Sé que no es la solución más elegante, pero me ha resultado sencilla.
Para este módulo he usado el ESP07, que es otra variante del ESP8266 con los pines accesibles y soldables. Además de tener la antena WiFi integrada, dispone de un conector UFL por si necesitases mayor cobertura. Dada la complejidad del circuito, para éste si que he diseñado y fabricado una placa con componentes en su mayoría SMD.
También he intentado el método de la pintura UV para proteger la placa, pero como se puede observar aun no le he cogido el tranquillo. Pero bueno, la placa ya tiene una segunda versión arreglando los fallos de la que está actualmente montada, la cual dejaré para ver que tal responde.
Este es el esquema del circuito:
¿Os acordáis de aquel comando UDP que mando en el sensor de luz? Os habréis preguntado para que servirá. Pues bien, para diferenciar 2 tipos distintos de timbre. En mi caso, tengo dos timbres, uno en la verja de fuera y otro en la puerta de casa, habitáculo el cual cubre el PIR del sensor de la luz. Por lo que uso el disparo del PIR para determinar donde están llamando al timbre (así si el vecino viene a quejarse porque le estoy dando amor al ampli y a la guitarra, puedo pasar directamente de él. :P), bromas aparte, considero que es útil diferenciarlos.
Aquí tenéis el código.
receptor timbre
y aquí el montaje final.
En mi cuenta de instagram tengo videos en los que se ve la animación.
https://www.instagram.com/p/BJgmKncgkEC/?taken-by=picatostas
4 comentarios
Pedro · abril 17, 2019 a las 11:29 pm
Hola, voy a montar tu circuito del timbre wifi con ESP8266
Me podias hacer el favor de enviarme al correo los includes. Gracias.
#include “LedControlMS.h”
#include ESP8266WiFi.h
#include WiFiUDP.h
picatostasadmin · noviembre 5, 2019 a las 1:14 pm
Dices las librerias?
dario · abril 23, 2020 a las 10:25 pm
Hola si quisiera poner dos pulsadores en el emisor y que cada uno envíe el dato a diferente esp se podria?.
osea usar un esp para 2 pulsadores y un esp en un lado y otro esp en otro.
picatostasadmin · agosto 15, 2020 a las 8:25 pm
Si claro, tu puedes mandar los mensajes que quieras siempre y cuando los proceses y asignes la acción que consideres. Incluso puedes usar algun protocolo que exista ya, rollo mqtt o iftt o algo del estilo.