在 ESP32-S2 上试用 circuitpython

南笙酒味 提交于 2021-02-13 18:52:50


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)

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




本文分享自微信公众号 - MicroPython中文社区(MicroPython_cn)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!