ESP32使用Arduino框架驱动树莓派3.5寸LCD屏幕

使用的器件如下图所示。


使用的LCD显示屏为树莓派3.5寸显示屏,480x320分辨率,驱动为ILI9486。主控为esp32,240Mhz主频,引脚定义如上图。

esp32的开发共有三种方式:
(1)使用ESP-IDF开发,可查看官方网址获取详细教程,此种方式运行效率最高,但是开发难度较大,使用的sdk为Espressif公司提供,开源项目较少,适合嵌入式领域从业者;
(2)使用Arduino开发。Arduino并不是单纯指我们熟悉的arduino uno、arduino mega等,arduino准确的定义是一个生态,而不仅仅限于几款单片机,包括stm32也支持使用arduino开发,esp32芯片也在arduino的支持列表里,可以从这个列表中查看所有支持arduino开发的芯片。
(3)使用Micropython开发,python开发语法简单,支持交互式开发方式,和平时编写python程序相差不大,开发效率在这几种开发方式中最高,可以从Micropython官方网站获取micropython开发esp32的详细信息,此种方式优点是开发效率高,缺点是用户量少,开源库少,生态不完备。

使用arduino开发是其中笔者比较推荐的,不仅开源库丰富,而且使用C++开发。Arduino的开源库基本上可以即拿即用。

1.将esp32的板子添加到arduino ide中

首先将esp32的板子的网址输入到arduino ide中。

arduino ide -> 文件 -> 首选项 -> 附加开发板管理器网址,输入 https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

然后将esp32的板子信息添加到arduino ide中。
arduino ide -> 工具 -> 开发板 -> 开发板管理器 -> 输入esp32,安装即可。

这时候再回去开发板选项,可以看到多出了很多esp32的开发板。上图中展示的开发板,选择ESP32 Wrover Module即可。如果不知道确切的型号,选择ESP32 Wrover Module或者ESP32 Dev Module一般情况是对的。

2.安装需要使用的库,使用arduino ide的库管理安装即可

Adafruit_BusIO

Adafruit_ILI9341

Adafruit-GFX

TFT_eSPI

3.连线

笔者使用的esp32板子的引脚定义为

3.5寸树莓派480x320LCD显示屏的引脚定义为

esp32和lcd的接线为

4.修改驱动

使用的驱动包为TFT_eSPI,但是需要手动修改部分代码。

新建一个arduino项目并保存后,点击 arduino ide -> 项目 -> 显示项目文件夹,随机在文件管理器中打开项目文件夹,向上一级到所有项目的文件夹,在此文件夹中,有个library文件夹,进入此文件夹并找到TFT_eSPI文件夹进入,打开User_Setup_Select.h文件进行修改。

为什么要修改驱动的原因,在User_Setup_Select.h文件的注释中都有详细说明。

注释掉22行 #include <User_Setup.h>,因为下面有提供的更加全面的配置,不需要引入手动配置的这项。

取消注释35行#include <User_Setups/Setup11_RPi_touch_ILI9486.h> // Setup file configured for ESP32 and RPi TFT with touch,看注释说明,esp32和树莓派TFT可触摸屏幕的,正好适用于笔者的配置。

在和User_Setup_Select.h文件同级的目录中,找到User_Setups文件夹,进入并找到Setup11_RPi_touch_ILI9486.h文件,这就是上面一步取消注释,引入的文件。

打开此文件进行修改,首先注释掉开头几行,因为我们的接线与文件中的并不一样。

#define TFT_MISO 19
#define TFT_MOSI 23
#define TFT_SCLK 18
#define TFT_CS   15  // Chip select control pin
#define TFT_DC    2  // Data Command control pin
#define TFT_RST   4  // Reset pin (could connect to RST pin)
#define TOUCH_CS 22     // Chip select pin (T_CS) of touch screen

然后重新定义为

#define TOUCH_CS 18

#define TFT_MISO 2 
#define TFT_MOSI 12
#define TFT_SCLK 14
#define TFT_CS   5 
#define TFT_DC   15
#define TFT_RST  13

将接线方式与代码对应起来。

在接线方式图中,LCD显示屏的引脚定义LCD_SI/TP_SI即为这里的TFT_MOSITP_SO即为TFT_MISOLCD_RS即为TFT_DC,读者可从SPI通信方式以及LCD引脚定义图中获得更详细的解释。

5.运行demo测试

打开arduino ide,文件 -> 示例 -> TFT_eSPI -> 480x320 -> TFT_Rainbow480,打开此demo程序。设置好开发板和端口,然后上载程序。成功后的情况如下图所示。