Construcción de un display LED de reloj y texto con matrices LED. Este display se configura desde un teléfono móvil vía WiFi. La información de la fecha y hora se sincroniza a través de un servidor NTP, convirtiéndolo así en un reloj muy preciso. Este display está construido con el módulo ESP32 y 4 matrices LED de 8×8 pixel. De forma opcional, también se puede montar un segundo display OLED de 64×48 pixel (0,66 pulgadas).
Este display lo he montado con un módulo LED que ya contiene las 4 matrices, en lugar de los 4 módulos independientes que utilicé en el montaje anterior:
En la construcción del último reloj LED que monté, lo hice conectando 4 matrices LED de 8×8 pixel. Estas matrices llevan las conexiones de entrada y salida por la cara inferior y superior, y esto obliga a que el tamaño del reloj sea más grande de lo necesario.
En este caso voy a montar otro reloj con un display LED del mismo tamaño, pero será más pequeño que el anterior. Aunque el nuevo firmware también permite utilizar un segundo display OLED, en este caso no lo voy a montar, y además utilizaré 4 matrices LED interconectadas en un sólo PCB.
Esquema de montaje
El montaje de este reloj es muy rápido y sencillo, sólo hay que conectar 5 hilos entre un lateral del display LED y el módulo ESP32.
Configuración con doble interface WEB
Ahora el display LED permite mostrar la hora, o textos rotantes de hasta 255 caracteres. Tanto el modo de funcionamiento como su configuración, se programa a través de una conexión WiFi, y se guarda en la memoria EEPROM del módulo ESP32. De esta forma el reloj arranca siempre en el modo en el que se dejó la última vez: modo texto, o modo reloj.
Esta nueva versión de firmware incluye un menú WEB con nuevas opciones, y también animaciones cada vez que se reciben datos desde el reloj.
Firmware
El archivo que necesitas para programar el ESP32, lo puedes descargar de forma gratuita desde el repositorio GitHub: Clock-Text_ESP32
Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos (PCB), pero no en todas podemos conseguir pequeñas tiradas a buen precio. Por suerte, ahora disponemos de Internet y es mucho más fácil que antes. Podemos buscar empresas en cualquier parte del mundo, y es más fácil encontrar un fabricante que haga nuestros prototipos (PCB) a buen precio. Una de las empresas más grandes del sector es PCBWay.
Desarrollo de un nuevo firmware para el kit EC1204B, reloj LED con esfera rotante. Con esta actualización es posible controlar todas las funciones del reloj a distancia, utilizando un interface serie RS-232, USB o Bluetooth.
Configuración manual del reloj
El reloj FC-209 se puede configurar en modo manual, utilizando los 3 pulsadores que lleva en su parte trasera. A continuación se muestra el diagrama de configuración, válido para este kit (FC-209) como para el reloj de pared, mediante el uso de sus 3 pulsadores.
Diagrama de programación
Tipos de interface serie
Con esta última actualización del firmware (5.1), es posible controlar y programar el reloj a distancia. Lo único que se necesita es conectar un interface serie con el reloj, ya sea por cable (RS-232/USB) o inalámbrico (Bluetooth). En la siguiente imagen se muestran las conexiones necesarias, para conectar un interface RS-232 con el reloj.
En la siguiente imagen se muestran las conexiones entre el reloj y el interface serie, utilizando uno de tipo USB y otro Bluetooth.
Interface serie Bluetooth
Antes de conectar un interface de tipo Bluetooth con el reloj, es necesario configurar como mínimo su velocidad. El sistema Bluetooth permite la comunicación inalámbrica entre dispositivos, transmitiendo la información a la máxima velocidad que le permita el sistema. El terminal BT receptor dispone de un buffer en el que almacena los datos recibidos, y los entrega al equipo remoto con la velocidad (bps) a la que haya sido programado. En este caso, el reloj espera recibir los datos a 4800 bps (4800,N,8,1)
Configuración remota del reloj
A través del interface serie y mediante una aplicación instalada en un PC o dispositivo móvil, es posible configurar y controlar el reloj en modo remoto. Los datos que espera recibir el reloj son siempre caracteres de texto, facilitando así el uso de cualquier software ‘Terminal’ y tecleando las cadenas de texto en su editor.
En caso de recibir información serie, el reloj enviará una respuesta indicando si ha recibido información correcta o ha detectado algún error. Pero siempre hay que tener la precaución de enviar los valores correctos, porque el reloj no analiza los datos que recibe, solamente comprueba los caracteres de control de inicio (color rojo) y los comandos (color verde y negro) que le indican lo que debe hacer con la información que recibe y guarda en memoria (color azul).
Actualizar el firmware del reloj
Para programar el micro-controlador de este kit de reloj, podemos utilizar un interface serie (ISP: In-system programming / ICSP : In-Circuit Serial Programming) . En la imagen siguiente podemos ver el conexionado que se debería utilizar entre el programador TL866A y el reloj.
Lo ideal sería utilizar un programador que tuviera dicho interface, o desmontar el chip y programarlo fuera. En caso de que no dispongas de un programador, podrías hacerlo por ICSP con ARDUINO.
El archivo que necesitas para programar este reloj (firmware), lo puedes descargar de forma gratuita desde el siguiente enlace:
PCBWay es un fabricante de circuitos impresos para electrónica, especializado en la fabricación de prototipos de calidad profesional a un precio muy reducido. Por ejemplo, ahora puedes encargar 10 circuitos impresos de 10×10 cms, a doble cara y con serigrafía, por tan sólo 5 dólares.
Fabricación de un Reloj-Cronómetro-Temperatura, encadenando 4 módulos SMD de 7 segmentos con control serie. El controlador de este reloj está construido a partir del micro controlador AT89S52, con encapsulado TQFP de 44 pines (SMD).
ESQUEMAS
Módulo RTC: DS1302
Las comunicaciones entre el micro-controlador y el chip de reloj DS1302 se realizan mediante 3 hilos:
Reloj (SCLK)
Entrada/Salida de datos (I/O)
Habilitación (CE)
Módulo RTC: DS1302
El módulo RTC ya incluye el cristal de cuarzo que necesita el chip DS1302, y una pila de 3V para mantener sus datos cuando falta la alimentación. La conexión entre este módulo y la CPU es de 5 hilos, 2 de la alimentación y 3 de control.
Comunicaciones con DS1302
Sensor de temperatura: DS18B20
El control de este sensor de temperatura es bidireccional y se realiza mediante un sólo pin, así su encapsulado sólo tiene 3 pines: VCC, GND y Datos.
Sensor: DS18B20
El DS18B20 se puede comprar con encapsulado normal, su aspecto es el de un transistor, o ya montado dentro de una cápsula de acero inoxidable. El encapsulado en acero inoxidable permite sumergir el sensor en líquidos, y también es muy aconsejable para utilizarlo en el exterior.
El chip DS18B20 es un sensor temperatura digital, su resolución es configurable entre 9 y 12 bits. Por defecto, de fábrica está configurado con 12 bits. A máxima resolución, sus últimos 4 bits se corresponden con las lecturas decimales de: 0,5°/ 0,25° / 0,125° / 0,0625°. Puedes ver más detalles técnicos de este sensor en el siguiente artículo:
Para alimentar este reloj se necesita una fuente de alimentación de 12 VDC, con una corriente mínima de 200 mA. La solución más barata y eficaz, es incluir dentro de la caja del reloj una pequeña fuente de alimentación conmutada de 12V / 400 mA.
CONFIGURACIÓN
Para cambiar los datos de fecha, hora, cronómetro y el resto de parámetros de configuración, se utilizan dos pulsadores:
MODE
PLUS
Para modificar los datos del reloj, seguir el siguiente diagrama de configuración:
SELECCIONAR MODO: RELOJ/CRONÓMETRO
El modo de funcionamiento RELOJ/CRONÓMETRO se determina durante la fase de arranque, mientras se está mostrando en el display un mensaje de texto rotando, en la que se muestra la versión del firmware. Si no se toca ningún pulsador, el modo de funcionamiento será: RELOJ. Para cambiar a modo CRONÓMETRO en cualquier momento, seguir los siguientes pasos:
Pulsar los dos botones a la vez: RESET
Cuando aparezca el mensaje rotante, mantener pulsado el botón 1 (MODE)
Una vez que que hayamos entrado en el modo CRONÓMETRO, ya podremos configurar sus parámetros de funcionamiento. Estos valores se guardarán en el chip de memoria del reloj (DS1302), y estos serán los nuevos valores de arranque del cronómetro. Al igual que sucede con los parámetros del reloj, tendremos que tener conectada la pila de tampón en el chip, si no queremos perder todos los datos cuando falte la alimentación.
Detalles de la presentación del Display
Cuando se está funcionando en modo RELOJ, es posible seleccionar entre 3 tipos de presentación. La información que muestra el display se cambia mediante una breve pulsación del botón 2 (PLUS):
Hora / (*) Alterno: Hora y Temperatura
Temperatura
Alterno: Hora, Fecha y Temperatura
(*) El modo alterno de la presentación 1ª, se muestra en caso de que se active la alarma de temperatura en el menú de configuración. En caso contrario, la presentación 1ª mostrará la hora de forma permanente.
Cuando se active el modo de presentación alterno, la temperatura se mostrará de forma síncrona con el reloj, y lo hará cada 5 segundos. Entre el segundo 5 y el 55 de cada minuto, nunca se mostrará en el segundo ‘0’ de cada minuto. La temperatura sólo aparecerá durante un segundo de cada 5, en total 11 veces en cada minuto.
Alarma de Temperatura
La lectura del sensor de Temperatura se realiza cada 10 segundos. De manera que entre dos presentaciones sucesivas de 5 segundos, sólo una de las lecturas será en tiempo real. Cuando está utilizando la presentación 1ª en modo alterno, los segundos acabados en ‘0’ mostrarán la temperatura leída anteriormente, excepto en el segundo ‘0’ de cada minuto que no se muestra. En el caso de que la temperatura sobrepasara alguno de los dos umbrales de alarma, el aviso acústico se realizará cuando el valor acaba de ser leído. Es decir, la alarma de temperatura sólo sonaría en los segundos acabados en ‘5’.
Alarmas horarias
El reloj permite configurar 2 alarmas horarias, sin prioridad entre ellas pero siguiendo este criterio: Cuando una de las dos alarmas se dispara, mientras permanezca en su periodo activo, la otra alarma nunca podrá dispararse.
Las dos alarmas horarias pueden valer para los 7 días de la semana, o estar limitadas a los 5 días laborables, quedando inactivas todos los Sábados y Domingos. En modo RELOJ, el punto decimal del dígito de la derecha (esquina inferior derecha del display) esta asociado a la alarma horaria. Las alarmas horarias pueden configurarse para que suenen una sola vez (1 minuto si no se silencia antes) o con repeticiones. Las repeticiones se realizarán cada 5 segundos. Para silenciar el sonido de una alarma, realizar una breve pulsación en el botón 2 (PLUS). Si después de sonar una alarma se quieren anular todas sus repeticiones sin cambiar la configuración del reloj, es necesario pulsar los dos botones a la vez (RESET).
Estados posibles del LED indicador de alarma horaria:
APAGADO: No existe ninguna alarma horaria en las próximas 24 horas
PARPADEANDO: Existe alguna alarma horaria dentro de las próximas 24 horas.
FIJO: Alarma ACTIVA, sonando o dentro del periodo de repetición.
Hora: Verano/Invierno
En algunos países existen dos tipos horarios:
Horario estándar, el que corresponde con el huso horario (Horario de invierno).
Horario de verano:
El cambio de hora se aplica una vez al año, haciendo que del horario estándar (o de invierno) se pase al horario de verano. Aunque la primera vez que se aplicó este cambio de hora fue durante la Primera Guerra Mundial, dejo de aplicarse hasta la crisis del petróleo de 1973. El objetivo es el de aprovechar mejor la luz solar, consumiendo menos electricidad.
Cambios horarios (Invierno/Verano)
HORARIO DE VERANO
Último domingo de MARZO: A las 2:00 AM se adelanta a las 3:00 AM
… se adelante 1 hora el reloj
HORARIO DE INVIERNO
Último domingo de OCTUBRE: A las 3:00 AM se atrasa a las 2:00 AM
… se atrasa 1 hora el reloj
FIRMWARE
El firmware de este reloj se programa una vez montado el micro controlador (AT89S52) en su circuito impreso, a través de su interface de programación serie ICSP. Lo ideal sería utilizar un programador que tuviera dicho interface, pero si no lo tienes, puedes hacerlo con ARDUINO.
En esta versión se corrige el tamaño de los taladros, se incluye la posibilidad de utilizar dos tipos de conector en sus salidas y se añade una toma auxiliar de +5V
Archivos GERBER para fabricar el PCB del Display ( 1 dígito de 7 segmentos):
Incorporación de una segunda alarma horaria, en el firmware para el reloj LED de esfera rotante. Esta es la versión v5c para el kit FC-209 y la v6C para el reloj de pared. En esta versión también se cambia el menú de configuración, con el fin de facilitar el ajuste de las dos alarmas horarias. Antes estaba dentro del menú de configuración, pero este menú ha ido creciendo de tamaño poco a poco a medida que se han ido incorporando nuevas funciones al reloj. Al final se hacía muy incómodo cambiar la hora de la alarma, ya que era necesario pasar a través de todos los parámetros de configuración del reloj.
A continuación se muestran un diagrama, válido tanto para el kit de reloj FC-209 como para el reloj de pared, una con la versión de los textos en español y la otra en inglés.
Diagrama de programaciónProgramming in English
Gestión de las 2 alarmas horarias
Con esta versión se podrían configurar 2 alarmas horarias, sin prioridad entre ellas pero siguiendo este criterio: Cuando una de las dos alarmas se dispara, mientras permanezca en su periodo activo, la otra alarma nunca podrá dispararse. (ver el diagrama que se muestra a continuación)
Construcción de un programador serie (ICSP) utilizando Arduino. Si no disponemos de un programador, esta es la solución más barata. Sin embargo, tanto el código de Arduino como el software de programación, son específicos para programar el micro-controlador AT89S51/AT89S52… y no sirven para programar cualquier otro modelo.
AT89S52
FICHEROS
En la página del autor del proyecto: TIKTAK’S PROJECTS , encontrarás además de la información de este proyecto, el link de acceso directo a la descarga de los archivos que necesitas. El fichero que debes cargar a tu Arduino para que funcione como programador, y el programa que necesitarás para exportar el archivo hexadecimal (firmware) hacia el micro-controlador AT89S51/AT89S52.
3 de Marzo de 2020
Miguel Berezosky me informa en un comentario que los archivos no los puede descargar. Como el autor de este proyecto parece que los ha eliminado en su alojamiento DropBox, los he subido a mi cuenta para que los podáis descargar:
He creído conveniente incorporar esta información en el blog, con el fin de ampliar un poco más los detalles de funcionamiento de este programador, y también porque en este canal tenéis otros proyectos en los que se utiliza el mismo tipo de micro-controlador. Si eres aficionado a la electrónica y no dispones de un programador, este montaje te podría ser de mucha utilidad.
Montaje ICSP
Si quieres fabricarte un programador ICSP (In-Circuit Serial Programming) , solo necesitarás una placa de Arduino -no importa el modelo- y montar el circuito que se muestra a continuación:
Esquema ICSP
El ejemplo siguiente muestra cómo puedes programar un circuito, en el que ya existe una entrada para su programación en serie:
ISP (In-system programming)
ICSP (In-Circuit Serial Programming)
Programador ICSP
INCONVENIENTES
Existen algunas limitaciones y desventajas si comparamos este programador con otro de tipo convencional. La primera y más importante, es que el software NO permite verificar la integridad de lo que se ha grabado. Si existiera algún error durante la escritura, el software no lo detectaría. En estos casos, lo normal es que el dispositivo programado no llegara a funcionar, pero dependiendo del tipo de error, podría funcionar de manera defectuosa.
La segunda no es tan importante, pero ha tardado 4 minutos en programar los 6.813 bytes del fichero con el que he realizado las pruebas. Con un programador convencional el proceso completo: borrado, escritura y comprobación, se realiza en algo menos de 13 segundos.
Utilizar el kit de reloj LED FC-209, como medidor de temperatura para fluidos. Para realizar esta modificación, sólo tenemos que sustituir el sensor de temperatura DS18B20 por otro del mismo tipo, pero con encapsulado en acero inoxidable. A pesar de que el nuevo sensor que instalemos sea del mismo modelo que el original, es muy posible que no funcione con el firmware que viene cargado al comprar el kit… y será necesario actualizarlo. Si cargamos la versión 5 del firmware (disponible en el blog), además de disponer de un termómetro para fluidos, también dispondremos de las funciones de reloj con cambio automático de hora, despertador, cronómetro y alarmas.
Sensor: DS18B20 (pineado)
Es muy importante no equivocarse al conectar el sensor de temperatura, porque si lo alimentamos al revés nos quedaremos sin sensor. Si no viene información técnica con la correspondencia entre los colores del cable y los pines de conexión del sensor, tendremos que averiguar su correspondencia haciendo medidas comparativas con otro sensor del mismo modelo.
La versión 5 del firmware, instalada en este montaje, puedes descargarla de forma gratuita desde el siguiente enlace:
Partiendo del desarrollo del kit de reloj de esfera rotante FC-209, fabricaremos un reloj de mayor tamaño para poder colgarlo en la pared. Los pulsadores irán situados en el frontal de la esfera, y así podremos utilizarlo en modo cronómetro… muy útil para temporizar los ejercicios en un gimnasio, utilizarlo como temporizador en la cocina, etc. Este reloj dispondrá de las mismas funciones que tenía la última revisión del firmware (v5), pero en esta versión (v6) vamos a utilizar un cristal de cuarzo de frecuencia más alta (con el fin de mejorar la velocidad de refresco) y también sustituiremos la pila de botón por una pequeña batería recargable.
Registro de carga del DS1302
La recarga de esta batería será permanente, siempre que esté alimentado el reloj, y la controlará el propio chip de reloj DS1302.
La versión 6 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v6_EC1204B.HEX
En este reloj, el display de 4 dígitos BCD lo construimos con diodos LED. Montaremos 2 diodos por cada segmento (se podrían montar más), de los 7 que se compone un dígito BCD. Al conectar 2 diodos en serie de alto brillo, necesitaremos una tensión de alimentación superior a los 5V que disponemos para alimentar el reloj. Con el fin de poder adaptar este circuito con cualquier configuración que utilicemos para construir los dígitos (número de diodos en serie por segmento), utilizaremos el módulo elevador de tensión MT3608.
Esquema MT3608
La tensión de salida de este módulo la utilizaremos para alimentar los 4 dígitos del reloj. Mediante el potenciómetro de ajuste de tensión, podremos adaptar la tensión de alimentación y modificar el brillo de los 4 dígitos centrales.
Esquema del Reloj (v6)
En este esquema se muestran los componentes que irán instalados en la placa de circuito impreso. Tanto los diodos LED como sus resistencias limitadoras, irán instalados en una placa de plástico.
Ensamblado de los diodos LED
Con el fin de facilitar la realización del circuito impreso, no he utilizado un programa de diseño PCB, simplemente lo he dibujado utilizando el software ‘Paint’ que incorpora Windows en todos sus sistemas operativos. El circuito impreso de la imagen siguiente, está a escala DIN-A4. Puede imprimirse directamente en papel, o utilizar una lámina transparente (especial para impresoras láser) para conseguir un fotolito a escala.
Fotolito del Reloj LED
Siguiendo el esquema de conexionado que se muestra en la imagen siguiente, podremos terminar el montaje. Como la tensión de alimentación de este reloj es de 5V, podremos utilizar cualquier cargador que tengamos para alimentar dispositivos móviles. El alimentador de 5V podría instalarse en el interior… o fuera con el fin de poder utilizar este reloj con baterías (Power Bank).
Montaje: Reloj 15×15
El modo de funcionamiento y ajustes de este reloj (v6), es idéntico al que se mostró en la última versión del firmware (v5):
Configuración del Reloj LED (v5)
En la primera parte del video se muestra el diseño del reloj, la construcción del PCB y el montaje de todos los componentes:
En la segunda parte del video se muestra el proceso de fabricación de la carcasa, ensamblado y grabados con la CNC (fresadora de control numérico) de la carátula frontal:
Utilizando los mismos componentes del kit de reloj FC-209 (hardware), podemos convertir el reloj en un cronómetro de precisión… sólo tenemos que reprogramar el micro-controlador AT89S52. Si programamos en el cronómetro las funciones de cuenta hacia delante, cuenta atrás y auto-arranque, podríamos utilizar el cronómetro como marcador de tiempo en eventos deportivos.
Cronómetro de 24 segundos
Haciendo unas pequeñas modificaciones en el hardware, sería posible convertir este pequeño reloj en un marcador de gran tamaño, y utilizarlo en un recinto deportivo. Después de sopesar las posibles opciones, decidí incluir la funcionalidad del cronómetro dentro de la última versión del firmware (v4). De esta manera no será necesario sustituir el micro-controlador cuando queramos utilizar este kit de reloj (FC-209) como cronómetro. La versión 5 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v5_EC1204B.HEX
Como este reloj sólo dispone de dos pulsadores para realizar maniobras, ya que el tercer pulsador es el del Reset del micro-controlador, es necesario definir cuál será su modo de funcionamiento (Reloj/Cronómetro) en la fase de arranque, y mantenerlo fijo hasta un nuevo reinicio. Como la función principal es la de Reloj-Temperatura, definimos este modo como ‘arranque por defecto’. Es decir, si no tocamos ningún pulsador en la fase de conexión, funcionará como Reloj-Temperatura. Para cambiar de modo reloj a cronómetro, realizaremos los siguientes pasos:
Pulsaremos el botón ‘RESET’
Cuando aparezca el mensaje rotante, mantendremos pulsado el botón ‘MODE’
Configuración del Reloj LED (v5)
Una vez que que hayamos entrado en el modo ‘cronómetro’, ya podremos configurar sus parámetros de funcionamiento. Estos valores se guardarán en el chip de memoria del reloj (DS1302), y estos serán los nuevos valores de arranque del cronómetro. Al igual que sucede con los parámetros del reloj, tendremos que tener conectada la pila de ‘tampón’ en el chip, si no queremos perder todos los datos cuando falte la alimentación.
La versión 4 del firmware es totalmente compatible con el kit de reloj FC-209 (EC1204B). El funcionamiento y prestaciones son las mismas que las de la versión 3, pero en este caso se ha deshabilitado el límite máximo de temperatura. Como el sensor DS18B20 podría mostrar temperaturas de hasta 125ºC, podríamos sustituir el sensor de temperatura interno –coloreado en amarillo– por otro prolongado y con encapsulado en acero inoxidable. Así sería posible utilizar este reloj como termómetro, para medir con precisión la temperatura de fluidos, calefactores, circuitos electrónicos, frigoríficos, etc.
La versión 4 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: J_RPM_v4_EC1204B.HEX
Sensor de temperatura: DS18B20
Al sustituir el sensor de temperatura de la placa por otro externo, podremos utilizar este reloj como termómetro para medir temperaturas ambientes y además objetos sólidos o líquidos, comprendidas entre -10 y +125ºC. Solo tenemos que fijar el modo de presentación Temperatura, mediante una breve pulsación del botón [PLUS]. Este reloj dispone de 3 modos de presentación:
Hora >>> [PLUS] >>> Tempertura >>> [PLUS] >>> Fecha+Temperatura
Las funcionalidades de la versión 4 son idénticas a la de la versión 3. A continuación se muestra un diagrama con la secuencia de programación de todos los parámetros, válido para ambas versiones.
En la versión 3 del firmware del Reloj LED, se incluye la posibilidad de reducir el brillo del display de forma automática. Este cambio se realiza dentro de un horario programable, no mediante un sensor de luz. La hora de inicio y fin de esta reducción de brillo, está asociada a las horas de inicio y fin de la activación acústica de las señales horarias. Con esta reducción de brillo se evita la molestia que podría ocasionar un exceso de luz, cuando se utiliza el reloj como despertador en una habitación oscura, y además se mejora la autonomía de la batería (se reduce el consumo).
La versión 3 del firmware, se puede descargar de forma gratuita desde el siguiente enlace: