ms5611_driver

A MicroPython library to control ms5611_driver

1.0.1 hogeiha Updated At: 2026-03-30
Install Package
Local Install
mpremote mip install https://upypi.net/pkgs/ms5611_driver/1.0.1
Remote Install
mip.install("https://upypi.net/pkgs/ms5611_driver/1.0.1")
Version Selection
README

MS5611 的压力温度传感器

MS5611 的压力温度传感器

目录

  • 简介
  • 主要功能
  • 硬件要求
  • 文件说明
  • 软件设计核心思想
  • 使用说明
  • 示例程序
  • 注意事项
  • 联系方式
  • 许可协议

简介

本项目是 NXP MS5611 高精度气压 / 温度传感器 的 MicroPython 驱动实现,支持温度和压力独立过采样率配置,内置传感器校准参数读取与低温补偿算法,可输出高精度温度(℃)和气压(KPa)数据。驱动参考自 MicroPython_MS5611,基于 MIT 协议开源,兼容 MicroPython v1.23.0,专为 Raspberry Pi Pico(RP2040)等硬件优化。


主要功能

  • I2C 通信:支持 400kHz 高速 I2C,自动检测传感器地址(0x76/0x77,由 CSB 引脚电平决定)
  • 过采样率配置:温度和压力独立支持 5 档过采样率(256/512/1024/2048/4096),平衡测量精度与速度
  • 高精度测量

  • 温度:范围 -40℃ ~ +85℃,精度 0.01℃

  • 气压:范围 10 ~ 1200 mBar,精度 0.01 KPa
  • 校准补偿:内置传感器 Factory Calibration 数据读取,实现温度补偿与低温补偿算法,提升测量稳定性
  • 异常处理封装:提供 safe_read_measurementssafe_set_oversample_rate 等函数,统一处理 I2C 通信异常与参数错误
  • 数据统计:支持测量数据平均值、波动值、最大值 / 最小值计算
  • 参数校验:初始化与配置时校验参数合法性,避免无效设置

硬件要求

  • 主控平台:搭载 MicroPython v1.23.0 的开发板(推荐 Raspberry Pi Pico/RP2040)
  • 传感器模块:NXP MS5611 气压 / 温度传感器
  • 通信方式:I2C 总线(RP2040 推荐配置:SDA=GPIO4,SCL=GPIO5,通信频率 400kHz)
  • 供电要求3.3V 直流供电,严禁接入 5V 避免损坏传感器
  • I2C 地址

  • CSB 引脚接 GND:地址 0x76

  • CSB 引脚接 VCC:地址 0x77

文件说明


软件设计核心思想

辅助层抽象:通过 CBits 类实现寄存器特定位段的读写,RegisterStruct 类实现结构化寄存器数据的打包 / 解包,简化底层 I2C 操作

属性化配置:使用 Python @property@setter 装饰器管理温度 / 压力过采样率,接口直观易用,无需直接操作寄存器

校准补偿机制:初始化时读取传感器 Factory Calibration 数据,测量时基于校准参数实现温度补偿与低温补偿,确保高精度输出

异常安全封装safe_* 系列函数统一捕获 I2C 通信异常、参数错误与传感器异常,提升程序健壮性

灵活配置:温度与压力过采样率独立配置,支持低精度高速(256)到高精度低速(4096)的多场景适配

数据就绪保障:测量时通过 I2C 命令触发转换,等待转换完成后读取数据,避免无效值


使用说明

文件部署

ms5611.py 复制到 MicroPython 设备文件系统(若使用示例程序,同时复制 main.py

初始化 I2C 总线

from machine import Pin, I2C
# Raspberry Pi Pico I2C0 配置
i2c = I2C(0, sda=Pin(4), scl=Pin(5), freq=400000)

创建传感器实例

from ms5611 import MS5611

# 初始化传感器(CSB 接 VCC,地址 0x77;若接 GND 则为 0x76)
ms_sensor = MS5611(i2c, address=0x77)

配置过采样率

# 设置温度过采样率为 4096(最高精度)
ms_sensor.temperature_oversample_rate = MS5611.TEMP_OSR_4096
# 设置压力过采样率为 4096(最高精度)
ms_sensor.pressure_oversample_rate = MS5611.PRESS_OSR_4096

读取测量数据

# 读取温度(℃)和气压(KPa)
temperature, pressure = ms_sensor.measurements
print(f"Temperature: {temperature:.2f}°C, Pressure: {pressure:.2f}KPa")

异常处理

from ms5611 import MS5611

def safe_read(sensor):try:return sensor.measurements, Trueexcept OSError as e:print(f"I2C Error: {e}")return (0.0, 0.0), False(temp, press), success = safe_read(ms_sensor)if success:print(f"Temp: {temp:.2f}°C, Press: {press:.2f}KPa")

示例程序

main.py 包含 4 个核心演示模块:

温度过采样率配置:固定压力 OSR=4096,遍历所有温度 OSR 档位,连续测量 3 次

压力过采样率配置:固定温度 OSR=4096,遍历所有压力 OSR 档位,连续测量 3 次

组合过采样率演示:测试低(256)、中(1024)、高(4096)精度组合,计算 5 次测量的平均值与波动值

最高精度连续测量:恢复最高精度配置(OSR=4096),连续测量 10 次,输出最终配置与数据


注意事项

供电安全:MS5611 为 3.3V 器件,接入 5V 会永久损坏传感器

过采样率影响:过采样率越高,测量精度越高但转换时间越长(如 OSR=4096 需约 10ms 转换时间),测量间隔需匹配(示例中 0.3~1.0s 延迟)

I2C 地址:传感器地址由 CSB 引脚电平决定,初始化前需确认硬件连接

低温补偿:当温度 < 20℃ 时自动启用低温补偿算法,避免低温下测量漂移

校准依赖:传感器 Factory Calibration 数据存储在 PROM 中,初始化时必须成功读取,否则测量无效

异常处理:推荐使用 safe_read_measurements 等封装函数,避免 I2C 通信中断导致程序崩溃


联系方式

如有任何问题或需要帮助,请通过以下方式联系开发者:📧 邮箱:liqinghsui@freakstudio.cn💻 GitHubhttps://github.com/FreakStudioCN


许可协议

本项目采用 MIT License 开源许可协议,可自由使用、修改与分发,完整协议内容见 LICENSE 文件。

File List
Name Size Type
LICENSE 1.0KB File
README.md 5.7KB Doc
code/main.py 8.6KB Main
code/ms5611.py 24.6KB Python
package.json 448B Conf