跳到主要内容

Arduino 开发

本章节包含以下部分,请按需阅读:

Arduino 入门教程

初次接触 Arduino ESP32 开发,想要快速上手?我们为您准备了一套通用的 入门教程

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置开发环境

1. 安装和配置 Arduino IDE

请参考 安装和配置 Arduino IDE 教程 下载安装 Arduino IDE 并添加 ESP32 支持。

2. 安装库

要运行示例,需要安装对应的库。

可从 此链接 下载 ESP32-S3-Touch-LCD-5 开发板的示例程序包(当前示例包与 4.3B 版本共享)。包内的 Arduino\libraries 目录已包含本教程所需的全部库文件。

库或文件名称说明版本安装方式
ESP32_Display_PanelESP32 微控制器的特定显示面板控制库v0.1.4 以上可“在线”或“离线”安装
ESP32_IO_ExpanderESP32 的 I/O 扩展库v0.0.4 以上可“在线”或“离线”安装
lvglLVGL 图形库v8.4.0通过库管理器或手动安装
lv_conf.hLVGL 配置文件——手动安装
版本兼容性说明

LVGL 及其驱动库的版本之间存在较强的依赖关系。例如,为 LVGL v8 编写的驱动可能不兼容 LVGL v9。为确保示例能够稳定复现,推荐使用上表列出的特定版本。混合使用不同版本的库可能导致编译失败或运行时异常。

安装步骤:

  1. 解压已下载的 示例程序包

  2. 将其 Arduino\libraries 目录下的所有文件夹复制到 Arduino 的库文件夹中。

    信息

    Arduino 库文件夹的路径通常是:c:\Users\<用户名>\Documents\Arduino\libraries

    也可以在 Arduino IDE 中通过 文件 > 首选项,查看“项目文件夹位置”来定位。库文件夹就是此路径下的 libraries 文件夹。

  3. 其他安装方式请参考:Arduino 库管理教程

3. Arduino 工程参数设置

ESP32-Arduino-Setting

示例程序

Arduino 示例程序位于 示例程序包Arduino/examples 目录中。

示例程序基础例程说明依赖库
01_I2C_Test测试 I2C 座子-
02_RS485_Test测试 RS485 座子-
03_SD_Test测试 SD 卡座-
04_RTC_Test测试 RTC 模块-
05_IO_TestUART 回环测试-
06_TWAItransmit测试 CAN 卡座-
07_TWAIreceive测试 CAN 卡座-
08_DrawColorBar测试 RGB 屏幕ESP32_Display_Panel
09_lvgl_Porting测试 LVGL 移植LVGL,ESP32_Display_Panel

01_I2C_Test

本示例用于测试 I2C 座子是否工作正常:扫描 I2C 总线上的设备地址并输出扫描结果。

硬件连接

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

代码分析

  • setup()

    • 初始化串口(115200)用于输出日志。
    • 初始化 I2C(SDA=8,SCL=9)。
  • loop()

    • 0x01 扫描到 0x7E,对每个地址执行 Wire.beginTransmission() + Wire.endTransmission()
    • error == 0 表示该地址有设备响应,输出地址并计数。
    • 扫描完成后输出本次发现的设备数量,间隔 5 秒后再次扫描。

运行效果

  • 屏幕无显示,连接的LED灯会以1Hz的频率亮灭

    ESP32_Arduino_01

02_RS485_Test

本示例演示如何使用 RS485 进行串口回环测试(发送什么回什么)。

硬件连接

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

    ESP32_Arduino_RS485_connect

代码分析

  • setup()

    • 使用 Serial1 初始化 RS485 串口,波特率 115200,8N1。
    • 指定 RS485 的 RX/TX 引脚为 GPIO43/GPIO44
  • loop()

    • 轮询 RS485.available():收到数据后,读取 1 字节并立即 write() 回去,实现回环测试。

运行效果

  • 通过 RS485 接口向开发板发送数据,开发板会原样回传。

    ESP32_Arduino_02

03_SD_Test

本示例演示如何挂载 SD 卡并进行基础读写与遍历测试。

硬件连接

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

代码分析

  • setup()
    • 初始化 CH422G IO 扩展器并配置相关控制引脚(触摸复位、LCD 复位、背光、SD_CS)。
    • 初始化 SPI 并调用 SD.begin() 挂载 SD 卡。
    • 读取并打印 SD 卡类型与容量。
    • 调用 listDir/createDir/removeDir/writeFile/appendFile/readFile/deleteFile/renameFile/testFileIO 做一轮文件系统读写测试。

