Interfaz del ESP8266 NodeMCU con la pantalla TFT ILI9341
Este tutorial muestra cómo conectar la placa ESP8266 NodeMCU (ESP-12E) con la pantalla TFT ILI9341.
El módulo TFT ILI9341 incluye un controlador de pantalla con el mismo nombre: ILI9341. Es una pantalla a color que usa el protocolo de interfaz SPI y requiere 4 o 5 pines de control; es de bajo costo y fácil de usar.
La resolución de esta pantalla TFT es de 240 x 320, lo que significa que tiene 76800 píxeles. Este módulo trabaja únicamente con 3.3V y no admite 5V (no es tolerante a 5V).
TFT: Thin-Film Transistor (transistor de película delgada).
SPI: Serial Peripheral Interface (interfaz serie de periféricos).
Hardware necesario para el proyecto:
- Placa NodeMCU
- Módulo de pantalla TFT ILI9341 (2.2″, 2.4″, 2.8″ …)
- Cable Micro USB (para programar y alimentar todo el circuito)
- Protoboard
- Cables puente (jumpers)
Circuito del NodeMCU con la pantalla TFT ILI9341:
El diagrama esquemático del circuito del proyecto se muestra a continuación.
La placa de la pantalla TFT ILI9341 que se muestra en el diagrama del circuito tiene 14 pines: los primeros 9 pines son para la pantalla y los otros 5 pines son para el módulo táctil.
Así, los pines de la parte de la pantalla están numerados del 1 al 9 (de izquierda a derecha): VCC (5V), GND (tierra), CS (chip select), RST (reset), DC (o D/C: data/command), MOSI (o SDI), SCK (reloj), BL (LED de retroiluminación) y MISO (o SDO).
MOSI: master-out slave-in.
SDI: serial data in.
MISO: master-in slave-out.
SDO: serial data out.
La pantalla TFT ILI9341 se conecta a la placa NodeMCU de la siguiente manera:
El pin CS se conecta a D2 (ESP8266EX GPIO4),
el pin RST se conecta a D3 (ESP8266EX GPIO0),
el pin D/C se conecta a D4 (ESP8266EX GPIO2),
el pin MOSI se conecta a D7 (ESP8266EX GPIO13),
el pin SCK se conecta a D5 (ESP8266EX GPIO14),
VCC y BL se conectan al pin 3V3,
GND se conecta al pin GND de la placa NodeMCU.
Los pines D5 (GPIO14) y D7 (GPIO13) son los pines del módulo SPI por hardware del microcontrolador ESP8266EX, correspondientes respectivamente a SCK (reloj serie) y MOSI (master-out slave-in).
Código para conectar el NodeMCU con la pantalla TFT ILI9341:
El código de Arduino que aparece abajo requiere dos librerías de Adafruit Industries:
La primera librería es un controlador para la pantalla TFT ILI9341, que se puede instalar desde el gestor de librerías del IDE de Arduino (Sketch —> Include Library —> Manage Libraries …, en el cuadro de búsqueda escribe “ili9341” y elige la de Adafruit).
La segunda librería es la librería de gráficos de Adafruit, que también se puede instalar desde el gestor de librerías del IDE de Arduino.
Las dos librerías anteriores también se pueden instalar manualmente:
Descarga ambas librerías desde los siguientes dos enlaces:
Librería TFT Adafruit ILI9341 —-> enlace directo
Librería de gráficos de Adafruit —-> enlace directo
Ve a Arduino IDE —> Sketch —> Include Library —> Add .ZIP Library … y busca el archivo .zip (descargado previamente).
Haz lo mismo con el segundo archivo.
Notas:
Las 2 librerías anteriores se incluyen en el código principal como se muestra a continuación:
| #include <Adafruit_GFX.h> // include Adafruit graphics library #include <Adafruit_ILI9341.h> // include Adafruit ILI9341 TFT library |
La pantalla TFT ILI9341 se conecta a los pines del módulo SPI por hardware del NodeMCU (reloj y datos); los otros pines, que son CS (chip select), RST (reset) y DC (data/command), se definen como se muestra a continuación:
| #define TFT_CS D2 // TFT CS pin is connected to NodeMCU pin D2 #define TFT_RST D3 // TFT RST pin is connected to NodeMCU pin D3 #define TFT_DC D4 // TFT DC pin is connected to NodeMCU pin D4 // initialize ILI9341 TFT library with hardware SPI module // SCK (CLK) —> NodeMCU pin D5 (GPIO14) // MOSI(DIN) —> NodeMCU pin D7 (GPIO13) Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST); |
Código completo de Arduino:
El siguiente código de Arduino proviene de la librería Adafruit ILI9341 (graphicstest.ino) con algunas modificaciones para que funcione con el diagrama de circuito anterior.

