树莓派精准监测机柜温度:DS18B20 多点部署实战
问题背景
装修家庭办公室后,我将一间壁橱改作机房,放置服务器、NAS、AV 接收机等设备。虽加装排风扇向相邻办公室排热,但机柜温度仍维持在 90 °F (32 °C) 左右。虽在多数硬件工作范围内,但我希望更低温运行。为判断是否需增设制冷,需要连续数天可靠记录温度变化。
树莓派是此任务的理想平台。我曾在 Arduino 上用模拟 TMP36GZ 传感器,但树莓派 GPIO 仅支持数字信号,模拟传感器需额外 ADC。我想要一个无需额外硬件、即刻可编码的方案。
DS18B20 数字温度传感器完美解决:单总线通信,完美适配树莓派 BCM GPIO4 (物理引脚 7)。可直接在 Linux 终端读取,多个 DS18B20 可共享同一数据线。
硬件制作
- 取短段 CAT5e 网线,焊接 DS18B20 三脚:橙线 = +3.3V、棕线 = GND、绿线 = DATA。
- 在 3.3V 与数据线间接 4.7 kΩ 上拉电阻。
- 裸露接线缠绝缘胶带,整束套热缩管防护。
- 线尾加母头跳线接头,便于插拔分线器。
- 制作两个 2 公对 1 母 Y 型分线器,将两个传感器的 VDD、GND、DATA 汇聚至树莓派单引脚。
- 分线器接树莓派:3.3V 接引脚 1,GND 接引脚 6,DATA 接引脚 7。
- 两传感器分置排风扇两侧,捕捉温度差异。
下图为成品照片,可见三个分线器整齐插在树莓派 GPIO 上。
终端直接读取传感器
接线完成后,可直接从文件系统读取输出。以下命令加载内核模块、列举设备、显示指定传感器温度:
# 加载 1-Wire 驱动
sudo modprobe w1-gpio
sudo modprobe w1-therm
# 列出设备(如 28-0000055f311a)
ls /sys/bus/w1/devices
# 读取指定传感器温度
cat /sys/bus/w1/devices/28-0000055f311a/w1_slave
w1_slave 返回两行。首行含 CRC 校验;次行以 t=XXXXX 结尾,XXXXX 为千分之一度摄氏温度。可按需换算华氏度。
此方案可将读数记录至 CSV、推送远程服务器、或超温触发报警。DS18B20 精度 ±0.5 °C,足胜日常硬件监测。
详细说明与示例代码见 树莓派 GPIO 文档 与 Adafruit DS18B20 指南。
制造工艺
- 树莓派+$5 I²C传感器打造温度记录仪
- 树莓派温度画像:Python+SQLite+LabVIEW实战
- 树莓派多路DS18B20 1-Wire温度监测:接线与编程全指南
- 树莓派+Nagios高效监控机房温度
- 树莓派温湿度网络监测站DIY全指南
- 树莓派2上使用DS18B20读取温度完整指南
- 树莓派专业温度监测:基于 DS18B20 传感器的完整指南
- 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
- 树莓派与 Python 构建远程温度传感器:分步实战指南
- 家庭能源中心:树莓派与 Moteino 监测光伏、光热与室温
- 树莓派 I2C 接口 BMP085:高精度温度与气压读取
- 树莓派 3 配合 PubNub 实现远程气象监测