运行效果

  • 串口输出 SD 卡类型、容量与文件系统读写测试日志;未插卡时提示挂载失败。

    ESP32_Arduino_03

04_RTC_Test

本示例演示如何使用 PCF85063A 实时时钟模块进行时间设置与闹钟功能测试。

硬件连接

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

代码分析

  • setup()

    • 初始化串口(115200)。
    • 设置 ADC 分辨率为 12bit(0~4095)。
  • loop()

    • 调用 analogRead() 读取 ADC 原始值。
    • 调用 analogReadMilliVolts() 读取对应电压值(mV)。
    • 将采样结果打印到串口,间隔 100ms 重复采样。

运行效果

  • 串口持续输出 ADC 原始值与电压(mV)。

    ESP32_Arduino_04

05_IO_Test

ESP32_Arduino_IO_connect

本示例用于测试 UART:收到的数据会原样回传(回环)。

硬件连接

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

代码分析

  • setup()

    • 初始化 UART(此处使用 Serial,波特率 115200)。
  • loop()

    • 轮询 UART.available():收到数据后读取 1 字节并立即回写。

运行效果

  • 串口发送数据后,开发板会原样回传。

    ESP32_Arduino_05

06_TWAItransmit

本示例用于测试 CAN 卡座:初始化 TWAI 驱动并周期性发送 CAN 帧。

硬件连接

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

    ESP32_Arduino_CAN_connect

代码分析

  • setup()

    • 初始化串口(115200)。
    • 初始化 CH422G IO 扩展器并配置相关控制引脚状态。
    • 调用 waveshare_twai_init() 初始化 TWAI(CAN)驱动,并用 driver_installed 保存初始化结果。
  • loop()

    • 若驱动初始化失败,延时 1 秒后继续尝试。
    • 若驱动已就绪,调用 waveshare_twai_transmit() 发送 CAN 帧。

运行效果

  • 串口输出发送日志;接入 CAN 总线与对端设备后可在对端收到发送的 CAN 数据。

    ESP32_Arduino_06

    ESP32_Arduino_CN_01

07_TWAIreceive

本示例用于测试 CAN 卡座:初始化 TWAI 驱动并接收 CAN 帧。

硬件连接

  • 使用 USB 线把板子接入电脑
  • 将存好图片的 Micro SD 卡接入 ESP32-S3-Touch-LCD-5 中

    ESP32_Arduino_CAN_connect

代码分析

  • setup()

    • 初始化串口(115200)。
    • 初始化 CH422G IO 扩展器并配置相关控制引脚状态。
    • 调用 waveshare_twai_init() 初始化 TWAI(CAN)驱动,并用 driver_installed 保存初始化结果。
  • loop()

    • 若驱动初始化失败,延时 1 秒后继续。
    • 若驱动已就绪,调用 waveshare_twai_receive() 读取并打印接收到的 CAN 帧。

运行效果

  • 串口输出接收到的 CAN 数据;接入 CAN 总线与对端设备后可观察到接收帧。

    ESP32_Arduino_07

    ESP32_Arduino_CN_02

    ESP32_Arduino_CN_03

08_DrawColorBar

本示例用于测试 RGB 屏幕:初始化 LCD 并显示颜色条/测试画面。

硬件连接

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

代码分析

  • setup()

    • 初始化串口并输出日志。
    • 调用 waveshare_lcd_init() 完成 RGB LCD 初始化并显示测试画面。
  • loop()

    • 每秒输出一次日志,便于确认程序在运行。

运行效果

  • 烧录后 LCD 显示颜色条/测试画面。

    ESP32_Arduino_09

    ESP32_Arduino_08

09_lvgl_Porting

本示例用于测试 LVGL 移植:初始化 ESP32_Display_Panel + LVGL,并运行 LVGL Demo。

硬件连接

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

代码分析

  • setup()

    • 初始化串口并创建 Board,完成板级外设(LCD/Touch/总线)的初始化。
    • 初始化 LVGL 端口(lvgl_port_init()),并用 lvgl_port_lock()/lvgl_port_unlock() 保护 LVGL API 调用。
    • 创建 3 个 Label 显示基本信息,并调用 lv_demo_widgets() 运行 LVGL 内置 Demo。
  • loop()

    • 每秒打印一次日志,用于确认主循环在运行(UI 刷新由 LVGL 端口内部任务维护)。

运行效果

  • 烧录后显示 LVGL Demo 界面(Widgets Demo)。

    lv_image