IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> ESP8266 & ESP32网络传输速度探讨 -> 正文阅读

[网络协议]ESP8266 & ESP32网络传输速度探讨

概述

官方给出的网络传输速度很可观,如ESP32的速度:
点击这里查看出处
在这里插入图片描述但是呢,这个测试结果一定是得到很细致的固件优化的,实际中我们能否得到如此的数据吞吐呢?

我拿自己现有的开发板 和 开发框架进行一个测试,希望能给大家做个参考。

大家如果有更好的办法或者任何想法,欢迎在留言区留言探讨哈!
如有纰漏,欢迎指正!

实验条件

实验开发板有:

  • ESP8266:ESP12E DEVKIT V2
  • ESP32: ESP32_DevKitc_V4

接收数据用的PC机:
在这里插入图片描述

数据接收应该是受到硬盘读写速率等影响的,因为我自己做的上位机,在硬盘中运行时,传输速率很慢(或者说只是运行速度慢亦或者写入速度慢?)
如有纰漏,欢迎指出!

传输速率测量软件:

使用的是我自己基于C#、.NET框架开发的网络数据传输上位机;
同时,我用NetAssist_v4.3.25软件进行了粗略估算,两者速率相差不多

开发框架:

  • 基于Arduino框架下的官方库,如ESP8266WiFi.hWiFiUdp.hAsyncUDP.h

实现细节:

UDP通信,ESP开发板端以WifiAP模式,作为server端,与PC进行网络通信

之所以选择UDP通信呢,因为TCP是面向连接的网络通信,相较于UDP通信有更多的机制保证数据传输的可靠性等;因此网络速度上UDP要快于TCP

一共测试两种情况:

  • ESP8266 & ESP32 UDP通信横评
  • ESP32 UDP通信 & 异步UDP通信横评

测试结果

1. ESP8266 & ESP32 UDP通信横评

核心代码如下:

uint8_t adc[6] = {0};	//每次发送六个字节数据
void loop{
//经UDP向PC端发数据:  
udp.beginPacket(udp.remoteIP(), udp.remotePort()); // 自动获取PC的 IP and port
udp.write(adc, 6);
udp.endPacket();
}

因为ESP8266 的库 和 ESP32库的相关API,在用户层是兼容的,所以这里直接拿过来调用即可,不需要过多关注底层的实现

测试结果是:

  • ESP8266 & UDP:

速率在2600 ~ 3000组/s 波动,每组 6 个字节数据
换算过来,15 ~ 17 Kb/s
在这里插入图片描述

  • ESP32 & UDP:

速率在1800~2100组/s 波动,每组 6 个字节数据
换算过来,10 ~ 12 Kb/s

PS. 串口速率在115200时,传输速率是14kb/s

在这里插入图片描述

2. ESP32 UDP & ESP32 异步UDP横评

  • ESP32 & 异步UDP(AsyncUDP)

速率在 2200~2500组/s 波动,每组 6 个字节数据
换算过来,12 ~ 15 Kb/s
在这里插入图片描述
异步UDP核心代码:

AsyncUDP udp;
uint8_t adc[6] = {0};
AsyncUDPMessage text;
text.write(adc, 6);
void loop() {
	udp.sendTo(text, remoteip, remoteport);//异步发送
}

加上之前的ESP32 UDP评测结果:

  • ESP32 & UDP:

速率在1800~2100组/s 波动,每组 6 个字节数据
换算过来,10 ~ 12 Kb/s

PS. 串口速率在115200时,传输速率是14kb/s

在这里插入图片描述

结论与猜想

先来说总的结论:
如果单纯使用Arduino框架下的 网络API, 可能得到的传输速度并不高

其中,

  • 对比实验 —— ESP8266 & ESP32 UDP通信横评

ESP8266的表现竟然要比ESP32要好…

在测试之前,我一直觉得ESP32主频更高,按理说传输速度更好才对!

查了下ESP32的技术参考手册发现问题了:

在这里插入图片描述在这里插入图片描述

WiFi时钟源来自于 APB_CLK ;当CPU时钟来源为PLL_CLK时, APB_CLK为80MHz
和ESP8266主频是相同的

看了下ESP8266 和 ESP32的源代码,发现ESP8266wifi通信的底层,时lwip的直接移植应用?
而ESP32的库,由乐鑫官方维护,所以底层是由ESP-IDF封装而来的,可能组件多了、封装更多,执行效率要低一些

  • 对比实验 —— ESP32 UDP & ESP32 异步UDP横评

ESP32 在异步UDP下的表现,确实要好于同步UDP,但是相对于ESP8266的传输表现,还是有点拉跨

以上,欢迎大家批评指正 和 交流探讨!

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 12:17:20  更:2021-07-17 12:18:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 17:48:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码