Entradas

ESP32: Reloj / Cronómetro

Construcción de un Reloj/Cronómeto de precisión, controlado con un módulo ESP32. Este cronómetro dispone de un pulsador, permitiendo su manejo en modo local y también a distancia. Para el control remoto se puede utilizar cualquier teléfono móvil o PC, que esté conectado a la misma red local que el módulo ESP32.

Hasta ahora, todos los relojes que he construido con el ESP32 necesitaban un acceso a Internet vía Wi-Fi para funcionar. En este caso, cuando el reloj funcione en modo cronómetro no será imprescindible disponer del acceso Wi-Fi. A través de su pulsador se pueden controlar todas las funciones del cronómetro,  y lo único que se perdería sin el acceso a Wi-Fi es el control remoto.

Reloj Pac-Man con ESP32 & UTF-8

Crono_ESP32.ino

Al principio del fichero Crono_ESP32.ino están los comentarios, indicando algunos link de compra de los módulos y descarga de librerías

hw_timer_t >>> Es la variable del ‘timer’ que se utiliza para crear las interrupciones de 100 mSeg del cronómetro

has_expired >>> Es la variable booleana que gestionará el ‘void loop’ para incrementar con precisión los 100mSeg. del cronómetro cuando esté en marcha.

Mode_CRONO >>> Es la variable booleana necesaria para gestionar si está funcionando como reloj o cronómetro.

pinPulsa >>> Define el pin GPIO donde está conectado el pulsador del cronómetro.

WifiManager.h >>> Es la librería necesaria para configurar le red WiFi a la que irá conectado el módulo ESP32.

Void IRAM_ATTR >>> Es la rutina de la interrupción, que se ejecutará siguiendo con precisión un intervalo de tiempo. Cada 100mSeg. se pondrá en alto la variable booleana: has_expired

void setup()

Se inicializa el puerto serie y se carga la configuración del reloj, almacenada en la memoria EEPROM del módulo ESP32.

Se configura el LED azul del módulo ESP32 como salida, para indicar de forma visual los incrementos y estado del cronómetro. También se configura el pin al que va conectado el pulsador como entrada en modo Pull-Up.

timer = timerBegin(0, 80, true) >>> Como el cristal de cuarzo del ESP32 es de 80 MHz, dividimos entre 80 para tener como referencia 1MHz, para que el Timer 0 se desborde cada microsegundo.

timerAttachInterrupt(timer, &timerInterrupcion, true) >>> Aquí activamos la interrupción del timer, y hacemos la llamada a la rutina: void IRAM_ATTR timerInterrupcion() 

timerAlarmWrite(timer, 100000, true) >>> Aquí activamos el disparo del timer cada 100.000 uSeg. = cada décima de segundo se producirá la ejecución de la rutina: void IRAM_ATTR timerInterrupcion() 

timerAlarmEnable(timer) >>> Se habilita la alarma del timer.

Librerías personalizadas

En la misma carpeta del proyecto se incluyen dos librerías, personalizadas para este Reloj/Cronómetro:

fonts_es.h >>> Contiene las dos fuentes de caracteres que utiliza el reloj, incluyendo los caracteres especiales que se utilizan en español, como son las letras acentuadas, Ç y Ñ; tanto en minúsculas como en mayúsculas .

max7219.h >>> Contiene las rutinas necesarias para mostrar y animar los caracteres en las 4 matrices LED, gestionadas en serie con sus respectivos circuitos integrados MAX7219.  Es importante indicar en esta librería la posición en las que van montadas las matrices LED sobre el circuito impreso… en este caso van rotadas 90º.

https://github.com/J-RPM/ESP32_Crono/

ESQUEMA

En el esquema se muestran con las conexiones que tenemos que hacer entre el módulo ESP32 y el PCB que contiene las 4 matrices LED. Son las mismas conexiones que tenía el anterior firmware del reloj, lo único nuevo son los dos hilos de conexión del pulsador con el módulo ESP32.

Caja 3D

Para hacer la carcasa del Reloj/Cronómetro utilicé el mismo diseño 3D que hice para el reloj, sin diseñar el tamaño y posición del agujero del pulsador. Así es posible mecanizar la caja a gusto de cada uno, para utilizar cualquier modelo de pulsador, eligiendo su posición… o mecanizar un paso de cable en la caja para colocar un pulsador en el exterior.

Caja 3D, para el PCB de 8 dígitos LED de 7 segmentos

https://www.thingiverse.com/thing:4655690

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

 https://www.pcbway.es/

Logo: PCBWay

Cargador DeWalt (DCB115) averiado

Reparación del cargador de baterías DCB115 de la marca DeWalt. El cargador DCB115 está diseñado para cargar las baterías de iones de litio entre 10,8 y 18V de la marca DeWalt. Esto significa que dispone en su interior de un control BMS adaptable a los módulos que contenga cada paquete, entre 3 y 5 celdas de iones de litio.

Cargador de baterías DeWalt, modelo: DCB115

Este cargador sólo funciona cuando su electrónica detecta que se conecta un módulo DeWalt o compatible, y se encuentra en buen estado. En caso contrario, el cargador permanece en reposo con un consumo bajo.

Cargador de baterías DeWalt, modelo: DCB115

El cargador DCB115 dispone de 2 indicadores LED. El LED de la izquierda indica el estado de carga de la batería. El LED de la derecha se ilumina cuando la temperatura de la batería es demasiado alta o baja, reduciendo la intensidad de carga con el fin de proteger la batería.

El cargador DCB115 se debe enchufar a la red eléctrica antes de conectar la batería en su alojamiento. Cuando se inserta la batería en el cargador, el indicador LED de la izquierda se encenderá mostrando el estado de la batería:

  • Parpadea mientras se carga la batería
  • Se ilumina de forma continua cuando finaliza la carga

Reparación del cargador

El cargador me lo entregaron cerrado pero sin los tornillos, y al moverlo sonaba por dentro. Al abrirlo comprobé que alguien había intentado repararlo. Tenía el condensador electrolítico de la fuente de alimentación suelto y prolongado con unos cables. Al mover el condensador se soltó uno de los cables, porque el terminal del condensador se había sulfatado por dentro y se rompió. También se apreciaba un fogonazo al lado del transistor de potencia, y habían reparado una pista del circuito impreso. Posiblemente porque el transistor de potencia se pusiera en cortocircuito.

Buscando un poco por Internet, encontré el esquema del cargador DCB115, pero del modelo que va alimentado a 110VAC.  Así  los valores de algunos componentes no son los mismos para el cargador de 230VAC, pero el esquema me sirvió para poderlo reparar. Por ejemplo, el condensador electrolítico de la fuente de alimentación, en el esquema (C2) es de 220uF/200V y el de la fuente de 230VAC tiene que ser de 150uF/400V.

La resistencia SMD que estaba fundida y no pude comprobar su valor, la R16, es de 100 ohmios. El transistor MOSFET (Q1) es el K12A60, la resistencia ‘Shunt’ de potencia (R17) es de 0,47 Ohmios y el circuito integrado PWM (IC1) es el IW-710.

