基于ESP32-S3的RFID工具跟踪系统,带有Web界面和触摸屏显示。
- 主控: 4D Systems Gen4 ESP32-S3 (8MB PSRAM, 16MB Flash)
- 显示屏: 480x320 TFT (ST7796S, 横屏模式)
- 触控: CST816S 电容触摸屏
- RFID: MFRC522 SPI RFID读卡器 (x4工具位 + 1门禁)
- 舵机: 门锁控制
- 限位开关: 检测盒子关闭状态
| 引脚 |
功能 |
| GPIO 12 |
SCK |
| GPIO 13 |
MISO |
| GPIO 11 |
MOSI |
| 引脚 |
功能 |
| GPIO 10 |
Scanner 1 CS |
| GPIO 9 |
Scanner 2 CS |
| GPIO 8 |
Scanner 3 CS |
| GPIO 7 |
Scanner 4 CS |
| GPIO 14 |
共享RST |
| 引脚 |
功能 |
| GPIO 6 |
CS |
| GPIO 5 |
RST |
| 引脚 |
功能 |
| GPIO 12 |
SCK |
| GPIO 11 |
MOSI |
| GPIO 15 |
CS |
| GPIO 2 |
DC |
| GPIO 1 |
RST |
| GPIO 45 |
背光 |
| 引脚 |
功能 |
| GPIO 18 |
SDA |
| GPIO 17 |
SCL |
| GPIO 16 |
INT |
| GPIO 38 |
RST |
| 引脚 |
功能 |
| GPIO 4 |
舵机 |
| GPIO 3 |
限位开关 |
用于检测盒子是否关闭,控制门锁逻辑和工具借还流程。
| 参数 |
值 |
| 引脚 |
GPIO 3 |
| 类型 |
常开 (NO) |
| 按下电平 |
LOW |
| 上拉 |
内部上拉 (INPUT_PULLUP) |
| 接线 |
一端接 GPIO 3,另一端接 GND |
逻辑: 盒子关闭时限位开关被按下,引脚读到 LOW;盒子打开时引脚被内部上拉到 HIGH。
行为:
- 舵机上锁前检查限位开关,盒子未关闭则拒绝上锁
- 解锁超时后等待限位开关触发(盒子关闭),才执行 RFID 对比和锁门流程
使用PlatformIO CLI:
# 构建
pio run
# 上传到设备
pio run -t upload
# 打开串口监视器
pio device monitor
# 构建+上传+监视器
pio run -t upload && pio device monitor
- 平台: Espressif32, Arduino框架
- 语言: C++
- 显示库: LovyanGFX + LVGL 9.x
- Web服务器: ESPAsyncWebServer
- 前端: Vue.js 3 + Vite
├── src/ # 源代码
│ ├── main.cpp # 主程序入口
│ ├── display/ # 显示相关
│ │ ├── display_tft.cpp # TFT显示逻辑
│ │ ├── lvgl_setup.cpp # LVGL初始化
│ │ ├── lgfx_config.h # LovyanGFX配置
│ │ └── cst816s.cpp # 触控驱动
│ ├── rfid/ # RFID相关
│ ├── web/ # Web服务器
│ └── config_manager.cpp # 配置管理
├── include/ # 头文件
│ ├── config.h # 引脚和配置定义
│ └── lv_conf.h # LVGL配置
├── frontend/ # Vue.js前端
├── data/ # LittleFS文件系统
└── platformio.ini # PlatformIO配置
- 4个RFID工具位,支持借出/归还跟踪
- 门禁RFID读卡器,支持PIN码输入
- 480x320触摸屏显示工具状态
- QR码显示,手机扫码访问Web界面
- WiFi配置,支持STA/AP模式
- Web管理界面,支持远程配置
- Metro UI设计风格
- 显示屏使用BGR颜色顺序,LVGL需要字节交换
- 触控坐标需要从竖屏(320x480)转换为横屏(480x320)
- RFID扫描器共享SPI总线,使用CS引脚选择