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

ESP8266、ESP32 和 ESP32-S2 对比

(来自:https://maker.pro/esp8266/tutorial/a-comparison-of-the-new-esp32-s2-to-the-esp32)

-ESP8266ESP32ESP32-S2
发布时间201420162019
内核Xtensa single-core 32-bit L106Xtensa single/dual-core 32-bit LX6Xtensa single-core 32-bit LX7 
主频
80 MHz160/240 MHz240 MHz 
协处理器NoULPULP (RISC-V) 
SRAM160 KB520 KB320 KB 
ROMNo448 KB128 KB
RTC MemoryNo16 KB16 KB
扩展SPIRAMUp to 16MBUp to 16MBUp to 128MB
扩展 FlashNoNoUp to 1G
Wi-Fi (802.11 b/g/n)HT20HT20HT20
ESP-MESHYesYesYes 
蓝牙NoBT 4.2 BR/EDR & BLENo
以太网No10/100 MbpsNo
CANNo2.0No
Time of FlightNoNoYes
GPIO (total)163443
触摸No1014
SPI244 (OSPI)
I2C1 (soft)22
I2S221
UART2 (1 ½ actually)32
ADC1 (10-bit)18 (12-bit)20 (12-bit)
DACNo2 (8-bit)2 (8-bit)
PWM (soft)8168
SDMMCNoYesNo
RMT NoYesYes
USB OTGNoNoYes
LCD 接口NoNoYes
Camera 接口NoNoYes
温度传感器NoYesYes
霍尔传感器NoYesNo
SecurityNoSecure boot Flash encryption 1024-bit OTPSecure boot Flash encryption 4096-bit OTP
CryptoNoAES, SHA-2, RSA, ECC, RNGAES-128/192/256, SHA-2, RSA, RNG, HMAC, Digital Signature
低功耗20uA10uA deep sleepAutomatic 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 monotonic


def calc_pi(places=100):
    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 = 500):
    t1 = monotonic()
    calc_pi(n)
    t2 = monotonic()
    return t2 - t1


print('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性能,内存部分还有待优化。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