ESP32-S3-LCD-1.69inch 使用教程

说明

产品简介

ESP32-S3-LCD-1.69是一款微雪(Waveshare)设计的低成本,高性能的微控制器开发板。在较小的板型下,板载了1.69英寸电容LCD屏、锂电池充电芯片、六轴传感器(三轴加速度计与三轴陀螺仪)、RTC等外设,方便开发并嵌入应用到产品中。

产品特性

  • 搭载高性能 Xtensa® 32位LX7双核处理器,主频高达 240 MHz
  • 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth® 5 (LE),板载天线
  • 内置 512KB 的 SRAM 和 384KB ROM,叠封 8MB PSRAM 和外接 16MB Flash
  • 板载 1.69 英寸电容 LCD 屏,240×280 分辨率,262K 彩色,能清晰地显示彩色图片

硬件说明

  • 板载贴片天线,使用0R短接可选外部天线,如图中⑩
  • 板载 PCF85063 RTC时钟芯片、RTC电池接口,方便计时定时功能,如图中③、⑨
  • 板载 QMI8658C 六轴惯性测量单元(IMU),包含一个3轴陀螺仪和一个3轴加速度计,如图中④
  • 板载 ETA6098 高效锂电池充电芯片、M1.25 锂电池接口,方便接入锂电池充放电长期使用,如图中⑤、⑥
  • 板载蜂鸣器可做听觉外设使用,如图中⑧
  • 板载TYPE-C接口,连接ESP32-S3 USB,用于烧录程序和日志打印,如图中⑦
  • 板载BOOT、RST功能按钮,方便复位进入下载模式,如图中⑫、⑬
  • 板载功能电路按钮,可自定义为上电按钮,可识别单击、双击、长按动作,如图中⑪



引脚定义

在使用ESP32-S3-LCD-1.69板上预留的GPIO端子时需注意接线颜色和对应功能

避免接线惯性导致烧坏开发板


产品尺寸


环境搭建

ESP-IDF下使用

以下开发系统默认为Windows,推荐使用VSCode插件进行开发

ESP-IDF

  • 推荐使用VSC插件进行开发

使用VSCode插件开发

安装VSCode
  1. 打开VSCode官网的下载页面,选择对应系统和系统位数进行下载
  2. 运行安装包后,其余均可以默认安装,但这里为了后续的体验建议,建议在此处勾选框中的1、2、3项
    】第一二项开启后,可以直接通过鼠标右键文件或者目录打开VSCode,可以提高后续的使用体验.
    】第三项开启后,选择打开方式时,可以直接选择VSCode

安装Espressif IDF插件

  • 注:当前插件最新版本为V1.6.0,为体验一致,用户可以选择与我们一样的版本
  1. 打开VSCode,使用快捷键Shift+Ctrl+X,进入插件管理器
  2. 在搜索栏中,输入Espressif IDF,选择对应的插件点击 install即可
  3. 使用快捷键F1,输入
    esp-idf: configure esp-idf extension

  4. 选择express(此教程针对第一次安装的用户,故只讲述初次的通用安装教程)
  5. 选择下载服务器,我们推荐国内用户使用Espressif作为你的下载服务器
  6. 选择想要现在的ESP-IDF版本,我们选择最新的V5.0.1(注意ESP-IDF从V4.4版本后才开始支持ESP32-S3)
  7. 下面两个分别为ESP-IDF容器安装地址和ESP-IDF所需的工具安装地址,
    】注意:如果之前有安装过ESP-IDF,或者失败过的,请务必彻底删除文件或者创建全新的无中文路径
  8. 配置完成后,点击 install 进行下载
  9. 进入下载页面,其会自动安装对应工具与环境,稍等片刻即可

使用官方例程

  • ESP官方为我们提供大量的例程,并且写详细的使用方法与效果,点击此处查看
创建例程
  1. 使用快捷键F1,输入
    esp-idf:show examples projects


  2. 选择你当前的IDF版本


  3. 以Hello world例程为例

  4. ①选择对应例程
  5. ②其readme会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
  6. ③点击创建例程
  7. 选择放置例程的路径,要求无例程同名文件夹


修改COM口
  1. 右下角显示使用对应的COM口,点击可以修改对应COM口
  2. 我们的CH343的COM为COM5,所以我们选择COM5,请根据自己CH343对应COM口进行选择
  3. 选择使用的工程或者例程
  4. 然后我们的COM口就修改好了