Componentes mal, en el cargador DCB115

En la imagen anterior se ve una parte del esquema con los componentes que tuve que sustituir, resaltados en color amarillo. Las 2 resistencias SMD enmarcadas en color rojo (R15 y R31) no estaban abiertas, pero su valor resistivo era superior a 2 MOhmios.

El origen de estas averías casi siempre es el mismo: el condensador electrolítico. Cuando el condensador electrolítico de la fuente de alimentación pierde capacidad o aumenta su valor ESR, el MOSFET trabaja con más corriente y aumenta la tensión de los picos de conmutación. Así es muy fácil que en cualquier momento se pongan los 3 terminales del transistor MOSFET en cortocircuito. Esto provoca que los 310VDC de la fuente entren en todos los componentes del circuito de control PWM, principalmente los que tengan una resistencia a masa más baja. Algunos componentes se queman de inmediato, y los componentes de un valor resistivo más alto tardan un poco más. Si se funde el fusible pronto, antes de quemarse las resistencias que se habían recalentado, las  de película metálica se carbonizan, y su valor resistivo aumenta.

Condensadores electrolíticos en paralelo

Como el origen principal de todas las averías de las fuentes conmutadas suele ser su condensador electrolítico, cuando se realiza una reparación es conveniente sustituirlo por otro de buena calidad y bajo valor ESR.

Condensadores en paralelo

Una forma fácil de reducir el valor ESR de los condensadores electrolíticos, es montar varios condensadores en paralelo de menor capacidad, pero de la misma tensión. Al montar condensadores en paralelo su capacidad se suma, pero el valor ESR resultante disminuye.

Cable comprobador de cargas

Cuando se reparan circuitos electrónicos que funcionan con fuentes conmutadas (actualmente son casi todos), es conveniente hacer las comprobaciones intercalando en serie con la alimentación de la red, una bombilla de filamento. Así en caso de que se produjera un cortocircuito, toda la tensión de la red iría a parar a la bombilla y evitaríamos más averías.

Cable comprobador de cargas

La imagen anterior se muestra el montaje que utilizo entre la toma de red y el equipo, para comprobar sus fuentes conmutadas durante la reparación. La bombilla que utilizo es de 40W, con el fin de limitar la corriente al máximo, pero se podría sustituir por otra de 60 o 100W, en caso de que el circuito a comprobar tuviese un consumo elevado en reposo.

La clavija de red se enchufa a una toma de 230V, y la bombilla está intercalada en serie, como si fuera un interruptor. A la salida hay una clema de conexión eléctrica gorda, con los terminales separados como una clavija de red Europea. Así se puede conectar una clavija de red o cables en puntas. En paralelo con la salida hay un LED con una resistencia limitadora de 100K y un diodo 1N4007 en paralelo con el LED, pero con los polos invertidos. El diodo 1N4007 absorve los picos de tensión inversa que le llegarían al LED, y lo protege.

El LED se ilumina cuando hay tensión en la clema de salida, indicando que la bombilla no está fundida y está correctamente apretada en su casquillo. Al conectar la alimentación de red a una fuente conmutada con la bombilla en serie, se producirá un destello luminoso fuerte, coincidiendo con el pico de consume de encendido. Después el filamento de la bombilla tiene que iluminar un poco, con mayor o menor intensidad dependiendo del consumo que hayamos conectado.

ANÁLISIS

  • La bombilla ilumina sólo al conectar la carga: es muy posible que la fuente conmutada este en reposo o su consumo sea muy bajo.
  • La bombilla se enciende al máximo desde el inicio: indicará que la fuente conmutada consume demasiado o está en cortocircuito.

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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

 

Plata Coloidal, PCB y Firmware

Actualización del firmware del generador de Plata Coloidal y diseño de su PCB. En la nueva versión del firmware (v1.3), el generador sigue midiendo la conductividad del agua al principio para calcular el tiempo de la electrolisis, pero cada 5 minutos realiza una nueva medida para corregir de forma automática el tiempo restante, en función del nuevo valor TDS que haya medido. Este reajuste también se puede hacer en modo manual en cualquier momento, mediante el pulsador. Aprovechando que este generador mide la conductividad del agua, ahora incluye una tabla con los valores TDS del agua y puede mostrar su valor en el display.

Generador de Plata Coloidal con Arduino

Para ensamblar los componentes  electrónicos del Generador de Plata Colidal que monté hace unas semanas, utilicé 2 PCBs de tipo universal. Realicé todas las conexiones por debajo, estañando hilos y siguiendo el esquema del montaje.  Como entiendo que esto muy laborioso para gente que no acostumbra a utilizar el soldador, he diseñado un PCB con el fin de facilitar su construcción y mejorar su acabado final. Y de paso, también le he dedicado un poco más de tiempo al firmware para mejorar sus prestaciones.

PCBs del Generador de Plata Coloidal

Nuevo firmware (v1.3)

En la versión anterior (v1.2), el generador realizaba una medida de la conductividad del agua al iniciar el proceso, con el fin de ajustar el tiempo total de la electrolisis en función de las PPM de la Plata Coloidal que queramos obtener.

Esquema del diseño: Generador de Plata Coloidal

Como pudimos comprobar en artículo anterior, la conductividad del agua aumentaba con la temperatura. Además, el valor TDS del agua también iba subiendo durante la electrolisis. Así la conductividad del agua irá subiendo durante la electrolisis, pero al mismo tiempo también irá bajando si hemos calentado el agua al empezar, hasta alcanzar la temperatura ambiente.

Aunque no es tan importante conseguir la medida exacta de las PPM en la Plata Coloidal, es muy sencillo corregir este problema. En la nueva versión del firmware (v1.3), el generador sigue midiendo la conductividad del agua al principio para calcular el tiempo de la electrolisis, pero cada 5 minutos realiza una nueva medida para corregir de forma automática  el tiempo restante, en función del nuevo valor TDS que haya medido. Este reajuste también se puede hacer en modo manual en cualquier momento, mediante el pulsador. Esto sería útil si se interrumpiera el proceso de la electrolisis, con el fin de remover el contenido o limpiar los electrodos, porque en estos casos suele variar ligeramente la conductividad del agua.

Aprovechando que este generador mide la conductividad del agua, he añadido en el firmware una tabla  con los valores TDS para poder mostrarlos en el display. Así no sería necesario comprar un medidor TDS, y podremos comprobar siempre la calidad del agua que vayamos a utilizar. Hay que tener en cuenta que esta medida TDS sólo es válida si se respetan todas las características de este montaje: el tipo de electrodos, separación entre ellos y su circuito limitador de corriente.

El rango de medidas TDS que permite mostrar este generador no es muy amplio, porque su circuito limitador de corriente interfiere en la medida comprimiendo su escala. De todas formas tiene una buena resolución con valores bajos del TDS,  entre 0 y 16ppm.

