ESP32-S3-Touch-AMOLED-1.43 使用教程

产品介绍

产品简介

ESP32-S3-Touch-AMOLED-1.43 是一款由微雪 (Waveshare) 设计的低成本、高性能、扩展性强的ESP32_GUI开发板。其支持 2.4GHz WiFi 和 BLE 5,集成大容量 Flash 和 PSRAM,板载RTC、IMU、 1.43 英寸AMOLED屏,外露UART、GPIO、I2C、USB总线接口,同时我们还提供大量例程和技术支持,可供你快速开发自动化、物联网产品。

产品特性

  • 搭载高性能 Xtensa 32 位 LX7 双核处理器,主频高达 240MHz
  • 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth 5 (LE),板载天线
  • 内置 512KB SRAM 和 384KB ROM,叠封 16MB Flash 和 8MB PSRAM
  • 板载 1.43 英寸宽电容触摸屏,466 × 466 分辨率,16.7M 彩色
  • AMOLED屏显示使用 QSPI接口、触摸使用 I2C接口,电容触控、支持中断输出
  • 板载 RTC、IMU、SD卡座;引出I2C、UART总线,同时外露USB_N、USB_P;使之满足各种场合

资源简介

1、ESP32-S3R8

2、16MB Flash

3、QMI8658
   IMU 姿态芯片

4、PCF85063
   RTC 时钟芯片

5、3.7V 锂电池接口

6、Micro SD 卡槽(背面)

7、RTC 独立电源接口

8、I2C接口

9、充电指示灯

10、Type-C 接口

11、电源指示灯

12、UART 接口

13、BOOT 按键

14、Reset 按键

15、IPEX1 外部天线接口(须改焊点)

16、陶瓷天线(默认)

产品尺寸

不带外壳版

带外壳版

AMOLED参数

ESP32-S3-Touch-AMOLED-1.43-details-size22.jpg

使用说明

ESP32-S3-Touch-AMOLED-1.43 目前提供 Arduino IDE 和 ESP-IDF 两种开发工具和框架,提供了灵活的开发选择,你可以根据项目需求和个人习惯选择适合的开发工具。

开发工具介绍

器件准备

  • ESP32-S3-Touch-AMOLED-1.43 x1
  • SD卡(容量小于64G) x1
  • USB线 type A公口 转 Type C公口 x1

在操作前,建议先浏览目录,快速了解文档结构。为顺利操作,请仔细阅读FAQ,提前了解可能的问题。文档中所有资料均提供超链接,方便下载。

Arduino开发

本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。 

环境搭建

下载和安装 Arduino IDE

  • 点击访问Arduino官网,选择对应的系统和系统位数下载。
  • 运行安装程序,全部默认安装即可。
环境设置是在 Windows 10 系统下进行,Linux和Mac用户可访问Arduino-esp32环境搭建参考

安装 ESP32 开发板

  • ESP32相关主板在Arduino IDE使用,须先安装“esp32 by Espressif Systems”开发板的软件包
  • 根据板安装要求进行安装,一般推荐“在线安装”, 若在线安装失败,则使用“离线安装
  • 安装教程

在线安装

下文以安装“ESP32-3.0.2”为例,若安装其他开发板或版本号,操作步骤类推。
  • 板管理URL用于索引指定平台的开发板信息,在 Arduino IDE菜单栏中选择 文件 -> 偏好设置
  • 添加对应的板管理链接,点击该按键
  • 在第一个空白处,添加下文
https://espressif.github.io/arduino-esp32/package_esp32_index.json
  • 保存设置
  • 安装开发板

①. 在侧边栏选择“BOARDS MANAGER”(板管理);
②. 在搜索框中输入要安装的板名称“ESP32”;
③. 在方框处选择 版本号
④. 点击“INSTALL”(安装)。

  • 等待下载
  • Arduino-esp32下载完成
  • ESP32-S3-Touch-AMOLED-1.43 所需开发板安装说明
板名称板安装要求版本号要求
esp32 by Espressif Systems“离线”安装/“在线”安装≥3.1.0

安装库

  • 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装若库安装要求离线安装,则必须使用提供的库文件
    对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
  • 库安装教程

在线安装

下文以安装“Adafruit NeoMatrix”库为例,若安装其他库,操作步骤类推。
  • 打开 Arduino IDE

①. 在侧边栏选择“LIBRARY MANAGER”(库管理);
②. 在搜索框中输入要安装的库名称,如“Adafruit NeoMatrix”;
③. 在方框处选择库版本,若无特殊要求,默认最新版即可,点击“INSTALL”(安装)。 

