Reloj Digital WeMos ESP8266 Wifi

Reloj WeMos ESP8266 y pantalla OLED

Vamos a montar de una manera sencilla y paso a paso un reloj digital con WeMos. Cogerá la hora en tiempo real via WIFI de un servidor en internet y la mostrara en la pantalla OLED.

Con este proyecto pretendo explicar de manera sencilla como explorar varias posibilidades que tiene WeMos y el ESP8266 que incorpora. Como es conectarse a internet vía WIFI, comunicarse vía puerto serie con el ordenador y mostrar información a través de una pantalla OLED.

Funcionamiento del Reloj

Como ya he comentado vamos a coger la información de internet. Por lo que lo primero que realizara es conectarse por WIFI a internet. Después de conectarse procederá a comprobar cada 10 segundos la fecha y hora de internet y actualizarla. Esta información la enviara tanto por puerto serie como a la pantalla WeMoS. Veremos en ambos casos tanto el proceso de conexión, como la información de fecha y hora actualizada.

Componentes

Componentes Reloj WeMos

El montaje es bastante sencillo, necesitamos pocos componentes. Ni siquiera hace falta una protoboard, todo gracias a la facilidad de conexión que tiene WeMos. Los componentes necesarios serian los siguientes:

Se puede usar cualquier WeMos D1 Mini, tanto el pro como el lite.

Librerías para IDE Arduino

Necesitamos ciertas librerías en el IDE de Arduino para el funcionamiento del ESP8266. Para coger la información de la fecha de internet, y para mostrar la información en la pantalla. A continuación tenéis el listado de librerías necesarias y donde conseguirlas.

Las introducimos como cualquier otra librería en Arduino.

Preparación parte electrónica de WeMos

Montaje pantalla OLED en WeMoSLos WeMos cuando los compras vienen sin soldar los pines de conexión. Vienen varios pines dependiendo de como queramos hacer la conexión. En este caso he decidido soldar los necesarios para poner la pantalla justo encima del ESP8266. Igualmente se puede poner de otras maneras mientras respetemos el patillaje.

Programación del reloj ESP8266

Como he comentado anteriormente vamos a recabar varias posibilidades del WeMos en un único código. Para que resulte más sencillo entenderlo voy a explicar cada proceso por separado. Aunque el código esta pensado para WeMos, se puede usar para hacer un reloj ESP8266 con pequeñas modificaciones con cualquier otra placa que lo incorpore. Al final tenéis todo el código completo para el que quiera pasar directamente a la acción.

Conectarse al WIFI

Primero debemos introducir la información de nuestro wifi para que pueda conectarse. Para ello en las siguientes lineas del código debemos sustituir las xxxx por nuestro ssid y password.

Después deberemos realizar la conexión al WIFI. Con el siguiente código realizaremos la conexión con los datos introducidos anteriormente, y mandara puntos por puerto serie hasta que se realice la conexión.

Tenemos algún otro código semejante introducido para controlar posibles desconexiones, y que en ese caso vuelva a realizar la conexión.

Recoger información de la fecha y hora de internet

A continuación vamos a ver una parte importante del código que necesitamos. Vamos a recoger la información de internet y procesarla posteriormente.

Para ello necesitamos algunos códigos de configuración del cliente y la dirección donde nos vamos a conectar. Además necesitamos indicar la diferencia horaria que tenemos respecto a la hora UTC. No he usado la configuración original para Europa ya que no funcionaba correctamente.

Para que funcionara en otro país correctamente habría que introducir la diferencia horaria donde pone el 60 y el 0. Eso respectivamente son más 60 minutos y horario original. En cambio en el caso de America habría que poner en negativo los minutos que correspondan ya que la diferencia horaria es negativa.

Posteriormente para recoger la información vamos a comprobar si estamos correctamente conectados al WIFI. Después transformaremos la fecha y hora a nuestro huso horario y lo enviaremos a la funciones correspondientes para enviarlo por puesto serie, y a la pantalla OLED.

Lo que enviamos es la marca de tiempo. Posteriormente la vamos a convertir a una fecha interpretable directamente por un ser humano.

Para finalizar vamos a convertir esa marca de tiempo en texto. Hay varias funciones en el código que lo hacen pero vamos a ver las 2 principales. Por una parte vamos a sacar la fecha y por otra sacaremos la hora. En Ambos casos lo convertimos en un String.

Enviar información por puerto serie

Primero debemos configurar a que velocidad se va a realizar la comunicación por puesto serie con el siguiente código.

Después con la siguiente función enviaremos la información. Con print enviamos cosas en la misma linea y con println hacemos un salto de línea después de enviarlo.

Enviar información a pantalla OLED

En este caso es un poco mas complejo que enviarlo por puerto serie pero es semejante.

Primero debemos configurar la pantalla.

Seguidamente vamos a inicializarla. Para ello tenemos que seleccionar la dirección que tiene configurada para conectarse por I2C. Normalmente va a tener la 0x3C pero se podría poner también con la 0x3D cambiando un punto de soldadura que viene indicado por la parte trasera de la shield. Finalmente borraremos la información de la pantalla.

Finalmente para sacar la información por pantalla deberemos usar varios códigos. Vamos a ver como ejemplo la parte en la que enviamos la información de la hora a la pantalla. Usamos varios códigos:

  • Primero elegimos el tamaño de las letras con display.setTextSize(1). Con el número seleccionamos el tamaño en lineas de las letras. Esta pantalla tendría un tamaño de 6 lineas.
  • Después seleccionamos el color con setTextColor(WHITE).
  • A continuación elegimos la posición de escritura setCursor(0,0).
  • Luego indicamos que queremos mostrar por pantalla println(“Jorge Sanz”). Comando que funciona igual que en el caso del puerto serie.
  • Posteriormente indicamos que mande a la pantalla todo lo anterior display().
  • Y para finalizar por seguridad le mandamos clearDisplay().

Código final

Y para finalizar todo el código completo para ver y descargar.

Montaje y resultado final de funcionamiento del Reloj WeMos con pantalla OLED

Con esto ya tenemos en funcionamiento nuestro reloj. Aquí tenéis como quedaría.

 

Deja un comentario