DS18B20树莓派测温度python实现
时间: 2025-01-22 19:08:39 浏览: 51
### 使用Python在Raspberry Pi上通过DS18B20传感器测量温度
#### 打开单总线(1-Wire)
为了使树莓派能够识别并读取DS18B20的数据,需要先启用内核中的`w1-gpio`和`w1-therm`模块。这可以通过编辑`/boot/config.txt`文件来完成,在其中添加如下两行内容[^1]:
```bash
dtoverlay=w1-gpio
```
保存更改后重启设备。
#### 连接硬件
按照指定方式连接DS18B20至树莓派:VCC接到3.3V电源引脚;GND接地;DQ数据线则应连到GPIO4 (BCM编号)[^2]。注意还需在这条线上加上一个4.7kΩ的上拉电阻以确保信号稳定传输给处理器。
#### 编写Python代码
下面是一段简单的Python脚本用于从已正确安装好的DS18B20传感器处获取温度值,并将其打印出来。此程序会自动寻找所有挂载于系统的1-Wire设备下的温感器路径,因此即使有多个这样的探头也能正常工作。
```python
import os
import glob
import time
def read_temp_raw(device_file):
with open(device_file, 'r') as f:
lines = f.readlines()
return lines
def read_temp(device_file):
lines = read_temp_raw(device_file)
while lines[0].strip()[-3:] != 'YES':
time.sleep(0.2)
lines = read_temp_raw(device_file)
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
return temp_c
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 = device_folder + '/w1_slave'
while True:
print(f'Temperature : {read_temp(device_file)} °C')
time.sleep(1)
```
这段代码首先加载必要的Linux内核模块以便访问1-Wire接口上的温度计。接着定义两个函数分别用来读取原始数据以及解析成摄氏度数值。最后进入无限循环不断输出最新测得的结果直到手动终止进程为止。
阅读全文
相关推荐


















