ESP-NOW 方案介绍

[English]

ESP-NOW 方案综述

ESP-NOW 协议旨在提供低功耗、高效率的设备之间的直接通信。它适用于具有 ESP 芯片的物联网设备,这些设备之间需要简单、快速地交换数据,而不需要连接到传统的无线网络(如 Wi-Fi 路由器)。

ESP-NOW 应用组件 底层依赖的是乐鑫定义的无连接通信协议 ESP-NOW,它能够在无路由器的情况下直接、快速、低功耗地控制智能设备。实现与 Wi-Fi 和 Bluetooth LE 共存,支持乐鑫 ESP8266、ESP32、ESP32-S 和 ESP32-C 等多系列 SoC。ESP-NOW 广泛应用于智能家电、远程控制和传感器等领域。ESP-NOW 的特点如下:

  • 快速应答

  • 超低功耗

  • 高兼容性

  • 远距通信

  • 多跳控制

ESP-NOW 常见应用场景

  • 乐鑫 ESP-NOW 无线通信方案:ESP-NOW 是乐鑫定义的基于数据链路层的无线通信协议,可与 Wi-Fi 和 Bluetooth LE 共存,既能实现稳定的设备连接和控制,也能作为独立的辅助模块,为系统提供设备配网、调试和固件升级等功能。

  • ESP32-C2 纽扣电池开关:基于 ESP32-C2 的低功耗 Wi-Fi 纽扣电池无线开关方案,能够解决 Bluetooth LE、Zigbee 等无线开关响应迟滞、需要网关等问题。它无需网关就可以和 ESP-NOW 结合使用,反应速度灵敏。ESP32-C2 纽扣电池开关不仅支持超长待机,而且产品形态不会被电池体积限制。

  • ESP32 Wi-Fi 遥控器:基于 ESP-NOW 构建的 Wi-Fi 手持遥控器,支持即时控制搭载 ESP32 的智能设备,如玩具小车、小飞机、机器人等,可达到毫秒级的控制延时,实现比蓝牙传输更远的控制距离

  • 批量配网

  • 批量 OTA

  • 产品产测

ESP-NOW 如何启用

ESP-NOW 具有简单清晰的启用流程, 参考`ESP-NOW get-started 例程 <https://github.com/espressif/esp-now/tree/master/examples/get-started>`_ 可以了解到 ESP-NOW 的启用过程:

  1. 调用 espnow_storage_init() 函数,用于初始化 ESP-NOW 的存储系统。ESP-NOW 储系统用于存储已经建立通信的设备信息,包括设备的 MAC 地址、安全密钥等。该函数在开始使用 ESP-NOW 之前进行初始化,确保存储系统处于可用状态。

  2. 初始化 Wi-Fi。

  3. 创建了一个 espnow_config_t 结构体,该结构体将用于初始化 ESP-NOW。并使用 ESPNOW_INIT_CONFIG_DEFAULT() 宏对结构体进行初始化。ESPNOW_INIT_CONFIG_DEFAULT() 是 ESP-NOW 提供的设置默认配置参数的宏。用户可以通过 undefine 的方式对该宏进行重定义。

  4. 调用 espnow_init 初始化 ESP-NOW。

  5. 调用 espnow_set_config_for_data_type() 函数设置接收数据类型,如配置为 ESPNOW_DATA_TYPE_DATA 类型。第二个参数设置为 true 表示允许接收该类型的数据包,第三个参数是接收回调函数的指针。这意味着当接收到类型为 ESPNOW_DATA_TYPE_DATA 的数据包时,将调用回调函数来通知接收到的数据。

ESP-NOW 参考资料

此外,目前我们已经有一些公开的 ESP-NOW 资料,如下:

ESP-NOW 性能测试数据附录

这部分可以参考 ESP-NOW 用户指南