Transmisor DCF77 con ESP32

Construcción de un pequeño transmisor de 77,5 KHz, para poder poner en hora los relojes DCF77 que no reciban correctamente la señal del transmisor de Alemania. Este transmisor es portátil, funciona con una batería de 3,7V y es muy preciso, ya que toma la información de la fecha y hora sincronizando previamente su reloj a través de un servidor NTP. Este transmisor está construído a partir del módulo ESP32, acoplando un pequeño display OLED de 64×48 pixel y 0,66 pulgadas.

ESP32 + OLED

Sistemas de sincronización horaria

Actualmente existen muchos métodos para mantener la hora exacta en cualquier dispositivo electrónico, ya sea través de un receptor GPS, o la recepción de la señales horarias en onda larga que se emiten desde diferentes países: 77,5 kHz desde Frankfurt en Alemania, 40 y 60 kHz desde Japón, 60 KHz desde Colorado en EE.UU, 66,66 kHz desde Taldom en Rusia, 68,5 kHz desde Lington en China, 60 kHz desde Anthorn en Reino Unido, o 162 kHz desde Allouis en Francia.

Cobertura DCF77

La mayoría de los relojes sincronizados por radio que se venden en Europa, utilizan la recepción de las señales horarias que envía el transmisor DCF77 desde Frankfurt, en Alemania.  Como sucede con cualquier transmisión por radio en Onda Larga, su cobertura varía en función de la distancia, climatología y el umbral de ruido electromagnético existente en el punto de recepción.

Con el fin de poder utilizar algunos relojes DCF77 que no disponen de ajuste de hora manual, hace algo más de un año publiqué una información para construir un pequeño transmisor que simulara la emisión DCF77. Este transmisor constaba de dos partes: una hardware construida con Arduino, junto con un software que funcionaba bajo Windows, encargado de suministrar los códigos de tiempo al transmisor.

Transmisor experimental DCF77

Tiempo UNIX

Tiempo Unix  se define como la cantidad de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970, sin contar segundos intercalares. El tiempo que representa es UTC, pero no tiene forma de representar segundos bisiestos de UTC (por ejemplo, 1998-12-31 23:59:60).

Cualquier dispositivo que disponga de una conexión a Internet, podría sincronizar su fecha y hora con gran precisión en cuestión de segundos. Sólo es necesario  conectarse a un servidor NTP para recibir el código de tiempo, y luego introducir los comandos en una librería para que nos entregue la fecha y hora local en la zona que queramos .

D1 mini ESP32

Para hacer este nuevo transmisor DCF77, he utilizado una placa ESP32 y un pequeño display OLED de 64×48 pixel, 0,66 pulgadas. El módulo ESP32 dispone de todo lo se necesita para hacer un transmisor DCF77  completo.

Bloques ESP32
ESP32
  • Procesador de 32 bit, que permite generar la frecuencia de 77,5 kHz con mucha más precisión que Arduino.
  • Reloj en tiempo real (RTC) para gestionar el envío de los códigos de tiempo DCF77
  • Interface WiFi, para conectar a un servidor NTP y sincronizar la fecha y hora con gran precisión.

LIVE D1 mini ESP32

El módulo ESP32 es capaz de sincronizar cualquier reloj DCF77 por si solo, incluso se podría prescindir del display. Sólo sería necesario conectar un trozo de cable en el pin IO25 (antena) y acercarlo al reloj, aunque su alcance sería muy limitado.

MiniKit ES32

HW-699 0.66″ OLED display (64×48)

Con este display, además de mostrar la fecha y hora, es posible saber qué está haciendo el transmisor DCF77 en cada momento. El display  HW-699 se comunica con el módulo ESP32 mediante su interface I2C, y es posible configurarlo con dos direcciones diferentes (0x3C / 0x3D). Por defecto utiliza la dirección 0x3C, y así es como lo he utilizado para hacer este montaje.

Display OLED 0,66"

Módulo ESP32, dentro del transmisor DCF77

Aprovechando que ya tenía un transmisor DCF77 con Arduino, he montado dentro de su caja el módulo ESP32, junto con el display OLED. De esta manera aprovecho además de la caja su fuente de alimentación (batería 3,7V + StepUp 5V + módulo de carga), los indicaciones LED y el amplificador de potencia junto con su bobina de antena.

