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
- Arduino Uno Rev3 x 1
- 2.9-inch e-ink tri-color display x 1
- Alambre Dupont x 1 juego
- Cable USB Arduino (para alimentar Arduino y programar) x 1
- Tablero de pruebas x 1 (opcional)
- Conectores BergStick (opcional)
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.
Etiqueta de la clavija | Tipo de clavija | Descripción |
VIN | Potencia | Este 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. |
3V3 | Potencia | Esta 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. |
GND | Potencia | Clavija de conexión a tierra. |
SCK | Señal | Reloj SPI - Pin de reloj de la interfaz periférica serie |
MISO | Señal | SPI 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. |
MOSI | Señal | SPI MOSI - Master Out Slave In - Este es el pin de salida de Arduino y el pin de entrada para el controlador de la pantalla. |
ECS | Señal | Selección de chip de tinta electrónica |
D/C | Señal | Comando de datos de tinta electrónica |
SRCS | Señal | Selección de chip SRAM |
SDCS | Señal | Selección del chip de la tarjeta SD |
RST | Señal | Reinicio de la tinta electrónica |
OCUPADO | Señal | Tinta electrónica Señal de ocupado |
ENA | Señal | Clavija 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 Arduino | Conexiones del módulo de visualización de tinta electrónica |
Pin 1 del cabezal ICSP | MISO - SPI Master In Slave Out |
Pin 3 del cabezal ICSP | CLK - Pin de reloj SPI |
Pin 4 del cabezal ICSP | MOSI - SPI Master Out Slave In |
GND | GND - Conexión a tierra |
GPIO Pin 5 | SDCS - Pin de selección de chip de la tarjeta SD |
GPIO Pin 6 | SRCS - Selección de chip SRAM |
GPIO Pin 7 | BUSY - Conexión de la clavija de ocupado para la tinta electrónica |
GPIO Pin 8 | RST - 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 10 | D/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.
Paso 1: Comencemos con la 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 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
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
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
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
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
Conecta el pin BUSY de la placa de visualización al pin digital 7 del Arduino.
Paso 8: Conexión del pin SDCS
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
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
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
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".
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.
Una vez que la instalación se ha completado, puede verificarla mirando el estado "INSTALADO".
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
#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
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.
I am Puneeth. I love tinkering with open-source projects, Arduino, ESP32, Pi and more. I have worked with many different Arduino boards and currently I am exploring, Arduino powered LoRa, Power line communication and IoT.