Ahora también, durante el proceso de la electrolisis, cada 30 segundos el generador mide el valor TDS del agua y lo muestra en la línea superior del display. Esta medida se alterna con el valor PPM actual de la Plata Coloidal.

Fuente de alimentación

Durante el montaje del primer generador me encontré con un problema en la alimentación, porque al conectar el relé que alimenta el circuito Step-Up se producía un pico de consumo, y en algunas ocasiones se bloqueaba o reiniciaba el micro controlador. Este problema se solucionó cuando monté 2 condensadores de 1000uF en la línea de alimentación de 5V. Lo extraño, es que se sigue apreciando una pequeña fluctuación en la iluminación del display cuando se conecta el relé.

Para salir de dudas, antes de elegir la fuente de alimentación a montar en el nuevo PCB, hice algunas medidas de consumo con el osciloscopio.

Medida de consumos con dos fuentes de alimentación conmutadas

Para obtener una gráfica de corriente al alimentar el relé y el circuito Step-Up a la vez, puse una resistencia de 0,8  Ohmios en serie con la alimentación de 5V.

Las puntas del osciloscopio del canal 1 las puse en la salida de la fuente de alimentación que estaba midiendo, con el fin de comprobar el comportamiento de cada fuente, con carga y sin carga. Y las puntas del canal 2 del osciloscopio las puse en paralelo con la resistencia de 0,8 ohmios.

Para obtener el valor de la corriente, sólo hay que dividir la tensión que muestre el osciloscopio entre el valor de la resistencia.

Si observamos las gráficas de corriente:

  • Con la fuente antigua se produce un pico de corriente de 1,67A de muy corta duración, pero suficiente para que la fuente de alimentación pudiese cortar su salida, ya que esta fuente es de 700mA. Después consume 288mA durante 81mS, el tiempo que tarda el módulo Step-Up en cargar sus condensadores y estabilizar la tensión de salida. El consumo en funcionamiento del relé y el módulo Step-Up, alimentados con la fuente de 5V es de 116mA.
  • Con la fuente pequeña, que es la versión moderna y también de 700mA según el fabricante, la gráfica de corriente es muy parecida. El pico de arranque es de 1,1A (también de muy corta duración) baja a 250mA y se mantiene durante 97mS, tiempo muy parecido al de la otra fuente, luego baja la corriente a 118 mA. que sería la corriente de funcionamiento con la fuente cargada.

Si comparamos ahora lo que ha sucedido con la tensión en ambas fuentes al conectar la carga:

  • Con la fuente antigua la tensión cae desde 5,1V hasta 4,49V y con la nueva desde 4,9V hasta 3,7V. Cuando se estabiliza el consumo, la caída de tensión de la fuente antigua es de 50mV, y si lo dividimos por el consumo de 116mA -> Ri =  0,43 Ohm.
  • Con la fuente nueva, la caída de tensión es de 120mV, y si lo dividimos por el consumo de 118mA -> Ri = 1 Ohm.

Lo que también se aprecia, es que la nueva versión de la fuente filtra mucho más las frecuencias transitorias que se montan sobre la tensión continua, pero a cambio su tensión de salida es menos estable.   

Teniendo en cuenta que el transformador de la fuente de alimentación nueva es más pequeño que el de la antigua, no parece muy lógico que ambas fuentes sean de 3,5W.

Test con el nuevo PCB

Durante las pruebas iniciales que hice en este nuevo montaje, se volvió a repetir el mismo problema que tuve en el montaje anterior. Al cerrarse relé, en algunas ocasiones se reiniciaba el ATMega328P. Como lo único que cambia con respecto al montaje anterior es el PCB, lo primero que hice es revisar las vías de alimentación y sus desacoplos.

Red +5V en el PCB

En el diseño de este PCB coloqué los dos condensadores de 1000uF separados en dos zonas, uno a la salida de la fuente de alimentación y el otro en las proximidades del relé, porque son los dos puntos de mayor consumo de todo el circuito.  Así la poca resistencia de la línea de positivo que une ambos condensadores, junto con ellos, forman un filtro PI. A continuación del segundo condensador de 1000uF está la vía que alimenta el display, el transistor de control del relé, el circuito Reset y la alimentación del ATMega328P.

El condensador de desacoplo de 100nF del ATMega328P lo puse al final de la red de +5V del PCB, para suprimir cualquier posible inducción entre el segundo condensador electrolítico y el final de la red de +5V. Lo único que cambia con respecto al montaje anterior, es que los dos condensadores electrolíticos de 1000uF están muy cerca del ATMega328P, y además sus conexiones las hice con hilo y estaño, y su sección es mucho mayor que la vía de este circuito impreso.

Medida VCC en ATmega328P

Aunque ya había hecho las pruebas del comportamiento de la fuente de alimentación, me faltaba por comprobar qué sucede con la tensión que le llega al ATMega328P en el PCB, con los dos condensadores de 1000uF conectados y todo funcionando.

Pico de consumo

Al medir con el osciloscopio me encontré con algo que no esperaba. El pico de consumo tan alto que se produce al alimentar el circuito Step-Up, descarga los condensadores y provoca que la tensión baje hasta 2,93V durante 27,4mS., hasta que se recupera la fuente y se vuelven a cargar los condensadores. Como el umbral de indecisión del microcontrolador está en el 50% de su tensión de alimentación, 2,93V están muy próximos al punto donde actúa el circuito reset del ATMega328P.

En estos casos el problema se debería resolver donde se produce, y se debería sustituir la fuente de alimentación por otra que soportara mejor los picos de consumo. Este es el problema de la fuentes de alimentación conmutadas, que se protegen y provocan cortes a su salida.

Como el pico de caída de tensión cambiaría muy poco aunque se aumentase la capacidad de los condensadores electrolíticos, colocando un condensador de 10uF entre los pines 7 y 8 del ATMega328P, se evita que entre cualquier pico transitorio y se reinicie, porque al estar alimentado con 5V no debería reiniciarse hasta que bajara su tensión a 2,5V.

Piezas 3D

La base de la caja ahora está hecha con una sola pieza, porque la serigrafía inferior apenas se daña con los soportes de impresión 3D, y así se simplifica el montaje.

Con el fin de facilitar la inserción y ajuste de los soportes de los electrodos en la base de la caja, he diseñado otra pieza 3D. Es una guía para alinear correctamente los electrodos, y mantener su inclinación de 5º durante el montaje.  Después también servirá para proteger los electrodos cuando no se use el generador, y no será necesario desmontar siempre los electrodos  después de cada uso.

Pieza guía 3D para los electrodos del generador

El diseño de las piezas 3D que necesitas para fabricar la caja y el soporte de este montaje, las puedes descargar de forma gratuita desde el siguiente link:

https://www.thingiverse.com/thing:6403044

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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

 

PCBs del Generador de Plata Coloidal

Los dos PCBs que he utilizado en este montaje, los puedes conseguir a través de los siguientes enlaces:

Colloidal Silver Generator

Adapter for 2×16 LCD

Generador de Plata Coloidal con Arduino

