AI 编程课
开源固件分享

好玩的固件,插上就能烧

选一个固件,用 Chrome / Edge 浏览器连上开发板即可在线烧录,无需安装任何软件。 目前已上线 77 个可烧固件,其余正在预编译中。

可在线烧录
待预编译
显示图形测试
可烧录

综合演示基本绘图、字符串与旋转功能的显示测试。适合第一次烧录验证屏幕是否正常。

显示 图形 入门
✓ 可在线烧录
天气时钟桌面
待预编译

桌面宇航员天气时钟,展示日期时间与天气图标动画。需要联网获取真实天气。

天气 时钟 联网
需预编译 .bin 后可烧
该固件尚未预编译,暂时无法在线烧录。
风景画动画
可烧录

竖屏风景动画(蓝天、白云、草地、树木,加上走动的小羊和偶尔飞过的小鸟)。纯本地动画,不联网,适合作为 UI 动画模板学习。

动画 风景 非阻塞
✓ 可在线烧录
智能吃药提醒
待预编译

用语音设置周期吃药提醒(每周一三五 8 点),到点屏幕弹出提醒并语音播报。

语音 提醒 RTC
需预编译 .bin 后可烧
该固件尚未预编译,暂时无法在线烧录。
AI 学习助手
待预编译

语音提问、大模型分步讲解的 AI 辅导作业助手,支持离线演示模式。

AI 学习 语音
需预编译 .bin 后可烧
该固件尚未预编译,暂时无法在线烧录。
你画我猜 AI 视觉
待预编译

在屏幕上画画,调用 AI 视觉模型猜出你画的是什么,并语音播报。

AI 视觉 画图
需预编译 .bin 后可烧
该固件尚未预编译,暂时无法在线烧录。
第 1 课 · 红灯
可烧录

让板载 RGB 灯一直亮红色,不闪烁。第 1 课第一个作品,用来理解 setPixelColor(设置颜色)和 show(发送颜色)是两步。

01 RGB灯 入门
第 1 课 · 混色实验
可烧录

8 组 RGB 数值依次各亮 3 秒并循环。先预测再观察:红+绿、红+蓝、绿+蓝分别会看到什么颜色。

01 RGB灯 混色
第 1 课 · 先设置后发送
可烧录

红灯 2 秒,再把内存里的颜色改成绿色但等 3 秒才发送。观察等待的 3 秒里灯是什么颜色——这是理解 setPixelColor 与 show 的关键实验。

01 RGB灯 原理
第 1 课 · 彩虹灯
可烧录

颜色沿红→黄→绿→青→蓝→品红→红慢慢过渡,每段约 1 秒,一圈约 6 秒,中间不跳色。

01 RGB灯 渐变
第 1 课 · 蓝色呼吸灯
可烧录

颜色一直是蓝色,2 秒慢慢变亮、2 秒慢慢变暗,一轮 4 秒。和彩虹灯对比:一个改的是颜色比例,一个改的是明暗强度。

01 RGB灯 渐变
第 5 课 · 点亮一个点
可烧录

在屏幕四角和中心点亮 5 个方块,右下角那个是缺角的。用来理解坐标从 0 开始、最大是 239 和 319。

05 坐标 入门
第 5 课 · 画线和图形
可烧录

对角线、空心方框、实心方框、空心圆、实心圆。体会描边只画边上一圈,填充要画满里面。

05 图形 描边填充
第 5 课 · 局部改画 vs 整屏重画
可烧录

整屏、小方块、空心圆、实心圆各画 100 次,屏幕和串口报出毫秒数与相差倍数,按 BOOT 重测。

05 计时 实验
第 5 课 · 坐标寻宝图
可烧录

屏幕里藏了宝贝,在串口输入坐标,板子回答烫 / 热 / 温 / 冷,直到你找到它。按 BOOT 重新藏。

05 坐标 串口 游戏
第 6 课 · 会拖尾的方块(故意失败)
可烧录

故意不擦旧位置,方块拖出一条长长的黄色尾巴。用来理解屏幕不会自动清除画过的东西。

06 动画 反例
第 6 课 · 擦干净再画
可烧录

先用背景色盖掉旧位置,再画新位置。干净的单方块从左移到右,没有拖尾。

06 动画 基础
第 6 课 · 局部擦 vs 整屏清
可烧录

局部擦一小块和清掉整屏各做 100 次,屏幕与串口报出毫秒数和相差倍数,按 BOOT 重测。

06 计时 实验
第 6 课 · 弹球
可烧录

