AI 编程课
完整教案
自学课件
21 课 · 共 21/48

ESP-NOW ——不靠路由器的直连无线(双板)

课时
待定
器材
ESP32-S3 触摸屏板 + USB 线
前置知识
配套代码
见项目 demo 目录

自学读本:跟着读、照着做,卡住就问 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,自己说:

  1. ESP-NOW 和 WiFi 同一块芯片,区别是什么?要路由器吗?
  2. 两块板没抄 MAC 怎么认识的?
  3. esp_now_send(FF:FF:FF:FF:FF:FF, ...) vs esp_now_send(朋友的MAC, ...) 是什么喊法?
  4. 广播不用配对,是不是"更厉害"?各适合什么?
  5. 拿远为什么收不到?说明什么?
  6. 双板对讲/传感器上报/全班同步播报/手机连板——分别选 ESP-NOW、BLE 还是 WiFi?

九、还能玩什么

方向想法继续想
无线答题器老师板广播题号,学生板抢答怎么判断谁先?广播还是单播?
门铃呼叫器门口板按 BOOT,屋里板响铃+亮灯隔墙收得到吗?
十板同步播报一块板广播,十块板同时显示想轮流说怎么编号?
双板对讲机参考板载 Example_43 语音对讲语音比文字难在哪?数据大几倍?

下一课预告:通信选型实战——给你场景,你来选该走哪条路。

本节配套资源 · 在线烧录

查看全部固件 →

下列演示程序已编译为可烧录固件。把你的 ESP32-S3 触摸屏板 用 USB 接上电脑(需 Chrome / Edge 浏览器),点「在线烧录」即可直接写入,无需安装任何软件。

第 21 课 · 找朋友自动配对
可烧录

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

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

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

21 ESP-NOW