如何在树莓派上使用DS18B20来获取温度读数

概述
raspbian发行版包括对ds18b20 1线温度传感器的支持。这些传感器采用晶体管等小的三引脚封装,是精确的数字设备。
在本课程中,您将学习如何在raspberry pi上使用ds18b20来获取温度读数。
从raspberry开始pi没有adc(模数转换器),它不能直接使用tmp36之类的模拟温度传感器,这使得ds18b20成为温度传感的理想选择。
硬件
ds18b20晶体管外形尺寸(to-92)部件和防水有线型号的面包板布局如下所示。我们提供了较旧的20针和现代40针raspberry pi连接器的示例。此设置将适用于已发布的所有raspberry pi型号,但不包含突破接头的pi计算模块除外。
ds18b20“ 1-wire”传感器可以并联连接-与出售的几乎所有其他传感器不同!所有传感器都应共享相同的引脚,但是所有它们只需要一个4.7k电阻器
该电阻器用作数据线的“上拉”,并且需要保持数据传输的稳定和快乐
请注意正确选择ds18b20。弯曲的边缘应位于左侧,如下图所示。如果使用错误的方法,它将变热然后破裂。
ds18b20 +都是温度传感器,但与tmp36完全不同。您不能在本教程中使用tmp36!
40针(a,b,b +和零)cobbler plus原理图
-pin(raspberry pi版本1和版本2)补鞋匠示意图
防水40针[黑色]
如果您使用的是ds18b20的防水版本,则该设备具有三根引线,红色,黑色和黄色。不需要连接的裸铜屏蔽线。
防水20针[黑色]
高温防水[白色]
如果使用我们出售的ds18b20的“高温”版本,将橙色条纹连接到3.3v,白色连接到地面,蓝色条纹是数据,引脚4。
您仍然需要〜4.7k-10k从数据到3.3v的电阻
ds18b20
尽管ds18b20看起来像普通的晶体管,但实际上内部有很多东西。
该芯片包括特殊的1有线串行接口以及控制逻辑和温度传感器本身。
其输出引脚发送数字消息,而raspbian包括读取这些消息的接口。一旦我们在raspberry pi上使用“ raspi-config”工具启用了1-wire,将在随后的重启中加载正确的内核模块。
启用1-wire
下载:文件
复制代码
sudo raspi-config sudo raspi-config
选择接口选项
选择 1-wire 》
选择是是是
退出raspi-config并重新启动pi,以便加载1-wire内核模块。
下载:文件
复制代码
sudo reboot sudo reboot
验证是否在下次启动时加载了1-wire内核模块。运行 lsmod 命令时,您应该会看到类似下面的输出。
下载:文件
复制代码
lsmod | grep -i w1_ lsmod | grep -i w1_
软件
python程序处理任何失败的消息,并每秒报告摄氏度和华氏温度。
下载:project zip 或 thermometer.py | 在github上查看
复制代码
import glob
import time
base_dir = ‘/sys/bus/w1/devices/’
device_folder = glob.glob(base_dir + ‘28*’)[0]
device_file = device_folder + ‘/w1_slave’
def read_temp_raw():
f = open(device_file, ‘r’)
lines = f.readlines()
f.close()
return lines
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)
import glob
import time
base_dir = ‘/sys/bus/w1/devices/’
device_folder = glob.glob(base_dir + ‘28*’)[0]
device_file = device_folder + ‘/w1_slave’
def read_temp_raw():
f = open(device_file, ‘r’)
lines = f.readlines()
f.close()
return lines
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)
接下来的三行,从中找到文件
下载:文件
复制代码
def read_temp_raw():
catdata = subprocess.popen([‘cat’,device_file], stdout=subprocess.pipe, stderr=subprocess.pipe)
out,err = catdata.communicate()
out_decode = out.decode(‘utf-8’)
lines = out_decode.split(‘ ’)
return lines def read_temp_raw():
catdata = subprocess.popen([‘cat’,device_file], stdout=subprocess.pipe, stderr=subprocess.pipe)
out,err = catdata.communicate()
out_decode = out.decode(‘utf-8’)
lines = out_decode.split(‘ ’)
return lines
读取温度是通过两个函数进行的,read_temp_raw只是从接口获取消息的两行。 read_temp函数会对此进行总结,以检查是否有错误消息,然后重试直到收到第一行末尾带有“ yes”的消息。该函数返回两个值,第一个为摄氏度,第二个为华氏。
如果希望将这两个值分开,如下例所示:
下载:文件
复制代码
deg_c, deg_f = read_temp() deg_c, deg_f = read_temp()
程序的主循环只是循环,读取温度并打印,然后睡眠一秒钟。
要将程序上传到raspberry pi上,可以使用 ssh连接到pi ,使用以下行启动编辑器窗口:
下载:文件
复制代码
nano thermometer.py nano thermometer.py
,然后粘贴上面的代码,然后使用ctrl-保存文件x和y。
配置和测试
该程序必须以超级用户身份运行,因此在终端中键入以下命令以启动该程序:
下载:文件
复制代码
sudo python thermometer.py sudo python thermometer.py
如果一切顺利,您将看到一系列读数,如下所示:
尝试将手指放在传感器上进行加热。
添加更多传感器
您可以并行添加其他ds18b20传感器-将所有传感器的vcc,数据和接地引脚连接在一起。使用一个4.7k电阻。您将看到多个 /sys/bus/w1/ devices/28-nnnnn 目录,每个目录都有唯一的序列号作为目录名。 python示例代码现在仅适用于一个传感器,因此如果您希望一次从不同的传感器读取它,则必须对其进行修改


神州轮胎公司已具备自主研发大型民用客机轮胎的技术能力
一种新的原子力显微镜测量微小电流
关于使用简易锁存电路保护电源的分析和介绍
区块链技术是什么_分析其工作原理和特点以及哪些应用
山西省“新能源+电动汽车”协同互动智慧能源试点正式启动
如何在树莓派上使用DS18B20来获取温度读数
PCB特性阻抗控制精度化的设计
车身控制模块(BCM)的失效保护
工业互联网热背后:为何中小企业态度积极却不买单?
TI推THS770012具10dB-13dB可选增益的全差动ADC驱动器放大器
华为p10最新消息:华为mate9卖了700万华为p10也不错 高端机华为领先
焕新出发,利尔智达天下
四层pcb打样需要注意什么
中国正在研发可载弹掠海飞行的地效无人机,成海防一大利器
让你懂得完美PLC程序是什么样子?
室内led显示屏P2.5和P3的区别到底在哪里
高精度模数转换器ADS1211芯片的结构、特点和应用分析
12通道绿芯GTX312L可编程电容式触摸芯片简介
大疆mini系列无人机正式上架京东
曦智科技发布全新光互连产品,获2023全球闪存峰会多项殊荣