Skip to Content

Conexión de Arduino a una pantalla de tinta electrónica

Conexión de Arduino a una pantalla de tinta electrónica

En este artículo, te llevaré a través de una guía paso a paso para empezar con la pantalla de tinta electrónica.

Al final de este artículo, podrás controlar una pantalla de tinta electrónica con Arduino y mostrar imágenes y texto en la pantalla.

Las pantallas de tinta electrónica tienen aplicaciones en muchos ámbitos. Se pueden encontrar en las tiendas que muestran el nombre de la pieza y el precio, en los accesorios para deportes al aire libre, como los velocímetros de las bicicletas, los relojes, etc. 

El lector electrónico Kindle de Amazon es un ejemplo que proporciona una experiencia de lectura muy fluida y te ofrece semanas de duración de la batería.

Al final de este artículo, conocerás las ventajas del lector de tinta electrónica, el principio básico de funcionamiento, la guía de conexión paso a paso de Arduino y la pantalla de tinta electrónica, el código de ejemplo de Arduino y una lista de preguntas frecuentes. 

Empecemos.

Componentes necesarios para construir el proyecto Arduino y la pantalla de tinta electrónica

Componentes de hardware

Software

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

Fundamentos de la pantalla de tinta electrónica

Principio de funcionamiento básico de la pantalla de tinta electrónica

Las siglas E-ink significan tinta electrónica. La idea se basa en una tecnología en la que una fina película de micropartículas se alinea en función de la carga.

Puede mostrar el negro o el blanco en esa pequeña celda.

La orientación sólo puede cambiarse cuando se aplica la corriente en sentido inverso.

Dado que la energía siempre es necesaria para borrar la pantalla, puedes mantener la imagen/nombre en la pantalla todo el tiempo que quieras sin preocuparte por el consumo de energía.

La pantalla de tinta electrónica permanece igual durante semanas o incluso meses sin alimentación. 

La pantalla parece más realista a los ojos. La pantalla mejora a medida que te desplazas a una zona bien iluminada (igual que la experiencia de leer un libro en una zona más oscura y más iluminada).

Las aplicaciones de la pantalla de tinta electrónica

La pantalla de tinta electrónica no necesita la energía para retener el contenido en la pantalla.

De ahí que encuentre su aplicación en muchos ámbitos en los que se quiera mostrar un contenido que no cambie con frecuencia.

A continuación se enumeran algunas de las aplicaciones.

Pantallas exteriores - Pantallas de precios de combustible, pantallas de rutas de autobús, información sobre los monumentos, información meteorológica, etc. Las pantallas no necesitan luz durante el día y no consumen energía mientras la pantalla está estática. Ayuda a ahorrar energía y también proporciona una pantalla muy legible incluso a plena luz del sol.

Etiquetas para estantes - Los precios no cambian muy a menudo. Por ello, las pantallas de tinta electrónica son una excelente opción de etiqueta de precio reprogramable. Las etiquetas pueden mostrar información sobre el precio, el nombre del producto o ambos.

Automóviles - Podómetro para bicicletas, pantallas en el salpicadero, sistema de información meteorológica, visualización de la próxima parada en vehículos de largo recorrido, información sobre la reserva de los asientos del tren, etc. 

Las conexiones de la pantalla de tinta electrónica

Los detalles de los pines de la pantalla de tinta electrónica se indican en la siguiente tabla. Asegúrese de comprar la pantalla de tinta electrónica, que viene con la hoja de datos.

Let’s get started. Below is the Pinout of the display module where you can see the pin connections and the labels.

