一. 测试目的
经常会有开发者提出不同 Wi-Fi 协议对 ESP32 AP 模式发包时的持续时间以及电流功耗,本文将进行此项测试。
二. 测试环境
为了保证测试结果的一致性,采用以下测试环境:
-
esp-idf
本文使用 release/v3.3 版本进行测试,对应 commit 为 2befd5c。可通过以下命令确认:git log --oneline -1
结果为:
2befd5c Merge branch 'feature/wifi_prov_ext_httpd_v3.3' into 'release/v3.3'
-
toolchain 版本
gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a) ,可通过以下命令确认:xtensa-esp32-elf-gcc -v
结果为(log 过长,只需要关注最后的这部分。如下):
Thread model: posix gcc version 5.2.0 (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a)
-
测试主机
Linux 环境,Ubuntu 16.04 LTS,可选用其他平台。 -
开发板
ESP32-WROOM-32D 开发板,可选用其他基于 ESP32 的开发板。 -
测试示例
esp-idf 里的 softAP 示例。 -
测试工具
Tektronix MDO3104 示波器。
三. 测试步骤
此次测试使用了 esp-idf 里的 softAP 示例 。
1. 接入示波器
测试时测量 Vcc 引脚上连接导线的电流即可。
2. 代码修改
首先你需要 下载并配置 esp-idf,配置完成后,你可以输入以下指令来进入对应的项目:
cd ~/esp/esp-idf/examples/wifi/getting_started/softAP
然后你需要添加 Wi-Fi 协议设置的 API。以下是具体的操作:
- 添加 Wi-Fi 协议设置的 API:在
softap_example_main.c
里的wifi_init_softap()
函数中添加esp_wifi_set_protocol(ESP_IF_WIFI_AP,WIFI_PROTOCOL_11B)
,这样就将 Wi-Fi 协议设置为 802.11b。以下是 esp-idf 支持的 Wi-Fi 协议:
802.11 B esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B) 802.11 BG esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G) 802.11 BGN esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G|WIFI_PROTOCOL_11N) 802.11 BGNLR esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_11B|WIFI_PROTOCOL_11G|WIFI_PROTOCOL_11N|WIFI_PROTOCOL_LR) 802.11 LR esp_wifi_set_protocol(ifx, WIFI_PROTOCOL_LR)
注:ifx 参数在此处应为 ESP_IF_WIFI_AP。
3. 固件烧写及串口监视
在正确修改 Wi-Fi 协议后,你可以进行固件烧写及串口监视,首先你需要针对 Wi-Fi 账号密码进行简单配置:
make menuconfig
在 menuconfig
界面,你需要设置想要的 AP 的 SSID
和 password
,然后你就可以运行如下指令进行固件烧录及串口监视:
make flash monitor
在串口监视工具中,当你看到 AP 模式成功初始化并显示 SSID
和 password
时,就可以开始此次测试了。
四. 测试结果
运行此示例,在首次烧录并成功初始化 AP 之后,你即可从示波器上观测到想要的测试信息。以下是对应不同 Wi-Fi 协议下的 AP 模式发包时的持续时间以及电流功耗结果:
Wi-Fi 协议 | AP 模式发包时的持续时间 | AP 模式发包时的电流功耗 |
---|---|---|
802.11b | 1.28 ms | 264 mA |
802.11b/802.11g | 1.52 ms | 392 mA |
802.11b/802.11g/802.11n | 1.96 ms | 392 mA |
对应示波器截图如下:
-
802.11b
-
802.11b|802.11g
-
802.11b|802.11g|802.11n
五. 总结
通过以上方法,可测出 ESP32 的不同 Wi-Fi 协议对 ESP32 AP 模式发包时的持续时间以及电流功耗,用户可选择采用以上方法对自己的 ESP32 进行对应测试。
六. 附录:相关知识整理
1. Wi-Fi IEEE 802.11b
IEEE 802.11b 是无线局域网的一个标准。其载波的频率为 2.4 GHz,可提供 1、2、5.5 及 11 Mbit/s 的多种传输速度。在 2.4 GHz 的 ISM 频段共有 11 个频宽为 22 MHz 的频道可供使用,它是 11 个相互重叠的频段。IEEE 802.11b 的后继标准是 IEEE 802.11g。
802.11b 工作在 2.4G 的 ISM 频段上,物理层上使用了的补码键控(CCK)调制方式,不同于 802.11 原始标准,使得最大速率达到 11 Mbps。在介质访问控制上,标准采用载波侦听多路访问/冲突避免(CSMA/CA)的方式,这与原始标准相同。考虑到 CSMA/CA 协议的开销,802.11b 设备间的最大吞吐量,TCP 可以达到 5.9 Mbps,UDP达到 7.1 Mbps。由于微波炉,蓝牙设备,ZigBee 等产品都工作在 ISM 频段上,802.11b 设备可能会受到其他设备的干扰。
2. Wi-Fi IEEE 802.11g
IEEE 802.11g 在 2003 年7 月被通过。其载波的频率为 2.4 GHz(跟 802.11b 相同),共 14 个频段,最大传送速度为 54 Mbit/s。802.11g 的设备向下与 802.11b 兼容。
802.11g 工作在 2.4G 的 ISM 频段上,物理层上使用了正交频分复用(OFDM)调制方式,不同于 802.11 原始标准和 802.11b 标准,而与802.11a 标准相同,使得最大速率达到 54 Mbps。在介质访问控制上,标准采用载波侦听多路访问/冲突避免(CSMA/CA)的方式,这与其他标准相同。考虑到 CSMA/CA 协议的开销,802.11g 设备间的最大吞吐量可以达到 31.4 Mbps。由于微波炉,蓝牙设备,ZigBee 等产品都工作在 ISM 频段上,802.11g 设备可能会受到其他设备的干扰。
3. Wi-Fi IEEE 802.11n
IEEE 802.11n(又被称为 Wi-Fi 4),于 2009 年 9 月正式批准。该标准增加了对 MIMO 的支持,最大传输速度為 450 Mbit/s。同时,通过使用 Alamouti 提出的空时分组码,该标准扩大了数据传输范围。
4. Wi-Fi IEEE 802.11b/g/n 的区别
协议标准时间 | 发布时间 | 工作频段 | 标准速度 | 理想最高速率 | 覆盖范围 |
---|---|---|---|---|---|
802.11b | 1999 | 2.4-2.5 GHz | 6.5 Mbps | 11 Mbps | 30 m / 100 m |
802.11g | 2003 | 2.4-2.5 GHz | 25 Mbps | 54 Mbps | 30 m / 100 m |
802.11n | 2009 | 2.4 GHz / 5 GHz | 300 Mbps | 600 Mbps | 70 m / 250 m |
4. 英文简写术语解释
- ISM:ISM 频段 (Industrial Scientific Medical Band),分別是工业的 (Industrial)、科学的(Scientific)和医学的(Medical),因此 ISM 频段就是各国挪出某一段频段主要开放给工业,科学和医学机构使用。应用这些频段无需许可证或费用,只需要遵守一定的发射功率(一般低于1 W),并且不要对其它频段造成干扰即可。ISM 频段在各国的规定并不统一。如在美国有三个频段 902-928 MHz、2400-2484.5 MHz 及5725-5850 MHz,而在欧洲 900 MHz 的频段则有部份用于 GSM 通信。而 2.4 GHz 为各国共同的 ISM 频段。因此无线局域网 (IEEE 802.11b/IEEE 802.11g)、蓝牙、ZigBee 等无线网络,均可工作在 2.4 GHz 频段上。
- CCK:补码键控
- OFDM:正交频分多工 (Orthogonal frequency-division multiplexing) 有时又称为分离复频调变技术 (discrete multitone modulation, DMT),可以视为多载波传输的一个特例,具备高速率资料传输的能力,加上能有效对抗频率选择性衰减衰減,而逐渐获得重视与采用。
OFDM 使用大量紧邻的正交子载波 (Orthogonal sub-carrier),每个子载波采用传统的调变方案,進行低符号率调制。可以视为一调变技术与多工技术的结合。 - CSMA/CA:载波侦听多路访问 (Carrier Sense Multiple Access) 是一种介质访问控制 (MAC) 的协议。载波侦听 (Carrier Sense) 指任何连接到介质的设备在欲发送帧前,必须对介质进行侦听,当确认其空闲时,才可以发送。多路访问 (Multiple Access) 指多个设备可以同时访问介质,一个设备发送的帧也可以被多个设备接收。
- MIMO:多输入多输出系统 (Multi-input Multi-output) 是一种用來描述多天线无线通信系统的抽象数学模型,能利用发射端的多个天线各自独立发送信号,同时在接收端用多个天线接收并恢复原信息。
- mbps:是 Million bits per second 的缩写,是一种传输速率单位,指每秒传输的位(比特)数量。