外观
无线协议
ESP32 家族的卖点之一是「一颗芯片多种无线」。但并不是每颗芯片都能做所有事:有的没有蓝牙,有的没有 Wi-Fi,只有部分带 IEEE 802.15.4(Thread / Zigbee 的物理层)。选芯片前先看这一页。
概览
下表是按我对各芯片产品线的了解整理的粗略矩阵,具体到每颗芯片请以乐鑫官方数据手册为准,本文没有逐颗核对。
| 芯片 | Wi-Fi | 蓝牙 | 802.15.4 |
|---|---|---|---|
| ESP32 | 2.4 GHz,Wi-Fi 4 | Classic + BLE | 无 |
| ESP32-S2 | 2.4 GHz,Wi-Fi 4 | 无 | 无 |
| ESP32-S3 | 2.4 GHz,Wi-Fi 4 | BLE 5 | 无 |
| ESP32-C3 | 2.4 GHz,Wi-Fi 4 | BLE 5 | 无 |
| ESP32-C6 | 2.4 GHz,Wi-Fi 6 | BLE 5 | 有 |
| ESP32-C5 | 2.4 GHz + 5 GHz 双频,Wi-Fi 6 | BLE 5 | 有 |
| ESP32-H2 | 无 | BLE 5 | 有 |
| ESP32-P4 | 无(常配协处理器) | 无 | 无 |
经典蓝牙(Classic Bluetooth,用于 A2DP 音频等)只有原版 ESP32 具备。其余芯片都是 BLE 单模。
无线发射的合规
更改发射功率、信道、频段,或使用扫描、注入类工具,可能违反所在地区的无线电法规。日本、欧盟、美国的合规要求不同;做成品出售需要对应认证(如日本的技适)。本文只介绍协议能力,不鼓励绕过合规限制。回退方法:恢复默认国家码与发射功率,并在自己拥有的设备上测试。
关键信息
ESP-NOW
ESP-NOW 是乐鑫的无连接通信协议,基于 Wi-Fi 的 vendor action 帧,设备之间不需要路由器。查看 ESP-IDF 文档:
- 版本:v1.0 单包最多 250 字节;v2.0 最多 1470 字节。v2.0 设备可以接收两种版本的包,v1.0 设备只能接收不超过 250 字节的 v2.0 包。
- 对端:最多 20 个,其中加密对端最多 17 个,默认 7(
CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM)。 - 加密:CCMP,主密钥 PMK 与每个对端的密钥 LMK 各 16 字节;没设置 LMK 就是明文。
- 默认速率 1 Mbps,可对每个对端调整。
- 使用前要先启动 Wi-Fi,再调用
esp_now_init()。 - 回调运行在高优先级 Wi-Fi 任务,保持简短。
- 文档存在不一致:
esp_now_send()参考页仍写长度必须小于ESP_NOW_MAX_DATA_LEN,与 v2.0 的 1470 字节说法冲突,实际使用请以对应版本头文件为准。 - MicroPython v1.29.0 的 ESP-NOW 已升级到 v2.0,见 MicroPython。
ESP-WIFI-MESH
ESP-WIFI-MESH 让大量 ESP32 设备以树状拓扑组成自愈的 Wi-Fi 网络,根节点连接路由器。它只用 Wi-Fi 射频,不引入额外芯片。需要注意的是它是乐鑫私有方案,不与手机或其他厂商互通。有一个轻量版本 ESP-MESH-LITE,我没有核对其当前状态。
Bluetooth LE 与 BLE Mesh
ESP-IDF 提供两套主机栈:Bluedroid(支持 Classic 与 BLE)和 NimBLE(只支持 BLE,占用小)。BLE 5 的特性(2M PHY、Coded PHY 长距离、扩展广播)在较新芯片上可用,具体见官方的功能支持状态页。ESP-BLE-MESH 是基于蓝牙 Mesh 规范的实现,文档包含入门、示例和 FAQ。BLE Mesh 对设备数、消息大小有限制,使用前读文档里的限制。
Thread、Zigbee、Matter
这三者靠 IEEE 802.15.4 无线电,所以只有 C6、C5、H2 这类带 802.15.4 的芯片能够直接做 Thread 终端或 Zigbee 设备。
- Thread:乐鑫提供基于 OpenThread 的支持。Thread 网络通过边界路由器与 IP 网络连接,乐鑫也有 Thread 边界路由器方案。
- Zigbee:乐鑫提供 esp-zigbee-sdk,可以做协调器、路由器、终端设备,具体角色和芯片支持请查仓库说明。
- Matter:ESP-Matter 同时支持 Wi-Fi 与 Thread 设备,详见 乐鑫官方解决方案。
- 同一颗 C6 同时跑 Wi-Fi、BLE、802.15.4 时共用射频,存在共存调度,吞吐与稳定性会受影响。
Wi-Fi 6、Wi-Fi Aware 与 FTM 测距
C6 与 C5 等新芯片支持 Wi-Fi 6(802.11ax);C5 加入 5 GHz。FTM(Fine Timing Measurement,精确时间测量)可用于 Wi-Fi 测距,部分芯片支持。Wi-Fi Aware(NAN)则在较新的 ESP-IDF 里有一些实验性支持。这几项我没有逐项核对哪些芯片和版本支持,请到各芯片的 IDF 文档页确认。
怎么选
| 需求 | 建议 |
|---|---|
| 手机配网 + 家庭 Wi-Fi | 任意带 Wi-Fi 的芯片 |
| 蓝牙音频(A2DP) | 原版 ESP32 |
| Thread / Zigbee / Matter over Thread | C6 或 H2 |
| 5 GHz Wi-Fi | C5 |
| 低功耗电池节点 + 手机 BLE | C3、C6、H2 |
| 点对点短消息、遥控 | ESP-NOW,任意带 Wi-Fi 的芯片 |
适合谁 / 不适合谁
适合在选芯片、设计网络拓扑之前需要查阅无线能力矩阵的读者。不适合需要深入协议规范细节的读者,请直接看官方文档与协议标准。
参考资料
- ESP-NOW(ESP-IDF 文档):https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/network/esp_now.html
- ESP-IDF BLE 文档目录:https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/ble/index.html
- ESP-Hosted:https://github.com/espressif/esp-hosted
- esp-zigbee-sdk:https://github.com/espressif/esp-zigbee-sdk
- ESP-Matter:https://github.com/espressif/esp-matter
- ESP-IDF 编程指南:https://docs.espressif.com/projects/esp-idf/en/stable/