修改驱动对象
  1. 右下角第二项显示的是使用的驱动对象,点击可以修改对应驱动对象
  2. 选择使用的工程或者例程
  3. 点击后需要稍等片刻
  4. 选择我们需要驱动的对象,也就是我们的主芯片为ESP32S3


  5. 选择openocd的路径,这里对我们没有影响,所以我们随便选择一个即可
其余状态栏简介


  • ①SDK 配置编辑器,ESP-IDF很多功能与配置可以在其内修改
  • ②全部清理,清空所有编译文件,
  • ③编译
  • ④当前下载方式,默认为UART
  • ⑤烧录当前固件,请在编译后进行
  • ⑥打开串口监视器,用于查看串口信息
  • ⑦编译,烧录,打开串口监视器 一体按键(调试时最常用)


编译、烧录、串口监视
  1. 点击我们之前介绍的 编译,烧录,打开串口监视器按键
  2. 编译可能需要较长时间才能完成,尤其是在第一次编译时。
    • 在此过程中,ESP-IDF可能会占用大量CPU资源,因此可能会导致系统卡顿。
  3. 因为我们使用的是CH343为USB转串口芯片,并且板载自动下载电路,无需手动操作即可自动下载
  4. 下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示10S后重启

Arduino下使用

  • 如果没用使用过arduino-esp32的基础建议仔细阅读官方文档,点击此处查看

安装Arduino IDE

  1. 打开官网软件下载页面,选择对应的系统和系统位数下载
  2. 可以选择直接下载,也可以选择捐赠并下载
  3. 运行安装程序,全部默认安装即可

在线安装arduino-esp32

  1. 打开首选项 File ->Preferences
  2. 添加对应的板管理链接,点击该按键


  3. 在第一个空白处,添加下文
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  4. 保存设置
  5. 打开板管理器并搜索输入ESP32,选择版本2.0.11


  6. 等待下载
  7. arduino-esp32下载完成

离线安装arduino-esp32

  1. 离线包(提取码:1r4i)
    • 提取码:1r4i
  2. 将压缩包解压缩
  3. 将解压文件放在对应用户的arduino器件包目录
    C:\Users\{用户名}\AppData\Local\Arduino15\packages\
  4. 关闭全部arduino窗口,确保arduino关闭
  5. 打开arduino,并打开板管理器,看到esp32-arduino已经安装即可

使用Arduino例程

  1. 选择例程,这里我们选择获取芯片ID的例程


  2. 选择我们的板子为 ESP32S3 Dev Moudule


  3. 选择我们的端口号,这里我们选择CH343的COM5

  4. 点击下载按键,此时会自动编译并下载
  5. 下载完成
  6. 打开串口监视器(右上角小圆圈)
  7. 看到循环输出的芯片ID


特别说明:本产品使用USB连接Type-C,如若出现不能输出芯片信息的情况,请将代码中Serial.print字样的函数修改为printf函数直接输出到USB上

屏幕说明

LCD及其控制器

  • 该款LCD使用的内置控制器为 ST7789V2,是一款 240 × RGB × 320 像素的 LCD 控制器,而本 LCD 本身的像素为 240(H) × RGB × 280(V),因此LCD的内部RAM并未完全使用。
  • 该LCD支持12位,16位以及18位每像素的输入颜色格式,即RGB444,RGB565,RGB666三种颜色格式,本例程使用RGB565的颜色格式,这也是常用的RGB格式
  • LCD使用四线SPI通信接口,这样可以大大的节省GPIO口,同时通信是速度也会比较快
  • 本模组分辨率是240(H) × RGB × 280(V),但是因为四角是圆角的(尺寸见参数),因此部分输入图像会有部分不显示。

SPI通信协议



注:与传统的SPI协议不同的地方是:由于是只需要显示,故而将从机发往主机的数据线进行了隐藏,该表格详见Datasheet Page 66。
】RESX为复位,模块上电时拉低,通常情况下置1;
】CSX为从机片选, 仅当CS为低电平时,芯片才会被使能。
】D/CX为芯片的数据/命令控制引脚,当DC = 0时写命令,当DC = 1时写数据
】SDA为传输的数据,即RGB数据;
】SCL为SPI通信时钟。
】对于SPI通信而言,数据是有传输时序的,即时钟相位(CPHA)与时钟极性(CPOL)的组合:
】CPHA的高低决定串行同步时钟是在第一时钟跳变沿还是第二个时钟跳变沿数据被采集,当CPHA = 0,在第一个跳变沿进行数据采集;
】CPOL的高低决定串行同步时钟的空闲状态电平,CPOL = 0,为低电平。
】从图中可以看出,当SCLK第一个下降沿时开始传输数据,一个时钟周期传输8bit数据,使用SPI0,按位传输,高位在前,低位在后。

