用于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 -uservirtualenv进行未授权的安装。

用法

实例化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=18sck_pin=23gpio_mode=GPIO.BCMvdd(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_PINSCK_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=18sck_pin=23gpio_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.

学分

这个模块是为了好玩,学习如何使用python和raspberry pi与串行设备通信。当我遇到一个绊脚石(有很多…)时,我不时地提到以下项目:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android:位置服务权限   java Android Studio SQLite数据库创建不起作用?   java在Spring boot中添加会话bean导致没有为作用域“Session”注册作用域   正则表达式Java:从组中删除多次出现的不可打印字符   计算行和时出现java错误   java如何将存储在移动设备中的录制视频的Uri传递给另一个活动   java如何从加密字符串中获取原始字符串值?   java无法初始化jNativeHook 2.0   java一个应用程序中的两个并行通知(安卓)   java如何从Android上的Locale对象获取脚本?   不同类之间的java函数调用   java Spring MVC带EXT JS错误:DispatcherServlet noHandlerFound   java场景2D在表的顶部添加参与者   java Groovy ConcurrentHashMap forEach调用   java从数据库查询中重新格式化json   java单例类可以是泛型的吗?   java循环遍历正则表达式匹配项并替换当前匹配项   jdbc Java数据库元数据   爪哇为什么是一种特殊的番石榴秒表。调用比其他调用晚很多吗?(以邮递方式输出)   java使用递归传递带有基本情况的参数