las conexiones de las clavijas y las etiquetas
Etiqueta de la clavijaTipo de clavijaDescripción
VINPotenciaEste es el pin de alimentación de entrada. Aquí puedes suministrar 5 V desde el Arduino. Hay un regulador de tensión lineal de 3,3 V en el módulo de pantalla. Este pin sirve como entrada para el regulador. 
3V3PotenciaEsta es la salida del regulador de voltaje. Los 3,3 V alimentan el IC del controlador de la pantalla.
También puedes utilizarla para alimentar otros módulos, pero asegúrate de que el consumo de corriente se mantiene por debajo de la tensión nominal del regulador.
GNDPotenciaClavija de conexión a tierra. 
SCKSeñalReloj SPI - Pin de reloj de la interfaz periférica serie
MISOSeñalSPI MISO - Pin de entrada y salida del Arduino. Este es el pin de entrada del controlador de la pantalla y el pin de salida del Arduino.
MOSISeñalSPI MOSI - Master Out Slave In - Este es el pin de salida de Arduino y el pin de entrada para el controlador de la pantalla.
ECSSeñalSelección de chip de tinta electrónica
D/CSeñalComando de datos de tinta electrónica
SRCSSeñalSelección de chip SRAM
SDCSSeñalSelección del chip de la tarjeta SD
RSTSeñalReinicio de la tinta electrónica
OCUPADOSeñalTinta electrónica Señal de ocupado
ENASeñalClavija de activación. Se conecta al pin Enable del regulador de 3,3 V. Puedes poner el pin en Low para ahorrar energía cuando sea necesario.
Cuando desactiva el controlador de la pantalla, la RAM de la pantalla y la tarjeta SD (si está presente) se desactivarán. Tienes que reiniciar la placa de nuevo. 

Tenga en cuenta que el controlador de pantalla que hemos elegido aquí tiene un IC SRAM. La SRAM se puede utilizar para almacenar las memorias intermedias de los cuadros. Dependiendo del tamaño de la pantalla, la memoria necesaria variará. 

Para una pantalla más grande, la RAM interna presente en el Arduino puede convertirse rápidamente en un cuello de botella.

Por ello, muchas de las placas de visualización tendrán un chip SRAM. 

Puede preparar la imagen/contenido en la SRAM. Una vez listo, puede empezar a cargar el controlador de pantalla con los datos de la SRAM.

La mayoría de las bibliotecas de visualización disponibles ya ofrecen este soporte. 

En la siguiente tabla, encontrará una tabla de búsqueda para el diagrama de conexión. Puede utilizar esta tabla como referencia para otros módulos de tinta electrónica similares.

La mayoría de los pines son configurables. Tienes que asegurarte de que también actualizas el código para reflejar los cambios de asignación de pines que has realizado.

Conexiones de los pines de ArduinoConexiones del módulo de visualización de tinta electrónica
Pin 1 del cabezal ICSPMISO - SPI Master In Slave Out
Pin 3 del cabezal ICSPCLK - Pin de reloj SPI
Pin 4 del cabezal ICSPMOSI - SPI Master Out Slave In
GND GND - Conexión a tierra
GPIO Pin 5SDCS - Pin de selección de chip de la tarjeta SD
GPIO Pin 6SRCS - Selección de chip SRAM
GPIO Pin 7BUSY - Conexión de la clavija de ocupado para la tinta electrónica
GPIO Pin 8RST - Pin de reinicio del controlador de tinta electrónica
GPIO Pin 9 ECS - Pin de selección de chip de tinta electrónica
GPIO Pin 10D/C - Pin de comando de datos

En la siguiente sección, encontrarás la guía paso a paso para completar las conexiones necesarias entre Arduino y el módulo E-ink.

¿Cómo conectar la pantalla de tinta electrónica al Arduino UNO?

Los detalles necesarios para completar el Arduino y la pantalla de tinta electrónica se le dan en esta sección.

La conexión final debe ser similar a la imagen siguiente.

Cómo conectar la pantalla de tinta electrónica al Arduino UNO

Paso 1: Comencemos con la conexión a tierra

Conexión a tierra

Es una buena práctica comenzar las conexiones con los pines de tierra (GND) primero.

El pin GND de la pantalla va al pin GND del Arduino. Puedes elegir cualquiera de los pines GND disponibles.

Puedes seleccionar cualquiera de los pines GND disponibles para completar la conexión.

Paso 2: Conectar el pin de 5V

Conecta el pin de 5V

Conecta el pin de 5 V del Arduino al pin VIN del módulo de visualización.

