亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

树莓派 GPIO 直连 DS1820 单总线温度传感器指南

用树莓派监测室内外温度可极简实现。本指南演示将 DS18S20 (DS1820) 1-Wire 传感器直连 GPIO、软件读温、RRDtool 记录数据全流程。

树莓派与 1-Wire

DS18S20、DS18B20、DS1822 均为 TO-92 封装 1-Wire 温度传感器,集成传感器、ADC、串行接口。引脚定义与软件接口相同,成本与精度略异——DS18S20 ±0.5°C、DS18B20 ±0.5°C、DS1822 ±0.5°C 但更便宜。

每器件三脚:地 (GND, 脚 1)、数据 (DQ, 脚 2)、电源 (VDD, 脚 3)。寄生供电模式 (3–5V) 允许仅靠数据线上拉电阻供电。

仅需一个电阻

传感器 DQ 脚接树莓派 GPIO 4。GND 接树莓派地,VDD 接地启用寄生供电。3.3V 与 GPIO 4 间接 4.7 kΩ 上拉电阻。小面包板或直角排针可整理走线并塞入树莓派官方外壳。

1-Wire 软件驱动

Raspbian (或任意 Debian 系发行版) 加载内核模块:

sudo modprobe w1-gpio pullup=1
sudo modprobe w1-therm

pullup=1 告知驱动传感器通过上拉电阻寄生供电。加载后,每个传感器在 /sys/bus/w1/devices 下呈现子目录。目录名由家族代码与唯一 64 位标识组成:DS18S20/DS1820 用 10,DS18B20 用 28,DS1822 用 22。

目录下 w1_slave 含两行。首行原始寄存器转储与 CRC 校验。次行以 t=xxxx 结尾,为毫度摄氏温度。例:

cd /sys/bus/w1/devices
cd 10-000801b5*
cat w1_slave
0f 00 4b 46 ff ff 06 10 0c : crc=0c YES
0f 00 4b 46 ff ff 06 10 0c t=7375

值 7375 对应 7.375°C。数据手册标称精度 ±0.5°C,真实温度在读数 ±0.5°C 范围内。

开机自动加载模块,加入 /etc/modules:

# /etc/modules
w1-gpio pullup=1
w1-therm

循环数据库 (RRDtool)

长期存储与可视化首选 RRDtool。安装:

sudo apt-get install rrdtool python-rrdtool

定义数据库:每 15 分钟记录一值,保留十年日聚合:

rrdtool create temperature.rrd --step 900 \
DS:temp0:GAUGE:1200:-40:80 \
DS:temp1:GAUGE:1200:-40:80 \
RRA:AVERAGE:0.5:1:960 \
RRA:MIN:0.5:96:3600 \
RRA:MAX:0.5:96:3600 \
RRA:AVERAGE:0.5:96:3600

Python 采集入库

最小脚本读取 w1_slave 写入 RRDtool。按需调整传感器路径与数据库文件名。

import os
import rrdtool
W1_PATH = '/sys/bus/w1/devices'
DB_FILE = 'temperature.rrd'

def read_temp(sensor_id):
    with open(f'{W1_PATH}/{sensor_id}/w1_slave') as f:
        lines = f.readlines()
    if lines[1].strip().endswith('YES'):
        temp_milli = int(lines[1].strip().split('t=')[-1])
        return temp_milli / 1000.0
    return None

# 双传感器示例
temps = {
    'temp0': read_temp('10-000801b5'),
    'temp1': read_temp('28-0000045e')
}
rrdtool.update(DB_FILE, ','.join(str(t) for t in temps.values()))

通过 cron 定时运行脚本保持数据库更新。

制造工艺

  1. 树莓派+$5 I²C传感器打造温度记录仪
  2. 树莓派多路DS18B20 1-Wire温度监测:接线与编程全指南
  3. 树莓派2上使用DS18B20读取温度完整指南
  4. 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
  5. 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
  6. 树莓派配合 TMP006 红外温度传感器:Python 库与安装指南
  7. 树莓派与 Python 构建远程温度传感器:分步实战指南
  8. 树莓派自制气象站:每日邮件推送温湿雨数据
  9. 树莓派精准监测机柜温度:DS18B20 多点部署实战
  10. 树莓派 3 接 HC‑SR04 超声波测距传感器完全指南
  11. 树莓派 PIR 运动传感器控制 LED 实战指南
  12. 树莓派接入 DS18B20 单总线数字温度计:分步实战指南