ESP32 ipref WiFi吞吐量测试

文章目录

1. 前言

ESP32 作为一款当前市场占有率最高的物联网芯片之一,被应用在绝大多数需要使用到 WiFi 功能的物联网产品上。作为一款产品,产品的稳定性和高可靠性是一个优秀的产品必须重点关注的一个点,那么关于ESP32 这款IC的 WiFi 性能在我们的产品上具体怎么样我们又有什么样的办法?有怎样的指标来测试,来衡量呢?

本文将主要分享,关于如何配置 ESP32 使用 ipref 对其进行 WiFi 网络信号测试,废话不多说,我们直接开始吧!

2. 信号影响因素分析

ESP32 在产品整机中的信号质量主要受以下几大块影响:

  • ESP32模组(包括ESP32芯片、ESP32模组电路板)
  • 天线

在实际项目开发过程中,会有以下几种情况:

  • 直接使用ESP32模组方案:
    • 通常ESP32模组在出厂前,乐鑫都会对模组收发数据包进行检测,已保证生产出货的模组的性能满足要求;但是在实际项目中我们是需要将 ESP32 模组贴在我们自己设计的PCB板上的,那么PCB板上的走线对于ESP32的信号是可能存在影响的!通常我们不建议在ESP32模组下方走线,特别是高频信号线。
  • 仅购买ESP32芯片,自己绘制ESP32外围电路方案:
    • 由于使用ESP32模组,PCB大小受到限制或可扩展性相对直接使用芯片较弱,在一些产品上会选择由项目硬件工程师自行设计ESP32外围电路,那么此类PCB走线对于 WiFi 收发性能需要重点关注!

除了上述ESP32模组以外,天线对于ESP32的WiFi性能也是一个非常重要的变量,关于天线,也分为以下几种情况:

  • 直接使用PCB天线
    • 也就是把天线画在PCB板上,部分型号的ESP32模组就是这样弄的
  • 使用外置天线
    • 外置天线效果通常要强于PCB天线,不过也不是随便一根天线能插上去就行,天线也是个很复杂的东西,每种天线,其适配的频率/频段会不一样,因此你也才能看到有硬件工程师专门调天线!也才会来找到软件同事想办法弄本文的测试方法啦!因此天线是不能随便乱插的,插错了等同于没插!

以上就是对 ESP32 WiFi信号影响的所有硬件软件了,接下来让我们验证下你的设备WiFi性能的好坏吧!

3. WiFi 性能测试

3.1设备端操作, ipref 烧录

关于 ipref 官方提供了相关的测试程序,只需要大家自行下载编译并烧录即可。

  1. 已安装 ESP-IDF 编译环境的,可以在IDF目录下的例程内找到对应的程序,路径如下:~\esp-idf\examples\wifi\iperf

  2. 或者直接下载github上的程序,对应链接:iperf

  3. 拷贝例程至其他目录,不破坏 IDF 环境目录文件


进入 iperf 工程目录,在此目录下打开终端,运行 get_idf 加载IDF环境变量(注意,如果没有提前配置,输入此指令是无效的,请参阅:windows ESP32开发环境搭建linux ESP32开发环境搭建



5.直接输入 idf.py build 编译工程




6.输入 idf.py -p COM9 flash monitor 下载并开启监控,注意修改COM口为你自己电脑上的COM口;Linux环境为 idf.py -p /dev/ttyUSB0 flash monitor,也要修改为对应的USB口



7.下载完之后成功运行,串口会打印如下信息



8.iperf 程序内开发了一个终端,通过此终端可完成ESP32 iperf 所需配置,输入 help 可查看所有的指令



9.输入 sta <wifi名> 连接 wifi



10.至此,ESP32设备端已配置完成,接下来先配置号上位机,之后再开始测试
</wifi名>

3.2 电脑端操作,安装对应的 ipref 上位机

3.2.1 windows 安装

1.去 iperf 官网下载对应的上位机 iperf下载(点击跳转)
2.选择 iperf 2.0.9 版本,不要下载其他版本,特别是3.0以上版本,原因是不兼容!



3.下载解压,之后进入对应目录下,在此目录下打开 cmd 命令终端



4.输入iperf —help 可查看支持的指令


3.2.2 Linux安装

linux更简单啦,直接在终端敲以下命令


sudo apt-get update
sudo apt install iperf

我当前默认安装的就是2.0版本,大家自己安装的时候还是注意下,V3.0版本的可能不能使用!

3.3 吞吐量测试

WiFi吞吐量测试测试类型上分为发送和接收两种测试,接收性能好不代表发送性能好;此外在协议上又分为TCP和UDP两种,TCP是可靠的连接,UDP是广播方式,因此UDP有一定数量的丢包属于正常现象。

关于ESP32的 wifi 吞吐量测试,需要采用两台设备,在同一个网络下进行,可以是两台ESP32设备,也可以是一台电脑,一台ESP32,本文我们以一台电脑,一台ESP32为例进行说明,相信看完之后,两台ESP32的方案你也能轻松搞定!

接下来就开始吧!

3.3.1 发送性能测试,设备端做客户端,电脑端做服务器

3.3.1.1 UDP测试
  1. 我们首先进行UDP测试,电脑端开启服务器,在 cmd 终端输入: iperf -u -s -i 3(linux一样)
    • -u 参数:进行UDP测试,不加代表进行TCP
    • -s 参数:作为服务器
    • -i 3 参数:间隔3s打印一次测试结果,不加你在 cmd 终端就看不到任何过程数据

      2.查看服务端的IP地址,也就是电脑的IP地址,win+r 之后输入 cmd打开新的终端,输入 ipconfig 查看ip信息;linux在终端输入 ifconfig 查看



    • 设备端操作,发起UDP测试,输入以下指令:
  • iperf -u -c 192.168.1.54(服务器IP地址) -i 3 -t 30
  • -c 参数,作为客户端
  • 192.168.1.54 参数,设置服务器地址
  • -i 3参数,间隔3s打印一次数据
  • -t 30 总共进行30s测试



3.3.1.2 TCP测试

1、服务器配置,采用TCP方式,对应指令为:iperf -s -i 3,相比UDP测试,也就是省略了-u 参数,需要注意的是,iperf上位机2.0.9版本测试完成之后无法退出,我们直接关闭,重新打开就好了~



2.设备端配置,采用TCP方式,对应指令为:iperf -c 192.168.1.54(服务器IP地址) -i 3 -t 30,相比UDP测试,也是删掉 -u 参数



3.需要注意的是,相比UDP测试,在TCP测试中,我们发现没有了丢包率 Datagrams 这个参数了,这是由于TCP通讯是点对点稳定可靠传输,保证数据成功到达,100%成功率,TCP通讯测试时传输速度才是衡量指标!


3.3.2 接收性能测试,设备端做服务器,电脑端做客户端

3.3.2.1 UDP测试


1.修改服务器(ESP32)配置,输入指令:iperf -u -s -i 3



2.修改客户端(上位机)配置,输入指令:iperf -u -c 192.168.1.28 -i 3 -t 30,注意服务器ESP32的IP地址在串口上有打印



3.需要注意的是,ESP32作为UDP服务端的时候有超时设置,且时间不是很长,因此如果ESP32服务端开启后,长时间客服端没有接入是会自动关闭的!串口上会有以下提示,因此操作的时候需要注意!



4.测试结果如下:


4. 总结

以上就是关于 ESP32 的 WiFi 吞吐量测试所有记录啦,有关问题,欢迎大家在评论区讨论!


创作不易,转载请注明出处!

关注、点赞+收藏,可快速查收博主有关分享!


5. 相关文章推荐