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