Construcción de un generador de Plata Coloidal con Arduino. El generador está programado para producir 200mL de plata coloidal, con concentraciones a elegir entre 10 y 100 ppm. La plata coloidal está compuesta por nanopartículas de plata de alta pureza, que se mantienen suspendidas en agua purificada. Las nanopartículas de plata miden entre 5 y 100nm, y tienen una carga eléctrica positiva debido al proceso de electrolisis que se utiliza en su producción. La plata coloidal se podría considerar como un antibiótico casero, quizás por su falta de interés comercial de las empresas farmacéuticas.

Generador de Plata Coloidal

Plata Coloidal

El uso de plata en sus diversas formas ha sido frecuente desde la antigüedad, para tratar infecciones y todo tipo de enfermedades. Aunque su popularidad decreció a partir de los años ’40, cuando aparecieron los antibióticos.

La plata coloidal se podría considerar como un antibiótico casero, quizás por su falta de interés comercial de las empresas farmacéuticas. Actualmente la plata coloidal se utiliza y se acepta como segura para uso externo, pero existen serios recelos por parte de la comunidad científica acerca de su seguridad por vía oral.

La comunidad científica siempre aplica el principio de la precaución: No se puede autorizar el uso  de la plata coloidal por vía oral hasta que se demuestre que sus resultados son seguros. Sin embargo, aplicando el conocimiento de nuestros antepasados podríamos considerar que: La plata coloidal por vía oral es segura mientras no se demuestre lo contrario.

El principal problema que tiene la ingesta de la plata coloidal, es que es muy difícil comprobar su calidad y cantidad de plata (ppm) que contiene el producto, y siempre hay que fiarse del vendedor. Actualmente es muy fácil comprar plata coloidal por Internet, porque se ha puesto de moda y hay mucha gente que se dedica a fabricarla. Para comprobar las ‘ppm’ que contiene la plata coloidal no sirve un medidor TDS. Los medidores TDS miden la conductividad del agua para calcular y mostrar el valor de los sólidos disueltos que contiene.

Medidor TDS

La plata coloidal está compuesta por nanopartículas de plata de alta pureza, que se mantienen suspendidas en agua purificada. Las nanopartículas de plata miden entre 5 y 100nm, y tienen una carga eléctrica positiva debido al proceso de electrolisis que se utiliza en su producción. Los iones de plata se mantienen separados entre sí, debido a su repulsión al disponer de la misma polaridad, y su concentración apenas altera la conductividad del agua. Los iones de plata no están disueltos en el agua, permanecen flotando sin entrar en contacto entre ellos.

Iones de Plata Coloidal

Dependiendo de la concentración de plata en el agua, el color de la plata coloidal varía. Empezando por un color amarillento pálido con bajas concentraciones de plata, pasando por el color ámbar hasta el rojo cereza para concentraciones muy altas.

Para estar seguros de que la plata coloidal es de buena calidad, la forma más sencilla es fabricarla uno mismo. Lo más importante es utilizar electrodos de plata de alta pureza y agua de calidad. Normalmente se aconseja utilizar agua bidestilada para fabricar la plata coloidal, pero el proceso de fabricación es muy largo debido a su baja conductividad. Algunos aconsejan mezclar sales con el agua bidestilada para acelerar el proceso de la electrolisis, pero con esto se empeora notablemente la calidad del producto final.

Ósmosis Inversa de 5 Etapas

La mejor opción sería utilizar agua potable de calidad, después de pasar por un filtro de ósmosis inversa. No es aconsejable utilizar directamente el agua del grifo, porque su valor TDS siempre estará por encima de 10ppm. y además podría contener metales. Cuanto mayor sea la concentración de sales en el agua (ppm), más rápida será la producción de plata coloidal, pero podría llegar a ser perjudicial en lugar de beneficiosa. Lo ideal es utilizar agua purificada con un valor TDS < 10ppm.

Calidad del agua & Ósmosis Inversa

Fabricar Plata Coloidal

Cuando se fabrica un generador de Plata Coloidal, hay que tener en cuenta la corriente que circula entre los electrodos,  para ajustar con precisión el tiempo del proceso de la electrolisis. Como la corriente varía en función de la conductividad del agua que utilicemos (TDS), es conveniente que nuestro generador realice todo el proceso con una corriente constante. Como es lógico, el tiempo total de la producción varía en función de los mL de agua que utilicemos y de la concentración de plata que queramos obtener. Si no se hacen estos cálculos y se ajustan en el generador que fabriquemos, no sabremos las partes por millón (ppm) de plata coloidal que contiene el producto final.

Plata Coloidal por electrolisis

Así la calidad de la plata coloidal cambiará en función de la calidad del agua y la pureza de la plata que utilicemos, pero la concentración de plata en el agua (ppm) siempre la podremos controlar.

Calibrar el generador

Para calibrar un generador de plata coloidal, sería necesario disponer de una pequeña báscula de precisión. Yo utilicé una báscula digital electrónica muy barata, se puede conseguir por Internet por menos de 5€. Esta báscula puede pesar hasta 200 gramos con una resolución de 10mg.

El calibrado del generador consiste en pesar los electrodos de plata antes de empezar, y realizar varios procesos utilizando el mismo tiempo a una corriente constante. La precisión del calibrado será mejor si los cálculos se hacen después de fabricar mucha cantidad de Plata Coloidal. Yo lo hice repitiendo 10 veces el mismo proceso con 200mL de agua purificada, circulando una corriente constante de 2mA durante 70 minutos en cada proceso.

Peso de los electrodos de plata

Después de esto, desmonté los electrodos y los volví a pesar. El único electrodo que se consume es el que se conecta al positivo de la fuente de alimentación, el ánodo. Para conocer las partes por millón de Plata Coloidal de los 2 litros de agua, sabiendo la cantidad de plata que se ha utilizado en la electrolisis, sólo hay que hacer un cálculo matemático. En mi caso se perdieron exactamente 100mg de plata en 2 litros de agua (2Kg).

Después podemos asociar el tiempo de cada proceso con una ppm, para que nuestro generador calcule y ajuste los tiempos de forma automática en función de las ppm que queramos obtener en el futuro.

70 minutos / 50 ppm = 1,4 minutos/ppm

Por último, para que el generador pueda ajustar correctamente los tiempos de la electrolisis con agua de bajo valor TDS, sin la necesidad de tener que calentarla para alcanzar los 2mA del ajuste que tomé como referencia, al iniciar el proceso el generador mide la conductividad del agua y reajusta de forma automática el tiempo de la electrolisis. Para que no se eternice el proceso de la producción, al arrancar se comprueba que la corriente de la electrolisis sea >1mA, y la corriente máxima se limita a 2,25 mA. De la limitación de corriente máxima se encarga el regulador 78L05, no se programa por software.

Si el valor de corriente que muestra el display fuese >2,2mA, sería porque la conductividad del agua es muy alta, y sería conveniente medir el valor TDS del agua antes de iniciar el proceso. El circuito limitador de corriente máxima de este generador (78L05) empieza a actuar cuando el TDS del agua supera aproximadamente las 10ppm .

