MicroPython开发
本文介绍如何使用MicroPython开发ESP32物联网设备,连接SiliZap物联网平台,实现设备数据上报和远程控制。乐鑫科技官网


一、乐鑫ESP32系列介绍
1.1 ESP32系列概述
乐鑫科技(Espressif)的ESP32系列是一系列高性能、低功耗的Wi-Fi和蓝牙SoC(系统级芯片),专为物联网应用设计。这些芯片提供了强大的处理能力、丰富的外设接口和出色的连接性能,成为物联网开发的理想选择。
1.2 ESP32-S3特性
以ESP32-S3为例,这是一款高性能、低功耗的双核Wi-Fi 6 + 蓝牙5.0 (LE) SoC,是ESP32系列的最新成员,具备以下特点:
强大的处理能力和增强的连接性能:
- 双核Xtensa LX7处理器,最高频率240 MHz
- 512 KB SRAM,支持更大程序和数据缓存
- 384 KB ROM用于程序引导和内核功能
- Wi-Fi 6 (802.11 b/g/n/ac/ax)支持
- 蓝牙5.0和蓝牙Mesh
- 高带宽和多设备连接能力
丰富的外设接口:
- 45个可编程GPIO
- 支持USB OTG
- 14个电容触摸传感器
- 12位ADC,采样率高达2 MSPS
- 2个8位DAC
- 4个SPI接口、2个I²C接口、2个I²S接口
- 2个UART接口
二、MicroPython环境搭建
2.1 开发环境简介
对于初学者来说,使用MicroPython开发ESP32是一种简单高效的方式。MicroPython是Python 3语言的精简实现,包含Python标准库的一小部分,并针对微控制器和受限环境进行了优化。
2.2 安装步骤
2.2.1 安装MicroPython固件
- 访问MicroPython官网下载ESP32的MicroPython固件
- 安装esptool工具:bash
pip install esptool - 擦除ESP32闪存:bash
esptool.py --chip esp32 --port /dev/ttyUSB0 erase_flash - 烧录MicroPython固件:bash
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 esp32-20230426-v1.20.0.bin
2.2.2 安装开发工具
推荐使用Thonny IDE作为MicroPython开发工具:
- 访问Thonny官网下载并安装最新版本
- 打开Thonny,点击"运行" > "选择解释器"
- 选择"MicroPython (ESP32)"
- 选择正确的串口端口
- 点击"确定"完成设置
三、MicroPython代码实现
可以从网上购买其他开发板进行测试,外加四路继电器,例如ESP32-S3-DevKitC-1:

3.1 环境准备
- 已安装MicroPython固件的ESP32开发板
- Thonny IDE或其他MicroPython开发工具
- USB数据线
- 4路继电器模块(对应的引脚分别为15、16、17、18)
- sht31温湿度传感器模块(对应的引脚分别为26、27)
- 在SiliZap平台上已创建产品和设备,获取MQTT连接信息
- 从GitHub克隆或下载
mqtt_as库 - 将
mqtt_as文件夹上传到ESP32开发板的根目录





