ESP32-S3-LCD-1.28
| ||||||||||||||||||||
| ||||||||||||||||||||
产品介绍
产品简介
ESP32-S3-LCD-1.28 是一款微雪 (Waveshare) 设计的低成本,高性能的微控制器开发板。其中板载了 1.28 英寸 LCD 屏、锂电池充电芯片、六轴传感器(三轴加速度计与三轴陀螺仪)等外设,采用的 ESP32-S3R2 是集成了低功耗 Wi-Fi 和 BLE5.0 的系统级芯片(SoC),此外还具有外部 16MB Flash 和 2MB PSRAM。Soc内部的硬件加密加速器、RNG、HMAC 和数字签名 (Digital Signature) 模块,可以满足物联网的安全要求。多种低功耗工作状态满足在物联网 (IoT)、移动设备、可穿戴电子设备、智能家居等应用场景的功耗需求。
产品特性
- 搭载高性能 Xtensa® 32 位 LX7 双核处理器,主频高达 240 MHz
- 支持 2.4 GHz Wi-Fi (802.11 b/g/n) 和 Bluetooth® 5 (LE),板载天线
- 内置 512KB 的 SRAM 和 384KB ROM,叠封 2MB PSRAM 和外接 16MB Flash
- 采用 Type-C 接口,紧跟时代潮流,无需纠结正反插
- 板载 1.28 英寸 LCD 屏,圆形 IPS 面板,240×240 分辨率,65K 彩色
- 板载 QMI8658 六轴惯性测量单元 (3 轴加速度、3 轴陀螺仪),可检测运动姿态
- 板载 3.7V 锂电池充放电接口和引出大部分 GPIO 排座
- 支持灵活时钟,模块电源单独设置等精准控制,实现多场景低功耗模式
- 集成 USB 串口全速控制器,GPIO 可灵活配置各种外设功能
资源简介
1、ESP32-S3R2 2、W25Q128JVSIQ 3、QMI8658 4、ME6217C33M5G 5、CH343P 6、ETA6096 |
8、BOOT 按键 9、RESET 按键 10、MX1.25 电池接口 11、USB Type-C 接口 12、2.4GHz 陶瓷天线
|
接口介绍
- Type-C 接口 : 开发板使用CH343P芯片进行USB转UART,连接ESP32-S3的UART_TXD(GPIO43)和UART_RXD(GPIO44),用于固件烧录和日志打印。搭配自动下载电路,接上Type-C线缆后可直接下载固件。
- 1.27mm 间距排座 : 开发板引出大部分 GPIO 用于外部连接,GPIO可配置成I2C、SPI等外设功能,VSYS可直接输入5V为开发板供电。
- LCD 接口 :开发板板载4线 SPI 通信的 1.28 寸屏幕,SPI速率可提升至80MHz,触摸使用 I2C 通信(开发板使用 GPIO2 控制背光亮度,另外引出两个 MOS 管控制开关触点在电池座子周边,分别连接GPIO4,GPIO5,可自行焊接小电流设备如震动电机等,详情请查阅原理图)
- I2C 接口 : ESP32-S3提供多路硬件I2C,目前使用GPIO6(SDA)和GPIO7(SCL)引脚做I2C总线。挂载板上QMI8658六轴惯性测量单元和LCD触摸控制芯片,详情请查阅原理图
- MX1.25连接器 : 开发板的 GPIO1 用于测量电池电压引脚,电池电压使用 200K 和 100K 串联分压连接到 GPIO1, ESP32-S3 系列有 2 路 12Bit SAR ADC 测量单元,源码中转换成电压公式是 3.3 / (1<<12) * 3 * AD_Value
ESP32-S3R2 | LCD | MX1.25 | QMI8658 | other |
GPIO0 | BOOT0 | |||
GPIO1 | ADC | |||
GPIO5 | TP_INT | |||
GPIO6 | SDA | |||
GPIO7 | SCL | |||
GPIO8 | LCD_DC | |||
GPIO9 | LCD_CS | |||
GPIO10 | LCD_CLK | |||
GPIO11 | LCD_MOSI | |||
GPIO12 | LCD_RST | |||
GPIO40 | LCD_BL | |||
GPIO47 | INT1 | |||
GPIO48 | INT2 |
产品尺寸
产品参数
LCD参数 | |||
显示芯片 | GC9A01A | 显示接口 | SPI |
分辨率 | 240(H)RGB x 240(V) | 显示尺寸 | Φ32.4mm |
显示面板 | IPS | 像素大小 | 0.135(H)x0.135(V)mm |
IMU参数 | |||
传感器名称 | QMI8658 | ||
加速度计特性 | 分辨率:16 位 量程 (可选):±2、±4、±8、±16g | ||
陀螺仪特性 | 分辨率:16 位 量程 (可选):±16、±32、±64、±128、±256、±512、 ±1024、±2048°/sec |
版本说明
![]() |
![]() |
ESP32-S3-LCD-1.28 不带触控 |
ESP32-S3-Touch-LCD-1.28 带触控 |
使用说明
ESP32-S3-LCD-1.28 目前提供 Arduino IDE 和 MicroPython 两种开发工具和框架,提供了灵活的开发选择,你可以根据项目需求和个人习惯选择适合的开发工具。
开发工具介绍
Arduino 和 MicroPython因其简单易学、上手快,非常适合初学者和非专业人士。
器件准备
- ESP32-S3-LCD-1.28 x1
- USB线 type A公口 转 Type C公口 x1
Arduino开发
本章介绍 Arduino 环境搭建,包括 Arduino IDE、ESP32板管理、相关库的安装,程序编译下载及示例程序测试,帮助用户掌握开发板,便于二次开发。
环境搭建
下载和安装 Arduino IDE
- 点击访问Arduino官网,选择对应的系统和系统位数下载。
- 运行安装程序,全部默认安装即可。
安装 ESP32 开发板
- ESP32相关主板在Arduino IDE使用,须先安装“esp32 by Espressif Systems”库。
- 根据板安装要求进行安装,一般推荐“在线安装”, 若在线安装失败,则使用“离线安装”。
- 安装教程,详见:Arduino 板管理教程
- “esp32 by Espressif Systems”开发板离线软件包,点击此处下载:esp32_package_2.0.12_arduino离线包
板名称 | 板安装要求 | 版本号要求 |
---|---|---|
esp32 by Espressif Systems | “离线”安装/“在线”安装 | 2.0.12 |
安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件
对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。 - 库安装教程,详见:Arduino 库管理教程
- ESP32-S3-LCD-1.28 库文件存放于示例程序中,点击此处跳转:ESP32-S3-LCD-1.28示例程序
库名称 | 说明 | 版本 | 库安装要求 |
---|---|---|---|
LVGL | 图形库 | v8.3.10 | “离线”安装 |
TFT_eSPI | LCD库 | v2.5.34 | “离线”安装 |
TFT_eSPI_Setups | 自定义库 | -- | “离线”安装 |
运行第一个 Arduino 程序
示例程序
示例程序 | 基础例程说明 | 依赖库 |
---|---|---|
ESP32-S3-LCD-1.28-Test | 测试板载设备功能 | --- |
LVGL_Arduino | 显示 LVGL benchmark,music 等 | LVGL,TFT_eSPI ,TFT_eSPI_Setups |
LVGL_Chinese_Font | 显示 LVGL 内置的 1000 个常用中文字体 | LVGL,TFT_eSPI ,TFT_eSPI_Setups |
LVGL_Chinese_7500_Char | 显示 LVGL内置的 7500 个中文字体 | LVGL,TFT_eSPI ,TFT_eSPI_Setups |
Arduino 工程参数设置
ESP32-S3-LCD-1.28-Test
【程序说明】
- 该程序用于测试屏幕、六轴传感器、BAT的使用
【代码分析】
- setup()
- 进行串口初始化,设置波特率为 115200
- 初始化外部 PSRAM(如果可用),并为图像分配内存空间
- 初始化 LCD 显示屏,包括设置为水平显示模式、清屏为白色、创建新的图像缓存并设置相关参数
- 进行一系列图形绘制操作,包括绘制点、线、矩形、圆形、数字和字符串等,并将图像显示在 LCD 上
- 读取 QMI8658 传感器的数据并显示在 LCD 上,每次先使用
Paint_Clear(WHITE)
清除图像缓存,然后重新绘制图形并显示传感器数据和 ADC 转换后的电压值
LVGL_Arduino
【程序说明】
- 该程序用于显示 LVGL benchmark,music 等
【硬件连接】
- 将开发板接入电脑
【代码分析】
- void my_disp_flush():将 LVGL中的图像数据刷新到 TFT 显示屏上。它接收 LVGL 显示驱动结构体指针、显示区域和颜色数据指针作为参数
- 首先计算要刷新区域的宽度
w
和高度h
,通过获取传入的显示区域的坐标差值并加 1 得到 - 接着调用
tft.startWrite()
开始向 TFT 显示屏写入数据,然后使用tft.setAddrWindow
设置 TFT 显示屏的显示区域为传入的area
指定的区域 - 之后调用
tft.pushColors
将颜色数据(指向color_p
的颜色数据转换为uint16_t
类型)推送到 TFT 显示屏上进行显示,其中参数w * h
表示要推送的像素数量,true
表示在推送完成后进行数据传输的结束操作 - 最后调用
lv_disp_flush_ready(disp_drv)
通知 LVGL 刷新完成,以便 LVGL 可以进行后续的操作
- 首先计算要刷新区域的宽度
- setup():负责初始化串口通信、LVGL 库、TFT 显示屏以及设置 LVGL 的显示驱动等
- 首先初始化串口通信,设置波特率为 115200,打印 LVGL 和 Arduino 的版本信息
- 初始化 LVGL 库,初始化 TFT 显示屏,并设置为横向显示、翻转,初始化 LVGL 的显示缓冲区和显示驱动,将
my_disp_flush
函数注册为 LVGL 的刷新回调函数 - 创建一个 LVGL 的图像对象,并设置图像源为
test1_240_240_4
- 创建两个定时器,一个用于定时增加 LVGL 的时间滴答,另一个用于定时执行
example_increase_reboot
函数 - 最后打印 “Setup done” 表示设置完成
LVGL_Chinese_Font
【程序说明】
- 该程序用于显示 LVGL 内置的 1000 个常用中文字体
【硬件连接】
- 将开发板接入电脑
【代码分析】
- my_disp_flush()
- 这个函数是 LVGL 显示驱动的刷新回调函数
- 根据传入的显示区域参数area计算出要刷新的宽度w和高度h
- 调用 TFT 显示屏的相关函数
tft.startWrite()
、tft.setAddrWindow()
和tft.pushColors()
来将 LVGL 中的颜色数据color_p写入到 TFT 显示屏的特定区域 - 最后调用
lv_disp_flush_ready()
通知 LVGL 刷新完成
LVGL_Chinese_7500_Char
【程序说明】
- 该程序用于显示 LVGL 的 7500 个中文字体,字体文件较大,下载固件时间比较长
【硬件连接】
- 将开发板接入电脑
【代码分析】
- setup()
- 首先开启串口通信,设置波特率为 115200,为可能的串口调试做准备
- 初始化 LVGL(Light and Versatile Graphics Library),包括设置版本信息输出、注册日志打印回调函数(如果启用了日志功能)
- 初始化 TFT 显示屏
tft
和触摸传感器touch
,包括设置显示屏的旋转方向和可能的触摸校准数据 - 初始化 LVGL 的显示缓冲区
draw_buf
和显示驱动disp_drv
,设置显示分辨率、刷新回调函数等,并将显示驱动注册到 LVGL - 初始化输入设备驱动
indev_drv
,设置为指针类型并指定触摸读取回调函数,然后注册输入设备驱动 - 创建一个标签
label
,设置文本字体、文本内容(支持颜色重绘),并将其居中显示在屏幕上 - 可以选择性地调用 LVGL 的示例或演示函数,展示不同的功能效果
- loop()
- 调用
lv_timer_handler()
函数,让 LVGL 图形库处理其内部的定时任务和事件 - 使用
delay(5)
函数引入一个小的延迟,避免程序过度占用 CPU 资源
- 调用
MicroPython开发
本节围绕 MicroPython 开发环境搭建展开,主要涉及烧录固件以及安装和 Thonny。对于安装 Thonny 部分,详细阐述了其安装步骤与使用说明,为开发者构建 MicroPython 开发环境提供全面且清晰的指导。
环境搭建
下载和安装 Thonny
- 打开Thonny官网的下载页面,选择对应系统和系统位数进行下载
- 选择对应的系统和版本,以windows64位为例,鼠标要移动到windows处,才会显示对应的信息,点击下载安装
- 其余默认安装即可
烧录固件
- 目前开发板使用定制的固件进行开发,固件在ESP32-S3-LCD-1.28 示例程序中,固件合并成单个文件,注意下载地址是0x00位置
- 固件路径:
...\ESP32-S3-LCD-1.28-Demo\Firmware\MicroPython-bin
- 烧录固件教程,详见:Flash固件的烧录与擦除教程
- factory-bin文件夹下的bin文件为测试板载功能的文件,在此处无需烧录
Thonny使用说明
示例程序
示例程序 | 基础例程说明 |
---|---|
alien.py | 随机显示 “alien.jpg” 图像 |
bitarray.py | 创建并展示多个随机位置的 “吃豆人” 精灵动画 |
hello.py | 随机显示不同颜色的 “Hello!” 文本,并且可以通过循环切换不同的旋转角度 |
hershey.py | 循环展示不同的问候语 |
jpg.py | 轮流显示两张 JPEG 图片 |
noto_fonts.py | 展示三种不同字体的名称 |
pbitmap.py | 显示一个预编译的位图图像 |
rotation.py | 循环展示不同旋转值下的文本显示效果 |
scroll.py | 在显示屏上实现字符的平滑滚动显示 |
上传例程及特殊例程
bitarray.py
【程序说明】
- 该程序是在特定显示屏上创建并展示多个随机位置的 “吃豆人” 精灵动画
【硬件连接】
- 将开发板接入电脑
【代码分析】
- pacman类的move方法:负责更新 “吃豆人” 精灵的状态,实现其在屏幕上的移动和动画效果
- 首先增加精灵的当前步数,然后通过取模操作确保步数在规定的
SPRITE_STEPS
范围内循环,对应精灵的不同动画帧或状态 - 接着在水平方向上移动精灵的位置,当精灵的水平位置达到特定值 302 时,重置步数,是为了触发特定动画状态或行为。最后,通过取模操作确保精灵的水平位置在一定范围内循环,避免超出显示区域
- 首先增加精灵的当前步数,然后通过取模操作确保步数在规定的
- tft.map_bitarray_to_rgb565
tft.map_bitarray_to_rgb565
函数根据精灵的当前步数从SPRITE_BITMAPS
中选取位图数据,将其转换为 RGB565 格式的缓冲区sprite
。同时,指定了精灵的宽度以及前景色和背景色
- tft.blit_buffer
tft.blit_buffer
函数将转换后的缓冲区绘制到显示屏上特定的位置,该位置由精灵的当前坐标确定,并指定了精灵的宽度和高度
Flash固件的烧录与擦除
- 当前示例程序有提供测试固件,可通过直接烧录测试固件来测试板载设备功能正常与否
- bin文件路径:
...\ESP32-S3-LCD-1.28-Demo\Firmware\factory-bin
资料
原理图
工程图纸
示例程序
数据手册
ESP32-S3
- ESP32-S3技术参考手册(中文)
- ESP32-S3系列芯片技术规格书(中文)
- ESP32-S3 Series Datasheet(英文)
- ESP32-S3 Technical Reference Manua(英文)
- ESP32-S3技术文档(中文)
- ESP32-S3技术文档(英文)
其他器件
软件工具
Arduino
Thonny
固件烧录工具
其他资料链接
FAQ
- 点击复位按键1秒以上,等待 PC 端重新识别到设备后再次下载
- 可长按BOOT按键,同时按下RESET,然后松开RESET,再松开BOOT按键,此时模块可进入下载模式,可解决大部分无法下载的问题。
这种情况可能是由于 Flash 空白导致 USB 口不稳定,可长按BOOT按键,同时按下RESET,然后松开RESET,再松开BOOT按键,此时模块可进入下载模式烧录固件(程序)即可解决该情况。
- 首次编译很慢属于正常情况,耐心等待即可
- 部分AppData文件夹是默认隐藏的,可以设置为显示。
- 英文系统:资源管理器->View->勾选“Hidden items”
- 中文系统:文件资源管理器->查看->显示->勾选“隐藏的项目”
- 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 驱动程序后重新烧录。
GC9A01A
MX1.25 2P 连接器,可用于接入 3.7V电池,支持充放电
技术支持
联系人:周工
EMAIL:2850151197@qq.com
QQ:2850151197
微信:扫下方二维码添加