← 返回首页

ESP32-Micropython开发指南

什么是 MicroPython?

MicroPython 是 Python 3 编程语言的精简高效实现,专门针对微控制器和受限环境设计。它包含了 Python 标准库的一个子集,并提供了访问底层硬件的模块。

ESP32 简介

ESP32 是乐鑫科技推出的一款低功耗、高集成度的 Wi-Fi + 蓝牙双模芯片,广泛应用于物联网设备开发。

ESP32 主要特性

环境搭建

1. 硬件准备

2. 安装驱动

根据开发板使用的 USB 转串口芯片安装相应驱动:

3. 烧录 MicroPython 固件

使用 esptool 工具

``bash

安装 esptool

pip install esptool

擦除闪存

esptool.py --port /dev/ttyUSB0 erase_flash

烧录固件(替换为实际固件文件)

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20210902-v1.17.bin
`

Windows 使用 Thonny IDE(推荐初学者)

  1. 下载安装 Thonny IDE
  2. 工具 → 设置 → 解释器 → MicroPython (ESP32)
  3. 选择端口,点击安装或更新固件

基础编程

连接 Wi-Fi

`python import network import time

创建 WLAN 对象

wlan = network.WLAN(network.STA_IF) wlan.active(True)

连接到 Wi-Fi

wlan.connect('你的WiFi名称', '你的WiFi密码')

等待连接

while not wlan.isconnected(): time.sleep(1) print('连接中...')

print('已连接:', wlan.ifconfig()) `

GPIO 控制 LED

`python from machine import Pin import time

设置 GPIO2 为输出(大多数 ESP32 开发板的板载 LED)

led = Pin(2, Pin.OUT)

闪烁 LED

while True: led.value(1) # 点亮 time.sleep(0.5) led.value(0) # 熄灭 time.sleep(0.5)
`

PWM 调光

`python from machine import Pin, PWM import time

创建 PWM 对象

led_pwm = PWM(Pin(2)) led_pwm.freq(1000) # 设置频率 1kHz

渐变效果

while True: # 渐亮 for duty in range(0, 1024, 10): led_pwm.duty(duty) time.sleep(0.01) # 渐暗 for duty in range(1023, -1, -10): led_pwm.duty(duty) time.sleep(0.01)
`

ADC 读取模拟信号

`python from machine import ADC, Pin import time

创建 ADC 对象

adc = ADC(Pin(34)) adc.atten(ADC.ATTN_11DB) # 设置衰减,全量程 0-3.3V adc.width(ADC.WIDTH_12BIT) # 12位分辨率 (0-4095)

while True: value = adc.read() voltage = value / 4095 * 3.3 print(f'ADC值: {value}, 电压: {voltage:.2f}V') time.sleep(1) `

进阶应用

Web 服务器

`python import network import socket from machine import Pin

连接 Wi-Fi(代码同上)...

创建 Web 服务器

def web_server(): addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1] s = socket.socket() s.bind(addr) s.listen(1) print('Web 服务器运行在:', addr) led = Pin(2, Pin.OUT) while True: cl, addr = s.accept() print('客户端连接:', addr) request = cl.recv(1024).decode() # 解析请求 if 'GET /?led=on' in request: led.value(1) elif 'GET /?led=off' in request: led.value(0) # 发送响应 response = """HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n ESP32 Web Server

ESP32 Web Server

LED 控制:

""" cl.send(response.encode()) cl.close()

web_server() `

开发工具推荐

工具特点适用场景
Thonny简单易用,内置固件烧录初学者
VS Code + Pymakr功能强大,代码补全专业开发
uPyCraft国产工具,中文界面中文用户
ampy命令行工具,轻量自动化脚本

常见问题

1. 烧录失败

  • 按住 BOOT 键再点击烧录
  • 降低波特率重试
  • 检查 USB 驱动是否正确安装

2. 无法连接 Wi-Fi

  • 检查 Wi-Fi 名称和密码是否正确
  • 确认 Wi-Fi 是 2.4GHz 频段(ESP32 不支持 5GHz)
  • 尝试重启开发板

3. 内存不足

学习资源


最后更新: 2024-07-17