MicroPython 开发
本章节包含以下部分,请按需阅读:
MicroPython 入门教程
MicroPython 入门教程
初次接触 ESP32 MicroPython 开发,想要快速上手?我们为您准备了一套通用的 ESP32 MicroPython 入门教程。
- 第1节 搭建开发环境
- 第2节 基础知识
- 第3节 GPIO 数字输出/输入
- 第4节 ADC 模拟输入
- 第5节 PWM 输出
- 第6节 UART 通信
- 第7节 I2C 通信
- 第8节 SPI 通信
- 第9节 Wi-Fi 基础用法
- 第10节 网页服务器
- 第11节 蓝牙
- 第12节 综合项目
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
配置开发环境
1. 烧录 MicroPython 固件和配置 Thonny
请参考 搭建 MicroPython 开发环境教程 烧录 MicroPython 固件。
2. 其他提示
-
ESP32-C5-Zero MicroPython 固件下载链接:https://micropython.org/download/ESP32_GENERIC_C5/
-
若通过 乐鑫 Flash 下载工具 为 ESP32-C5-Zero 烧录 MicroPython 固件,烧录地址为
0x0。
| 示例程序 | 基础例程说明 |
|---|---|
| 01_GPIO | 实现控制指定的左右共 20 个 GPIO 引脚依次循环进行高低电平切换,并串口打印每个引脚的电平变化状态 |
| 02_BlinkRGB | 实现控制 RGB 呈流水灯动态效果 |
| 03_GetchipID | 实现每隔三秒获取并打印 ESP32-c5 芯片的硬件信息,包括芯片型号、版本、核心数量以及芯片 ID |
| 04_BLE | 实现通过ESP32-C5-Zero 开发板连接蓝牙 BLE 信标并接收广播数据的功能 |
| 05_UART | 实现通过ESP32-C5-Zero 开发板连接 UART 功能 |
| 06WIFI_AP | 实现通过ESP32-C5-Zero 开发板设置为 AP 热点 (2.4G),允许其他 WiFi 设备接入联网 |
| 07_WIFI_STA | 实现通过ESP32-C5-Zero 开发板使用 WIFI 连接,DHCP 分配 IP 地址 |
| 08_WIFI_StaticIP | 实现连接指定 WiFi 并打印连接信息,连接成功后切换为静态 IP 配置,便于局域网内调试和访问。 |
01_GPIO
代码
01_GPIO.ino
for i in range(13):
pins.append(Pin(i, Pin.OUT))
while True:
for p in pins:
p.value(1)
time.sleep(0.5)
for p in pins:
p.value(0)
time.sleep(0.5)
代码解释
- 代码先把 0 到 12 号 GPIO 配置为输出口,再统一拉高、拉低实现循环闪烁。
time.sleep(0.5)控制亮灭节奏,便于观察引脚输出效果。
02_BlinkRGB
代码
02_BlinkRGB.ino
def wheel(pos):
if pos < 85:
return (pos * 3, 255 - pos * 3, 0)
elif pos < 170:
pos -= 85
return (255 - pos * 3, 0, pos * 3)
else:
pos -= 170
return (0, pos * 3, 255 - pos * 3)
while True:
for i in range(256):
np[0] = wheel(i)
np.write()
time.sleep(0.02)
代码解释
wheel(pos)根据位置值返回不同 RGB 组合,用于生成彩虹渐变色。np.write()会把颜色数据真正刷新到灯珠上,循环执行后即可看到流动变色效果。
运行效果
03_GetchipID
代码
03_GetchipID.ino
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
mac = wlan.config('mac')
chip_id = ubinascii.hexlify(mac).decode()
print("Chip Unique ID:", chip_id)
代码解释
network.WLAN(network.STA_IF)用于启用无线网卡的 STA 模式。- 读取到的
mac再经ubinascii.hexlify()转成字符串,方便直接打印唯一 ID。
运行效果
![]() |
|---|
04_BLE
代码
04_BLE.ino
def adv_payload(name, tx_power=-4):
name = name.encode()
payload = bytearray()
# Flags
payload += struct.pack("BB", 2, 0x01) + b"\x06"
# TX Power
payload += struct.pack("BBb", 2, 0x0A, tx_power)
# Name
payload += struct.pack("BB", len(name) + 1, 0x09) + name
return payload
ble.gap_advertise(200_000, adv_payload("ESP32-C5-Zero-BLE"))
while True:
time.sleep(1)
代码解释
adv_payload()按 BLE 广播格式拼接设备名和发射功率等字段。ble.gap_advertise()启动广播后,外部设备就可以扫描到这个 BLE 名称。
运行效果
![]() |
|---|
05_UART
代码
05_UART .ino
# UART1
uart = UART(
1,
baudrate=115200,
tx=Pin(11),
rx=Pin(12)
)
print("UART-Init")
while True:
uart.write("Waveshare\r\n")
time.sleep(1)
代码解释
- 代码使用
UART(1, ...)初始化 UART1,并把 TX/RX 分别映射到指定引脚。 - 主循环中每秒发送一次字符串,可用于最基础的串口连通性测试。
运行效果
![]() |
|---|
06WIFI_AP
代码
06WIFI_AP.ino
# Brief pause to ensure the AP is fully initialized
time.sleep(1)
# Print the AP details in a formatted way
print("-" * 30)
print("AP (Access Point) Started Successfully!")
print("SSID:", ap.config("essid"))
print("Password:", PASSWORD)
# ap.ifconfig() returns a tuple: (IP, Subnet Mask, Gateway, DNS)
# Index [0] is the IP address
print("IP Address:", ap.ifconfig()[0])
print("-" * 30)
代码解释
- 这段代码主要用于输出热点启动后的 SSID、密码和 IP 地址,确认 AP 模式是否正常工作。
ap.ifconfig()[0]取到的是热点当前的本机 IP。
运行效果
![]() |
|---|
07_WIFI_STA
代码
07_WIFI_STA.ino
def connect_wifi():
sta = network.WLAN(network.STA_IF)
sta.active(True)
if not sta.isconnected():
print("Connecting to WiFi...")
sta.connect(SSID, PASSWORD)
while not sta.isconnected():
time.sleep(0.5)
print(".", end="")
代码解释
sta.connect(SSID, PASSWORD)发起联网,后面的循环持续等待直到连接成功。- 这种写法适合示例演示,能直观看到设备正在连接 Wi-Fi。
运行效果
08_WIFI_StaticIP
代码
08_WIFI_StaticIP.ino
if sta.isconnected():
# Step 2: After connection, overwrite configuration to lock static IP
sta.ifconfig((STATIC_IP, SUBNET_MASK, GATEWAY, DNS))
print("-" * 30)
print("WiFi connected successfully!")
print("Connected to SSID:", SSID)
print("Static IP locked to:", sta.ifconfig()[0])
print("Gateway:", sta.ifconfig()[2])
print("-" * 30)
else:
print("Connection failed. Please check hotspot status, credentials, or signal strength.")
代码解释
- 连接成功后调用
sta.ifconfig(...)手动写入静态 IP 配置,覆盖 DHCP 分配结果。 - 这样设备每次联网后都使用固定地址,便于局域网内调试和访问。