Esquema de montaje

Este generador incluye una fuente alimentación conmutada de 5V, para conectarlo directamente a la red eléctrica. La tensión de 5V alimenta el microcontrolador, el display y también el módulo conversor DC/DC  que permite elevar la tensión hasta 45V. En este caso se ajusta a 35V, con el fin de no superar la tensión máxima de funcionamiento del regulador 78L05, encargado de limitar la corriente máxima de la electrolisis.

Esquema: Generador de Plata Coloidal

El microcontrolador es un ATmega328P, y podría utilizarse un Arduino UNO,  pero así queda todo más reducido. La temporización de la electrolisis la controla el ATmega328P, en función de la conductividad del agua que mide al inicio, y la concentración de plata que elijamos. Con el pulsador se pueden seleccionar concentraciones entre 10 y 100ppm antes de iniciar el proceso.

A través del pin 5 del ATmega328P, D3 en Arduino, se controla el relé que conecta y desconecta la tensión de 35 voltios a los electrodos. Añadí 2 condensadores de 1000uF en la fuente de 5V, para evitar que el microcontrolador se bloquease con los picos de consumo del relé cuando se activa. La tensión de la electrolisis se corta a la entrada del módulo conversor DC-DC (5V), porque no tiene sentido que el módulo permanezca alimentado cuando no se utiliza.

La tensión de 35V se conecta al electrodo de plata que hace de ánodo, este electrodo es el único que pierde plata durante la electrolisis. Así el circuito queda interrumpido hasta que no se llene de agua el envase y circule la corriente a través de ella hacia el segundo electrodo, el cátodo.

Dependiendo de la conductividad del agua -el valor TDS- la corriente será mayor o menor. El circuito se cierra a través del LED indicador de corriente, el regulador 78L05 que limita la corriente de la electrolisis y la resistencia de 1K que hace de ‘shunt’. Esta resistencia de 1k medirá una tensión entre sus extremos cuando circule corriente, y la tensión subirá en función de la corriente que circule entre los electrodos de plata, porque es un circuito serie. En paralelo con la resistencia ‘shunt’ hay un condensador de 100nF, para evitar falsas medidas por inducción.

El pin 28 del ATmega328P, A5 en Arduino, mide la tensión y la traduce en corriente. Para que la medida de corriente sea precisa, es necesario ajustar el valor de una variable en el software antes de programar  el chip.

Display LCD 2×16

El display muestra el estado de funcionamiento del generador y sus valores:

Display del Generador de Plata Coloidal

  • La concentración de plata coloidal actual durante el proceso
  • El valor ppm objetivo
  • La corriente que circula entre los electrodos
  • Y el tiempo restante que falta para finalizar

Si se sacan del agua los electrodos durante el proceso de la electrolisis, por ejemplo para remover el contenido, la temporización se detiene hasta que se vuelvan a introducir los electrodos en el agua. Este umbral de detección se configura en el software. Puse un valor de 50 en la medida del ADC, para fijarlo a una corriente de 250uA aproximadamente. En la parte inferior izquierda del display se muestra de forma gráfica el proceso de la electrolisis, animado cuando se detecta que está funcionando, y fijo si la corriente de la electrolisis no supera el umbral mínimo que hayamos fijado.

Conservación de la Plata Coloidal

La plata coloidal se podría conservar hasta 1 año, siempre que se haga en condiciones óptimas:

  • La plata coloidal debe almacenarse en botellas de cristal tintado y cerradas, evitar las botellas de plástico.
  • Hay que guardarla en un lugar oscuro y alejada de radiaciones electromagnéticas. Lejos de las tomas de enchufe, electrodomésticos, teléfonos móviles, etc.
  • Se almacena a temperatura ambiente, no en la nevera, y no debe entrar en contacto con elementos metálicos, como las cucharillas.
  • Antes de cada uso es conveniente agitar la botella, para mantener su homogeneidad.

Color

El color de la plata coloidal no es el mejor indicador de su concentración, porque varía dependiendo de muchos factores. Principalmente por la intensidad y temperatura de color de la luz que se utilice. También depende de la temperatura del agua durante la electrolisis.

PPM

Las partes por millón (ppm) de la plata coloidal no se puede medir con un medidor TDS. Hice plata coloidal de 50ppm utilizando agua filtrada con un valor TDS de 3ppm. Después del procesado el valor TDS subió a 14ppm, ligeramente superior, pero este incremento del TDS no sirve para saber la concentración de plata que contiene.

Transparencia del agua

Para comparar la transparencia del agua, se puede utilizar un puntero láser. Al atravesar la luz del láser desde un lateral hacia el otro,  desde el frente se verá con mayor intensidad o menor el haz de luz del láser, en función de las partículas y sales disueltas en el agua.

Transparencia del agua con un puntero láser

Piezas 3D

Piezas 3D para el Generador de Plata Coloidal

El diseño de las piezas 3D que necesitas para fabricar la caja y el soporte de este montaje, las puedes descargar de forma gratuita desde el siguiente link:

https://www.thingiverse.com/thing:6403044

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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

ESP32 con EleksTubeHAX

Actualización del reloj «RGB Glow Tube DIY Clock» (EleksTube IPS) con el firmware: EleksTubeHAX. Con este firmware, el reloj sincroniza automáticamente la hora a través de un servidor NTP. También consulta por Internet su localización, para ajustar de forma automática la hora local, actualizando el offset horario de invierno y verano. Además incluye el protocolo MQTT, y es posible controlar el reloj de forma remota desde un PC o dispositivo móvil con acceso a Internet. Este reloj, con el firmware original, se puede comprar en PCBWay por menos de 50€ … https://pcbway.com/s/8SNBE7

Reloj de estilo retro, con ESP32

Puntos separadores HH:MM:SS

Una de las cosas que se echa de menos en este reloj, es que no muestra los puntos separadores de las horas, minutos y segundos. Hice varias pruebas para intercalar los puntos, pero todas ellas de forma pasiva, utilizando como fuente de luz la iluminación RGB trasera de los 6 tubos.

La idea era montar algo sencillo, y que se pudiese desmontar sin tocar nada del interior.  Hice dos soportes con PLA de color negro, de la altura de los zócalos sobre los que se encajan los tubos de cristal. Los dos soportes los fijé al cristal con cinta adhesiva de doble cara, en la parte trasera de los tubos. Una pieza va pegada entre los tubos de las unidades de hora y la decena de los minutos, y la otra entre los tubos que muestran las unidades de minutos y la decena de segundos.

Luego me faltaba decidir cómo iba a hacer la pieza que mostrase los dos puntos. Empecé las pruebas con metacrilato transparente y plástico blanco, cortando con la CNC unas placas que reflejaran la luz trasera de los LED RGB, pintando los dos puntos de color negro. En ambos casos, el aspecto del reloj quedaba muy feo.

Al final utilicé PTEG de color blanco para hacer los dos puntos con la impresora 3D. Los hice alargados con forma de cono, y luego pinté con rotulador indeleble de color negro el soporte y el frente de los conos. Así la luz trasera de los tubos iluminan los laterales blancos de los conos, y visto el reloj de frente destacan mucho más los puntos negros.