小球撞到四条边就反弹,按 BOOT 暂停或继续。用 millis() 控节奏,擦除时连半径一起算。

06 动画 作品
第 7 课 · 50 个球(先把它弄卡)
可烧录

把第 6 课的 1 个弹球变成 50 个,画面明显一顿一顿。用它建立卡顿的直观感受。

07 性能 对比
第 7 课 · 帧耗时报告
可烧录

每 60 帧报一次平均帧耗时和帧率,按 BOOT 在 1 个球和 50 个球之间切换。结论以数字为准,不看感觉。

07 性能 测量
第 7 课 · 整屏重画 vs 局部清除
可烧录

同为 20 个球,A 版每帧 fillScreen、B 版只擦各自小方块,按 BOOT 切换,比较两种画法的帧耗时。

07 性能 对比
第 7 课 · 优化到不掉帧
可烧录

50 个球的优化版:脏矩形只擦用过的区域、改画方块球避开 fillCircle 的逐行计算、millis 精确控节奏。按 BOOT 暂停。

07 性能 优化
第 11 课 · 第一次发声
可烧录

播放 440Hz 的滴声 0.8 秒。第 11 课第一个作品,理解播放声音等于按采样率送数字。

11 声音 扬声器
第 11 课 · 采样率实验
可烧录

同一段 440Hz 数据三种送法:正常、每个送两遍(变低)、隔一取一(变高)。数字没变,节奏变了音调就变。

11 采样率 实验
第 11 课 · 小星星旋律
可烧录

把频率和时长排成乐谱播放小星星前两句,屏幕显示当前音符。音高就是频率。

11 旋律 作品
第 11 课 · 门铃
可烧录

按 BOOT 响一声叮咚(988Hz 短音 + 784Hz 长音),屏幕计数。频率、时长、顺序都由你定。

11 门铃 作品
第 12 课 · 回声
可烧录

对它说话,声音立刻从扬声器重复出来。板子不理解的你的话,只是把数字原样搬了个家。

12 麦克风 回声
第 12 课 · 音量指示器
可烧录

麦克风音量变成屏幕上的柱子:安静、说话、喊叫三种档位看得一清二楚。响在程序里是数字。

12 麦克风 音量
第 12 课 · 噪音报警器
可烧录

音量超过阈值,屏幕变红加 RGB 灯亮,安静下来恢复。听 + 判断 + 输出,报警器的基本链路。

12 麦克风 报警
第 12 课 · 拍手开关灯
可烧录

拍一下手灯亮、再拍一下灭。第一次把声音当成事件处理:响起来又安静下去才算一次,带冷却防误触。

12 麦克风 事件
第 13 课 · 音量阶梯
可烧录

440Hz 音调持续播放,按 BOOT 把 ES8311 音量调低一档再调回来。改的是 I2C 配置,I2S 数据流一刻不停——音量变、音调不变。

13 I2S总线
第 13 课 · 声道切换
可烧录

播放旋律时按 BOOT 切换双声道 / 只左 / 只右。一帧数据分左右两格,填 0 就是静音那一侧。

13 I2S总线
第 2 课 · BOOT 换色
可烧录

每按一次 BOOT 键换一种颜色:红→绿→蓝循环。理解「从松开变成按下」那一刻才算一次(边沿+消抖)。

02 BOOT 入门
第 2 课 · 消抖 A/B 对照
可烧录

A 版按住疯狂换色、B 版按住只换一次。对照两种写法,亲手确认边沿判断与消抖为什么必要。

02 消抖 对比
第 2 课 · 猜颜色(作品一)
可烧录

灯每 200ms 循环变色,按下锁定当前颜色,再按开始下一轮;屏幕显示锁定的颜色。

02 作品 状态
第 2 课 · 开关灯(作品二)
可烧录

第一次按亮低亮度白灯、第二次熄灭,交替。重点是记住「开/关」这个状态。

02 作品 状态
第 2 课 · 反应力挑战(作品三)
可烧录

随机等待后灯变绿,按下后屏幕显示用时毫秒;提前按显示「抢跑」。用 millis() 计时。

02 作品 计时
第 3 课 · 整屏变红
可烧录

整屏低亮度红,四角填满无花屏。第一次让屏幕出颜色,理解 setRotation(0) 竖屏与坐标。

03 颜色 入门
第 3 课 · BOOT 换色
可烧录

红→绿→蓝→黄→紫→黑循环,按住不重复。GPIO0 边沿+消抖,和屏幕颜色结合。

03 颜色 循环
第 3 课 · 只改一个数字
可烧录

