AI脑洞板
完整教案
自学课件
第 21 课 · 共 21/51 课

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

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

你好,我是吴老师。

这份是给你自己读的——不用等我讲,你一段一段往下看,看到让你停下来的地方,就照着做一遍。看不懂的整段复制给 AI,加一句"请一次只解释一个概念,讲完问我一个小问题"。

读完之后,你应该能:说清 ESP-NOW 是什么协议、靠什么工作、一台能跟几台说话;说出它的工作距离、包大小和适不适合;让两块板"现场扫描"自动配对;解释单播与广播;把 ESP-NOW 与 WiFi、蓝牙的相同点和不同点讲清楚。

用时:60–90 分钟。准备:2 块板 + 数据线 + Skill 已接入的 WorkBuddy。不用手机、不用电脑、不连路由器。


一、ESP-NOW:到底是个什么协议?

先把它的"户口本"讲清楚。WiFi、蓝牙、ESP-NOW 都靠无线电波说话,但"怎么说"的规矩不一样。

  • WiFi(17–19 课):要连路由器,说话按 TCP/IP、HTTP 规矩——能上互联网,也能发大数据。
  • 蓝牙 BLE(20 课):不用路由器,但要按"文件夹"(服务/特征值)规矩,还得先听见对方。
  • ESP-NOW(本课):同一块 WiFi 芯片,不开路由器、不连网络,像两台对讲机直接对讲。

ESP-NOW 是什么:它是 ESP32 芯片自带的一种直连无线协议,用的是和 WiFi 一样的无线电射频(802.11),但不建立完整的 WiFi 连接、也不去连互联网。它把要发的话打包成一个个小数据包,靠对方的 MAC 地址直接送过去——发就发,收就收,没有"你好,我是谁"的握手,也没有"你同不同意"的连接过程。所以它快、简单、不需要路由器。

它是怎么工作的(原理三步):

  1. 认人:每块 ESP32 芯片都有一个唯一的 MAC 地址(相当于身份证号)。
  2. 打包:把要送的话分成一个个小包。⚠️ 每包最多约 250 字节(约 250 个英文字母的大小)。
  3. 直投:esp_now_send(目标MAC, 数据) 直接把小包砸向那个 MAC 地址,对方注册的回调函数立刻收到。

ESP-NOW 工作原理三步:认人(唯一MAC) → 打包(≤250字节) → 直投(esp_now_send)

一台能跟几台说? 两种喊法:

  • 一对一(单播):指定一个 MAC,只说给那台——像悄悄话。
  • 一对多(广播):目标填全 F 的 MAC(FF:FF:FF:FF:FF:FF),射程内所有 ESP-NOW 板都收到——像大喇叭。
  • 单个 ESP-NOW 节点最多能和多个接收者配对(可注册多台对标的 MAC,做成一对多),但这几台都必须在同一个 WiFi 信道上。

它有多远、适合干嘛?

  • 工作距离:属于近距离直连,和 WiFi 一个量级——开阔地约几十米,隔墙、站一排人、拉远都会掉包收不到。它不是用来广域联网的。
  • 用途:适合板子之间、近距离、要低延迟、不需要互联网的"即时喊话"——比如无线答题器、门铃呼叫、传感器上报、双板对讲。
  • 不适合:不能上互联网;传输的是广播(课堂版未加密,谁在同信道都可能收到),私密数据要用 MAC 白名单 + 加密配对(见 Skill 的 Example_47_espnow_walkie_talkie 说明)。

ESP-NOW 的工作距离(开阔地几十米)、单包上限(约250字节)、一对一/一对多(单播/广播须同信道)

一句话先记下:ESP-NOW 是"不找路由器、不经互联网、靠 MAC 地址直投"的板对板近距无线——快、简单,但短、不分大包,默认还是广播(不加密)。

悬念:两块板谁都不连 WiFi,A 按一下键,B 立刻收到一句话。

ESP-NOW = 两台对讲机直接对讲:不开路由器、不用文件夹,一喊就到

二、两块板"找朋友"(现场扫描配对)

请使用课程的 esp32s3-touchboard-hardware-dev Skill,
给两块板都烧录 assets/codes/demo01_espnow_find_friend。
两块板同时长按 BOOT 键 2 秒——屏幕进入"找朋友中"。告诉我发生了什么。

5 秒窗口里它们互相广播"我在这",窗口结束,各自动记下对方的 MAC 地址(存在小仓库 NVS,断电不失忆)。

✏️ 可以直接在表格里填写
我观察到的现象勾选
两块板都进入"找朋友中"
5 秒内都显示"找到伙伴"
屏幕上出现对方短 MAC
我们谁都没抄过 MAC 地址

它们怎么认识的? 配对窗口里每块板都广播"我在这";对方听到后从无线电包里读出喊话者 MAC,记下来。现场扫描 + 自动记忆——没人抄地址,也不需要路由器。

两块板现场扫描自动配对:5 秒窗口广播「我在这」,互相记住对方 MAC 存 NVS

拓展知识:MAC 地址是什么?会不会撞车?

前面一直说"靠 MAC 地址认人",那 MAC 究竟是什么?

  • MAC 地址 = 一块网络设备出厂时就印死在芯片里的身份证号,像一串 AA:BB:CC:DD:EE:FF 这样的十六进制数字,每个设备的 MAC 都不同。它和"IP 地址"不一样:IP 是"住址"(在外面租的、会变),MAC 是"身份证号"(天生的、不变)。
  • 用来干嘛:在局域网里,数据包要靠 MAC 才知道"送到哪块板子手上"——就像寄信,光有姓名不够,还得有门牌号。
  • 会不会一样/撞车? 理论上每个设备的 MAC 都唯一,厂家分号时保证不重复,所以你几乎不会碰到两块板 MAC 相同("撞车"的概率极低)。但有两点要注意:
    1. 广播时"谁都收到":广播发的目标 MAC 是 FF:FF:FF:FF:FF:FF,这不是某块板的真实 MAC,而是"发给所有人"的特殊地址——所以广播时你看到的不是"谁谁谁",而是像 A4:... 那样的喊话者真实 MAC。
    2. MAC 能被报出来:MAC 是公开可见的(别人能"读到"你的 MAC),所以它不是保密口令。私密通信要靠加密配对,而不是靠"藏住 MAC"。