EleksTube IPS con los puntos separadores

Piezas 3D

https://www.thingiverse.com/thing:6242912

Diseño 3D, con los puntos separadores para el reloj EleksTube

¿Actualizar el firmware?

En la revisión que hice del reloj con el firmware de fábrica, me di cuenta que la gestión de sus pulsadores era muy confusa, y además se le podría sacar más rendimiento al ESP32 que utiliza como procesador.

Buscando en el repositorio GitHub, encontré dos versiones de firmware muy elaboradas, que podrían ser compatibles con este reloj. Revisando el código de ambas versiones, comprobé que ha colaborado mucha gente en este desarrollo, pero la actualización final proviene del mismo autor: Aljaz Ogrin.

Cambios con respecto al firmware original

– La configuración con los pulsadores es extremadamente sencilla, porque la hora se ajusta automáticamente por Internet y los 4 pulsadores siempre realizan los cambios al presionar el botón, no al soltarlo. Es necesario pulsar y soltar por producir un cambio.

Configuración mediante los pulsadores, con el firmware: EleksTubeHAX

– El reloj sincroniza la hora a través de un servidor NTP, pudiendo conectar con cualquier router WiFi que disponga de la opción WPS. El reloj detecta respuestas del servidor NTP erróneas, y no se actualiza con una hora errónea. La versión 0.3 de firmware permite también escribir el SSID y PASSWORD de la red WiFi dentro del firmware. La versión 0.7 sólo permite la conexión WPS, pero esta opción es la más segura, porque las credenciales de la red WiFi no son visibles al leer el archivo binario (firmware). Otra ventaja de la conexión WPS, es que permite cambiar la red WiFi sin tener que modificar el firmware.

– El reloj detecta su ubicación a través de Internet, para seleccionar de forma automática su zona horaria y mostrar la hora local, corrigiendo automáticamente el Offset horario de invierno y verano.

– Las imágenes con los números de la hora son archivos BMP de 24 bit. Estos archivos se comprimen y convierten a binario desde una aplicación hecha a medida del firmware. Este formato permite  reducir el tamaño de los archivos, porque el firmware del reloj se encargará de centrar las imágenes pequeñas. Así es posible cargar y gestionar más de 3 fuentes de caracteres desde el reloj.

– El nuevo firmware hace una precarga de la siguiente imagen a mostrar en el búfer, para hacer una actualización más rápida. El tiempo del cambio de imagen se ha reducido de los 150 ms originales a aproximadamente 30 ms. Como el reloj refresca los dígitos de forma secuencial desde la unidad de segundos hasta la decena de horas, el segundo que provoca un cambio en la decena de horas presenta un efecto barrido de los números desde la derecha hacia la izquierda de (150×6) 900ms, y ahora se reduce a (30×6) 180 ms. Cuando se realiza un cambio de estilo, las imágenes guardadas en el búfer ya ni sirven y se borran. En este caso, el tiempo de carga de los 6 dígitos es el mismo que antes.

– Incorpora el modo nocturno, configurable antes de compilar el firmware, para atenuar el brillo de las pantallas y la luz de fondo de forma automática durante las horas nocturnas.

– Se incorpora la compatibilidad con MQTT (IoT): Desde un teléfono móvil se pueden cambiar las fuentes del reloj  y controlar el encendido/apagado del reloj. El protocolo MQTT es compatible con: SmartNest, SmartThings, Google Assistant, Alexa, etc… y también puede incluirse en la red de automatización del hogar.

– Los errores de conexión WiFi y MQTT se muestran con un texto de color rojo, insertado en la parte inferior de los dígitos de los segundos. Al apagar el reloj desde el pulsador se mantiene todo funcionando, sólo se apagan los displays y la iluminación RGB, manteniendo la conexión WiFi y la gestión remota a través del protocolo MQTT.

– El firmware cuenta de forma automática el número de estilos de reloj que tiene cargados, y no es necesario volver a programar el reloj cuando se actualizan las imágenes.

– La versión v0.7 puede configurarse para funcionar con  el reloj «EleksTube IPS» original y el reloj «SI HAI» (imitación china). La versión v0.3 incluye también el reloj «NovelLife SE» (otra imitación). El cambio que existe entre los diferentes fabricantes de este reloj, es la asignación de los pines de ESP32.


Esto es lo que se pierde con respecto a la versión del firmware original:

  • No permite mostrar el mes y día, siempre se muestra la hora.
  • No se puede elegir un color diferente para cada LED RGB y tampoco modificar la velocidad de cambio de sus efectos.
  • El efecto ‘Chasing’ de los LED RGB no existe, pero a cambio se  incluyen 2 efectos nuevos y un modo Test.
  • No dispone de la opción de mostrar 6 imágenes fijas.

Programar con el IDE Arduino

Antes de modificar el firmware del reloj, es muy importante disponer de  un archivo de respaldo por si algo falla. En el artículo y video anterior mostraba los detalles de todo el proceso, lo único que tendría que añadir, es que lugar de hacerlo a 115200 bps lo hagáis a 921.600 bps. El ESP32 funciona perfectamente a esa velocidad, y así el tiempo que tardará será inferior a 1 minuto.

He hecho un resumen para simplificar todo el proceso de configuración que hay que hacer en el IDE de Arduino, para que funcione con el ESP32 y sea compatible con el firmware: EleksTubeHAX.

Lo he probado con las versiones de Arduino (v1.8.12) y (v1.8.13)… es posible que con otras versiones se produzcan errores al compilar el programa 

1 –  El primer paso sería cargar las librerías del ESP32 en el IDE de Arduino. En la pestaña: Archivo/Preferencias, habría que desplegar el Gestor de URLs para comprobar si ya tenemos o no el link que apunta a las librerías de espressif:

https://dl.espressif.com/dl/package_esp32_index.json

Si no estaba en la lista, habría que añadir la URL y guardar los cambios

2 – Acceder al Gestor de tarjetas desde el menú: Herramientas/Placa/. Cuando finalice la carga de datos, escribir en la línea superior ‘esp32’. Buscar: esp32 by Espressif Systems. Aunque ya tengáis esta librería instalada, es importante actualizar a la versión 1.0.6. Yo tenía instalada la última versión, la 2.0.11,  y me costó mucho tiempo encontrar el problema. Al compilar aparecían errores en algunas instrucciones del WiFi y también en la librería TFT_eSPI.

3 – Para que sea posible cargar las imágenes en el reloj desde el IDE de Arduino, es necesario incluir el archivo: esp32fs.jar dentro de la carpeta ‘tool’ de la instalación. A continuación os pongo el link de descarga de la versión 1.1, porque la versión 1.0 no funciona.

Link de descarga de la versión 1.1

Detalles del lugar donde hay que copiar el archivo

