Arduino 开发
本章节包含以下部分,请按需阅读:
Arduino 入门教程
初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
- 第0节 认识 ESP32
- 第1节 安装和配置 Arduino IDE
- 第2节 Arduino 基础知识
- 第3节 数字输出/输入
- 第4节 模拟输入
- 第5节 脉冲宽度调制 (PWM)
- 第6节 串行通信 (UART)
- 第7节 I2C 通信
- 第8节 SPI 通信
- 第9节 Wi-Fi 基础用法
- 第10节 网页服务器
- 第11节 蓝牙 (Bluetooth)
- 第12节 LVGL 图形界面开发
- 第13节 综合项目
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
配置开发环境
1. 安装和配置 Arduino IDE
请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。
2. 安装库
- 在安装 Arduino 库时,通常有两种方式可供选择:在线安装 和 离线安装。若库安装要求离线安装,则必须使用提供的库文件。
- 对于大多数库,用户可以通过 Arduino 软件的在线库管理器轻松搜索并安装。然而,一些开源库或自定义库未被同步到 Arduino 库管理器中,因此无法通过在线搜索获取。在这种情况下,用户只能通过离线方式手动安装这些库。
- 可从 该处 下载 ESP32-S3-LCD-2 开发板的示例程序包。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。
| 库或文件名称 | 说明 | 版本 | 安装方式 |
|---|---|---|---|
| LVGL | 图形库 | v8.4.0 | “在线”安装 (需要复制 demos 文件夹至 src) |
| GFX_Library_for_Arduino | LCD 驱动库 | v1.5.0 | "在线 安装" |
| FastIMU | IUM 驱动库 | v1.2.6 | “在线”安装 |
| OneButton | 键驱动库 | v2.6.1 | “在线”安装 |
版本兼容性说明
LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。
3. Arduino 工程参数设置

示例程序
Arduino 示例程序位于 示例程序包 的 Arduino/examples 目录中。
| 示例程序 | 基础例程说明 | 依赖库 |
|---|---|---|
| 01_factory | 综合测试程序 | lvgl、GFX_Library_for_Arduino、FastIMU、OneButton |
| 02_gfx_helloworld | 屏幕上显示 HelloWorld | GFX_Library_for_Arduino |
| 03_sd_card_test | 测试 SD 卡 | - |
| 04_qmi8658_output | 串口打印 QMI8658 的数据 | FastIMU |
| 05_lvgl_qmi8658 | 使用 lvgl 库显示 QMI8658 的数据 | lvgl、FastIMU |
| 06_lvgl_battery | 使用 lvgl 库显示电池电压 | lvgl、GFX_Library_for_Arduino |
| 07_lvgl_brightness | 使用 lvgl 库控制和显示屏幕亮度 | lvgl、GFX_Library_for_Arduino |
| 08_lvgl_example | lvgl 示例程序 | lvgl、GFX_Library_for_Arduino |
| 09_lvgl_camera | 使用 lvgl 库显示摄像头图像 | lvgl、GFX_Library_for_Arduino |
| 10_camera_web_server | 在网页上显示摄像头图像 |
01_factory
【程序说明】
- 本示例测试 ESP32-S3-LCD-2 板载模块的功能,屏幕上将显示各个模块的信息,用户可以通过触摸屏进行页面切换
【硬件连接】
- 将板子接入电脑
- 将
OV5640摄像头插入板子上的24pin 座子(若没有也不影响其他功能使用) - 将
Micro SD 卡插入卡槽(若没有也不影响其他功能使用)

【代码分析】
-
硬件初始化
Serial.begin(115200);
bsp_i2c_init(); //初始化 I2C 总线,通常用于连接传感器、显示器等外设
bsp_lv_port_init(); //初始化 LVGL 图形库的端口,这样可以将图形输出到显示设备(如 LCD)
bsp_spi_init(); //初始化 SPI 总线,通常用于与传感器、外部存储、屏幕等设备通信 -
LVGL 图形库配置
bsp_lv_port_run(); //运行与 LVGL 相关的驱动或循环,例如刷新显示等
if (lvgl_lock(-1)) { //锁定 LVGL 资源,确保在更新 UI 时不会与其他任务冲突
lvgl_ui_init(); //初始化 UI,可能包括布局、控件等设置
lvgl_unlock(); //解锁 LVGL,允许其他任务访问 LVGL
} -
外设初始化
app_qmi8658_init(); //初始化 QMI8658 传感器(如加速度计、陀螺仪等)
app_system_init(); //进行系统级的初始化,例如时钟、内存、复位等
app_camera_init(); //初始化相机模块,准备好进行图像采集
app_wifi_init(sta_ssid, sta_pass); //初始化 Wi-Fi 模块,连接到指定的 Wi-Fi 网络 -
应用层任务运行
app_qmi8658_run(); //启动 QMI8658 传感器相关的任务,例如数据采集、处理等
app_system_run(); //启动系统任务,确保系统功能正常运行
app_camera_run(); //启动相机相关的任务,通常是获取图像数据并进行处理或传输
app_wifi_run(); //启动 Wi-Fi 相关任务,例如连接管理、数据传输等
【运行效果】
-
单击 BOOT 按键是下,双击 BOOT 按键是上,长按 BOOT 按键是确定
-
System 界面