3.2 代码实现
我们的项目使用两个主要文件:main.py(主程序)和mqtt_local.py(配置文件)、mqtt_as文件夹。
bash
# 克隆仓库
git clone https://gitee.com/SiliZap/SZ_ESP32_PYTHON_PUBLIC.git3.2.1 配置文件 mqtt_local.py
首先创建配置文件mqtt_local.py,包含连接信息和引脚定义:
python
# mqtt_local.py Local configuration for mqtt_as demo programs.
from sys import platform, implementation
from mqtt_as import config
# ---------- 必须修改7个全局定义数据(产品ID、用户ID、服务器地址、用户名、密码、WIFI账号、WIFI密码) ----------
PRODUCT_ID = 'XXX' # 1、产品ID(填入你的产品ID)
USER_ID = 'XXX' # 2、用户ID(填入你的用户ID)
config["server"] = "XXX" # 3、服务器地址(填入你的MQTT服务器)
config["user"] = "XXX" # 4、用户名(填入你的MQTT用户名)
config["password"] = "XXX" # 5、密码(填入你的MQTT密码)
config["ssid"] = "XXX" # 6、WIFI 账号
config["wifi_pw"] = "XXX" # 7、WIFI密码
# ---------- 定义4个引脚用于控制四个外设 ----------
AC_PIN = 15 # 空调引脚
ALARM_PIN = 16 # 告警引脚
FAN_PIN = 17 # 风扇引脚
LAMP_PIN = 18 # 台灯引脚
# 定义引脚用于控制四个外设 - 使用ESP32有效GPIO引脚
try:
if platform == "esp8266" or platform == "esp32":
from machine import Pin
# 配置为输出模式以便控制设备
LAMP_PIN = Pin(LAMP_PIN, Pin.OUT) # 台灯引脚
AC_PIN = Pin(AC_PIN, Pin.OUT) # 空调引脚
ALARM_PIN = Pin(ALARM_PIN, Pin.OUT) # 告警引脚
FAN_PIN = Pin(FAN_PIN, Pin.OUT) # 风扇引脚
# 初始状态设为关闭(高电平表示打开,低电平表示关闭)
LAMP_PIN.value(0) # 初始为低电平,表示关闭
AC_PIN.value(0) # 初始为低电平,表示关闭
ALARM_PIN.value(0) # 初始为低电平,表示关闭
FAN_PIN.value(0) # 初始为低电平,表示关闭
# 初始化I2C用于SHT31传感器 - 使用ESP32常用I2C引脚
# i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
# SHT31_ADDR = 0x44 # SHT31默认I2C地址
except Exception as e:
print(f"硬件初始化失败: {e}")
config['ssl'] = False # 非SSL连接(端口1883)
config["port"] = 1883 # 设备认证信息
# 连接稳定性配置
config["keepalive"] = 60 # 心跳间隔60秒
config["max_reconnects"] = 5 # 最大重试次数(超过后报错)
config["reconnect_delay"] = 3 # 重试间隔2秒(递增)3.2.2 主程序 main.py
创建main.py文件,实现MQTT通信和设备控制逻辑,直接从项目复制过去既可,main功能:
- WiFi自动连接与重连
- MQTT协议通信与SiliZap平台交互
- 设备状态自动获取与上报(每10秒)
- 远程控制命令接收与执行
- 一键控制指令序列执行
- 设备状态实时监控与ACK回复
- 自动获取设备MAC地址并生成Client ID
3.3 安装必要的库
我们的项目使用mqtt_as库,这是一个高级MQTT客户端库,支持异步通信。需要将mqtt_as库复制到ESP32上:
- 从GitHub仓库下载mqtt_as文件夹
- 在ESP32上创建lib文件夹
- 将mqtt_as库文件夹复制到lib/mqtt_as目录下
或者在Thonny中直接上传库文件:
- 在Thonny中,右键点击ESP32设备
- 选择"上传文件..."
- 选择mqtt_as库文件夹上传




3.4 运行程序
- 将mqtt_as库文件复制到ESP32的lib/mqtt_as目录下
- 在Thonny中,创建并保存mqtt_local.py文件,修改以下配置:
- PRODUCT_ID:您的产品ID
- USER_ID:您的用户ID
- MQTT服务器地址
- MQTT用户名
- MQTT密码
- WiFi账号
- WiFi密码
- 创建并保存main.py文件
- 点击"运行"按钮将代码上传到ESP32
- 观察Shell窗口中的输出,确认程序正常运行
- 程序会自动获取设备MAC地址,构建Client ID,连接WiFi和MQTT服务器
- 程序每10秒上报一次设备状态数据
- 支持接收远程控制命令和一键控制指令



四、项目运行效果