在安装库时,若提示须安装其他依赖库,请点击“安装所有”。否则,可能会导致某些示例程序或程序无法正常编译。
  • 点击安装后,

①. 软件窗口会显示库的安装进度;
②. 安装完成后,库的状态会变成“x.x.x版本 installed”。

特别注意:如果需要卸载库,则找到对应的库,点击圆框处的“REMOVE”,等待卸载完成即可。
  • ESP32-S3-Touch-AMOLED-1.43 库文件路径:
    ..\ESP32-S3-Touch-AMOLED-1.43-Demo\Arduino\libraries
  • ESP32-S3-Touch-AMOLED-1.43 库文件安装说明
库名称说明版本库安装要求
LVGL图形库v8.4.0“离线”安装

示例程序

  • ESP32-S3-Touch-AMOLED-1.43 示例程序
示例程序基础例程说明依赖库
01_ADC读取系统当前的电压值-
02_I2C_PCF85063打印RTC芯片的实时时间-
03_I2C_QMI8658打印IMU发出来的原始数据-
04_SD_Card加载显示SD卡的信息-
05_WIFI_AP设置为AP模式,可获取接入设备的IP地址-
06_WIFI_STA设置为STA模式,可接入WiFi获取IP地址-
07_LVGL_TestLVGL例程LVGL

Arduino 工程参数设置

ESP32-S3-Touch-AMOLED-1.43-demo-07.png


01_ADC

【程序说明】

  • 通过GPIO连接的模拟量电压经过ADC转换成数字量,然后通过计算得到实际的系统电压,打印到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • adc_bsp_init(void) :初始化 ADC1,包括创建 ADC 单次触发单元并配置 ADC1 的通道 3
  • adc_get_value(float *value,int *data) :读取 ADC1 通道 3 的值,并根据参考电压和分辨率计算出对应的电压值存储在传入的指针指向的位置,如果读取失败则存储 0
  • adc_example(void* parmeter):初始化 ADC1 后,创建一个ADC任务,该任务每隔 1 秒读取一次ADC的值,通过读取的ADC原始值计算出系统的电压

【运行效果】


  • 程序编译下载完成,打开串口监控可以看到打印输出的ADC的值和电压,如下图所示:
  • ADC采样值是1900左右,系统电压是4.9V左右,若想具体分析,可以查看原理图

02_I2C_PCF85063

【程序说明】

  • 通过I2C协议,分别对PCF85063芯片进行初始化、设置时间、间隔读取时间,然后打印到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • void PCF85063_example(void* parmeter) :创建一个RTC任务来实现RTC功能,每隔10秒读取一次RTC芯片的时钟,然后输出到终端。

【运行效果】


  • 打开串口监控,可以看到打印输出的RTC时间,如下图所示:
  • 数据每隔 10 秒输出一次,若需修改或参考,可直接进入 pcf85063 源文件进行操作

03_I2C_QMI8658

【程序说明】

  • 通过I2C协议,对QMI8658芯片进行初始化设置,然后每隔1秒读取对应的姿态信息打印到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • qmi8658c_example(void* parmeter) :该函数初始化 QMI8658 设备,在无限循环中读取并打印加速度计、陀螺仪数据和温度数据,每 1 秒执行一次,旋转板子的过程中陀螺仪数据随着旋转越快而越大,加速度计会根据当前的位置计算出对应的加速度。

【运行效果】


  • 打开串口监控,可以看到打印输出的IMU发出来的原始数据(欧拉角需要自己转换),如下图所示:
  • 数据每隔 1 秒输出一次,若需修改或参考,可直接进入 qmi 源文件进行操作

04_SD_Card

【程序说明】

  • 通过宏定义选择SPI或者SDMMC方向驱动SD卡,成功挂载SD卡之后把SD卡信息打印到终端

【硬件连接】


  • 板子装上SD卡(必须先插入容量小于64G的SD卡),使用USB线把板子接入电脑

【代码分析】


  • 可以根据用户选择来实现SD卡的通信协议,在sd_card_bsp.cpp源文件下找到宏定义SD_Read_Mode,宏定义默认使用SDMMC通信协议,可以修改为SDSPI
#define SD_Read_Mode USER_SPI

【运行效果】


  • 点击串口监控设备,可以看到输出的SD卡的信息,practical_size是SD卡的实际容量
想了解更多关于Arduino ESP32库关于SD卡相关的使用?可访问:Arduino ESP32 库 SD 使用

05_WIFI_AP

【程序说明】

  • 把开发板作为一个AP等待STA终端的连接

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • 该代码在 ESP32 上初始化串口通信,然后创建一个名为 “bsp_esp_demo”、密码为 “waveshare” 的 WiFi 接入点,程序运行时无其他持续操作在循环中执行。
const char* ssid     = "bsp_esp_demo";
const char* password = "waveshare"; 

