Last Updated 10/2/1017


My wife recently gave me a version 3 ESP32-WROVER-KIT. It is really a nice piece of hardware; however, it sometimes takes some digging to find salient information related to the hardware and the software. There are a number of pages about the ESP32 and the ESP32-WROVER-KIT. I don't want to duplicate those pages, so I'll just provide links whenever possible.

The ESP-WROVER-KIT V3 Getting Started Guide provides information on version 3 of the board which includes the ESP32-WROVER processor board with 32-MBit of PSRAM.

I decided to use the native toolchain which uses the FreeRTOS real-time operating system and the C programming language. I set up the toolchain under Ubuntu running under VirtualBox on a Windows 7 system. I have two versions of the system: one is Ubuntu 14 and one is Ubuntu 16. Some of the toolchain uses Python, and the version of the Python serial code under Ubuntu 14 (pyserial) caused an error. I uninstalled pyserial using apt-get and installed a newer version using pip.

Other than the problem with pyserial, setting up the toolchain was straight forward following the steps in the Getting Started page for the ESP32.

The USB IC on the ESP32-WROVER-KIT shows up as two COM ports. The second one is the one that is used to flash the chip and over which log messages are sent. So under Ubuntu, if the device shows up as /dev/ttyUSB0 and /dev/ttyUSB1, you need to configure your project to use /dev/ttyUSB1 to flash the chip. (Under Linux, your userid must be in the dialout group to be able to use the USB ports.)

Once you know the serial port for the ESP32-WROVER-KIT, you can use any terminal program to access it and view the boot messages. This is a good way to check that the device is working right out of the box. I have used Putty under Windows and minicom under Linux. The default baud rate is 115200. I was expecting the device to show a demo showing air and water statistics on the display like I had seen on the web; however, my device just cycled through various background colors on the display. So checking the boot messages gave me an indication the board was working properly.

Although compiling and running an example program is covered in the Getting Started page, here's a quick review of the steps:

Some versions of the ESP32-WROVER-KIT require that you strap GPIO2 low in order to flash the chip; however, version 3 of the board allows the chip to be put into flash mode using the USB chip.


The controller for the LCD display depends on the version of the ESP32-WROVER-KIT. The following table shows the controllers for the first three versions of the board. This information was gleaned from the spi_master example provided with the software SDK (as of 9/25/2017 release 2.1). The example allows the user to select the LCD controller using make menuconfig.

V2, V3ST7789V

The LCD controller chip is accessed via SPI.

Github user loboris contributed an extensive TFT library for the ESP32. There is a configuration option that can be set via menuconfig that will build the library and demo for the version 3 of the ESP32-WROVER-KIT.

The demo for this program has a number of options. It can get the current time over SNTP. It draws text and shapes on the display and displays images from a virtual filesystem. To see the images, you have to build and flash the virtual filesystem: make copyfs, make flashfs.

I had a little trouble using the library in a new project until I included the EXAMPLE_ESP_WROVER_KIT in the Kconfig.projbuild file in the main directory. I deleted everything from the Kconfig.projbuild file from the demo except for the ESP-WROVER-KIT option:

menu "TFT Display DEMO Configuration"

    bool "Running on ESP-WROVER-KIT"
    default n
        Select if using the display on ESP-WROVER-KIT

Then you can use menuconfig to select the ESP-WROVER-KIT. In other words, the SPI pins have to be defined at compile time of the library.

ESP32-WROVER-KIT Case and Stand

I made a case and an ugly 3D-printed stand for the ESP32-WROVER-KIT in OpenSCAD.

Page by Benjy Cline benjy at