示例例程

库安装

使用LVGL库时需要修改对应屏幕的配置,建议直接使用示例例程中的lib库 将库文件夹复制到 C:\Users\xxxx\Documents\Arduino\libraries 目录下,xxxx 代表您电脑上用户名,注意甄别



ST7789V2点屏示例

Arduino

提供的lib库已经在lib\TFT_eSPI_Setups\Setup208_ST7789.h中设定参数

打开Arduino IDE,点击File->Examples->TFT_eSPI(在最底部的自定义库中)->Test and diagnostics->Colour_Test例程 编译烧录即可



ESP-IDF

提供ESP-IDF驱动ST7789V2的示例esp-idf-st7789

所需ESP-IDF版本为ESP-IDF V5.x   


Arduino_LVGL

LVGL(Light and Versatile Graphics Library)是一个免费且开源的图形库,专为嵌入式系统设计,非常适合在资源有限的设备上使用,如ESP32-S3。在示例程序中可以使用LVGL_Arduino快速使用验证屏幕效果   

LVGL组件的使用

使用LVGL框架开发时可以依据lvgl官方文档提供的组件说明来调用组件 LVGL8.3 Documents

下面是Arduino IDE的LVGL实际组件调研案例    

自定义按钮PWR_Key

此功能按钮是为解决外设按钮功能少而设计,工作原理如:

按下PWR之后可以使电池供电,此时系统启动,系统应定义GPIO35持续输出高电平来维持上电效果,此时松开PWR不会断电。PWR此时的功能即可以拉低GPIO36,系统检测GPIO36按下、连按和长按,可以自定义关机控制操作,如长按模式下系统设置GPIO35低电平断开电池供电,即可完成多功能按钮使用。


分压式测电压

板上预留分压测电压,使用GPIO1读取模拟量值并通过分压公式得出电池电压


PCF85063 RTC时钟芯片

使用PCF85063 RTC时钟可方便使用定时任务、提供精确的时间跟踪以及低功耗唤醒等功能。

通过示例程序可以简单使用RTC功能


QMI8658 六轴IMU

使用QMI8658可应用姿态检测、步态分析以及摔倒检测等应用,嵌入本开发板可应用到智慧穿戴中。

通过示例程序可以验证多轴加速度变化,可通过视图仪直面观测到数据。


蜂鸣器功能

可通过结合RTC实现定时任务,定时闹钟等应用


FAQ

问题:一、我使用Arduino IDE搭建开发环境,为何出现编译通过了,代码也烧录进去了,但是不显示?

请检查esp32硬件库版本是否为2.0.11版本,确认版本后,选择对应开发板编译烧录即可,注意通过Tools选择对应开发板后不会出现Zigbee字样的选项,否则则是esp32硬件库环境未生效


问题:二、板子太烫了,是什么原因?怎么解决?

1.当发现板子发烫时请先确保拉低GPIO33,将蜂鸣器引脚拉低,否则无源蜂鸣器就相当一个电阻一直耗电,导致LDO电流压力大发烫
2.如果您还使用了WiFi/蓝牙功能,发烫是不能避免的,ESP32-S3开启无线功能相关功耗会增大,导致发热
3.不建议开启PSRAM功能,如果开启后,在ESP-IDF和其他场景下可能不会正常拉低GPIO33或是影响显示,此时我们建议拆除蜂鸣器电阻断开其功能
4.在Arduino IDE环境下,开启PSRAM、使用外部Flash,拉低GPIO33时,还是会造成不小的热量,建议使用低功耗方案的玩法


问题:三、我该怎么移植提供的lib库?或者怎么自己开发LCD屏幕?如何驱动?

本产品所使用的LCD屏幕显示芯片为ST7789V2,触摸芯片为CST816T,我们提供的lib中有两芯片的驱动,显示驱动可以参考TFT_eSPI使能,触摸驱动请参阅Arduino_LVGL示例例程


技术支持

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

手机:13434470212

邮箱:services04@spotpear.cn

QQ:202004841