ESP32-S3
1 XIAO ESP32S3 开发板
-
矽递官方Seeed Studio XIAO ESP32S3开发板(尺寸:21mm x 17.5mm)
-
官方中文文档:Seeed Studio XIAO ESP32S3 (Sense) 开发板 | Seeed Studio Wiki
项目 | Seeed Studio XIAO ESP32S3 |
---|---|
处理器 | ESP32-S3R8 Xtensa LX7双核32位处理器,工作频率240 MHz |
无线 | 完整的2.4GHz Wi-Fi子系统 BLE:蓝牙5.0,蓝牙网状 |
存储器 | 片上8M PSRAM和8MB闪存 |
接口 | 1x UART, 1x IIC, 1x IIS, 1x SPI, 11x GPIOs (PWM), 9x ADC, 1x User LED, 1x Charge LED 1x Reset button, 1x Boot button |
尺寸 | 21 x 17.5mm |
功率 | 输入电压(Type-C):5V 输入电压(BAT):4.2V 电路工作电压(Type-C): 5V 19mA 电路工作电压(BAT):3.8V 22mA 充电电池电流:100mA |
低功耗模型 | 调制解调器睡眠模式: 3.8V 25 mA 轻度睡眠模式: 3.8V 2 mA 深度睡眠模式: 3.8V 14 μA |
启用Wi-Fi的功耗 | 活动模型: ~ 100 mA |
BLE启用功耗 | 活动模型:~ 85 mA |
工作温度 | -40°C ~ 65°C |
-
板载组件:
-
正面引脚:
-
背面引脚:
2 XIAO ESP32S3 使用 MicroPython
-
所需软件下载地址及教程:
Python:Download Python | Python.org
Python的安装教程参考这位大佬:「Python入门」安装Python程序超详细解析及教程_python安装-CSDN博客
Thonny IDE:Thonny, Python IDE for beginners
Thonny IDE的安装教程参考这位大佬:Thonny安装教程-CSDN博客
XIAO ESP32S3 MicroPython官方固件:XIAO ESP32S3 MicroPython
-
打开设备管理器找到usb端口号(COM7)
-
解压
XIAO_ESP32S3_Micropython.zip
,进入XIAO_ESP32S3_Micropython\XIAO ESP32S3 Micropython
,在地址栏输入cmd
,
- 使用 pip 命令安装 esptool
pip install esptool
- 命令擦除 Xiao ESP32S3 上的闪存并烧录固件
# 把 COMXX 改成设备管理器里查找到的端口号(例如COM7)
esptool.py --port COMXX erase_flash
esptool.py --port COMXX --baud 460800 --before default_reset --after hard_reset --chip esp32s3 write_flash --flash_mode dio --flash_size detect --flash_freq 80m 0x0 firmware.bin
注:‘esptool.py’ 不是内部或外部命令,也不是可运行的程序或批处理文件
目前发现在cmd终端运行esptool.py
会报错'esptool.py' 不是内部或外部命令,也不是可运行的程序或批处理文件。
,只需将esptool.py
中的.py
删除改为esptool
即可。
- 打开Thonny IDE,点击顶部
运行
选择配置解释器
,选择MicroPython(ESP32)
和COM7
,点击顶部识图
选择文件
即可看见MicroPython设备
3 XIAO ESP32S3 连接 WiFi
# WiFi.py
import network
import time
def connect_to_network(ssid, password):
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
# 检查wlan是否已连接
if not wlan.isconnected():
print('WiFi连接中...')
# 连接与处理异常
try:
wlan.connect(ssid, password)
except OSError as e:
print(f"发生错误:{e}")
return (False, None)
# 设置连接超时时间
i = 1
while not wlan.isconnected():
print("正在连接...{}".format(i))
i += 1
time.sleep(1)
if i > 10:
print('WiFi 连接超时。')
return (False, None)
print('WiFi连接成功,IP:{}'.format(wlan.ifconfig()[0]))
return (True, wlan.ifconfig()[0])
else:
print('WiFi连接成功,IP:{}'.format(wlan.ifconfig()[0]))
return (True, wlan.ifconfig()[0])
# test.py
import machine
import WiFi
# pin21口为开发板上黄灯,value设置0为亮起,1为熄灭
light_pin = machine.Pin(21, machine.Pin.OUT)
light_pin.value(1)
ssid = "WiFi名称"
password = "WiFi密码"
status, wlan_ip = WiFi.connect_to_network(ssid, password)
if status:
light_pin.value(0) # WiFi连接成功,点亮黄灯
else:
print('请检查WiFi用户名或密码。')
注:当修改为正确的WiFi名称或密码后运行仍可能会报连接超时,重新运行进行连接即可
4 XIAO ESP32S3 连接 oled 屏显示中英文
-
以下教程与代码均来自CSDN大佬:jdh99-CSDN博客
-
教程与代码github链接:jdhxyy/ssd1306py-micropython: ssd1306 driver for micropython (github.com)
-
教程与代码gitee链接:ssd1306py-micropython: ssd1306 driver for micropython (gitee.com)
-
使用屏幕为0.96寸oled屏,ssd1306芯片,分辨率128x64,支持ic接口
-
SDA接pin5口,SCL接pin6口,因为函数定义为
def init_i2c(scl, sda, width, height)
,SCL在前SDA在后,所以调用函数lcd.init_i2c(6, 5, 128, 64)
-
用pctolcd2002生成文字的设置:
- 因为汉字是16×16,英文是8×16,目前试了下无法使用pctolcd2002生成的英文文字,所以目前使用时要输出一句中英混合的话用的下面的方法:
# 'WiFi'四个英文字符占4*8=32位,所以'连接成功'在第32位
lcd.text('WiFi', 0, 0, 16)
lcd.text_cn('连接成功!', 32, 0, 16)
注:点亮oled报错
在按照教程使用过程中发现如下报错,原因是在/lib/ssd1306py/ascii16.py
里第15行_file = open(sys.path[1] + '/ssd1306py/ascii16.txt', 'r')
报错项目无法定位到这个文件,改为_file = open('/lib/ssd1306py/ascii16.txt', 'r')
即可正常运行,包括ascii24.py
与ascii32.py
文件内。
Traceback (most recent call last):
File "<stdin>", line 34, in <module>
File "/lib/ssd1306py/ops.py", line 66, in text
File "/lib/ssd1306py/ascii16.py", line 35, in display
File "/lib/ssd1306py/ascii16.py", line 15, in _get_ch
OSError: [Errno 2] ENOENT
以上仅是学习过程的记录与问题的分享,如有错误的地方欢迎指出及时改正。