最近用 Arduino UNO 和一块 3.5 寸 TFT 触摸屏做了一个桌面信息面板。它最初只是一个通过 USB 同步时间的电子时钟,后来逐步加入了备忘录、电脑状态监视、程序快捷启动,以及锁定和关闭 Windows 等功能。
硬件信息
- 开发板:Arduino UNO(ATmega328P)
- 屏幕:3.5 寸 TFT,320×480 分辨率
- 显示驱动:ILI9488
- 颜色格式:RGB565
- 接口:Arduino 直插式 8 位并口屏
- 触摸方式:电阻触摸
目前实现的功能
- 大字体时钟:电脑端通过 USB 自动同步时间,Arduino 本地计时,秒数变化时只局部刷新,避免整屏闪烁。
- 备忘录:在 Windows 桌面程序中输入文本并发送到屏幕显示。
- 触摸切页:屏幕底部提供 CLOCK、MEMO、CONTR、MONIT 四个页面入口。
- 电脑控制:可以锁定 Windows、请求关机,并启动三个由用户配置的快捷程序。
- 关机保护:关机需要在触摸屏上二次确认,电脑端还会再次弹出 Windows 确认窗口。
- 系统监视:显示电脑 CPU 和内存使用率,Windows 程序每两秒发送一次数据,屏幕只更新发生变化的数字。
- 系统托盘:Windows 程序关闭或最小化后可驻留系统托盘,继续保持串口连接和数据同步。
- 自动识别端口:程序会读取 Windows USB 设备信息,优先识别 Arduino 官方 VID,不需要手工选择 COM 口。
Windows 配套程序
项目包含一个使用 C# WinForms 编写的桌面程序。界面中可以同步时间、发送备忘录、远程切换屏幕页面,并为 APP 1、APP 2、APP 3 分别选择要启动的 EXE 或快捷方式。
程序设置会保存在当前 Windows 用户的本地应用数据目录。双击托盘图标可以恢复窗口,右键菜单可以同步时间或彻底退出。
串口通信协议
电脑与 Arduino 使用 115200 波特率的简单文本命令通信:
T<Unix时间戳>:同步时间M<文本>:更新备忘录PC / PM / PO / PS:切换时钟、备忘录、控制和监视页面S<CPU>,<内存>:更新系统使用率EV LOCK / EV SHUTDOWN / EV APP1等:触摸屏向电脑发送操作事件
一个重要的硬件注意事项
这类 UNO 并口屏会占用大量引脚,其中包括 D0 和 D1,而这两个引脚同时又是 Arduino 的硬件串口 RX/TX。因此:
- 烧录程序前需要先拔下 TFT 屏幕。
- 烧录完成后断开 USB 电源,再插回屏幕并重新上电。
- 串口回传可能比电脑向 Arduino 发送数据更容易受到并口总线影响。
资源占用
当前完整固件编译后使用约 82% 的 Flash 和 50% 的 SRAM。对于 Arduino UNO 来说仍可正常运行,但继续加入大型字体、图片或复杂动画时需要格外注意空间。
源码与程序
项目代码、Arduino 固件、Windows 桌面程序和中文说明已经公开在 GitHub:
ikuju/arduino-uno-3.5TFT-screen-panel
仓库中的 usb_clock 是 Arduino 主程序,pc_gui 是 Windows GUI 源码,dist 目录包含已经编译好的桌面程序。
后续计划
后续可以继续完善触摸校准、增加有限的中文字库、改善 Arduino 到电脑方向的串口可靠性,或者将开发板升级为拥有更多串口和内存的 Arduino Mega / ESP32。
酷居科技