用于sensirion sht1x的python 3库,用于覆盆子pi的温度和湿度传感器系列。
Pi-Sht1x的Python项目详细描述
pi-sht1x包是一个python 3库,用于通信和控制sensirion sht1x系列温度和湿度传感器。它的设计主要用于覆盆子Pi,并依赖于RPi.GPIO库
SHT1x(包括SHT10、SHT11和SHT15)是Sensirion的表面贴装相对湿度和温度传感器家族这些传感器将传感器元件和信号处理集成在一个微小的脚印上,并提供完全校准的数字输出。独特的电容式传感器元件用于测量相对湿度,而温度则由带隙传感器测量。
用覆盆子pi b+和覆盆子pi 2对包装进行了测试。在老款车型上运行这个功能不应该有问题,但是没有保证如果您遇到任何问题,请让我知道或在github项目页面上创建一个issue:
https://github.com/drohm/pi-sht1x
SHT1x系列传感器的数据表如下:
http://bit.ly/1Pafs6j
此库提供以下功能:
- 进行温度测量
- 测量湿度
- 进行露点计算
- 更改提供的电压(5V、4V、3.5V、3V、2.5V)
- 启用或禁用CRC检查
- 读取状态寄存器
- 写入状态寄存器,提供以下功能:
- 打开otp_no_reload(每次测量可节省约10毫秒)
- 打开内部加热器元件(有关功能分析,请参阅上面的数据表列表以了解更多信息)
- 更改测量分辨率,高(14位温度和12位湿度)或低(12位温度和8位湿度)
安装
安装非常简单:
pip3 install pi-sht1x
注意,要将包安装到系统范围的路径和站点包中,通常需要提升权限(sudo)您可以尝试使用install -user或virtualenv进行未授权的安装。
用法
实例化sht1x对象时,如果未指定,则使用以下默认值:
gpio_mode: GPIO.BOARD vdd: 3.5V resolution: High (14-bit temperature & 12-bit humidity) heater: False otp_no_reload: False crc_check: True
命令行-REPL
您可以直接从REPL调用SHT1x类要使用库,需要导入包:
from pi_sht1x import SHT1x
现在您可以创建传感器对象并进行测量:
with SHT1x(18, 23, gpio_mode=GPIO.BCM) as sensor: temp = sensor.read_temperature() humidity = sensor.read_humidity(temp) sensor.calculate_dew_point(temp, humidity) print(sensor)
这将使用data_pin=18、sck_pin=23、gpio_mode=GPIO.BCM和vdd(3.5V)、resolution(High)、heater(False)、otp_no_reload(False)和crc_check(True)的默认值创建SHT1x对象输出如下:
Temperature: 24.05*C [75.25*F] Humidity: 22.80% Dew Point: 1.38*C
注意,这个库应该与上下文管理器一起使用,比如with语句将其与上下文管理器一起使用将允许程序在自身完成后正确清理,并将GPIO管脚重置回默认状态。
示例.py
这个脚本位于examples文件夹中,包括使用sht1x类进行温度、湿度和露点测量的几种方法。要使用该脚本,请确保用您在设置中本地使用的管脚号更新文件顶部附近的DATA_PIN和SCK_PIN常量:
DATA_PIN = 18 SCK_PIN = 23
基于数据表建议3.3V为传感器供电的事实,如果在实例化对象时未指定,则默认电压为3.5V。如果使用5V为传感器供电,请确保在创建对象时设置该值。运行脚本:
sudo python3 examples/examples.py
运行脚本将练习传感器的所有功能一定要查看脚本,看看你能做什么,以及如何使用传感器自定义样本输出:
$ sudo python3 examples/examples.py Test: using default values: 3.5V, High resolution, no heater, otp_no_reload off, CRC checking enabled... Temperature: 24.49*C [76.04*F] Humidity: 20.68% Dew Point: 0.47*C Temperature: 24.48*C [76.02*F] Humidity: 20.68% Dew Point: 0.46*C Temperature: 24.47*C [76.01*F] Humidity: 20.68% Dew Point: 0.45*C Temperature: 24.51*C [76.06*F] Humidity: 20.68% Dew Point: 0.47*C Temperature: 24.51*C [76.06*F] Humidity: 20.68% Dew Point: 0.47*C Test complete. Test: reading all measurements using GPIO.BCM mode, 3V, High resolution, heater off, otp_no_reload off, and CRC check on. Temperature: 24.48*C [76.02*F] Humidity: 20.61% Dew Point: 0.42*C Temperature: 24.46*C [75.98*F] Humidity: 20.61% Dew Point: 0.40*C Temperature: 24.46*C [75.98*F] Humidity: 20.61% Dew Point: 0.40*C Temperature: 24.48*C [76.02*F] Humidity: 20.68% Dew Point: 0.46*C Temperature: 24.48*C [76.02*F] Humidity: 20.65% Dew Point: 0.44*C Test complete. . . .
RPi.GPIO模块需要根权限才能与raspberry pi上的gpio管脚通信,因此需要以根(sudo)身份运行脚本。
传感器py
此脚本可从终端和将传感器参数传递到脚本中。
sudo python3 sensor.py 18 23 -g 'BCM'
这将使用data_pin=18、sck_pin=23和gpio_mode=GPIO.BCM执行传感器脚本。然后脚本将创建SHT1x类的一个实例,读取温度、湿度,并计算露点五次,每次测量之间睡眠2秒输出如下:
$ sudo python3 examples/sensor.py 18 23 -g 'BCM' Temperature: 24.05*C [75.25*F] Humidity: 22.79% Dew Point: 1.37*C Temperature: 24.03*C [75.21*F] Humidity: 22.79% Dew Point: 1.36*C Temperature: 24.01*C [75.16*F] Humidity: 22.79% Dew Point: 1.33*C Temperature: 24.01*C [75.17*F] Humidity: 22.86% Dew Point: 1.38*C Temperature: 24.02*C [75.19*F] Humidity: 22.86% Dew Point: 1.39*C
若要获取可提供给脚本的所有参数的列表,请使用python3 sensor.py-h获取帮助:
$ sudo python3 examples/sensor.py -h usage: sensor.py [-h] [-g {BCM,BOARD}] [-v {5V,4V,3.5V,3V,2.5V}] [-r {HIGH,LOW}] [-e] [-o] [-c] data-pin sck-pin Reads the temperature and relative humidity from the SHT1x series of sensors using the pi_sht1x library. positional arguments: data-pin Data pin used to connect to the sensor. sck-pin SCK pin used to connect to the sensor. optional arguments: -h, --help show this help message and exit -g {BCM,BOARD}, --gpio-mode {BCM,BOARD} RPi.GPIO mode used, either GPIO.BOARD or GPIO.BCM. Defaults to GPIO.BCM. -v {5V,4V,3.5V,3V,2.5V}, --vdd {5V,4V,3.5V,3V,2.5V} Voltage used to power the sensor. Defaults to 3.5V. -r {HIGH,LOW}, --resolution {HIGH,LOW} Resolution used by the sensor, 14/12-bit or 12-8-bit. Defaults to High. -e, --heater Used to turn the internal heater on (used for calibration). -o, --otp-no-reload Used to enable OTP no reload, will save about 10ms per measurement. -c, --no-crc-check Performs CRC checking.