好玩的固件,插上就能烧
选一个固件,用 Chrome / Edge 浏览器连上开发板即可在线烧录,无需安装任何软件。 目前已上线 77 个可烧固件,其余正在预编译中。
综合演示基本绘图、字符串与旋转功能的显示测试。适合第一次烧录验证屏幕是否正常。
桌面宇航员天气时钟,展示日期时间与天气图标动画。需要联网获取真实天气。
竖屏风景动画(蓝天、白云、草地、树木,加上走动的小羊和偶尔飞过的小鸟)。纯本地动画,不联网,适合作为 UI 动画模板学习。
用语音设置周期吃药提醒(每周一三五 8 点),到点屏幕弹出提醒并语音播报。
语音提问、大模型分步讲解的 AI 辅导作业助手,支持离线演示模式。
在屏幕上画画,调用 AI 视觉模型猜出你画的是什么,并语音播报。
让板载 RGB 灯一直亮红色,不闪烁。第 1 课第一个作品,用来理解 setPixelColor(设置颜色)和 show(发送颜色)是两步。
8 组 RGB 数值依次各亮 3 秒并循环。先预测再观察:红+绿、红+蓝、绿+蓝分别会看到什么颜色。
红灯 2 秒,再把内存里的颜色改成绿色但等 3 秒才发送。观察等待的 3 秒里灯是什么颜色——这是理解 setPixelColor 与 show 的关键实验。
颜色沿红→黄→绿→青→蓝→品红→红慢慢过渡,每段约 1 秒,一圈约 6 秒,中间不跳色。
颜色一直是蓝色,2 秒慢慢变亮、2 秒慢慢变暗,一轮 4 秒。和彩虹灯对比:一个改的是颜色比例,一个改的是明暗强度。
在屏幕四角和中心点亮 5 个方块,右下角那个是缺角的。用来理解坐标从 0 开始、最大是 239 和 319。
对角线、空心方框、实心方框、空心圆、实心圆。体会描边只画边上一圈,填充要画满里面。
整屏、小方块、空心圆、实心圆各画 100 次,屏幕和串口报出毫秒数与相差倍数,按 BOOT 重测。
屏幕里藏了宝贝,在串口输入坐标,板子回答烫 / 热 / 温 / 冷,直到你找到它。按 BOOT 重新藏。
故意不擦旧位置,方块拖出一条长长的黄色尾巴。用来理解屏幕不会自动清除画过的东西。
先用背景色盖掉旧位置,再画新位置。干净的单方块从左移到右,没有拖尾。
局部擦一小块和清掉整屏各做 100 次,屏幕与串口报出毫秒数和相差倍数,按 BOOT 重测。
小球撞到四条边就反弹,按 BOOT 暂停或继续。用 millis() 控节奏,擦除时连半径一起算。
把第 6 课的 1 个弹球变成 50 个,画面明显一顿一顿。用它建立卡顿的直观感受。
每 60 帧报一次平均帧耗时和帧率,按 BOOT 在 1 个球和 50 个球之间切换。结论以数字为准,不看感觉。
同为 20 个球,A 版每帧 fillScreen、B 版只擦各自小方块,按 BOOT 切换,比较两种画法的帧耗时。
50 个球的优化版:脏矩形只擦用过的区域、改画方块球避开 fillCircle 的逐行计算、millis 精确控节奏。按 BOOT 暂停。
播放 440Hz 的滴声 0.8 秒。第 11 课第一个作品,理解播放声音等于按采样率送数字。
同一段 440Hz 数据三种送法:正常、每个送两遍(变低)、隔一取一(变高)。数字没变,节奏变了音调就变。
把频率和时长排成乐谱播放小星星前两句,屏幕显示当前音符。音高就是频率。
按 BOOT 响一声叮咚(988Hz 短音 + 784Hz 长音),屏幕计数。频率、时长、顺序都由你定。
对它说话,声音立刻从扬声器重复出来。板子不理解的你的话,只是把数字原样搬了个家。
麦克风音量变成屏幕上的柱子:安静、说话、喊叫三种档位看得一清二楚。响在程序里是数字。
音量超过阈值,屏幕变红加 RGB 灯亮,安静下来恢复。听 + 判断 + 输出,报警器的基本链路。
拍一下手灯亮、再拍一下灭。第一次把声音当成事件处理:响起来又安静下去才算一次,带冷却防误触。
440Hz 音调持续播放,按 BOOT 把 ES8311 音量调低一档再调回来。改的是 I2C 配置,I2S 数据流一刻不停——音量变、音调不变。
播放旋律时按 BOOT 切换双声道 / 只左 / 只右。一帧数据分左右两格,填 0 就是静音那一侧。
每按一次 BOOT 键换一种颜色:红→绿→蓝循环。理解「从松开变成按下」那一刻才算一次(边沿+消抖)。
A 版按住疯狂换色、B 版按住只换一次。对照两种写法,亲手确认边沿判断与消抖为什么必要。
灯每 200ms 循环变色,按下锁定当前颜色,再按开始下一轮;屏幕显示锁定的颜色。
第一次按亮低亮度白灯、第二次熄灭,交替。重点是记住「开/关」这个状态。
随机等待后灯变绿,按下后屏幕显示用时毫秒;提前按显示「抢跑」。用 millis() 计时。
整屏低亮度红,四角填满无花屏。第一次让屏幕出颜色,理解 setRotation(0) 竖屏与坐标。
红→绿→蓝→黄→紫→黑循环,按住不重复。GPIO0 边沿+消抖,和屏幕颜色结合。
红色分量 10/20/40/80 由 BOOT 切换,上限 80,不得整屏 255。体会颜色值是「数字」。
屏幕显示整屏 100 次与半屏 100 次的毫秒数,按 BOOT 重测。用实测理解整屏换色的数据量。
上半屏红 40、下半屏红 80,中间黑线分隔,串口打印 color565() 真实数值。屏幕红只有 32 档。
背光最亮/一半/关闭三状态,像素始终为红。反直觉点:背光关了但像素还是红,屏幕接近全黑。
启动打印「我醒了」,之后每秒打印「我还活着,已经过了 N 秒」。串口是板子和电脑说话的通道。
按 BOOT 打印「按钮已按下,第 N 次」,按住不刷屏。GPIO0 边沿+消抖,串口回显。
发「红色/绿色/蓝色/关闭」控制 RGB 灯,未知命令回显「没听懂:xxx」。命令解析走串口。
发「屏幕红色/绿色/蓝色/清屏」填充整屏,屏幕上方显示收到的命令。fillScreen 配合串口。
发 calc 12+34 打印 12+34 = 46;除不尽保留两位小数。支持 + − * / 四则运算。
发 status 打印开机秒数、按键次数、灯与屏幕当前颜色。数值必须来自真实变量。
手指按哪儿画哪儿;顶部实时显示坐标,串口同步打印。理解触摸坐标如何变成屏幕坐标。
屏幕下方点红/绿/蓝方块,大区域就变对应颜色——按钮不是硬件,是自己画出来的区域。
故意先用 tft.drawString() 写中文——你会看到方块/乱码;再换 drawChinese() 就正常了。亲眼确认这个"坑"。
屏幕底部一行中文从右往左滚动,用 millis() 控制速度,不阻塞主循环。
一段长中文自动按每行 15 字折行显示,理解"一行能放几个字"的算账。
屏幕正中显示"我是小明"+ 一句口号,drawCenteredChinese() 自动居中。
每次开机往 SD 卡 count.txt 加 1,重启接着涨——数据在卡上,不在芯片里。读 → 加 1 → 写 → close()。
每次开机往 diary.txt 追加一行,拔卡插电脑就能看到。FILE_APPEND 追加、FILE_WRITE 覆盖,一字之差。
屏幕列出 SD 根目录所有文件和文件夹,目录带标记。open("/") + openNextFile() 逐个翻。
按 BOOT 随机得分,只有破纪录才写入 highscore.txt——挑对时机写文件,省得白写。
按 BOOT 录 3 秒存进 SD 卡 rec.wav,拔卡插电脑就能播。PSRAM 192KB 缓冲 + 手工写 44 字节 WAV 头。
开机播放 SD 卡里的 rec.wav(需先跑 demo01)。跳过 44 字节头,读一段送一段给扬声器。
按 BOOT 轮转:录 3 秒存卡 → 播放 → 再录。录音 + 写文件 + 播放用状态机串成完整作品。
SD 卡放 .mp3,上电自动开唱并连播;BOOT 播放/暂停,RGB 灯随音乐呼吸。
屏幕列歌单手指点歌,底部按钮:音量-/上一首/播放暂停/下一首/音量+。解码和界面谁也不挡谁。
板子以 STA 模式连上教室 WiFi,屏幕显示自己的 IP 和 MAC。烧录前把 SSID/密码占位符改成真实 WiFi。
板子变成 AP 热点,手机能搜到并连上它——不靠路由器也能组一张小网。
扫出飘在教室空气里的 WiFi 名字和信号强度,把看不见的无线电变成看得见的清单。
电脑 telnet 连上板子 10000 端口,敲一行板子回显一行——像可靠电话线:先接通再说话。
电脑向板子 10001 端口丢 UDP "纸条",板子照收并回执——像明信片:不保证送达,多试几次。
板子主动拨号连电脑的 10002 端口,发 "Hello from board!",把电脑回的话打到屏幕。
板子发 HTTP 请求问 open-meteo 云端天气(免 Key),解析 JSON 显示温度/天气/湿度;BOOT 立即重问。
上半屏显示服务器回的 JSON 原文,下半屏显示解析出的字段——亲眼看见解析器替我们做了什么。
板子每 8 秒问一次"教室小云端",老师按键制造断网/超时/空数据,看板子怎么把故障翻译成人话。
每 5 秒扫一遍周围 BLE 设备,按信号强弱排序显示——教室电脑、别的板子都能扫到(耳朵)。
板子当 GATT 服务端:电脑用 bleak 脚本开关大灯、读温度、订阅电量通知——不用 WiFi 不用网线。
板子不停广播自己的名字(嘴),旁边跑雷达 demo 的板子立刻扫到它;改 AD_NAME 重烧名字就变。
两板同时长按 BOOT 2 秒进找朋友窗口,互发握手自动记 MAC 存 NVS(断电不失忆);短按呼叫、自动回话。
按 BOOT 喊一句,射程内所有 ESP-NOW 板子都收到——无需配对的一对多广播。
触摸答题:6 道场景题在蓝牙/WiFi/直连里选路,立刻判定并讲两句理由,答完看总分。
BOOT 翻页:三种无线摊开比矩阵 + 决策四问口诀卡——"远而大找 WiFi,近而小找蓝牙,没路由器又急找直连"。
如何在线烧录
- 用 USB 线把 ESP32-S3 触摸屏板 插到电脑(需 Chrome / Edge 浏览器)。
- 点击固件卡片上的「在线烧录」,在弹窗中选择对应串口。
- 等待进度条走完(期间请勿拔线),板子自动重启,固件随即生效。
⚠️ 在线烧录基于 Web Serial,需在 HTTPS 或 localhost 环境下使用,且仅 Chrome / Edge 支持。
💡 标「待预编译」的固件需先用 Arduino CLI 编译出 .merged.bin 放到 public/firmware/<id>/firmware.bin,并在 data/firmware.json 里把 available 设为 true。