基于树莓派和dht11模块的温湿度检测

一、项目背景

        想使用树莓派和dht11模块实现室内温湿度检测,获取温度Temp和湿度Humidity数据,原先尝试使用Adafruit_Python_DHT的库,但是发现因为老旧不再维护不能使用,且总是会报错如:not platform,没有找到有效解决办法。

        后来发现存在新库Adafruit_CircuitPython_DHT,但是使用pip3下载时出现与系统自带apt下载不兼容的问题。踩坑比较多,在此记录一下。 

        最后尝试用python虚拟环境来解决,也感受到了python虚拟环境的便捷。

二、实现步骤

  1. 创建工程目录,命名Temp_hum_detect_RPi;
  2. 在该目录下创建python虚拟环境:python3 -m venv venv1;
  3. 创建完成后进入venv1虚拟环境目录;;
  4. 在bin目录下,执行source activate,激活python虚拟环境venv1;
  5. 使用pip命令获得adafruit最新库:pip3 install adafruit-circuitpython-dht,这将会将该库下载到该venv1虚拟环境中,而不影响原系统;
  6. 返回Temp_hum_detect_RPi工程目录,在该目录下新建src文件夹来编辑存放示例程序:mkdir src;
  7. 编辑示例程序如下,命名为dht_simpletest.py即可;
  8. 修改程序模板,根据自己使用的数据端口来修改,比如我使用4端口(BCM),将第9行D18改为D4,如果使用DHT11温湿度检测模块,还需要将该行DHT22改为DHT11,然后保存退出;
  9. 在src目录下运行该程序:```python3 dht_simpletest.py```,正常情况下可看到温湿度检测结果;
  10. 最后可使用```deactivate```命令退出该虚拟环境。
#这里直接套用官方库的examples模板
import time
import board
import adafruit_dht

# 此处需要修改数据引脚端口,如果使用DHT11模块,需要将DHT22改为DHT11
dhtDevice = adafruit_dht.DHT22(board.D18)

while True:
    try:
        # Print the values to the serial port
        temperature_c = dhtDevice.temperature
        temperature_f = temperature_c * (9 / 5) + 32
        humidity = dhtDevice.humidity
        print(
            "Temp: {:.1f} F / {:.1f} C    Humidity: {}% ".format(
                temperature_f, temperature_c, humidity
            )
        )

    except RuntimeError as error:
        # Errors happen fairly often, DHT's are hard to read, just keep going
        print(error.args[0])
        time.sleep(2.0)
        continue
    except Exception as error:
        dhtDevice.exit()
        raise error

    time.sleep(2.0)
# 程序正常运行后,会以特定格式不断打印温度和湿度数据,

三、检测结果

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值