ESP32 无线协作画板 — 基于 ESP-NOW 协议的多点实时同步绘画
基于 ESP32-32E 开发板的多设备无线同步协作画板。利用 ESP-NOW 协议实现设备间低延迟无线通信,无需路由器即可多台设备实时同步绘画。
// 9 字节的数据结构 typedef struct { uint16_t x1; // 起点 X uint16_t y1; // 起点 Y uint16_t x2; // 终点 X uint16_t y2; // 终点 Y uint8_t type; // 1=清屏, 2=点, 3=线 } DrawData;
| type 值 | 含义 |
|---|---|
1 | 清屏命令 |
2 | 绘制单个点 (半径 3px) |
3 | 绘制连线 (双线条加粗) |
广播地址 FF:FF:FF:FF:FF:FF,无加密,WiFi 通道 1。触摸采样 10ms,距离 >50px 视为新起点。
| 场景 | 行为 |
|---|---|
| 绘画时 | 点亮对应画笔颜色 |
| 停画 500ms | 自动熄灭 |
| 接收远程数据 | 红色闪烁 300ms |
| 休眠时触摸 | 白色闪烁 |
| 模式 | 操作 | 行为 |
|---|---|---|
| 轻量睡眠 | 短按 BOOT (<500ms) | 关闭背光,仍接收缓存 ESP-NOW 数据 (最多 100 条),唤醒时重绘 |
| 深度睡眠 | 长按 BOOT (>2s) | 关闭屏幕,ESP32 深度睡眠,需重启唤醒 |
# 编译 pio run # 烧录 (替换 COM3 为实际端口) pio run --target upload --upload-port COM3 # 串口监视器 pio device monitor
开发环境: PlatformIO + VS Code | 目标板: esp32dev | 框架: Arduino | 依赖: TFT_eSPI 2.5.40, XPT2046_Touchscreen
| 问题 | 解决方法 |
|---|---|
| 触摸不灵敏/不准 | 重启重新校准,确保 4 个角落都准确触摸 |
| ESP-NOW 无法同步 | 确保固件相同、都已完成校准、距离 <10m |
| 屏幕花屏 | 重启设备或重新烧录固件 |
| RGB 灯不亮 | 检查 RGB LED 引脚定义 |