ESP32-S2 是乐鑫去年推出的 SOC,它可以看作是 ESP32 的低成本简化改进版本,在保持了 ESP32 的主要特点下,去掉了以太网、BLE、CAN、霍尔传感器等功能,但是增加了 USB OTG、摄像头接口、LCD接口 和 更多GPIO,进一步降低了成本,更加适合做通用控制。

ESP8266、ESP32 和 ESP32-S2 对比

-
ESP8266
ESP32
ESP32-S2
发布时间
2014
2016
2019
内核
Xtensa single-core 32-bit L106
Xtensa single/dual-core 32-bit LX6
Xtensa single-core 32-bit LX7
主频
80 MHz
160/240 MHz
240 MHz
协处理器
No
ULP
ULP (RISC-V)
SRAM
160 KB
520 KB
320 KB
ROM
No
448 KB
128 KB
RTC Memory
No
16 KB
16 KB
扩展SPIRAM
Up to 16MB
Up to 16MB
Up to 128MB
扩展 Flash
No
No
Up to 1G
Wi-Fi (802.11 b/g/n)
HT20
HT20
HT20
ESP-MESH
Yes
Yes
Yes
蓝牙
No
BT 4.2 BR/EDR & BLE
No
以太网
No
10/100 Mbps
No
CAN
No
2.0
No
Time of Flight
No
No
Yes
GPIO (total)
16
34
43
触摸
No
10
14
SPI
2
4
4 (OSPI)
I2C
1 (soft)
2
2
I2S
2
2
1
UART
2 (1 ½ actually)
3
2
ADC
1 (10-bit)
18 (12-bit)
20 (12-bit)
DAC
No
2 (8-bit)
2 (8-bit)
PWM (soft)
8
16
8
SDMMC
No
Yes
No
RMT
No
Yes
Yes
USB OTG
No
No
Yes
LCD 接口
No
No
Yes
Camera 接口
No
No
Yes
温度传感器
No
Yes
Yes
霍尔传感器
No
Yes
No
Security
No
Secure boot Flash encryption 1024-bit OTP
Secure boot Flash encryption 4096-bit OTP
Crypto
No
AES, SHA-2, RSA, ECC, RNG
AES-128/192/256, SHA-2, RSA, RNG, HMAC, Digital Signature
低功耗
20uA
10uA deep sleep
Automatic RF power management 5uA in idle mode 24uA at 1% duty cycle
支持 USB 是 ESP32-S2的一大特点,这意味着我们可以像 pyboard 一样直接复制文件到 ESP32,而不用串口或者wifi方式,使用更加简单。以后甚至可以通过 webusb,实现浏览器直接进行编程和下载,无需任何其它软件。
ESP32-S2到现在已经推出一年了,但是因为各种原因,市面上 ESP32-S2 的开发板并不多,目前主要是乐鑫官方的 ESP32-S2-Saola-1 和 ESP32-S2-Kaluga-1 开发板,以及安信可刚推出的 NODEMCU-32-S2。NODEMCU-32-S2的外观和ESP32-S2-Saola-1几乎一样,大小也基本相同(宽度少了 100mil),而价格只有ESP32-S2-Saola-1的一半。


(图中上面是NODEMCU-32-S2,下面是ESP32-S2-Saola-1)

稍有遗憾的是,NODEMCU-32-S2 开发板的LED焊接反了,在连接USB后发现LED不亮,仔细检测发现 LED 焊接问题,希望后续版本可以修正。此外开发板的引脚排列和 ESP32-S2-Saola-1并不完全相同,因此不能直接替换。


虽然现在MicroPython还不支持ESP32-S2,但这也是迟早的事情。在EEWorld社区上,已有 RCSN 发表的 ESP32-S2开发之坑系列。而在前几天刚发布的 CircuitPython 6.0.0 Alpha 1 中,已经正式支持 ESP32-S2。从 circuitpython网站上下载固件后,用esptool或flash download tool将固件下载到开发板(方法请见社区CircuitPython版块的相关帖子),然后使用一个 USB 转 DIP 座,将 ESP32-S2的 USB 端口(GPIO19/D-和GPIO20/D+)引出来,就可以先体验一下了。


通过microUSB连接到计算机后(注意不是板载的USB,而是上图所示的外扩USB),就会出现一个CIRCUITPY磁盘,大小约2M。


通过MU(https://codewith.mu/)软件,就可以方便的编写程序、在REPL下调试。


用圆周率做性能测试:

from time import monotonicdef calc_pi(places=100):extra = 8one = 10 ** (places+extra)t, c, n, na, d, da = 3*one, 3*one, 1, 0, 0, 24while t > 1:n, na, d, da = n+na, na+8, d+da, da+32t = t * n // dc += treturn c // (10 ** extra)def pi_t(n = 500):t1 = monotonic()calc_pi(n)t2 = monotonic()return t2 - t1print('calc pi 100 bits:', pi_t(100), 's')print('calc pi 1000 bits:', pi_t(1000), 's')print('calc pi 5000 bits:', pi_t(5000), 's')

运行结果,计算1000位比ESP32快一点,计算5000位慢一点,感觉目前固件没有完全发挥出ESP32-S2性能,内存部分还有待优化。