Tabla de contenido:

Reloj de mareas y clima: 9 pasos (con imágenes)
Reloj de mareas y clima: 9 pasos (con imágenes)

Video: Reloj de mareas y clima: 9 pasos (con imágenes)

Video: Reloj de mareas y clima: 9 pasos (con imágenes)
Video: Así se siente una parálisis del sueño. 2024, Noviembre
Anonim
Reloj de mareas y clima
Reloj de mareas y clima

Aunque puede comprar relojes de marea analógicos que tienen una sola manecilla que indica si la marea es alta o baja o en algún punto intermedio, lo que quería era algo que me dijera a qué hora será la marea baja. Quería algo que pudiera ver rápidamente sin tener que encenderlo, presionar ningún botón o esperar. Y quería algo con batería de larga duración. Así que utilicé una placa TTGO T5, que es una placa basada en ESP32 con una pantalla de papel electrónico de 2,13 , conectada a un chip TTL5110. El TPL5110 enciende el T5 cada 2,5 horas y, una vez al día, el T5 descarga datos de mareas de NOAA y los datos meteorológicos de OpenWeatherMap, muestra los datos en el papel electrónico y luego le dice al TPL5110 que apague el T5.

ACTUALIZACIÓN (25 de febrero de 2020) El reloj de mareas ha estado funcionando durante un año y la batería está a 4,00 voltios, por lo que es posible que el reloj funcione durante muchos años.

Paso 1: Lista de hardware

Tabla TTGO T5 $ 17

Tablero Adafruit TPL5110 $ 5

Tablero Adafruit Perma-Proto de un cuarto de tamaño (opcional) $ 0,71 (pedido mínimo $ 8,50)

Batería de Li-Poly 1200 mAh $ 10 (u otra fuente de energía apropiada)

Cable de 2 pines JST PH - Conector macho $ 0.75

Condensador de 220 uF

Paso 2: herramientas

Soldador

Pelacables

Cargador de batería Li-Po, como este.

Paso 3: ensamble el hardware

Ensamblar hardware
Ensamblar hardware
Ensamblar hardware
Ensamblar hardware
Ensamblar hardware
Ensamblar hardware

Montar el hardware es bastante simple como muestra el esquema. Usé una placa Adafruit Perma-proto que es como una protoboard normal, excepto que está dispuesta como una placa de pruebas, con las mismas conexiones eléctricas que una placa de pruebas, lo cual es bueno. Como solo necesitaba unas pocas conexiones y quería encajar todo el conjunto en una caja pequeña, corté una de las tablas en cuartos con un disco de corte Dremel.

El condensador de 220 uF es muy importante. Sin él, el TPL5110 nunca encenderá el T5. No está claro por qué, pero otras personas que utilizan el TPL5110 han tenido el mismo problema. ¿Quizás el ESP32 consume más corriente al inicio de la que puede suministrar el TTL5110?

No conecte la batería. Usa el cable JST-PH para que puedas desconectar la batería para cargarla. Puede haber una manera de cargar la batería desde el T5 a través del TPL5110 si el TPL5110 está "encendido", pero no puedo responder por esa técnica.

Hice una caja de madera como cerramiento, pero cualquier cosa con dimensiones interiores mínimas de 1.5 "x 2.75" x 1 "funcionaría.

Paso 4: ajuste el tiempo

La placa TPL5110 tiene un potenciómetro de ajuste que establece el intervalo de tiempo en el que se activa el TPL5110. Use un destornillador pequeño para girarlo completamente en sentido antihorario. En mi tablero, esto estableció el intervalo en 145 minutos, que en realidad es más que el máximo especificado de 120 minutos, pero funciona y fue consistente y ahorrará aún más energía que despertar cada 120 minutos, así que lo usé. No es necesario que conozca el intervalo con precisión, ya que el objetivo es descargar datos aproximadamente una vez al día, aproximadamente a las 4 a. M. Puede especificar el intervalo (por ejemplo, 145 minutos) y la hora de activación (por ejemplo, 4 a. M.) En env_config.h.

(Si desea un mejor control de la sincronización para algún otro proyecto, la placa TPL5110 tiene un rastro en la parte posterior que puede cortar para deshabilitar el potenciómetro. Luego, conecta una resistencia al pin Delay y la resistencia determina el intervalo, de acuerdo con esta tabla.)

Paso 5: el software

Necesitará el IDE de Arduino con el paquete ESP32. En el IDE, configure su placa en "Módulo de desarrollo ESP32".