El pin de 5 V del Arduino es directamente la alimentación del USB (cuando el Arduino se alimenta del cable USB conectado a un ordenador). 

Paso 3: Conectar la clavija ECS

Conectar la clavija ECS

ECS es el pin de selección de chip del controlador de la pantalla de tinta electrónica. Conéctalo al pin 9 del Arduino UNO. 

Paso 4: Conexión D/C entre la pantalla y el Arduino

Conexión entre la pantalla y el Arduino

Conecta el pin 10 del Arduino UNO al pin D/C del módulo de pantalla de tinta electrónica. D/C es el dato/comando de la pantalla de tinta electrónica. 

Paso 5: Conexión del pin SRCS

Conexión del pin SRCS

El pin SRCS es un pin de selección de chip de la SRAM. Conecta SRCS al pin 6 del Arduino

Paso 6: Conexión de la clavija de reinicio

Conexión de la clavija de reinicio

El pin RST es el pin de reinicio del controlador de la pantalla de tinta electrónica. Conecta el pin RST al pin digital 8 del Arduino UNO.

Paso 7: Conexión del pin BUSY

Conexión del pin BUSY

Conecta el pin BUSY de la placa de visualización al pin digital 7 del Arduino.

Paso 8: Conexión del pin SDCS

SDCS Conexión de pines

El pin SDCS es el pin de selección de chip para la tarjeta SD en el módulo de pantalla. Conecta el pin SDCS al pin digital 5 del Arduino. 

Paso 9: Conexión ICSP SCK

Conexión ICSP SCK

El ICSP SCK está presente en un conector de 6 pines separado. Conecte el pin SCK del módulo de visualización al pin ICSP_SCK del Arduino.

Paso 10: Conexión ICSP MISO

Conexión ICSP MISO

El ICSP MISO está presente en la posición del pin 1 del conector de 6 pines. Conecta el pin MISO del módulo de visualización al pin ICSP_MISO del Arduino.

Paso 11: Conexión ICSP MOSI

Conexión ICSP MOSI

Enhorabuena. Esto completa las conexiones de hardware necesarias.

Ejemplo de código Arduino para el proyecto de pantalla de tinta electrónica

En esta sección, instalarás las librerías necesarias y ejecutarás un código de ejemplo para asegurarte de que las conexiones y la configuración están bien. Empecemos. 

Instale las bibliotecas para empezar. Vaya a Herramientas → Gestionar bibliotecas. Busque "EPD" en el cuadro de búsqueda.

Una vez que encuentre la biblioteca EPD de Adafruit, haga clic en el botón "Instalar".

Ejemplo de código Arduino para el proyecto de pantalla de tinta electrónica

Es posible que se le pida la opción de instalar todas las bibliotecas dependientes. Haga clic en "Instalar todo" para instalar todas las bibliotecas vinculadas y las que faltan de una sola vez.

Instalar todas las bibliotecas enlazadas y faltantes de una sola vez

Una vez que la instalación se ha completado, puede verificarla mirando el estado "INSTALADO".

la instalación está completa

Esto completa la configuración de la biblioteca requerida. Ahora veremos el código de ejemplo.

El código completo de Arduino

Siga la siguiente imagen para cargar una imagen de ejemplo de las bibliotecas que ha instalado en la sección anterior.

El código completo de Arduino

El Código

#include "Adafruit_ThinkInk.h"
 
#define EPD_DC      10 // can be any pin, but required!
#define EPD_CS      9  // can be any pin, but required!
#define EPD_BUSY    7  // can set to -1 to not use a pin (will wait a fixed delay)
#define SRAM_CS     6  // can set to -1 to not use a pin (uses a lot of RAM!)
#define EPD_RESET   8  // can set to -1 and share with chip Reset (can't deep sleep)
 