红色分量 10/20/40/80 由 BOOT 切换,上限 80,不得整屏 255。体会颜色值是「数字」。

03 亮度 实验
第 3 课 · 刷屏计时(核心)
可烧录

屏幕显示整屏 100 次与半屏 100 次的毫秒数,按 BOOT 重测。用实测理解整屏换色的数据量。

03 计时 核心
第 3 课 · RGB565 对比
可烧录

上半屏红 40、下半屏红 80,中间黑线分隔,串口打印 color565() 真实数值。屏幕红只有 32 档。

03 RGB565 对比
第 3 课 · 背光对比
可烧录

背光最亮/一半/关闭三状态,像素始终为红。反直觉点:背光关了但像素还是红,屏幕接近全黑。

03 背光 对比
第 4 课 · 串口心跳
可烧录

启动打印「我醒了」,之后每秒打印「我还活着,已经过了 N 秒」。串口是板子和电脑说话的通道。

04 串口 入门
第 4 课 · 按键汇报
可烧录

按 BOOT 打印「按钮已按下,第 N 次」,按住不刷屏。GPIO0 边沿+消抖,串口回显。

04 串口 按键
第 4 课 · 命令控灯
可烧录

发「红色/绿色/蓝色/关闭」控制 RGB 灯,未知命令回显「没听懂:xxx」。命令解析走串口。

04 命令 LED
第 4 课 · 命令控屏
可烧录

发「屏幕红色/绿色/蓝色/清屏」填充整屏,屏幕上方显示收到的命令。fillScreen 配合串口。

04 命令 屏幕
第 4 课 · 计算器(案例一)
可烧录

发 calc 12+34 打印 12+34 = 46;除不尽保留两位小数。支持 + − * / 四则运算。

04 案例 计算
第 4 课 · 状态查询(案例二)
可烧录

发 status 打印开机秒数、按键次数、灯与屏幕当前颜色。数值必须来自真实变量。

04 案例 状态
第 8 课 · 读坐标
可烧录

手指按哪儿画哪儿;顶部实时显示坐标,串口同步打印。理解触摸坐标如何变成屏幕坐标。

08 触摸 demo
第 8 课 · 自制按钮
可烧录

屏幕下方点红/绿/蓝方块,大区域就变对应颜色——按钮不是硬件,是自己画出来的区域。

08 触摸 demo
第 9 课 · 先失败再成功
可烧录

故意先用 tft.drawString() 写中文——你会看到方块/乱码;再换 drawChinese() 就正常了。亲眼确认这个"坑"。

09 文字 中文 demo
第 9 课 · 滚动字幕
可烧录

屏幕底部一行中文从右往左滚动,用 millis() 控制速度,不阻塞主循环。

09 文字 中文 demo
第 9 课 · 自动换行
可烧录

一段长中文自动按每行 15 字折行显示,理解"一行能放几个字"的算账。

09 文字 中文 demo
第 9 课 · 作品 · 电子铭牌
可烧录

屏幕正中显示"我是小明"+ 一句口号,drawCenteredChinese() 自动居中。

09 文字 中文 demo
第 14 课 · 重启不清零的计数器
可烧录

每次开机往 SD 卡 count.txt 加 1,重启接着涨——数据在卡上,不在芯片里。读 → 加 1 → 写 → close()。

14 SD卡
第 14 课 · 追加日记
可烧录

每次开机往 diary.txt 追加一行,拔卡插电脑就能看到。FILE_APPEND 追加、FILE_WRITE 覆盖,一字之差。

14 SD卡
第 14 课 · 列出 SD 卡文件
可烧录

屏幕列出 SD 根目录所有文件和文件夹,目录带标记。open("/") + openNextFile() 逐个翻。

14 SD卡
第 14 课 · 破纪录才写盘
可烧录

按 BOOT 随机得分,只有破纪录才写入 highscore.txt——挑对时机写文件,省得白写。

14 SD卡
第 15 课 · 录 3 秒存成 WAV
可烧录

按 BOOT 录 3 秒存进 SD 卡 rec.wav,拔卡插电脑就能播。PSRAM 192KB 缓冲 + 手工写 44 字节 WAV 头。

15 声音留言机
第 15 课 · 播放板子录的 WAV
可烧录

开机播放 SD 卡里的 rec.wav(需先跑 demo01)。跳过 44 字节头,读一段送一段给扬声器。

15 声音留言机
第 15 课 · 完整留言机
可烧录

按 BOOT 轮转:录 3 秒存卡 → 播放 → 再录。录音 + 写文件 + 播放用状态机串成完整作品。

