树莓派专业温度监测:基于 DS18B20 传感器的完整指南
概述
树莓派是由英国树莓派基金会开发的紧凑型单板计算机(SBC)。它运行多种基于 ARM 架构的 Linux 发行版,并提供一组 GPIO 引脚,可连接各种外部组件,如传感器和执行器。由于树莓派缺乏板载模数转换器(ADC),像 TMP36 这样的模拟温度传感器无法直接使用。因此,采用数字温度传感器 DS18B20 是实现精准、基于串行总线温度测量的推荐方案。
所需硬件
- 树莓派(任意近期型号)
- DS18B20 数字温度传感器
- 4.7 kΩ 上拉电阻(标准值)
- 原型板(面包板或 Pi-Cobbler 扩展板)
- 半尺寸面包板(可选,用于延长布线)
- 跳线(公对公或公对母,按需准备)
基础设计
硬件连接
核心连接包括树莓派、DS18B20、4.7 kΩ 上拉电阻、Pi-Cobbler(或直接面包板接线)和跳线。所有元件插入面包板,便于快速原型验证和调试。
接线图解
DS18B20 采用单总线串行接口,允许多个传感器共享同一数据线。在树莓派的 Raspbian(或衍生版)系统中,加载相应内核模块后,传感器将作为串行设备出现。传感器必须连接到 GPIO 4(BCM 编号),这是唯一支持 1-Wire 协议的引脚。可参考 Adafruit 的 DS18B20 设置指南 获取可视化接线参考。
选择 DS18B20 型号
DS18B20 有三种常见封装:
- 标准 DIP 封装(适合原型开发)
- 防水带线型(适合环境监测)
- 高温型(最高可测 125 °C)
所有型号均内置 1-Wire 接口和温度转换逻辑,直接向树莓派输出数字读数。现代 Raspbian 镜像已包含所需驱动,可通过文件系统直接访问。
命令行验证
接线完成后,通过终端验证传感器:
sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxxxxxxxxx # 替换为你的传感器序列号
cat w1_slave
输出中将包含以 YES 结尾的校验行,下一行给出千分之一度为单位的摄氏温度值。
软件:基础记录器
以下 Python 脚本每秒读取一次温度并打印到标准输出。保存为 temp_logger_basic.py,以 root 权限运行。
#!/usr/bin/env python3
import os
import glob
import time
# 确保加载 1-Wire 模块
os.system('modprobe w1-gpio')
os.system('modprobe w1-therm')
BASE_DIR = '/sys/bus/w1/devices/'
DEVICE_FOLDER = glob.glob(BASE_DIR + '28*')[0]
DEVICE_FILE = f'{DEVICE_FOLDER}/w1_slave'
def read_temp_raw():
with open(DEVICE_FILE, 'r') as f:
return f.readlines()
def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f
while True:
print(read_temp())
time.sleep(1)
运行脚本将输出类似:
(18.875, 65.975)
(18.875, 65.975)
(18.875, 65.975)
…
因传感器文件位于受保护的系统目录,必须使用 sudo python3 temp_logger_basic.py 执行。
进阶设计
生产环境中,可用焊接好的 PCB 扩展板替代面包板,获得更坚固、便携的方案。作者制作了可直接插入树莓派的定制扩展板,置于紧凑黑色外壳中。软件每小时记录一次读数并存入 MySQL 数据库,再通过 Google Charts 可视化,便于趋势分析。
进阶硬件
保留基础配置所有元件,额外增加:
- Adafruit 树莓派原型扩展板(或同等定制 PCB)
- 可选外壳及安装配件
详细指南请参考 DS18B20 温度传感器指南 及树莓派官方 1-Wire 支持文档。
制造工艺
- 树莓派+$5 I²C传感器打造温度记录仪
- 树莓派温度画像:Python+SQLite+LabVIEW实战
- 树莓派温湿度网络监测站DIY全指南
- 树莓派2上使用DS18B20读取温度完整指南
- 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 树莓派配合 EzTemp 实现无缝温湿度监测
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- DIY 家酿温控系统:Arduino 监测与调节发酵温度
- 树莓派 I2C 接口 BMP085:高精度温度与气压读取
- 树莓派 3 配合 PubNub 实现远程气象监测
- 树莓派紧凑型 DHT 温湿度扩展板:ATtiny85 + DHT22/DHT11