WiFi.softAP(ssid,password);

【运行效果】


  • 使用手机或其它设备连接WIFI,WiFi名称为 “bsp_esp_demo”、密码为 “waveshare”

06_WIFI_STA

【程序说明】

  • 把开发板作为一个终端角色,可以连接环境可用的AP,成功连接之后打印获取到的IP信息到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码修改】


该工程实现芯片处于STA模式下连接WIFI而且获取到IP地址,在编译、下载固件之前,需要修改一些代码,此处修改成所处环境可用的WIFI路由器名字和密码

【代码分析】


  • wifi_init(void) :该函数用于初始化 ESP32 的 Wi-Fi 连接。它将 ESP32 设置为 Wi-Fi 站点模式,尝试连接到指定的 Wi-Fi 网络(通过ssidpassword)。如果连接成功,打印本地 IP 地址;如果在一定时间内(20 * 500 毫秒)未能连接成功,则打印连接失败信息。同时,函数还可以设置自动连接和自动重连功能

【运行效果】


  • 芯片处于STA模式下成功连接WIFI,并且点击串口监控设备,可以看到获取到的IP地址

07_LVGL_Test

【程序说明】

  • 通过移植LVGL,在屏幕上实现一些多功能的GUI界面

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


针对 LVGL,lvgl_conf.h 是其配置文件,下面对一些常用内容进行说明,还有一些LVGL的demo、文件系统都可以在conf配置文件里面设置

/*Color depth: 1 (1 byte per pixel), 8 (RGB332), 16 (RGB565), 32 (ARGB8888)*/
#define LV_COLOR_DEPTH 16//Color depth, a macro definition that must be concerned with porting LVGL


#define LV_MEM_CUSTOM 0
#if LV_MEM_CUSTOM == 0
    /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
    #define LV_MEM_SIZE (48U * 1024U)          /*[bytes]*/

    /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
    #define LV_MEM_ADR 0     /*0: unused*/
    /*Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc*/
    #if LV_MEM_ADR == 0
        #undef LV_MEM_POOL_INCLUDE
        #undef LV_MEM_POOL_ALLOC
    #endif

#else       /*LV_MEM_CUSTOM*/
    #define LV_MEM_CUSTOM_INCLUDE <stdlib.h>   /*Header for the dynamic memory function*/
    #define LV_MEM_CUSTOM_ALLOC   malloc
    #define LV_MEM_CUSTOM_FREE    free
    #define LV_MEM_CUSTOM_REALLOC realloc
#endif     /*LV_MEM_CUSTOM*/
//The above section is mainly for LVGL memory allocation, 
//which defaults to lv_mem_alloc() versus lv_mem_free().

【代码修改】


  • 显示芯片本身不支持硬件旋转,如果需要旋转显示可以通过软件实现,可以在 lcd_bsp.c 文件中找到#define EXAMPLE_Rotate_90宏定义然后取消注释该宏定义即可,软件旋转显示性能是不如硬件旋转的
#define EXAMPLE_Rotate_90

【运行效果】


  • LVGL例程对RAM和ROM要求比较高,所以必须要按照环境搭建的要求来配置程序烧录完成


LVGL更多学习及使用可参考LVGL官方文档

ESP-IDF开发

本章介绍 ESP-IDF 环境搭建,包括 Visual Studio、Espressif IDF插件的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。 

环境搭建

下载和安装 Visual Studio

  • 打开VScode官网的下载页面,选择对应系统和系统位数进行下载
  • 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项

    • 第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    • 第三项开启后,选择打开方式时,可以直接选择VSCode
环境设置是在 Windows 10 系统下进行,Linux和Mac用户可访问ESP-IDF环境搭建参考

安装Espressif IDF插件

  • 一般推荐“在线安装”, 若因网络因素无法在线安装,则使用“离线安装”。
  • 安装Espressif IDF插件教程

在线安装

  • 打开VSCode,点击左侧的扩展,在扩展搜索并安装C/C++,ESP-IDF。可根据需求安装其他扩展
  • 使用快捷键 F1 ,输入
esp-idf: configure esp-idf extension
  • 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)
  • 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
  • 选择想要的ESP-IDF版本,一般根据开发板要求选择支持的版本,若无要求推荐用最新的release version
  • 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址。
  • 配置完成后,点击 install 进行下载
  • 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可
  • 安装完成后,会进入以下界面,说明安装完成
注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径。


示例程序

  • ESP32-S3-Touch-AMOLED-1.43 示例程序