El boceto está disponible en https://github.com/jasonful/Tides y requiere 3 bibliotecas:

  1. "Estación meteorológica ESP8266", disponible en Arduino Library Manager (o aquí). Solo necesitará estos 6 archivos: ESPHTTPClient.h, ESPWiFi.h, OpenWeatherMapCurrent.cpp, OpenWeatherMapCurrent.h, OpenWeatherMapForecast.cpp, OpenWeatherMapForecast.h y puede eliminar el resto.
  2. "Json Streaming Parser" disponible en Arduino Library Manager (o aquí)
  3. https://github.com/LilyGO/TTGO-Epape-T5-V1.8/tree/master/epa2in13-demo Aunque el código no está empaquetado como una verdadera biblioteca, puede copiarlo en su directorio de bibliotecas e incluir eso.

Paso 6: configurar el software

Hay varios parámetros que tendrá que establecer (y es posible que desee establecer algunos) en el archivo env_config.h, que incluyen:

  • WiFi SSID y contraseña
  • ID de la estación NOAA (en otras palabras, dónde estás)
  • OpenWeatherMap AppID, en el que deberá registrarse (es fácil y gratuito)
  • OpenWeatherMap LocationID (de nuevo, dónde estás)
  • CONFIG_USE_TPL5110, que le permite utilizar un T5 sin un TPL5110. En cambio, el software entrará en modo de suspensión profunda. La placa T5 consume aproximadamente 8 ma en sueño profundo, por lo que solo espero que la batería dure unos días.

Paso 7: cómo funciona el software

(Puede omitir esta parte si no le importa).

El objetivo es despertarse una vez al día, pero dado que el intervalo máximo del TPL5110 es de solo 2 horas aproximadamente, el T5 tiene que despertarse con más frecuencia. Entonces, después de descargar los datos de mareas y clima, calcula cuántos de estos intervalos de 2 horas hay entre ahora y las 4:00 am de mañana por la mañana. Esto se complica un poco por el hecho de que el TPL5110 corta totalmente la energía al T5, lo cual es bueno para la batería, pero significa que perdemos RAM y el reloj de tiempo real. Es como despertarse todas las mañanas con amnesia. Entonces, para averiguar qué hora es ahora, lo extrae del encabezado HTTP de NOAA. Y para recordar cuántos intervalos de 2 horas quedan, escribe ese contador en el almacenamiento no volátil (flash). Cada vez que se despierta, verifica ese contador, lo decrementa, lo almacena, y si es mayor que cero, inmediatamente envía una señal al TPL51110 ("Listo") indicándole que lo ponga en suspensión. Cuando el contador llega a cero, el código descarga nuevos datos y vuelve a calcular y restablecer el contador.

Paso 8: Ejecutarlo

Ejecutarlo
Ejecutarlo

Asegúrese de que el interruptor en el lado izquierdo del T5 esté en la posición hacia arriba (encendido), cargue el boceto en el T5 y, en unos segundos, la pantalla debería actualizarse con información de mareas y clima.

Si necesita depurar el software, cambie "#define DEBUG 0" en la parte superior de Tides.ino a "#define DEBUG 1". Esto activará la salida de depuración en serie y también mostrará en la parte inferior del documento electrónico el número de reinicios restantes antes de que descargue nuevos datos y la hora en que descargó los datos por última vez.

Paso 9: Direcciones futuras

  1. El uso del TPL5110 combinado con una pantalla de papel electrónico es una excelente manera de mostrar cualquier dato que no cambie con frecuencia, con una excelente duración de la batería.
  2. Cuando estaba diseñando esto, consideré usar el TrigBoard, que es una placa ESP8266 con un TPL5111 a bordo. Habría sido necesario obtener una pantalla de papel electrónico y una placa de control de papel electrónico independientes como esta o esta. O una combinación de controlador + placa como esta o esta. Para transferir el código a ESP8266, creo que el código SSL tendrá que usar huellas digitales en lugar de certificados, y el código de almacenamiento no volátil deberá usar memoria EEPROM o RTC.
  3. Recientemente escuché que la placa Lolin32 es bastante decente en modo de suspensión profunda: alrededor de 100uA. No tan bueno como la placa TPL51110 (20uA según Adafruit) pero lo suficientemente bueno.
  4. OpenWeatherMap devuelve muchos más datos meteorológicos de los que estoy mostrando. Incluyendo identificadores de íconos, que requerirían encontrar íconos monocromáticos en alguna parte.

Recomendado: