
学生在一个地方学传感器,在另一个地方学屏幕。传感器项目读出一个温度,打印到串口监视器上。显示项目画一个滑块,滑块改变的那个数字没有任何人在用。两边都能跑。但两边都不是一台设备。
传感器与屏幕之间的断层#
大多数显示教程都是控件巡礼。放一个按钮,给标签配个样式,接一个滑块,而它们背后的每一个数值都是编出来的。屏幕上没有任何东西来自硬件,所以这个界面能说明的,始终只有这个库本身。
传感器那一侧的问题正好相反。读数是真的,却没地方放。一个做完的项目止步于串口监视器,或者止步于同一块板子上起的一个网页,而那教的是网络,不是界面设计。
于是学生可以做完一整套入门套件,两半都做过,却从没把它们接起来。屏幕是人真正触摸到的那一部分,却往往是学生最后才学到的东西。
真实硬件的要求#
把真实的传感器接到真实的屏幕上,有两件事会随之改变。
第一,界面开始有了要求。编出来的数值想什么时候更新就什么时候更新。真实的读数按自己的节奏到达,有时来得晚,有时干脆是错的,而屏幕必须对此有个说法。决定读数过期时该显示什么,这是滑块演示永远不必回答的问题。
第二,硬件开始顶回来,而学生拿个计算器就能算明白是为什么。
CYD 板子上的屏是 320 乘 240 个像素。在 16 位色深下每个像素占两个字节,所以整屏加起来大约 150 KB。学生很可能会想把这一整屏存在内存里,往上画,画好了再交给显示屏。
这块板子上的 ESP32 不允许这么做。芯片总共有 520 KB SRAM,但乐鑫的内存文档写明,程序能预先占下的上限只有 160 KB,而这块板子也没有 PSRAM,也就是有些板子会额外加的那颗内存芯片,可以退而求其次。光是一屏就几乎把这点额度占满了,而 WiFi 协议栈、触摸驱动和学生自己的代码都还得装得下。
LVGL 并不需要把整屏留在内存里。像素本来就存在板子上的显示控制器里,所以 LVGL 可以一块一块地做。它每次只把界面的一小块画进绘制缓冲区(draw buffer),通过 SPI 把这一块发出去,然后用同一个缓冲区去画下一块。官方文档建议缓冲区取屏幕的十分之一左右,也就是用大约 15 KB 做原本要 150 KB 才能做的事。LVGL 还会记录界面上哪些部分发生了变化,按下一个按钮,就只重绘这个按钮,其余的不动。
一旦学生明白缓冲区为什么必须这么小,界面的其余部分就都能从这里推出来。界面要保留多少在内存里、什么时候重绘、一段动画到底划不划算:在这块板子上,每个问题都有答案,而答案来自内存预算,不是来自个人偏好。
桌面模拟器没有这些限制,所以这一课只能在板子上学到。
CoreStack 套件里有什么#
ANU Electronics 的 CoreStack 就是先教传感器,后教屏幕。套件里有五块开发板:Arduino Uno R4 WiFi、Raspberry Pi Pico 2、CYD 显示屏开发板、ESP32-CAM 和 STM32 Nucleo-F446RE,另外还有一架需要学生自己组装和编程的定制 PCB 无人机。
这套课程是一趟五阶段旅程。第一阶段逐块讲这五块开发板。第二阶段是工业通信:CAN、RS485、多板 UART 与 I2C、RF 和蓝牙,其中还包括一个 WiFi 传感器仪表盘。真实的读数,几块板子互相通信,而整个阶段里没有出现任何显示屏。
第三阶段是 UI With LVGL,屏幕在这里才登场,用的是 CYD 板子。
这个阶段有八个项目:Hello Touch、Live Sensor Gauge、Data Logger Chart、Smart Home Control Panel、Wi-Fi Weather Station、Motor Speed Controller HMI、IoT Dashboard with MQTT,以及 Settings & Multi-Screen App。
这些项目的界面背后都是真实的读数,数据就来自学生前面已经做过的那几块板子。

学生学会读一个传感器,又单独学会画一块屏幕,但真实的产品需要两者一起工作。有了 CYD 板子上的 LVGL,CoreStack 让他们做出完整的设备,从原始传感器数据一直到打磨好的界面。我们自己的 IVF 实验室监测产品就用 LVGL,所以学生学的正是我们用来做产品的工具。
CoreStack 是 LVGL Ready 产品。对买家来说,这句话的意思就是:拆开包装,屏幕就是好用的。LVGL v9 已经通过 Arduino 和 TFT_eSPI 在 CYD 板子上跑起来了,演示程序也已预烧录,ANU Electronics 承诺持续维护这条路径。第一次上手的时间花在控件和布局上,而不是显示配置上。

如何获得 CoreStack#
CoreStack 已在 Kickstarter 上线,起价 99 美元,包含五块开发板、显示屏、PCB 无人机、配件包,以及 CoreStack 学习平台:图文教程、接线图、数据手册、一个 MIT 许可的 GitHub 仓库,还有覆盖全部 LVGL 项目的视频课程。
