Firmware para los boards Espressif

Tenemos la certeza de que el embedded software tiene que ser solido, simple y seguro. (software embebido)
Es por eso que cuando empezamos a desarrollar CALE, hicimos muchos experimentos, como comprimir la imagen binaria con Zlib y descomprimirlos en el ESP32 o dejar el Server abierto por unos minutos y poder "hackearlo" enviando un texto custom o una URL para que tener un Screenshot de una web en nuestro display.
Pero para esta versión de CALE hemos decidido enfocarnos en que consuma lo mínimo y tenga la menor cantidad de librerías posible, dejando solo lo esencial que es:

  • Una forma de bajar un bitmap de internet con un URL externo en el ESP32/ESP8266 (WiFi.h / WiFiClient.h)
  • Un interprete que lee este Bitmap y lo prepara en un Buffer que se envía usando la libreria gxEPD al display
  • Un token authorization para asegurarse de que no tienes que dejar tus eventos del Calendario privado publicos en internet (Bearer token)
La única parte que aun esta en periodo de pruebas y no incluida en esta release, es la implementación del WiFi Secure Client. La idea es que el Token viaje seguro usando encriptación SSL / TLS ( mbedTLS)


El firmware es código abierto y esta aquí:

https://github.com/martinberlin/eink-calendar/tree/cale

Como compilar el Firmware

Asumimos que tienes familiaridad con la instalación de Platformio que es un IDE para hacer upload de Firmware como hace Arduino, pero con la particularidad de mantener tus dependencias dentro del proyecto.

La configuración no es complicada. Despues de bajarlo simplemente renombra:
lib/Config/Config.h.dist a
Config.h

y copia el nombre de tu WiFi y el password.
Esta es la parte mas importante de la configuración:
    char screenUrl[] = "http://img.cale.es/bmp/USERNAME/SCREEN_ID";

    // Setting de seguridad para que solo tu Firmware pueda acceder a la imagen, dejarlo vacio si es publica (No recomendado)
    String bearer = "";




Logging de la IP interna del ESP32
Por defecto CALE guarda la IP interna ya que es útil para diferenciarla de las consultas que el mismo sitio hace cuando renderizas tus Screens. Si por alguna razón deseas desabilitar este logging solo tienes que comentar esta linea:
#define ENABLE_INTERNAL_IP_LOG




Seleccione la clase correcta para su display
Solo tiene quitar los comentarios de la parte del Config donde estan listados todos los modelos. Por ej. para un Waveshare o Good display de 7.5" y 800x480 pixels hay que quitar los comentarios de esta linea:
//#define GDEW075T7  // Antes. Sin comentarios:

#define GDEW075T7    // 7.5" b/w 800x480
Deje los otros modelos comentados o quitelos. De esta manera ya tiene la clase correcta para enviar datos a su display E-Ink.
Conecciones GPIOs para la interfaz SPI del display E-Ink
Las conecciones entre el SPI del display y el micro Espressif no son complicadas. Son 6 cables mas VIN que debe ir conectado a 3.3 volts y ground que va al GND del board. Como el E-Ink display tiene un consumo muy bajo se puede probar siempre directamente conectado al USB hasta que decida usarlo con una bateria Lipo de 3.7 volts.
    // Ejemplo de configuración par el TinyPICO ESP32:
    int8_t EINK_CS = 5;
    int8_t EINK_DC = 22;
    int8_t EINK_RST = 21;
    int8_t EINK_BUSY = 4;

    // Rotación del display. Probar con 1,2,3 va rotando en sentido del reloj:
    int8_t eink_rotation = 0;
    
Usando la libreria gxEPD el DataIn es MOSI en tu board (En ESP32 es GPIO 23)
Y clock CLK tiene que ir al GPIO 18. Compruebe el schematics aqui abajo para entender mejor las conecciones entre la interfaz SPI del E-Ink SPI y el micro Espressif.
Para leer información mas detallada chequee el fichero Readme en el repositorio.

Mantiene tus eventos privados

No recomendamos dejar las Screens definidas en este sitio publicas ya que pueden mostrar información privada de tu calendario como anotaciones de transferencias bancarias o citas con el doctor, cosas privadas que no te gustaría que esten abiertas al mundo en internet. Recomendamos usar siempre el token de seguridad en el Firmware.

Schematic para el ESP32

You can use any ESP32. The only requirement if you want your CALE to have a long battery life is that consumes less than 0.8 mA in deeepsleep mode.


Schematic para el ESP8266