你好呀,我是吴老师。
上一课板子学会了连 WiFi。但连 WiFi 得有个条件:得有个路由器。
今天要讲一件更神奇的事:
两块板可以不用路由器、不用网,直接对着说话。
只要离得够近。
一、先想一个问题
你要给对方传张纸条,有几种办法?
| 办法 | 需要什么 | 缺点 |
|---|---|---|
| 写纸条递过去 | 就在旁边 | 远了就不行 |
| 中间找个同学转交 | 得有人愿意帮忙 | 那个人就是"路由器" |
| 直接喊一声 | 就在旁边,喊得到 | 得知道对方叫什么 |
WiFi 是第二种 —— 中间得有个路由器帮你转。
今天要用的,是第三种。 板子用的技术叫 ESP-NOW —— 名字不重要,记住这一句就够了:
它不需要路由器,两块板直接对着喊。
二、把两条路摆在一起看
同一句「你好」,走的路可以完全不同。
先点左边的「走 WiFi」,再点右边的「走 ESP-NOW」 —— 盯着那颗跑动的小点(那就是消息),看它走的是哪条路:
看出区别了吗?
| 中间那个路由器 | |
|---|---|
| 走 WiFi | 亮着,消息要绕着它转一圈 |
| 走 ESP-NOW | 是灰的 —— 这条路根本用不上它 |
再点一下「拔掉路由器 ⚡」试试。
⚠️ 你会看到:WiFi 那条路当场断掉,两块板说不上话了。
这就是"路由器是必经之路"的样子 —— 它一没,整条路就没了。
而 ESP-NOW 那条路,压根不关心路由器在不在。
💡 顺便看一眼表格里"能传多远"那一行。 ESP-NOW 不用路由器,但代价是离得近才行 —— 天底下没有只占便宜不吃亏的事。
三、⚠️ 一条硬规矩:不能同时用 WiFi
这一条必须先说,因为它是这块板子的物理限制:
esp_link(板间通信)和wifi_setup(连 WiFi)不能同时用。一个应用里只能选一个。
为什么? 因为它们都要用同一套无线电 —— 就像一个人不能同时用同一张嘴说两套话。
| 你想做的应用 | 该用 |
|---|---|
| 问 AI、听电台、查天气 | wifi_setup |
| 和对方的板子传东西、对讲、对战 | esp_link |
⚠️ 两个都要 = 互相打架,网络会时通时断,看上去像"两个功能都坏了"。
先想清楚你这个应用是哪一类,再动手。
四、第一件事:先"找到"对方
开无线之前,得先跟对方打个招呼。板上是这么做的:
它去找另一块板 → 两边都按一下确认。
确认这一步很重要 —— 教室里有好多块板,你得确认自己连的是对方那块板:

它最多找 30 秒。 找到了就往下走;没找到,你的应用得给个说法 —— 不能就干等着:屏幕上要写清"没找到另一块板",再给一个"再找一次"的按钮。
⭐ 每块板都有自己的代号,像
#A3F2。 它就是靠这个才分得清"我连的是哪一块" —— 不然连错了都不知道。
五、两条规矩
发和收各有一条规矩。都不长,但都很要紧。
规矩一:一次最多发 4KB
想传更大的东西(一张图、一段录音),得切成几块、一块一块发,对面收齐了再拼起来。
💡 就像寄一本厚书,得分几个包裹 —— 一次寄不完。
规矩二:⚠️⚠️ 收消息,要"每一帧问一次"
这是这一课最容易踩的坑,也是唯一一个"错了还不报错"的地方:
消息来的时候,板子不会敲门。
它只是把消息搁在那儿,得你自己不停去看。 你若隔很久才看一次,中间来的那几条就丢了 —— 而且一点提示都没有。
现象长这样:我这边发了,他那边没反应。 真实原因:他那边忘了收。
⭐ 所以这类应用的每一轮循环里,都必须问一次"有消息来了吗"。 这句话你写不出来没关系 —— 让 AI 写的时候,一定要叮嘱它这一条。
六、这类应用长什么样
不管你做对讲机、传纸条还是双人小游戏,骨架全是一样的。
看着这张图,其实只有一个循环:
| 转一圈问三件事 | 为什么必须问 |
|---|---|
| ① 有人按了退出吗? | 不问,学生就退不出去 |
| ② 有人发消息来了吗? | 不问,消息就永远收不到(就是规矩二) |
| ③ 把画面推上屏幕 | 不推,前面画的全看不见 |
就这么点东西。 剩下的全是"画成什么样、收到之后干什么"的花样。
⭐ 想通这一步,你会发现这类应用特别好做 —— 难点从来不在写代码,在想清楚"收到消息该干什么"。
💡 想加新花样? 都往第 ②步里塞: 收到"分数"就加分、收到"画一笔"就画上去、收到"我来了"就把对方画出来。 骨架一个字都不用改。
七、动手做
任务一:找到对方
请帮我做一个「找对方」的应用:
1. 打开的时候去找另一块板
2. 屏幕上显示找到没有
3. 找到了就显示对方的代号
4. 没找到就给一个「再找一次」的按钮
5. 用中文注释
⚠️ 做这个任务要两台板子(或者和对方合作)。 一个人做不出来 —— 因为没有"对面"。
做好之后屏幕上就是这样 —— 找到了,屏幕上会显示对方的代号:

任务二:悄悄话(这一课的主作品)
两块板接上线之后,长这样 —— 一台发,另一台就收到了:

请帮我做一个「悄悄话」应用:
1. 先找另一块板,找到了才继续
2. 屏幕上有一个输入框一样的地方,能打字
3. 点「发送」就把这句话发过去
4. 对方发来的话,显示在屏幕上
5. 用中文注释
做这个任务有两点要注意:
| 注意什么 | 为什么 |
|---|---|
| 打字怎么办? | 屏幕小,自己画键盘很麻烦。可以先发几个固定的话("你好""在吗""收到"),做成按钮 |
每帧都要 recv() | 忘了调它,消息就永远收不到 —— 而且不报错,最难查 |
💡 第二点是这节课最容易踩的坑。 现象是"我这边发了,他那边没反应" —— 但其实是那边忘了收。
做完请做两件事:
- 两块板各发一句,都收到了吗?
- 把一块板拿走,走到另一个房间 —— 还收得到吗?(试试它的距离)
八、只改一个条件
挑一个来改,先说出你的预测,再动手:
| 我改的条件 | 我预测会怎样 | 实际怎样 |
|---|---|---|
把 recv() 从循环里删掉 | ||
| 两块板拉开到十几米 | ||
| 同时开一个要连 WiFi 的应用 | ||
| 发一条超过 4KB 的长消息 |
💡 第三个会看到两个功能都不正常 —— 这就是"抢同一套无线电"的样子。 最后一个会直接报错:一次发不了那么大的东西。
九、自检小测
十、还想玩点什么
| 想做什么 | 可以这样描述给 AI |
|---|---|
| 两块板一起计分 | 一边加分,另一边跟着变 |
| 隔空对讲 | 配合第 11、12 课,把录音发过去放出来 |
| 点名器 | 两块板互相报自己的代号,凑齐了算一组 |
| 双人游戏 | 一人控制一半,靠消息同步 |
| 传作品 | 把做好的应用发给对方(系统里的「分享」就是这么做的) |
⭐ 下一节课,我们要让板子听网络电台。
那会是"联网能干什么"里最好玩的一个 —— 板子连上网,就能听全国各地的电台,还能自己搜台。
有意思的是:它得先"找台",才能"放台" —— 这是两件事。
