Driver and sample code for ILI9341-based TFT displays designed for the ESP32 / ESP32-WROVER-KIT
C C++ Other Makefile
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 19 commits ahead, 1 commit behind Sermus:master.
Permalink
Failed to load latest commit information.
.github Doc updates Jan 21, 2017
demos Demo fully repeats indefinitely now Jan 30, 2017
.gitignore Doc updates Jan 21, 2017
CONTRIBUTING.md Doc updates Jan 21, 2017
README.md Readme update Jan 28, 2017

README.md

Demos for ILI9341-based TFT displays using the Espressif ESP32

See end of this file for credits and code provenance

This project uses a combination of Adafruit's Arduino ILI9341 driver (heavily modified) and their Arduino display graphics library (with a few specific fonts from there compiled in).

The original Arduino libraries above work for those using the Arduino-ESP32 project, with some pin modifications for your particular setup (e.g., the ESP-WROVER-KIT, which also controls the backlight on GPIO_5). The ILI9341 driver in particular is ESP32-aware now.

While there are no plans to convert the native SDK-based demos below to Arduino-ESP32 code, Arduino-specific demos are included here now.

Demo code (tested using the ESP-WROVER-KIT)

  • demos/arduino-esp32

    • Install Arduino-ESP32
    • Add the Adafruit_ILI9341 and the Adafruit-GFX-Library
    • Build and flash via the Arduino IDE
  • demos/esp-idf

About the SDK-based sample code:

The sample code consists of two parts:

The driver itself and needed dependencies are in /driver and /include/driver.

The driver is written in C++ which is not well supported by ESP8266 toolchain and sdk, so some dirty hack is needed to properly contstruct C++ objects. The code for this is in user/routines.cpp.

In spite of the fact that according to the datasheet max ILI9341's clock speed is 10MHz mine robustly works at up to 40MHz so I added SPI speed prescaler macro at the beginning of hspi.c. Defining it to 1 means HSPI will be clocked at 40MHz, 4 means 10 MHz.

What to demonstrate is controlled by macro UIDEMO defined at the beginning of user_main.cpp. If it's defined then the sample HVAC controller UI is shown, else, the rotating cube is rendered.

Wiring (see code for the ESP-WROVER-KIT default values)

The code uses hardware HSPI with hardware controlled CS, so the wiring shall be as follows:

ILI9341 pin --> ESP32 GPIO pin of choice
MOSI        --> GPIO13
MISO        --> n/c
CLK         --> GPIO14
CS          --> GPIO15
DC          --> GPIO2
Reset       --> pull up to 3.3V
GND         --> ground

Credits

Basis 1: https://github.com/adafruit/Adafruit_ILI9341 This is a library for the Adafruit ILI9341 display products

This library works with the Adafruit 2.8" Touch Shield V2 (SPI)
  ----> http://www.adafruit.com/products/1651
 
Check out the links above for our tutorials and wiring diagrams.
These displays use SPI to communicate, 4 or 5 pins are required
to interface (RST is optional).

Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries.
MIT license, all text above must be included in any redistribution

Basis 2: https://github.com/adafruit/Adafruit-GFX-Library This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (to handle the lower-level functions).

Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries.
BSD license, check license.txt for more information.
All text above must be included in any redistribution.

Both as modified by Sermus for the ESP8266: https://github.com/Sermus/ESP8266_Adafruit_ILI9341

Further modifications by Rudi, et. al. for the ESP32: http://esp32.com/viewtopic.php?f=18&t=636#p2907

Extended with text rendering routines from: http://www.instructables.com/id/Arduino-TFT-display-and-font-library/?ALLSTEPS

Original hspi code: https://github.com/Perfer/esp8266_ili9341