Esquema: Transmisor DCF77

Firmware:

Repositorio GitHub:
https://github.com/J-RPM/DCF77-Transmitter

El archivo que necesitas para programar el ATmega328P, lo puedes descargar de forma gratuita desde el siguiente enlace: TX_DCF77.rar

El archivo que necesitas para programar el ESP32, lo puedes descargar de forma gratuita desde el siguiente enlace: DFC77_ESP32_JR.rar

Soporte 3D (ESP32+Display)

Soporte OLED

El fichero .stl que necesitas para fabricar esta soporte, lo puedes descargar desde el siguiente enlace: DCF77 transmitter with ESP32

¿Necesitas fabricar un circuito impreso?

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.

Logo: PCBWay

https://www.pcbway.es/

16 comentarios en «Transmisor DCF77 con ESP32»

  1. Me llegaron los componentes y por fin pude hacer el amplificador con el 2n2222, pero no he logrado mejora alguna, sin el amplificador la señal que se ve en el osciloscopio es cuadrada casi perfecta, con el amplificador la tensión se amplifica considerablemente, pero la forma de onda se degrada mucho y deja de ser cuadrada y en la práctica no consigo poder sincronizar relojes a mayor distancia, así que opté por dejarlo tal cual sin el 2n2222.

    1. Ten en cuenta que la bobina que hace de antena lleva un condensador en paralelo, y debería resonar aproximadamente a la frecuencia que se emite: 77,5kHz. La forma de onda en la bobina debería ser más parecida a una onda senoidal a 77,5 kHz.

      1. Es curioso, suponía que usando el amplificador lograría que los relojes se sincronizasen desde más distancia, pero no es así, y me desconcierta, he seguido al pie de la letra tu esquema salvo R6 que tengo que anularla o la onda además de deformada es de un nivel ridículo.

        Aquí muestro las formas de onda sin y con amplificador:
        https://photos.app.goo.gl/LfowZiHtQSEoWe3u6

  2. Aún no me llego el transistor y condensadores para hacer el amplificador y ciertamente con un hilo largo no siempre funciona, pero hice una prueba con la bobina conectándola entre IO25 y GND y pone los relojes en hora el 100% de las veces.

    Dejo foto de como puse la bobina:
    https://photos.app.goo.gl/yPUd5x6LvmqcwbHq7

    También tengo una duda, el esp32 no funciona permanentemente llega un momento que deja de funcionar y hay que reiniciarlo de nuevo, es normal ?.

    1. No es normal que el módulo ESP32 deje de funcionar, quizás se esté induciendo excesivamente la señal de 77,5 kHz que genera… posiblemente la bobina que has conectado directamente al módulo tenga algo que ver.

  3. Montado y funcionando perfectamente, tuve un problema inicialmente, pero era porque usaba una placa incorrecta, ahora espero por la bobina para hacerlo más potente, muchas gracias por compartir.

  4. Después de unos meses y revisar tu último video sobre el transmisor dcf77 me animo a hacer el montaje, gracias por todos tus aportes jrpm.

    Tengo la duda si me servirá a pelo el ESP32 o necesitaré añadirle el 2n2222 como amplificador, ire paso a paso y ya te diré el resultado.

  5. En general todo está bien, pero tengo problemas con el display OLED, muestra como interferencias y en ocasiones no refresca la información, queda como congelado. He modificado el código y ha mejorado algo, pero sigue mostrando imperfecciones de forma aleatoria, no sé si se trata de mi unidad o es generalizado con este tipo de display.

    1. A mí me ha pasado alguna vez de forma aleatoria, supongo que al generar la frecuencia del DCF77 se provocan interferencias. En mi caso, cuando sucede esto al reiniciar el módulo normalmente se corrige el problema.

  6. Hello!
    Which Time.h and Ticker.h library have you used in your sketch?
    Is possible to use only the ESP32 board with the antenna circuit with your sketch
    or also the arduino chip is needed?
    Thanks!

    1. The timer libraries are the ones loaded by default in the Arduino IDE. As you can see in the video, the circuit also works with the ESP32 alone, it is not necessary to mount the Arduino signaling, and neither does the 77.5KHz amplifier

Si tienes alguna duda o sugerencia, deja un comentario.