Transmisor DCF77 con ESP32 (v2)

Hace casi dos años hice un transmisor de DCF77 con un módulo ESP32, y lo acoplé dentro de otro transmisor que había hecho con anterioridad con Arduino. Ahora voy a montar otra versión del mismo transmisor DCF77, reduciendo al mínimo su tamaño y sin eliminar sus prestaciones.

Amplificador DCF77

Transmisor DCF77 con ESP32

Esquema

En la versión 2 del transmisor DCF77 con ESP32, he quitado el segundo controlador de Arduino, ya que sólo servía para complementar la información que muestra el display OLED. Pero he utilizado un trozo del PCB de ese transmisor, el que contiene los componentes del amplificador, y mediante 3 hilos lo he conectado con el módulo ESP32: los 2 hilos de alimentación y el hilo de salida DCF77 ya modulado. La salida de los impulsos DCF77 no se utiliza, pero se puede utilizar para hacer medidas.

Esquema: Transmisor DCF77 con ESP32 (v2)

Para comprobar que se está transmitiendo la señal por el amplificador, he montado un LED SMD en serie con una resistencia limitadora,  en paralelo con el condensador de 1nF del circuito resonante de salida, la antena transmisora. La resistencia limitadora del LED la he puesto bastante alta, de 3k9,  con el fin de que no se reduzca el nivel de RF radiado.

Nivel de salida DCF77

Con el fin de comprobar el correcto funcionamiento del amplificador de salida, y medir el nivel de tensión pico a pico de la portadora DCF77 (77,5 kHz), he conectado las puntas del osciloscopio en paralelo con la bobina del amplificador (antena). La punta de referencia del osciloscopio (GND) la he conectado a la toma de la bobina que va conectada a la alimentación de +5V, ya que para la señal de RF el +5 es lo mismo que el GND. Así en las medidas del osciloscopio, la referencia GND que muestre se corresponderá con la tensión +5 del amplificador.

El osciloscopio debería funcionar con batería, o estar aislado de la tensión de la red eléctricaMedida DCF77 a la salida del amplificador

Analizando la gráfica que muestra el osciloscopio, la amplitud de la señal DCF77 ocupa 3 cuadros X 5V = 15Vpp. Se puede observar que desde el punto de referencia del osciloscopio (1→ de la izquierda) hacia abajo hay un cuadro = 5V, justo la tensión a la que está alimentado el amplificador. Al estar funcionando el amplificador en Clase C (se polariza con la señal de RF) el transistor deja de conducir cada segundo durante 100 o 200ms, dependiendo si se transmite un CERO o UNO lógico. En la imagen se muestran dos segundos consecutivos (10 divisiones de 200ms), con dos intervalos sin portadora de 100ms = dos ceros lógicos. La medida que muestra a la derecha la pantalla del osciloscopio de 10V, es la tensión ‘extra’ que produce la bobina de 4mH junto con el condensador de 1nF al estar en resonancia a la frecuencia de 77,5 kHz.

Firmware

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

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

Caja 3D (ESP32+Display)

Caja 3D: Transmisor DCF77 con ESP32 (v2)

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

¿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/

Reloj-Texto con dos alarmas y 2 husos horarios

Reloj-Texto con 2 alarmas y 2 husos horarios. Digitalización de audio analógico, para almacenarlo en la memoria de un ESP32. Estos archivos de audio contienen señales acústicas y mensajes de voz, para utilizarlas en el nuevo firmware del display Reloj-Texto controlado por el ESP32. Con esta actualización, el display Reloj-Texto dispondrá de dos alarmas horarias, pudiendo configurarlas con alguno de las dos husos horarios que gestiona el nuevo firmware. El 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, pudiendo mostrar la hora local, a elegir entre dos husos horarios diferentes.

Reloj y Texto en display LED, con ESP32

Audio sintetizado

El sonido de la alarmas no lo haré activando un buzzer piezoeléctrico, será un sonido PCM de 8 bit, el cuál grabaremos en la memoria del ESP32. Esa información de audio digital, se convertirá en audio analógico aprovechando uno de los dos conversores D/A (DAC) que incluye este microprocesador. En este caso, como el pin GPIO25 ya se está utilizando en este reloj, la salida de audio será a través del pin GPIO26

Muestreo y Retención

Es la extracción de algunos valores instantáneos de duración teóricamente nula. Según la teoría de Shannon,  para muestrear una señal y poderla reconstruir, es necesario que el muestreo se realice un número de veces al menos igual al doble de la frecuencia máxima a muestrear. Para muestrear una frecuencia vocal de 4 kHz, necesitaríamos muestrear  como mínimo a:  4×2=8 kHz.

Esto lo podríamos representar con un interruptor que se abriera y cerrara 8.000 veces por segundo. A la salida de éste, obtendríamos una secuencia de impulsos cuya amplitud sería el valor instantáneo que tenía la señal de audio original.

Cuantización

Es la conversión que efectuamos para trasladar los valores instantáneos de tensión de la señal muestreada, a una escala compuesta por una serie de niveles. Cuanto mayor sea el número de niveles, mayor será la relación S/R. Como es de esperar, estos niveles los analizaremos con un sistema binario, para posteriormente poderlos transmitir de una forma digital. Con los sistemas PCM de 8 Bit, se obtienen 256 niveles de cuantización (±127 con respecto a cero).

Codificación

Es el proceso de lectura, de forma digital, de la secuencia de valores cuantizados. Esto quiere decir que a cada nivel de cuantización le corresponde un valor binario determinado, y dependiendo del número de niveles, necesitaríamos un número de bit por cada muestra. Esta es la primera limitación que encontramos para cuantizar la señal con un máximo de niveles, pues necesitamos transmitir todos los valores instantáneos de una muestra, en un tiempo máximo dado por la inversa de la frecuencia de muestreo ( t = 1/f ).

Esquema de montaje

Para que este display Reloj-Texto funcione, sólo hay conectar 5 hilos entre un lateral del display LED y el módulo ESP32. El sonido de la alarma sale por el pin GPIO26 del módulo ESP32, y hay que conectarlo a un amplificador de audio con su altavoz.

IMPORTANTE: la salida de audio DAC del ESP32 está referenciada a 1.5V.  Así es necesario bloquear la corriente continua continua a la entrada del amplificador de audio, intercalando en serie un condensador cerámico de aproximadamente 100nF. Como el nivel de audio a la salida DAC puede llegar a medir 3Vpp, es conveniente intercalar un atenuador a la entrada del amplificador, intercalando un divisor de tensión resistivo, o un potenciómetro si se quiere disponer un ajuste del nivel de audio.

Firmware

El archivo que necesitas para programar el ESP32, lo puedes descargar de forma gratuita desde el repositorio GitHub: Clock-Text_ESP32

Caja 3D (Reloj-Texto)

El fichero .stl que necesitas para fabricar la caja de este display LED, lo puedes descargar desde el siguiente enlace: Clock-Text with 2 alarms and 2 time zones (revision)

¿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.

PCB de prototipo gratis y con plazo de entrega rápido: https://www.pcbway.es/

Logo: PCBWay

 

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/