// 1.54" 152x152 Tricolor EPD with ILI0373 chipset
//ThinkInk_154_Tricolor_Z17 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 1.54" 152x152 Tricolor EPD with SSD1680 chipset
//ThinkInk_154_Tricolor_RW display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 1.54" 200x200 Tricolor EPD with SSD1681 chipset
//ThinkInk_154_Tricolor_Z90 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 2.13" Tricolor EPD with SSD1680 chipset
//ThinkInk_213_Tricolor_RW display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 2.13" Tricolor EPD with IL0373 chipset
//ThinkInk_213_Tricolor_Z16 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 2.7" Tricolor Featherwing or Breakout with IL91874 chipset
//ThinkInk_270_Tricolor_C44 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 2.7" Tricolor Featherwing or Breakout with EK79686 chipset
//ThinkInk_270_Tricolor_Z70 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
// 2.9" Tricolor Featherwing or Breakout with IL0373 chipset
ThinkInk_290_Tricolor_Z10 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
// 2.9" Tricolor Featherwing or Breakout with UC8151D chipset
//ThinkInk_290_Tricolor_Z13 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
// 2.9" Tricolor Featherwing or Breakout with SSD1680 chipset and negative offset
//ThinkInk_290_Tricolor_Z94 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
//ThinkInk_420_Tricolor_RW display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
//ThinkInk_420_Tricolor_Z21 display(EPD_DC, EPD_RESET, EPD_CS, SRAM_CS, EPD_BUSY);
 
 
void setup() {
  Serial.begin(115200);
  while (!Serial) { delay(10); }
  Serial.println("Adafruit EPD full update test in red/black/white");
  display.begin(THINKINK_TRICOLOR);
}
 
void loop() {
  Serial.println("Banner demo");
  display.clearBuffer();
  display.setTextSize(3);
  display.setCursor((display.width() - 144)/2, (display.height() - 24)/2);
  display.setTextColor(EPD_BLACK);
  display.print("Tri");  
  display.setTextColor(EPD_RED);
  display.print("Color");  
  display.display();
 
  delay(15000);
 
  Serial.println("Color rectangle demo");
  display.clearBuffer();
  display.fillRect(display.width()/3, 0, display.width()/3, display.height(), EPD_BLACK);
  display.fillRect((display.width()*2)/3, 0, display.width()/3, display.height(), EPD_RED);
  display.display();
 
  delay(15000);
 
  Serial.println("Text demo");
  // large block of text
  display.clearBuffer();
  display.setTextSize(1);
  testdrawtext("Lorem ipsum dolor sit amet, consectetur adipiscing elit.", EPD_BLACK);
  display.display();
 
  delay(15000);
 
  display.clearBuffer();
  for (int16_t i=0; i<display.width(); i+=4) {
    display.drawLine(0, 0, i, display.height()-1, EPD_BLACK);
  }
 
  for (int16_t i=0; i<display.height(); i+=4) {
    display.drawLine(display.width()-1, 0, 0, i, EPD_RED);
  }
  display.display();
 
  delay(15000);  
}
 
 
void testdrawtext(const char *text, uint16_t color) {
  display.setCursor(0, 0);
  display.setTextColor(color);
  display.setTextWrap(true);
  display.print(text);
}

El siguiente fragmento de código muestra la asignación de pines. El mapeo de pines puede ser actualizado en base a sus conexiones reales de hardware.

#define EPD_DC 10 // ¡puede ser cualquier pin, pero es necesario!
#define EPD_CS 9 // puede ser cualquier pin, ¡pero es necesario!
#define EPD_BUSY 7 // puede establecerse a -1 para no usar un pin (esperará un retardo fijo)
#define SRAM_CS 6 // puede establecerse a -1 para no usar un pin (¡utiliza mucha RAM!)
#define EPD_RESET 8 // puede establecerse a -1 y compartir con el Reset del chip (no puede dormir profundamente)

La salida del programa Tri color tendrá un aspecto similar al siguiente

La salida del programa Tri color

Siguiendo todos los pasos cuidadosamente, deberías tener la salida lista. Puedes juguetear con el código para cambiar el comportamiento del mismo.

Preguntas frecuentes sobre el Arduino y la pantalla de tinta electrónica

