自学读本:跟着读、照着做,卡住就问 AI
你好,我是吴老师。
这份是给你自己读的——不用等我讲,你一段一段往下看,看到让你停下来的地方,就照着做一遍。看不懂的整段复制给 AI,加一句"请一次只解释一个概念,讲完问我一个小问题"。
读完之后,你应该能:说出 ESP-NOW 与 WiFi/BLE 的最大区别;让两块板"现场扫描"自动配对;解释单播与广播;说出 ESP-NOW 适合什么场景。
用时:60–90 分钟。准备:2 块板 + 数据线 + Skill 已接入的 WorkBuddy。不用手机、不用电脑、不连路由器。
一、有没有"不找中间人"的无线?
- WiFi:要连路由器,说话按 TCP/IP、HTTP 规矩(18/19 课)
- BLE:不用路由器,但要按"文件夹"(服务/特征值)规矩,还得先听见对方(20 课)
问题:两块板之间,有没有不找中间人、也不用文件夹,一喊就到的方式?
有——ESP-NOW:同一块 WiFi 芯片,不开路由器、不连网络,像两台对讲机直接对讲。
悬念:两块板谁都不连 WiFi,A 按一下键,B 立刻收到一句话。
二、两块板"找朋友"(现场扫描配对)
请使用课程的 esp32s3-touchboard-hardware-dev Skill,
给两块板都烧录 assets/codes/demo01_espnow_find_friend。
两块板同时长按 BOOT 键 2 秒——屏幕进入"找朋友中"。告诉我发生了什么。
5 秒窗口里它们互相广播"我在这",窗口结束,各自动记下对方的 MAC 地址(存在小仓库 NVS,断电不失忆)。
| 我观察到的现象 | 勾选 |
|---|---|
| 两块板都进入"找朋友中" | |
| 5 秒内都显示"找到伙伴" | |
| 屏幕上出现对方短 MAC | |
| 我们谁都没抄过 MAC 地址 |
它们怎么认识的? 配对窗口里每块板都广播"我在这";对方听到后从无线电包里读出喊话者 MAC,记下来。现场扫描 + 自动记忆——没人抄地址,也不需要路由器。
三、配对之后:点对点喊话
短按 BOOT。A 显示"我呼叫了伙伴",B 立刻显示"伙伴在喊我!我回:收到啦"并自动回一句,A 计数 +1。
| 我观察到的现象 | 勾选 |
|---|---|
| A 按 BOOT,B 几乎同时收到 | |
| B 自动回"收到啦",A 也收到 | |
| 呼叫/回话次数都在涨 | |
| 全程没有 WiFi、路由器、电脑 |
话直接 A→B、B→A,不经过路由器 = 点对点(一对一)。
⚠️ 比喻有边界:"像对讲机"指点到点直连;但传的是数字小包(每次最多约 250 字节),且有距离限制(同 WiFi 量级,开阔地几十米)。
四、两种喊法:单播 vs 广播
demo01 是悄悄话(单播)——只发给记住的那个伙伴。
广播不挑对象:向射程内所有 ESP-NOW 板喊话,谁收到算谁的,不用配对。
请给一块板改烧录 assets/codes/demo02_espnow_shout 当"喊话员",
其余板(demo01 的板也会收广播)当听众。喊话员按 BOOT。
听众屏幕跳出:你好呀 / 来自 A4…(喊话员 MAC)。
| 单播(demo01) | 广播(demo02) |
|---|---|
| 只发给指定 MAC | 发给范围内所有人 |
| 先配对 | 不用配对 |
| 悄悄话 | 大喇叭 |
两个代码名:
esp_now_send(目标MAC, 数据):把数据发出去;目标填全 F 的 MAC(FF:FF:FF:FF:FF:FF)= 广播。esp_now_register_recv_cb(...):登记"收到就叫我"——有人发数据过来,自动跳到回调处理。
ESP-NOW 没有"连接"也没有"文件夹":发就发,收就收。
五、改一个条件:拉远
先预测,再实验:A、B 从并排 → 走廊拉远 / 中间隔墙 / 站一排人,再呼叫。
| 我改了什么 | 我预测 | 实际看到 |
|---|---|---|
| 越拉越远、隔墙 | 自己填 | 实验后填 |
| 中间站一排人 | 自己填 | 实验后填 |
某距离上 B 不再回"收到啦"。ESP-NOW 是近距离直连——这也预告了第 22 课的问题:要传多远,决定用哪种无线。
六、三种无线放一起看
| 无线 | 中间人 | 规矩 | 适合 |
|---|---|---|---|
| WiFi(17–19 课) | 要路由器 | TCP/IP + HTTP | 远、上互联网、大数据 |
| BLE(20 课) | 不要 | 服务/特征值 | 近、省电、小数据、连手机电脑 |
| ESP-NOW(本课) | 不要 | 几乎没有(直接发) | 近、实时、板与板直连 |
一句记牢:WiFi 找路由器、BLE 找文件夹、ESP-NOW 谁都不找——看你需要多远、多大、多省电、要不要上互联网。
七、故障排查:双板没通怎么办
| 现象 | 观察还是推测? | 下一步 |
|---|---|---|
| 配对窗口结束没找到伙伴 | 观察 | 推测没同时进窗口 → 两块板同时长按、都在"找朋友中"再松手 |
| 配对成功但呼叫没回应 | 观察 | 放近到 1 米内;都显示"已配对"吗? |
| 收不到任何广播 | 观察 | 信道不同 → 全部固定信道 1(ESPNOW_CHANNEL) |
| "收到别人的话" | 观察 | 隔壁也在广播 → 广播公开,单播才认伙伴 |
看屏幕状态(待配对/找朋友中/已配对)最直接;"没收到回话"是观察,"没配对好"是推测。
八、过关检查
不看 AI,自己说:
- ESP-NOW 和 WiFi 同一块芯片,区别是什么?要路由器吗?
- 两块板没抄 MAC 怎么认识的?
esp_now_send(FF:FF:FF:FF:FF:FF, ...)vsesp_now_send(朋友的MAC, ...)是什么喊法?- 广播不用配对,是不是"更厉害"?各适合什么?
- 拿远为什么收不到?说明什么?
- 双板对讲/传感器上报/全班同步播报/手机连板——分别选 ESP-NOW、BLE 还是 WiFi?
九、还能玩什么
| 方向 | 想法 | 继续想 |
|---|---|---|
| 无线答题器 | 老师板广播题号,学生板抢答 | 怎么判断谁先?广播还是单播? |
| 门铃呼叫器 | 门口板按 BOOT,屋里板响铃+亮灯 | 隔墙收得到吗? |
| 十板同步播报 | 一块板广播,十块板同时显示 | 想轮流说怎么编号? |
| 双板对讲机 | 参考板载 Example_43 语音对讲 | 语音比文字难在哪?数据大几倍? |
下一课预告:通信选型实战——给你场景,你来选该走哪条路。