示例程序基础例程说明依赖库
01_ADC_Test读取系统当前的电压值-
02_I2C_PCF85063打印RTC芯片的实时时间-
03_I2C_QMI8658打印IMU发出来的原始数据-
04_SD_Card加载显示SD卡的信息-
05_WIFI_AP设置为AP模式,可获取接入设备的IP地址-
06_WIFI_STA设置为STA模式,可接入WiFi获取IP地址-
07_LVGL_TestLVGL例程LVGL
08_FactoryProgram综合性工程LVGL


01_ADC_Test

【程序说明】

  • 通过GPIO连接的模拟量电压经过ADC转换成数字量,然后通过计算得到实际的系统电压,打印到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • adc_bsp_init(void) :初始化 ADC1,包括创建 ADC 单次触发单元并配置 ADC1 的通道 3
  • adc_get_value(float *value,int *data) :读取 ADC1 通道 3 的值,并根据参考电压和分辨率计算出对应的电压值存储在传入的指针指向的位置,如果读取失败则存储 0
  • adc_example(void* parmeter):初始化 ADC1 后,创建一个ADC任务,该任务每隔 1 秒读取一次ADC的值,通过读取的ADC原始值计算出系统的电压

【运行效果】


  • 程序烧录完成后,打开监控设备可以看到,输出ADC的值和电压
  • ADC采样值是1960左右,系统电压是4.92V左右,若想具体分析,可以查看原理图

02_I2C_PCF85063

【程序说明】

  • 通过I2C协议,分别对PCF85063芯片进行初始化、设置时间、间隔读取时间,然后打印到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • void PCF85063_example(void* parmeter) :创建一个RTC任务来实现RTC功能,每隔10秒读取一次RTC芯片的时钟,然后输出到终端

【运行效果】


  • 烧录完成之后打开监控设备,可以看到打印输出的RTC时间
  • 数据每隔 10 秒输出一次,若需修改或参考,可直接进入 pcf85063 源文件进行操作

03_I2C_QMI8658

【程序说明】

  • 通过I2C协议,对QMI8658芯片进行初始化设置,然后每隔1秒读取对应的姿态信息打印到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • qmi8658c_example(void* parmeter) :该函数初始化 QMI8658 设备,在无限循环中读取并打印加速度计、陀螺仪数据和温度数据,每 1 秒执行一次,旋转板子的过程中陀螺仪数据随着旋转越快而越大,加速度计会根据当前的位置计算出对应的加速度。

【运行效果】


程序烧录完成后,设备的运行效果如下:

  • 点击串口监控设备,可以看到IMU发出来的原始数据(欧拉角需要自己转换)
  • 可以看到,每隔1秒输出一次,如果需要修改或者参考,可以直接进去qmi源文件修改

04_SD_Card

【硬件连接】


  • 板子装上SD卡(必须先插入容量小于64G的SD卡),使用USB线把板子接入电脑

【程序说明】

  • 通过宏定义选择SPI或者SDMMC方向驱动SD卡,成功挂载SD卡之后把SD卡信息打印到终端

【代码分析】


  • 可以根据用户选择来实现SD卡的通信协议,在sd_card_bsp.cpp源文件下找到宏定义SD_Read_Mode,宏定义默认使用SDMMC通信协议,可以修改为SDSPI
#define SD_Read_Mode USER_SPI

【运行效果】


  • 点击串口监控设备,可以看到输出的SD卡的信息,practical_size是SD卡的实际容量
想了解更多关于Arduino ESP32库关于SD卡相关的使用?可访问:Arduino ESP32 库 SD 使用



05_WIFI_AP

【程序说明】

  • 把开发板作为一个AP等待STA终端的连接

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • wifi_init_softap(void) :该函数用于初始化 ESP32 的 Wi-Fi 软接入点,包括设置网络接口、注册事件处理函数、配置软 AP 参数并启动软 AP

【运行效果】


  • 芯片处于AP模式下,使用手机成功连接WIFI并且串口会打印连接设备的MACA地址以及分配给该设备的IP地址

06_WIFI_STA

【程序说明】

  • 把开发板作为一个终端角色,可以连接环境可用的AP,成功连接之后打印获取到的IP信息到终端

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】


  • espwifi_Init(void) :此函数用于在 ESP32 上进行 WiFi 初始化。它依次初始化非易失性存储、TCP/IP 栈、创建默认事件循环和默认 WiFi 站点网络接口,使用默认配置初始化 WiFi,注册事件处理函数以处理 WiFi 和 IP 相关事件,设置 WiFi 连接参数并启动 WiFi。

【代码修改】


