ESP32 Arduino风格Python控制库 v2.2 - 支持自动检测和固件烧录
Project description
ESP32 Arduino风格Python控制库
📖 简介
这是一个为ESP32设计的Arduino风格Python控制库,旨在让Python代码像Arduino代码一样简单直观。该库提供了统一的硬件抽象层,支持数字IO、模拟输入、传感器读取等功能。
🎯 项目特色
- Arduino风格API: Python代码写起来就像Arduino代码
- 扩展板支持: 完整支持ESP32扩展板的所有通道
- 即插即用: 简单的硬件连接,快速上手
- 丰富示例: 从基础到进阶的完整示例库
- 模块化设计: 清晰的代码结构,易于扩展
📋 硬件配置
主要组件
- 主控制器: RK3588 (Rock 5B Plus)
- 微控制器: ESP32-D0WDR2-V3 (16MB Flash)
- 连接方式: USB串口 (/dev/ttyUSB0)
- 波特率: 115200
扩展板通道配置
| 通道 | GPIO | 类型 | 功能描述 | 示例用途 |
|---|---|---|---|---|
| CH0 | 32 | ADC | 模拟输入 | 温度传感器 |
| CH1 | 33 | ADC | 模拟输入 | 湿度传感器 |
| CH2 | 25 | GPIO | 数字输出 | LED指示灯 |
| CH3 | 26 | GPIO | 数字输出 | 继电器控制 |
| CH4 | 27 | GPIO | 数字IO | 按钮/开关 |
| CH5 | 13 | I2C | I2C SDA | I2C设备 (预留) |
| CH6 | 14 | I2C | I2C SCL | I2C设备 (预留) |
| CH7 | 22 | I2C | I2C SCL | I2C设备 (预留) |
| CH8 | 21 | I2C | I2C SDA | I2C设备 (预留) |
🚀 快速开始
1. 环境准备
# 激活虚拟环境
source /home/mobox/hardware/esp_venv/bin/activate
# 检查ESP32连接
ls -la /dev/ttyUSB*
# 如果需要权限
sudo chmod 666 /dev/ttyUSB0
2. 编译和上传固件
# 进入固件目录
cd esp32-rk3588-sensor-system/esp32_firmware
# 编译固件
pio run
# 上传固件
pio run --target upload
3. 运行第一个示例
#!/usr/bin/env python3
from esp32_arduino import *
# 自动初始化ESP32(包括设备检测、固件烧录和连接)
if esp32_begin():
print("ESP32设置成功!")
# Arduino风格的代码
digitalWrite(CH2, HIGH) # 点亮LED
delay(1000) # 延时1秒
digitalWrite(CH2, LOW) # 关闭LED
# 读取传感器
temp = readTemperature()
print(f"温度: {temp}°C")
# 关闭连接
esp32_close()
else:
print("使用模拟模式")
🚀 新功能:自动检测和烧录
库现在支持自动检测ESP32设备并在需要时自动烧录固件:
from esp32_arduino import *
# 方法1:使用默认自动设置
esp32_begin() # 自动检测、烧录、连接
# 方法2:手动控制
esp32_begin(auto_setup=False) # 不进行自动设置
# 方法3:使用设备管理器
manager = ESP32DeviceManager()
success, info = manager.auto_setup()
# 方法4:使用便捷函数
success, info = auto_setup_esp32()
📚 示例库
我们提供了从基础到进阶的完整示例:
基础示例 (⭐)
- 01_digital_output.py - LED控制
- 02_digital_input.py - 按钮读取
- 03_analog_input.py - ADC读取
进阶示例 (⭐⭐⭐)
- 04_pwm_output.py - PWM亮度控制
- 05_sensor_reading.py - 传感器监控
- 06_relay_control.py - 继电器控制
综合示例 (⭐⭐⭐⭐)
- 07_all_channels_test.py - 全通道测试
- auto_setup_demo.py - 自动设置功能演示
详细说明请查看 examples/README.md
🔧 Arduino风格API
基础函数
# 连接管理
esp32_begin() # 初始化连接
esp32_close() # 关闭连接
# 数字IO
digitalWrite(pin, HIGH/LOW) # 数字输出
value = digitalRead(pin) # 数字输入
# 模拟输入
adc_value = analogRead(pin) # ADC读取 (0-4095)
# 时间函数
delay(1000) # 延时1秒
uptime = millis() # 获取运行时间
便捷函数
# LED控制
ledOn() # 点亮CH2的LED
ledOff() # 关闭CH2的LED
# 传感器读取
temp = readTemperature() # 读取CH0温度
humid = readHumidity() # 读取CH1湿度
通道常量
CH0 = 32 # ADC - 温度传感器
CH1 = 33 # ADC - 湿度传感器
CH2 = 25 # GPIO - LED指示灯
CH3 = 26 # GPIO - 继电器控制
CH4 = 27 # GPIO - 通用IO
📁 项目结构
esp32-rk3588-sensor-system/
├── esp32_firmware/ # ESP32固件 (PlatformIO项目)
│ ├── src/
│ │ ├── main.cpp # 主程序
│ │ ├── pin_config.h # 引脚配置
│ │ ├── command_handler.* # 命令处理
│ │ ├── hardware_control.* # 硬件控制
│ │ └── sensor_manager.* # 传感器管理
│ └── platformio.ini # PlatformIO配置
├── rk3588_controller/ # RK3588控制程序
├── docs/ # 文档
├── tools/ # 工具脚本
└── examples/ # 示例代码
├── 01_digital_output.py # 数字输出示例
├── 02_digital_input.py # 数字输入示例
├── 03_analog_input.py # 模拟输入示例
├── 04_pwm_output.py # PWM输出示例
├── 05_sensor_reading.py # 传感器读取示例
├── 06_relay_control.py # 继电器控制示例
├── 07_all_channels_test.py # 全通道测试
└── README.md # 示例说明
arduino_esp32.py # Arduino风格Python库
arduino_example.py # 综合示例
debug_serial.py # 串口调试工具
🛠️ 开发工具
调试工具
# 串口调试
python3 debug_serial.py
# LED测试
python3 test_led.py
# Arduino库测试
python3 arduino_esp32.py
固件开发
# 编译
cd esp32-rk3588-sensor-system/esp32_firmware
pio run
# 上传
pio run --target upload
# 监控串口
pio device monitor
📖 支持的命令协议
ESP32固件支持以下串口命令:
Arduino风格命令
PINREAD:pin- 数字读取 (类似digitalRead)PINSET:pin:value- 数字写入 (类似digitalWrite)ADCREAD:pin- 模拟读取 (类似analogRead)
系统命令
PING- 连接测试INFO- 获取系统信息RESET- 重启ESP32
传统命令 (兼容)
READ:TEMP- 读取温度READ:HUMID- 读取湿度SET:LED:ON/OFF- 控制LEDSET:RELAY:ON/OFF- 控制继电器
🔍 故障排除
常见问题
-
ESP32连接失败
# 检查设备 ls -la /dev/ttyUSB* # 检查权限 sudo chmod 666 /dev/ttyUSB0 # 测试连接 echo "PING" > /dev/ttyUSB0 && timeout 2 cat /dev/ttyUSB0
-
编译错误
# 清理重新编译 cd esp32-rk3588-sensor-system/esp32_firmware pio run --target clean pio run
-
Python库连接问题
# 调试连接 from arduino_esp32 import * if not esp32_begin(): print("连接失败,请检查硬件")
硬件检查
# 运行全通道测试
python3 examples/07_all_channels_test.py
# 选择 "8 - 全部测试" 进行完整硬件验证
📊 性能特性
- 传感器更新频率: 1Hz (可配置)
- 串口通信: 115200 bps
- 命令响应时间: <100ms
- 内存使用: <64KB RAM, <1MB Flash
- 功耗: 典型值 80mA @3.3V
- GPIO操作速度: >1000 操作/秒
🤝 贡献指南
欢迎贡献代码和示例!
- Fork 项目
- 创建功能分支
- 提交更改
- 发起 Pull Request
开发规范
- 遵循Arduino风格的API设计
- 添加详细的注释和文档
- 包含相应的测试示例
- 确保硬件安全性
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
🙏 致谢
- ESP32社区提供的优秀文档和示例
- Arduino项目的API设计灵感
- PlatformIO提供的开发环境
📞 支持
如有问题或建议,请:
- 查看 examples/README.md 获取详细示例
- 运行
python3 examples/07_all_channels_test.py进行硬件测试 - 使用
python3 debug_serial.py进行串口调试
让Python像Arduino一样简单! 🚀
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file esp32_arduino_python-2.2.1.tar.gz.
File metadata
- Download URL: esp32_arduino_python-2.2.1.tar.gz
- Upload date:
- Size: 73.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d14800feb387b3a3cfdbfcd9d5e2601757eedfa98ba9217935397185b9399d5f
|
|
| MD5 |
b053723def0a619eabefc76abe42babb
|
|
| BLAKE2b-256 |
00bde6f4f2da02a069de385e4dd0e6de3067c262428d9cbef22c2c8948f03c43
|
File details
Details for the file esp32_arduino_python-2.2.1-py3-none-any.whl.
File metadata
- Download URL: esp32_arduino_python-2.2.1-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3de2c7f90b9582ea250509848405b785ac3fc411cc4201e83df400bf755e33b4
|
|
| MD5 |
04125fc954ab7d0c3789a67750cc7c22
|
|
| BLAKE2b-256 |
72fd08bceca7d68015a74ed7ad3a4bda9e677d184885b651e3a58db901f888e9
|