一句话:MAC 是每块板天生的、唯一的身份证号;广播用的 FF:FF:FF:FF:FF:FF 是"喊给大家听"的特殊地址,不是某块板的真 ID。

MAC 地址科普:身份证号(MAC) vs 住址(IP);会不会一样;不是保密口令

三、配对之后:点对点喊话

短按 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 课的问题:要传多远,决定用哪种无线。

六、三种无线放一起看

它们相同在哪?

  1. 都靠无线电波——不用线,靠空气传。
  2. 都要认地址——WiFi 认 IP、BLE 认设备名、ESP-NOW 认 MAC 地址,都得先"知道对方是谁"。
  3. 都会被干扰、有距离限制——隔墙、站人、拉远都会变弱。

它们不同在哪?

无线要中间人吗规矩认谁距离一份数据多大适合
WiFi(17–19 课)要路由器TCP/IP + HTTPIP 地址远(几十米~盖楼)大(数据包可大)上互联网、大数据
BLE(20 课)不要服务/特征值设备名/MAC近(几米~十米)小(省电)连手机电脑、省电、小数据
ESP-NOW(本课)不要几乎没有(直接发)MAC 地址近(开阔地几十米)小(单包最大约 250 字节)板与板、近距离、低延迟、即时

一对一 vs 一对多

喊法给谁要配对吗例子
单播(esp_now_send 指定 MAC)只看那一个要(先记下对方 MAC)双板悄悄话、传感器点对点上报
广播(目标填 FF:FF:FF:FF:FF:FF)射程内所有板不用全班同步播报、题号广播

补充:想让"一块板喊话、多块板都收",用广播;想让"两块板专门对讲、别人收不到",用单播。广播公开、单播才认伙伴。

一句记牢:WiFi 找路由器、BLE 找文件夹、ESP-NOW 谁都不找——看你需要多远、多大、多省电、要不要上互联网。

三种无线对比:相同点与不同点(都靠无线电、都要认人认地址;WiFi认IP/BLE认设备名/ESP-NOW认MAC)

单播悄悄话 vs 广播大喇叭;三种无线对比(WiFi 找路由器 / BLE 找文件夹 / ESP-NOW 谁都不找)

七、故障排查:双板没通怎么办

现象观察还是推测?下一步
配对窗口结束没找到伙伴观察推测没同时进窗口 → 两块板同时长按、都在"找朋友中"再松手
配对成功但呼叫没回应观察放近到 1 米内;都显示"已配对"吗?
收不到任何广播观察信道不同 → 全部固定信道 1(ESPNOW_CHANNEL)
"收到别人的话"观察隔壁也在广播 → 广播公开,单播才认伙伴

看屏幕状态(待配对/找朋友中/已配对)最直接;"没收到回话"是观察,"没配对好"是推测。

八、过关检查

不看 AI,自己说:

  1. ESP-NOW 是一种什么协议?它用哪块射频、要不要建立完整的 WiFi 连接?
  2. ESP-NOW 靠什么"认人"?和 WiFi 认的 IP 有什么区别?
  3. ESP-NOW 一台能跟几台说?"一对一"和"一对多"分别是哪种喊法?用哪个 MAC?
  4. 它传一份数据最大约多少字节?工作距离大概多远?隔墙、站人会怎样?
  5. 两块板没抄 MAC 怎么认识的?(现场扫描 + 自动记忆存 NVS)
  6. esp_now_send(FF:FF:FF:FF:FF:FF, ...) vs esp_now_send(朋友的MAC, ...) 是什么喊法?
  7. 广播不用配对,是不是"更厉害"?FF:FF:FF:FF:FF:FF 是哪块板的 MAC 吗?各适合什么场景?
  8. MAC 地址是什么?会不会两块板一样?它算保密口令吗?私密通信靠什么?
  9. 拿远为什么收不到?说明 ESP-NOW 适合远距离还是近距离?
  10. 双板对讲/传感器上报/全班同步播报/手机连板——分别选 ESP-NOW、BLE 还是 WiFi?

九、还能玩什么

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

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

第 21 课 · 找朋友自动配对

第 21 课 · 找朋友自动配对

两块板同时长按 BOOT 两秒进入「找朋友」,在半空互相喊话自动记住对方地址。

21ESP-NOW配对点对点
第 21 课 · 广播大喇叭

第 21 课 · 广播大喇叭

按一下 BOOT 就喊一嗓子,射程内所有 ESP-NOW 板子都收到,不用先配对。

21ESP-NOW广播一对多
第 21 课 · 局域网聊天室

第 21 课 · 局域网聊天室

几块板不连 WiFi 也能聊天:上方显示在线人数,中间是滚动的聊天记录。

21ESP-NOW聊天室心跳
第 21 课 · 看信号有多强

第 21 课 · 看信号有多强

两板配对后,短按 BOOT 呼叫,屏幕显示对方那包信号的 RSSI(dBm)与估算距离(米),用颜色标识强/中/弱。

21ESP-NOWRSSI
第 21 课 · 广播语音对讲

第 21 课 · 广播语音对讲

按住说话,你的声音会广播给射程内所有板子,松开就只收不说。

21ESP-NOW语音对讲