该工程实现芯片处于STA模式下连接WIFI而且获取到IP地址,在编译、下载固件之前,需要修改一些代码,此处修改成所处环境可用的WIFI路由器名字和密码
ESP32-S3-AMOLED-1.91-demo-18.png

【运行效果】


程序烧录完成后,设备的运行效果如下:

  • 芯片处于STA模式下成功连接WIFI并且获取到IP地址

07_LVGL_Test

【程序说明】

  • 通过移植LVGL,在屏幕上实现一些多功能的GUI界面

【硬件连接】


  • 使用USB线把板子接入电脑

【代码分析】

  • 显示芯片本身不支持硬件旋转,如果需要旋转显示可以通过软件实现,可以在main文件找到#define EXAMPLE_Rotate_90宏定义然后取消注释该宏定义即可,软件旋转显示性能是不如硬件旋转的
#define EXAMPLE_Rotate_90

【运行效果】


  • LVGL例程对RAM和ROM要求比较高,所以必须要按照环境搭建的要求来配置程序烧录完成
LVGL更多学习及使用可参考LVGL官方文档

08_FactoryProgram

【硬件连接】


  • 使用USB线把板子接入电脑(显示效果默认是软件旋转90°,如果不需要可以在main文件找到#define EXAMPLE_Rotate_90宏定义然后注释掉即可)

【运行效果】


  • 通过左右滑动进行切换页面,优先每隔1.5秒显示RGB颜色,可以通过这个观察屏幕有没有问题,颜色为红蓝绿
  • 显示完RGB之后,将会自动跳转到时钟界面
  • 通过左滑动界面,可以看到该页面是一些板载硬件信息
  • 再次左滑界面,可以看到该界面是功能界面
  • 可以点击WIFI标志,进入到WIFI测试界面,然后点击Scan按钮进行扫描周围WIFI
  • 点击exit返回上一界面然后点击BLE标志,进入到BLE测试界面,再点击Scan按钮进行扫描周围BLE

资料

原理图

示例程序

数据手册

ESP32-S3

其他器件

软件工具

Arduino

VScode

其他资料链接

FAQ

问题:模块下载程序后,重新下载,有时会出现无法连接串口,或者烧录失败的情况?

  • 可长按BOOT按键,同时按下RESET,然后松开RESET,再松开BOOT按键,此时模块可进入下载模式,可解决大部分无法下载的问题。


问题: VSCode环境搭建失败?

  • 优先考虑网络问题,试着切换别得网络


问题:Arduino程序编译报错?

  • 检查Arduino IDE -> Tools有没有正确配置


问题: 显示图片滑动的时候比较卡?

  • 修改LVGL显示缓存为整个屏幕大小
  • 在配置选项里面修改LV_IMG_CACHE_DEF_SIZE改到1000可以得到一定优化


问题: 显示不了中文?

  • 基本的中文可以显示,如果是生僻字显示不了
  • 可以把需要的生僻字通过转码软件转码,然后加入到工程字库里面


问题: 程序首次编译超级慢怎么处理?

  • 首次编译很慢属于正常情况,耐心等待即可


问题: ESP-IDF烧录成功串口显示“waiting for download...”怎么处理?

  • 若开发板有复位键则按下复位键;若没有复位键,请重新上电


问题: 找不到AppData文件夹怎么处理?

  • 部分AppData文件夹是默认隐藏的,可以设置为显示。
  • 英文系统:资源管理器->View->勾选“Hidden items”
  • 中文系统:文件资源管理器->查看->显示->勾选“隐藏的项目”


问题: 怎么查看自己使用的COM口?

  • Windows系统:

①通过设备管理器查看: 按下Windows + R键打开“运行”对话框; 输入devmgmt.msc并按回车键打开设备管理器; 展开“端口(COM和LPT)”部分,这里会列出所有的COM端口及其当前状态。
②使用命令提示符查看: 打开命令提示符(CMD); 输入mode命令,这将显示所有COM端口的状态信息。
③查看硬件连接: 如果你已经连接了外部设备到COM口,通常设备会占用一个端口号,可以通过查看连接的硬件来确定使用的是哪个端口。

  • Linux系统:

①使用dmesg命令查看: 打开终端。
②使用ls命令查看: 输入ls /dev/ttyS*或ls /dev/ttyUSB*来列出所有的串口设备。
③使用setserial命令查看: 输入setserial -g /dev/ttyS*来查看所有串口设备的配置信息。


问题:在使用 MAC 设备时,程序烧录失败?


问题:如何使用SquareLine Studio设计界面


技术支持

周一-周五(9:30-6:30)周六(9:30-5:30)

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841