ESP8266-Arduino编程实例-MS5611气压传感器驱动
MS5611气压传感器驱动
1、MS5611介绍
MS5611气压传感器针对高度计和变异计进行了优化,高度分辨率为 10 厘米。 传感器模块包括一个高线性压力传感器和一个具有内部工厂校准系数的超低功耗 24 位 ΔΣ ADC。 它提供精确的 24 位数字压力和温度值以及不同的操作模式,允许用户优化转换速度和电流消耗。 高分辨率温度输出允许在没有任何附加传感器的情况下实现高度计/温度计功能。

MS5611具有如下特性:
- 高分辨率模块,10 cm
- 快速转换低至 1 毫秒
- 低功耗,1 µA(待机 < 0.15 µA)
- QFN 封装 5.0 x 3.0 x 1.0 mm3
- 电源电压 1.8 至 3.6 V
- 集成数字压力传感器(24 位 ΔΣ ADC)
- 工作范围:10 至 1200 mbar,-40 至 +85 °C
- I2C 和 SPI 接口高达 20 MHz
- 无外部元件(内部振荡器)
- 出色的长期稳定性
2、硬件准备
- ESP8266 NodeMCU开发板一块
- MS5611传感器模块一个
- 面板板一个
- 杜邦线若干
- 数据线一条
硬件接线如下:
| 传感器引脚 |
ESP8266开发板引脚 |
| Vin |
5v |
| Gnd |
Gnd |
| SCL |
D1 |
| SDA |
D2 |
3、软件准备
- Arduino IDE或VSCode + PlatformIO
在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:
ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:
4、代码实现
本次实例使用如下驱动库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| #include <Wire.h> #include <MS5611.h> MS5611 ms5611; double referencePressure; void setup() { Serial.begin(9600); // Initialize MS5611 sensor Serial.println("Initialize MS5611 Sensor"); while(!ms5611.begin()) { Serial.println("Could not find a valid MS5611 sensor, check wiring!"); delay(500); } // Get reference pressure for relative altitude referencePressure = ms5611.readPressure(); // Check settings checkSettings(); } void checkSettings() { Serial.print("Oversampling: "); Serial.println(ms5611.getOversampling()); } void loop() { // Read raw values uint32\_t rawTemp = ms5611.readRawTemperature(); uint32\_t rawPressure = ms5611.readRawPressure(); // Read true temperature & Pressure double realTemperature = ms5611.readTemperature(); long realPressure = ms5611.readPressure(); // Calculate altitude float absoluteAltitude = ms5611.getAltitude(realPressure); float relativeAltitude = ms5611.getAltitude(realPressure, referencePressure); Serial.println("--"); Serial.print(" rawTemp = "); Serial.print(rawTemp); Serial.print(", realTemp = "); Serial.print(realTemperature); Serial.println(" \*C"); Serial.print(" rawPressure = "); Serial.print(rawPressure); Serial.print(", realPressure = "); Serial.print(realPressure); Serial.println(" Pa"); Serial.print(" absoluteAltitude = "); Serial.print(absoluteAltitude); Serial.print(" m, relativeAltitude = "); Serial.print(relativeAltitude); Serial.println(" m"); delay(1000); }
|
文章来源: https://iotsmart.blog.csdn.net/article/details/126555287
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!