He recopilado una lista de las preguntas más frecuentes sobre las pantallas de tinta electrónica y su uso con Arduino. Espero que estas respuestas te ayuden a encontrar las respuestas rápidamente.

Si tiene alguna pregunta que no haya sido respondida en esta sección, por favor, publíquela en la sección de comentarios.

Estaré encantado de responderle. 

1) ¿Cómo funciona una pantalla de tinta electrónica?

La pantalla de tinta electrónica contiene una capa líquida con determinadas micropartículas flotantes. Las partículas aparecen de color oscuro o blanco en función de la corriente que haga fluir a través de ellas.

Dependiendo de la dirección del flujo de la corriente, las partículas oscuras o las blancas se depositan en la parte superior.

Esta es la idea básica que subyace a las pantallas de tinta electrónica de gran eficiencia energética. 

Para una descripción detallada, consulte la sección anterior, donde podrá encontrar más información sobre la tecnología de funcionamiento de la tinta electrónica y las últimas actualizaciones.

2) ¿Cómo se utiliza Arduino con una pantalla de tinta electrónica?

Las pantallas de tinta electrónica vienen con los controladores incorporados. Puede utilizar la comunicación SPI o I2C para transferir los datos al IC controlador de la pantalla de tinta electrónica.

Este artículo presenta un proyecto de ejemplo en el que se puede controlar una pantalla de tinta electrónica utilizando Arduino. 

3) ¿Qué ventajas tiene la pantalla de tinta electrónica sobre la TFT?

Las pantallas de tinta electrónica no necesitan la energía para retener la información en la pantalla.

Prácticamente puedes desconectar el programa del sistema, y aun así, la pantalla mantendrá los datos durante años.

Las pantallas de tinta electrónica son más fáciles de leer en exteriores.

Las pantallas actúan como un libro. Por eso, con una buena iluminación, los ojos no se cansan.

4) ¿Cuáles son las desventajas de las pantallas de tinta electrónica respecto a las convencionales?

Las pantallas de tinta electrónica aparecen apagadas. Se necesita una luz externa para leer la pantalla. La frecuencia de actualización de la pantalla de tinta electrónica es lenta.

El tiempo de actualización de los contenidos en pantalla será en segundos.

Por lo tanto, no se puede utilizar la pantalla en aplicaciones en las que se necesita editar el contenido más rápidamente. 

Además, no se puede obtener una pantalla de tinta electrónica totalmente coloreada. Por lo tanto, la apariencia es pobre y poco atractiva.  

5) ¿Cuánto dura la pantalla de tinta electrónica?

Depende del módulo. La mayoría de las tintas electrónicas pueden mantener la pantalla sin alimentación externa durante meses.

Por ejemplo, tengo un Kindle que no he tocado en dos años. La pantalla muestra el icono de batería baja. Tampoco veo que se desvanezca.

Dependiendo de las condiciones en las que se encuentre, la pantalla puede durar más de un año.

Conclusión

Con esto concluye el artículo sobre la pantalla de tinta electrónica. Espero que este artículo haya dado información útil sobre las aplicaciones y los ejemplos de proyectos de tinta electrónica de Arduino.

Estoy deseando que me cuentes el próximo proyecto de pantalla de tinta electrónica que vas a construir. 

Hace poco vi un gran tablero de tiempos de autobús hecho con pantalla de tinta electrónica. La pantalla era fácil de leer.

¿No es asombroso que la pantalla tenga una anchura de unas 15 pulgadas y que, sin embargo, no necesite energía para mostrar la información?

Tengo una pantalla gráfica de tinta electrónica que utilizo para mostrar mi nombre.

Creo que el artículo ha sido fácil de seguir. Si tienes alguna pregunta, publícala en la sección de comentarios. Si tienes sugerencias sobre el artículo que te gustaría hacer, menciónalas en los comentarios. 

¿Sobre qué temas le gustaría leer a continuación? Sus sugerencias me ayudarán a ofrecer el contenido adecuado en el momento oportuno.

Por favor, comparte este artículo con tus compañeros entusiastas de Arduino.