Después de copiar el archivo y reiniciar el IDE de Arduino, tendría que aparecer la opción: ESP32 Sketch Data Upload. Si la versión del archivo es la correcta, al hacer click aparecerá otra ventana con un desplegable que muestra 4 opciones.

Las imágenes del reloj son los  archivos binarios que se encuentran en la carpeta ‘data’ del programa EleksTubeHEX. Para cargar estos archivos en el reloj, habría que seleccionar la opción: SPIFFS.

Las imágenes del reloj contienen los diferentes estilos de  las fuentes numéricas que se utilizan para mostrar la hora. Estas imágenes se pueden actualizar cuando se quiera, y no es necesario volver a cargar el firmware.

4 – Lo siguiente sería instalar las 7 librerías que se muestran en la gráfica enmarcados en rojo, seleccionando el nombre y comprobando que sea el mismo autor. Las versiones que se utilizaron en el desarrollo son las que están entre paréntesis, pero yo he actualizado todas a la versión más alta y no he tenido problemas.

5-  Ya por último, tendríamos que seleccionar la placa: ESP32 Dev Module y configurar todos los parámetros que se muestran en la gráfica enmarcados en rojo. El puerto ‘Com’ habría que seleccionar al que estuviera conectado vuestro reloj. Se puede comprobar si el reloj responde,  al hacer click en la opción: Obtén información de la placa

Librería: TFT_eSPI

Después de instalar todas las librerías, habría que modificar dos archivos que se encuentran dentro de la carpeta TFT_eSPI, y siempre que se actualice la librería TFT_eSPI habría que hacer lo mismo.

Son los archivos:  User_Setup_Select.h y User_Setup.h, y se pueden editar  con cualquier editor de texto que no introduzca formatos, por ejemplo con el Notepad de Windows.

En ambos archivos, User_Setup_Select.h y User_Setup.h,  hay que añadir la misma línea. Para que se incluya la librería GLOBAL_DEFINES.h que se encuentra dentro de la misma carpeta del programa EleksTubeHAX.

Además de esto, en el archivo User_Setup_Select.h se deja todo como está, pero al final del archivo hay que comentar la definición de todos los pines.

En el archivo User_Setup.h, hay que añadir la misma línea que en el otro archivo y mantener #define USER_SETUP_INFO «User_Setup». El resto del archivo hasta el final, tiene que estar todo comentado.

… ver más detalles en el video del final

SPIFFS (Serial Peripheral Interface Flash Fail System)

SPIFFS es un sistema de archivos muy simple, creado para microcontroladores con memoria flash.  Se accede mediante el bus SPI y los datos se guardan directamente en la estructura de la memoria. SPIFFS permite acceder a la memoria flash del ESP32, pudiendo leer, escribir y eliminar datos.

MQTT

MQTT (Message Queing Telemetry Transport) es un protocolo de mensajería simple, diseñado para dispositivos con poca memoria y con bajo ancho de banda. Permite enviar comandos para controlar salidas digitales, o leer y escribir datos en dispositivos electrónicos con tecnología IoT (Internet de las cosas).

MQTT fue creado por el Dr. Andy Stanford-Clark de IBM y Arlen Nipper de Arcom (ahora Eurotech) en 1999 como un mecanismo para conectar dispositivos empleados en la industria petrolera.

Gestión de los mensajes MQTT

En los mensajes MQTT hay 3 apartados separados por una barra, como si se tratara del Path de acceso a cualquier archivo del PC. A este conjunto Path, en MQTT se denomina Topic, o Tema en español. A continuación del Topic se enviaría la orden a ejecutar, denominado Mensaje en MQTT. Por ejemplo, un mensaje MQTT podría ser:

MiCasa/Cocina/Lavadora/Encender

Para que funcione el sistema MQTT es necesario un gestor que reciba y distribuya los mensajes, en MQTT sería el Broker.

Broker es el dispositivo central que permite y restringe las conexiones; y también recibe, filtra, redirige y publica mensajes a todos los dispositivos conectados. Los clientes inician una conexión TCP/IP con el Broker, el cual mantiene un registro de los clientes conectados. Esta conexión se mantiene abierta hasta que el cliente la finaliza. Por defecto, MQTT emplea el puerto 1883 y el 8883 cuando funciona sobre TLS.

Si se está enviando un mensaje a un Broker de Internet, la primera parte del tema/topic debe ser el ID del dispositivo que está enviando el mensaje, y el usuario puede personalizar las siguientes partes del tema. Cuando se da de alta algún dispositivo IoT en Smartnest, se le asigna un ID único para evitar conflictos entre dispositivos que pudieran tener el mismo Topic. En este nuevo firmware del reloj, el Broker es un servidor alojado en la Web de Smartnest.

El Broker de Smartnest define los Topic y Mensajes en lugar del usuario, con el fin de generar un interface gráfico común para todos los clientes, y dar acceso a través de Internet. Por ese motivo es necesario elegir el Tema que mejor se adapte a las necesidades de cada dispositivo. Por ejemplo, este reloj utiliza el Topic de un termostato.

Conversión de los grados recibidos por MQTT, al estilo de gráficos a mostrar

La temperatura de ajuste del termostato se puede modificar entre 10 y 40 grados, con saltos de 0,5º. Estos valores son interpretados por el reloj para seleccionar el estilo del gráfico a mostrar. Para hacer esto el firmware aplica internamente una fórmula al mensaje MQTT, dividiendo el valor recibido entre 5, sin decimales y restando 1. Si recibe un valor entre 10 y 14,5 grados, selecciona el estilo 1 (los saltos son de 5 en 5 grados). Si se fija la temperatura del termostato al máximo, 40 grados, el reloj mostraría el estilo 7. El reloj permite almacenar un máximo de 16 estilos. En caso de recibir un número mayor al número de estilos que tiene en memoria, seleccionaría el último. En caso de recibir un valor de temperatura igual o mayor de 90º, elegiría de forma aleatoria uno de los estilos de su memoria.

Para utilizar el Broker de Smartnest es necesario registrarse en www.smartnest.cz, pero es gratis para los primeros 5 dispositivos.

Cofiguración con el Broker Smartnest

Para habilitar la conexión MQTT en el reloj, es necesario personalizar los datos del archivo de configuración del reloj. En la versión v0.3 es el archivo USER_DEFINES.h  y en la versión v0.7 es el archivo GLOBAL_DEFINES.h.

Yo he cargado la última versión (v0.7), porque se han corregido algunos errores y además se incluye la gestión del sensor de temperatura DS18B20, aunque yo no lo voy a usar. Para que el reloj envíe la temperatura real por MQTT, habría que conectar el sensor a un pin del ESP32, y luego habilitarlo en el archivo de configuración.

Estos son los datos MQTT que hay modificar en el archivo de configuración:

  • Descomentar la línea: #define MQTT_ENABLED
  • Luego copiaremos ID del dispositivo que hemos dado de alta en Smartnest, el termostato, y lo pegaremos entre comillas a continuación de: #define MQTT_CLIENT
  • El nombre de usuario con el que nos hemos dado de alta, lo escribiremos entre comillas al final de:  #define MQTT_USERNAME
  • La contraseña con el que nos hemos dado de alta en Smartnest, la escribiremos entre comillas a continuación de: #define MQTT_PASSWORD. En lugar de escribir la contraseña en el firmware, es mejor poner el API-Key que asigna Smartnest a cada usuario.

