树莓派 连接温湿度传感器 DHT11

本文介绍如何使用Node.js与bcm2835 C库读取DHT11温湿度传感器的数据,并提供了详细的步骤及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nodejs 需要8.x版本,10的在编译时候会报错.

这里用到的库是:Raspberry-Pi-DHT11-Node

在npm install 的时候 需要单独编译bcm2835的C库。这没有搞懂,为什么用root用户编译就不需要bcm库,但是会提示node_module下面没有访问权限。

编译bcm2835的C库

  1. 去 : http://www.airspayce.com/mikem/bcm2835 查看是否有新版的库可以下载.
  2. 下载文件: wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.55.tar.gz
  3. 解压 : tar zxvf bcm2835-1.55.tar.gz
  4. 配置编译:
./configure
make
sudo make check
sudo make install

安装库并测试

npm install node-dht-sensor

测试用的代码:

const sensorLib = require("node-dht-sensor")

// Initialize DHT11 sensor
/*
 * Here inside the initialize function, first argument is the sensor
 * For example for DHT11 sensor it is 11 and for DHT22 it is 22.
 * Second argument is the GPIO pin. Here We're using GPIO4 (pin #7)
*/
sensorLib.initialize(11, 4);//这里第一个参数是DHT11,第二个用的是GPIO4

setInterval(() => {
    let temperature = sensorLib.read().temperature.toFixed(1) + "°C"
    let humidity = sensorLib.read().humidity.toFixed(1) + "%"

    console.log('Temperature', temperature)
    console.log('Humidity', humidity)
}, 5000)

转载于:https://my.oschina.net/formatkm/blog/1827754

### 树莓派连接温湿度传感器教程 #### 准备工作 为了实现树莓派温湿度传感器(如DHT11DHT22)之间的通信,需准备以下硬件组件[^1]: - 树莓派4B一台 - DHT11/DHT22温湿度传感器模块一块 - 面包板以及跳线若干根用于电路搭建 #### 安装必要的软件库 在开始编程前,需要安装Adafruit公司提供的Python库来读取来自DHT系列传感器的数据。通过终端执行命令完成安装操作: ```bash pip install Adafruit_DHT ``` 此命令会自动下载并配置好所需的依赖项以便后续开发使用。 #### 编写Python脚本获取数据 编写一段简单的Python程序可以轻松地从温度/湿度感应器中提取实时环境参数值。对于不同型号的设备只需调整对应的类实例化语句即可适应多种情况下的需求变化: 如果采用的是DHT11,则设置`sensor = Adafruit_DHT.DHT11`; 若为DHT22则应更改为 `sensor = Adafruit_DHT.DHT22`. 下面是一个完整的例子用来展示如何周期性的收集信息并将它们打印出来供进一步处理分析之用: ```python import time import Adafruit_DHT as dht pin = 4 # GPIO pin number where data line is connected. interval = 5 # Interval between readings (in seconds). while True: humidity, temperature = dht.read_retry(dht.DHT11, pin) if humidity is not None and temperature is not None: print(f'Temp={temperature:.1f}°C Humidity={humidity:.1f}%') else: print('Failed to get reading. Try again!') time.sleep(interval) ``` 这段代码每隔五秒就会尝试一次测量,并将结果输出到控制台窗口内显示给用户查看;当遇到错误时也会给出相应的提示消息告知当前状态异常[^2]. #### 数据存储方案考虑 考虑到长期运行过程中可能会积累大量的观测记录,在本地保存这些资料并不是一个好的选择——尤其是像树莓派这样资源相对紧张的小型计算平台更是如此。因此建议将采集所得的信息发送至远端数据库服务器或者云端服务提供商那里进行集中管理维护.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值