最近在用micropython 开发ESP32s3的应用项目时,总是碰到各种各样的问题,这些问题,在之前的课程中,为了聚焦每个课程的知识内容,我们没有提及,今天我们把之前遇到的一些问题及解决思路跟大家分享一下,希望能帮到碰到类似问题的朋友。
一、MicroPython for ESP32 不同固件之间的差异
要理解这点,我们首先要明白micropython与python的区别:
Python
1、运行于通用操作系统(如 Windows/Linux/macOS),依赖高性能硬件(多核 CPU、GB 级内存),适合桌面、服务器等场景 。
2、作为通用语言,无法直接操作 GPIO、PWM 等硬件外设。
3、拥有完整的标准库(如 os、sys)和丰富的第三方库(如 NumPy、TensorFlow),覆盖复杂计算场景
MicroPython
1、专为微控制器(如 ESP32、STM32)设计,支持资源受限设备(KB 级内存、MHz 级处理器),适用于嵌入式系统和物联网开发
2、提供 machine 等模块直接控制硬件(如引脚、传感器),支持实时外设交互(SPI/I2C/UART)
3、仅移植 Python 3.4 的部分标准库,功能简化(如不支持多线程),第三方库需针对嵌入式场景定制
个人以为,以上是两者主要区别,需要知道两者更多区别的朋友请自行搜索整理。
从以上区别,我们比较容易理解,不同微处理器的MicroPython固件,可能支持的功能模块会有所不同,甚至相同微处理器,固件版本不同,也会有差异。
我们现在正在开发的项目,本来开始的时候是打算使用ESP32C3开发的,但随着客户的需求逐渐明确,发现ESP32C3的IO口资源不够用,只能换成ESP32S3,从C3换成s3,开发语言使用的是micropython,按说是非常简单的一件事,但还是遇到问题了,获取天气信息的程序在c3上开发完成后,移植到S3上,说是缺少urequests模块,在开发环境中shell窗口输入help('modules')后,我们发现,s3的固件还真没有urequests模块。知道了原因,处理起来就比较简单,一换支持urequests模块的固件,二自己添加urequests模块。

二、BLE与WIFI共用的问题
这个问题,严格来说其实是第一个问题的具体表现,考虑到ESP32对BLE、WIFI共用的需求比较高,我们单独拿出来讲一讲。
我们开始用BLE来控制WS2812灯珠,功能实现没有问题,但加入WIFI后,总是报“WIFI internal error"之类的错误,在网上搜索原因:

最低0.47元/天 解锁文章
2519





