友情提示点击顶部放大镜 可以使用站内搜索 记住我们的地址 www.hainabaike.com
长期以来ESP8266是一款广受欢迎的Wi-Fi模块,在很多项目中和产品中已经得到广泛使用了。Espressif的ESP32被称为ESP8266的新改进版本。那我们应该升级ESP32吗?
ESP8266概述
Espressif的ESP8266EX芯片广泛被用于ESP8266 wifi模块,它是一款具有完整的TCP/IP堆栈和单片机功能的芯片,内置一个泰思立达(Tensilica)L106 32-bit RISC处理器(80MHz),最大时钟速度为160mhz,同时内置了iBus、dBus和AHB接口。可以使用高达16MB的外部SPI闪存。ESP8266EX支持14个无线信道和2.4GHz的接收器和发射器。在Wi-Fi(72.2mbps)方面,ESP8266EX实现了TCP/IP和完整的802.11 b/g/n WLAN MAC协议(2个虚拟Wi-Fi接口)。
ESP8266EX芯片在Mode -sleep、Light-sleep、Deep-sleep三种电源管理模式(第四种是active模式)中,无线和Wi-Fi将被禁用。芯片接口包括17个GPIO引脚,4个软件实现的PWM输出引脚,以及SDIO, SPI, HSPI, I2C, I2S, UART接口,ESP8266EX芯片还支持红外遥控接口和嵌入式模数转换器。
ESP32概述
ESP32芯片(包括:ESP32- d0wd、ESP32- d0wdq6、ESP32- d2wd、ESP32- s0wd)集成了Wi-Fi和双模式蓝牙。根据型号差异,ESP32包含一个或两个低功耗Xtensa®32位LX6微处理器(s),最大时钟速度240 MHz(通常是160 MHz)和Xtensa RAM / ROM,本地内存和JTAG接口。
与ESP8266EX不同,ESP32具有不同大小的嵌入式闪存,支持多个外部QSPI闪存和SRAM芯片(最多16MB)。ESP32的无线功能和ESP8266一样,但是增加了一个平衡和收发两用开关。与ESP8266EX芯片相比,另一个改进是ESP32嵌入了一个RTC时钟,实现了TCP/IP和完整的802.11 b/g/n Wi-Fi MAC协议(4个虚拟Wi-Fi接口),数据速率可达150mbps,支持旧蓝牙协议和低功耗蓝牙协议,但是在五种电源管理模式中将会禁用这些功能。
ESP32芯片具有34个GPIO引脚,且大部分GPIO都可以配置内部上拉或下拉电阻,可以与SDIO、UART等实现多路复用。ESP32还具有两个8位DAC通道和一个12位SAR ADC,支持来自18个通道的测量量。ESP32芯片除了SDIO、SPI、HSPI、I2C、I2S和UART接口外,还有霍尔传感器、10个电容感应GPIOs和一个以太网MAC接口。
应该升级吗?
总的来说,ESP32比ESP8266更加强大。总的来说,ESP32在以下几个方面具有优势:
- 功耗方面:ESP32的工作电流是5µA相比ESP8266的20µA功耗更低。
- 时钟速度方面:ESP32的时钟速度也比ESP8266快了两倍。
- 接口扩展方面:ESP32蓝牙和GPIO的引脚更多了,很以满足更多的连接。
升级后唯一缺点是软件支持。成本方面,尽管两者都属于低成本产品,但ESP32的成本是ESP8266的两倍。因此,如果你的项目依赖于已完全成熟且不再更新的软件,那么ESP32可能会不支持。如果你的现有设备工作正常,且你没有添加新功能的计划,那么升级是不值得的。反之,如果你的项目需要超低功耗或者需要更多GPIO,甚至是更强大的处理器和连接能力,那么升级到ESP32是值得的。
ESP32 不同版本性能测试
ESP32目前有两种版本的硬件,普通版和带4M psRAM版本,同时也有两个对应版本的固件。因为官方声明说psRAM的版本会对性能有一定影响,因此就做了一个测试,计算圆周率,看看两个版本的固件对性能会有多大影响。
测试条件
- 使用相同版本号的最新esp32固件(esp32-20180708-v1.9.4-244-g106e5945.bin和esp32spiram-20180708-v1.9.4-244-g106e5945.bin)
- 使用相同的ESP32硬件(带有4M psRAM)
- 运行频率是240MHz
- 使用相同方法计算圆周率
测试程序
使用下面程序分别计算100、1000、2000、5000、10000、100000位圆周率。这是在以前程序基础上修改了一下,将tick_us()改为了tick_ms(),因为计算10000位时超出了tick_us()最大范围。
import time def pi(places=10): # 3 + 3*(1/24) + 3*(1/24)*(9/80) + 3*(1/24)*(9/80)*(25/168) # The numerators 1, 9, 25, ... are given by (2x + 1) ^ 2 # The denominators 24, 80, 168 are given by (16x^2 -24x + 8) extra = 8 one = 10 ** (places+extra) t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24 while t > 1: n, na, d, da = n+na, na+8, d+da, da+32 t = t * n // d c += t return c // (10 ** extra) def pi_t(n=10): t1=time.ticks_ms() t=pi(n) t2=time.ticks_ms() print('elapsed: ', time.ticks_diff(t2,t1)/1000, 's') return t
测试结果
位数 | ESP32计算时间(s) | ESP32 psRAM计算时间(s) |
100 | 0.008 | 0.021 |
1000 | 0.276 | 0.636 |
2000 | 1.188 | 2.358 |
5000 | 7.682 | 13.94 |
10000 | 27.691 | 60.468 |
100000 | —– | 11659.97 |
从上面测试结果可以看出,带有psRAM的固件计算速度明显慢了不少,平均下来慢了一倍左右。看起来psRAM虽然好,但是对性能的影响的确非常大。
micropython.org.cn/bbs/forum.php?mod=viewthread&tid=1526
basemu.com/should-you-upgrade-from-esp8266-to-esp32.html
标签: ESP8266pythonpythMicroPythonESP32
评论列表