15 声音留言机
第 16 课 · 自动连播音乐盒
可烧录

SD 卡放 .mp3,上电自动开唱并连播;BOOT 播放/暂停,RGB 灯随音乐呼吸。

16 掌上音乐盒
第 16 课 · 触摸点歌台
可烧录

屏幕列歌单手指点歌,底部按钮:音量-/上一首/播放暂停/下一首/音量+。解码和界面谁也不挡谁。

16 掌上音乐盒
第 17 课 · 板子连路由器
可烧录

板子以 STA 模式连上教室 WiFi,屏幕显示自己的 IP 和 MAC。烧录前把 SSID/密码占位符改成真实 WiFi。

17 网络通信
第 17 课 · 板子自己开热点
可烧录

板子变成 AP 热点,手机能搜到并连上它——不靠路由器也能组一张小网。

17 网络通信
第 17 课 · 扫描周围 WiFi
可烧录

扫出飘在教室空气里的 WiFi 名字和信号强度,把看不见的无线电变成看得见的清单。

17 网络通信
第 18 课 · 板子当 TCP 服务器
可烧录

电脑 telnet 连上板子 10000 端口,敲一行板子回显一行——像可靠电话线:先接通再说话。

18 TCP/UDP
第 18 课 · UDP 收纸条
可烧录

电脑向板子 10001 端口丢 UDP "纸条",板子照收并回执——像明信片:不保证送达,多试几次。

18 TCP/UDP
第 18 课 · 板子当 TCP 客户端
可烧录

板子主动拨号连电脑的 10002 端口,发 "Hello from board!",把电脑回的话打到屏幕。

18 TCP/UDP
第 19 课 · 天气卡片
可烧录

板子发 HTTP 请求问 open-meteo 云端天气(免 Key),解析 JSON 显示温度/天气/湿度;BOOT 立即重问。

19 HTTP/JSON
第 19 课 · 原文 vs 解析对照
可烧录

上半屏显示服务器回的 JSON 原文,下半屏显示解析出的字段——亲眼看见解析器替我们做了什么。

19 HTTP/JSON
第 19 课 · 故障三态演示
可烧录

板子每 8 秒问一次"教室小云端",老师按键制造断网/超时/空数据,看板子怎么把故障翻译成人话。

19 HTTP/JSON
第 20 课 · 蓝牙雷达
可烧录

每 5 秒扫一遍周围 BLE 设备,按信号强弱排序显示——教室电脑、别的板子都能扫到(耳朵)。

20 蓝牙BLE
第 20 课 · 蓝牙智能灯
可烧录

板子当 GATT 服务端:电脑用 bleak 脚本开关大灯、读温度、订阅电量通知——不用 WiFi 不用网线。

20 蓝牙BLE
第 20 课 · 广播名片
可烧录

板子不停广播自己的名字(嘴),旁边跑雷达 demo 的板子立刻扫到它;改 AD_NAME 重烧名字就变。

20 蓝牙BLE
第 21 课 · 找朋友自动配对
可烧录

两板同时长按 BOOT 2 秒进找朋友窗口,互发握手自动记 MAC 存 NVS(断电不失忆);短按呼叫、自动回话。

21 ESP-NOW
第 21 课 · 广播大喇叭
可烧录

按 BOOT 喊一句,射程内所有 ESP-NOW 板子都收到——无需配对的一对多广播。

21 ESP-NOW
第 22 课 · 通信选型考官
可烧录

触摸答题:6 道场景题在蓝牙/WiFi/直连里选路,立刻判定并讲两句理由,答完看总分。

22 通信选型
第 22 课 · 三条路速查卡
可烧录

BOOT 翻页:三种无线摊开比矩阵 + 决策四问口诀卡——"远而大找 WiFi,近而小找蓝牙,没路由器又急找直连"。

22 通信选型

如何在线烧录

  1. 用 USB 线把 ESP32-S3 触摸屏板 插到电脑(需 Chrome / Edge 浏览器)。
  2. 点击固件卡片上的「在线烧录」,在弹窗中选择对应串口。
  3. 等待进度条走完(期间请勿拔线),板子自动重启,固件随即生效。

⚠️ 在线烧录基于 Web Serial,需在 HTTPS 或 localhost 环境下使用,且仅 Chrome / Edge 支持。

💡 标「待预编译」的固件需先用 Arduino CLI 编译出 .merged.bin 放到 public/firmware/<id>/firmware.bin,并在 data/firmware.json 里把 available 设为 true