COntrol remoto desde Smartnest

Con estos datos ya se recibiría la información que envía el reloj en la Web de Smartnest. Pero si queremos también enviar órdenes al reloj, tendremos que configurar el router WiFi  al que se conecta el reloj.

  • Lo primero es asociar la MAC del reloj con una IP fija, para que el router le asigne siempre la misma.
  • Luego habría que abrir el puerto TCP 1883, y asociarlo con la dirección IP que le hayamos asignado al reloj.

Configuración final

Para terminar de configurar el reloj, abrimos el archivo de configuración: GLOBAL_DEFINES.h para la versión 0.7.

  • Dejamos comentado el modelo de reloj HAI_CLOCK, para compilar con los datos de EleksTube.
  • Las horas de inicio y fin en la que el reloj cambiará a modo nocturno, se pueden modificar a nuestro gusto. También los segundos para detectar la pérdida de conexión con Internet y su reconexión.
  • No hace falta registrarse para disponer de un acceso a la geolocalización, accedemos a este link:

https://app.abstractapi.com/api/ip-geolocation/tester

Allí vemos nuestro código de consulta, y debajo una  URL para comprobar la información que devuelve. Podemos hacer hasta 5000 peticiones al mes con el mismo código si pagar.  Copiamos nuestro código de acceso, y lo pegamos entre las comillas a continuación de: #define GEOLOCATION_API_KEY

Ahora solo queda guardar los cambios del archivo: GLOBAL_DEFINES.h, y ya podemos compilar el programa en el IDE de Arduino y actualizar su firmware… pero recuerda que también hay que cargar las imágenes, para que el reloj pueda mostrar la hora.

Cargar las imágenes al reloj

Además de actualizar el firmware, es necesario cargar las 10 imágenes de cada estilo. El nuevo firmware necesita un archivo binario (.clk) por cada imagen.

Todos los archivos tienen que estar en la carpeta ‘data’ de ‘EleksTubeHAX’ …\Arduino\EleksTubeHAX\data

  • Los archivos se identifican con 2 dígitos y su extenxión .clk
  • La unidad del número del archivo se corresponde con la imágen que contiene, y la decena es el número de estilo. Los estilos del reloj van en orden ascendente, empezando por el estilo 1 (10.clk , 11.clk, 12.clk, etc.). No se puede crear el estilo 3 y enviar, si la carpeta ‘data’ no contiene también los estilos 1 y 2.
  • El número de estilos máximos a cargar depende del tamaño de los archivos. La capacidad máxima disponible para almacenar las imágenes en el reloj es 2,2MB aproximadamente.
  • Los archivos binarios se generan con un software hecho a medida para este firmware, y ya no se puede utilizar el software: EleksTube IPS.exe para actualizar las imágenes. En la descarga de archivos del repositorio GitHub, se incluye el software conversor de imágenes BMP a CLK:

…\Prepare_images\Convert_BMP_to_CLK.exe

Convert_BMP_to_CLK.exe

La cabecera de los archivos binarios que genera este conversor de imágenes, es de 6 Bytes: Las letras ASCII ‘CK ‘ los pixeles de ancho de la imagen, su origen X, los pixeles de alto y su posición Y.

Antes de colocar cada imagen en su display, el firmware lee sus cabeceras, y aplicando las fórmulas que se muestran en la imagen siguiente, desplaza el inicio donde tiene que empezar a cargar los datos del archivo, para centrar la imagen en el display.

Paso 1, para el centrado de imágenes del reloj EleksTube

De esta forma todos los bordes de la imagen que sean de color negro, se pueden recortar del archivo BMP,  antes de cargarlos en el software para convertirlos a código binario.

Paso 2, para el centrado de imágenes del reloj EleksTube

Al reducir el tamaño de las imágenes, es posible almacenar fuentes más pequeñas en la memoria del ESP32, y ampliar el número de estilos a elegir.

Conversor de imágenes BMP a CLK

Con el firmware de fábrica, el archivo binario que se carga en el reloj contiene las 30 imágenes de los 3 estilos, y tiene un tamaño de 1.507.328 Bytes. Si hacemos las cuentas, el mapa de color de las imágenes que se muestran en el reloj, es de 12 bits.

Ahora las imágenes BMP de 24 bit se comprimen a 16 bits. Por lo tanto, con la actualización del firmware también se mejora en la calidad de las imágenes.

En la siguiente imagen, he simulando el degradado de tonos azules que podríamos ver en el cielo al atardecer.

Comparativa del color RGB

De izquierda a derecha, se puede comparar la calidad con la que se mostraría en los displays del reloj.

  • La imagen original BMP de 24 bits, sin comprimir
  • Comprimida a 16 bits, como se mostraría con esta actualización
  • Comprimida a 12 bits, como se mostraría con el software de fábrica

Convertir imágenes BMP a CLK

En la siguiente imagen se muestra la carpeta de trabajo, para convertir las imágenes BMP en archivos CLK.

Archivos BMP y convertidos a binario, del estilo 3 del reloj

  • Crea una carpeta de trabajo, para utilizarla con el software: Convert_BMP_to_CLK.exe
  • Copia en la carpeta de trabajo las 10 imágenes BMP de 135×240 pixel y 24 bits, del estilo que quieras convertir a binario. Renombra los archivos poniendo como nombre el número de estilo (decena), y el valor numérico que contiene la imagen (unidad). En el ejemplo serían los 10 números del estilo 3.
  • Si los bordes de las imágenes no son negros, como es el caso del ejemplo, las imágenes no se pueden recortar. En el caso contrario puedes recortar los bordes negros, teniendo en cuenta que el contenido de la imagen resultante se centrará sobre la pantalla negra del reloj.
  • Abre los 10 archivos BMP de uno en uno con el software conversor, y conviértelos a binario.
  • Copia o mueve los 10 archivos .clk a la carpeta ‘data’ del firmware: EleksTubeHAX.

…\Arduino\EleksTubeHAX\data

¿Dónde fabricar el PCB?

Actualmente hay muchas empresas que se dedican a fabricar circuitos impresos, 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

Concurso de creadores 2023

El plazo para presentar los proyectos finaliza el 15 de Enero de 2024

PCBWay abre de nuevo la participación al concurso de creadores. Por el simple hecho de participar, se asignarán 500 beans (créditos) en tu cuenta de PCBWay, los cuales podrás canjear en la tienda por un Raspberry Pi Pico.

Además del premio por la participación, PCBWay repartirá un total de 16 premios: 1 primer premio al mejor proyecto, 2 segundos premios, 3 premios para los clasificados como terceros y 10 premios más para los proyectos más populares.

Consulta todos los detalles y las bases del concurso, pulsando el siguiente link:

Acceso al concurso de creadores PCBWay