树莓派如何连接使用温度传感器?

在本教程中,我将逐步介绍如何设置自己的树莓派温度传感器。

像大多数传感器教程一样,设置此传感器的过程非常简单,并且由基本电路和一些代码组成。

我将使用 ds18B20 防水传感器,该探头可通过单线接口提供温度。更好的是防水功能,如果您需要在潮湿的环境中使用传感器,它是完美的选择。

树莓派还可以使用许多其他温度传感器,但是本教程将重点介绍 ds18b20 。

ds18b20 温度传感器在很多情况下都很方便,尤其是在监视表面和液体的温度时。

设备

下面列出了该树莓派温度传感器所需的设备。

记住面包板,并且面包板线是可选的,但是我强烈建议您投资这些,因为它们可能会使电路的使用变得容易得多。

推荐的

  • 树莓派

  • Micro SD 卡

  • DS18B20 温度传感器

  • 4.7k 电阻器

  • GPIO 突破套件

  • 面包板

  • Breadboard Wire

可选的

  • 树莓派外壳

  • USB 键盘

  • USB 鼠标

  • 以太网线或 * Wifi 加密狗 (如果要联网,请保持考虑到树莓派 3 具有内置的 WiFi 。)

视频

如果您想了解如何组合电路和代码摘要,请确保查看下面的视频。

我遍历了所有关于视频中的酷小电路的知识。您也可以在视频下方找到完整的书面教程。

Adblock 阻止了视频?订阅我们的无广告服务,为我们提供支持。

建立树莓派 ds18b20 电路

我们将需要构建的电路非常简单,因为我们只需要一个电阻器和温度传感器。

我在本教程中使用的传感器是 DS18B20 传感器的防水版本。它看起来就像一根很长的线,一端很粗。如果您只是一个普通的版本而没有布线和防水功能,那么它看起来就像是一个晶体管。

该传感器在实际温度的 0 .05°C 以内非常准确。它可以承受的温度最高可达 125 °C (260°F),但建议您将温度保持在 100 °C (210°F) 以下。该设备还带有板载模拟到数字转换器,因此我们能够轻松地将其连接到 Pi 上的数字 GPIO 引脚。

请记住,并非所有温度传感器都相同。像 TMP36 之类的东西不会简单地替换本教程中的 ds18b20 。

TMP36 是一种模拟设备,因此与 Pi 集成起来稍难一些。 TMP36 具有与光传感器相同的问题,这是因为树莓派没有任何模拟引脚。

将该电路组合在一起非常简单,我将在下面快速介绍一些基本说明。如果您在跟随它们时遇到麻烦,请参阅视频或图表。

如果您需要有关 GPIO 引脚的更多信息,请确保查阅我的 [树莓派 GPIO 引脚入门] 指南。

1 首先,将 Pi 的 3v3 引脚连接到正极导轨,并将接地引脚连接到面包板上的接地导轨。

2 现在将 DS18B20 传感器放在面包板上。

3 在传感器的正极和输出导线之间放置一个 4 .7k 电阻。

4 将导线从正极引线连接到正极 3v3 导轨。

5 将一根导线从输出引线引回到树莓派的 #4 引脚 (如果使用物理编号,则为引脚 7)。

6 从接地线到接地导轨放置一根电线。

完成后,您的电路应类似于下图。请记住,某些版本的温度传感器的电线可能会超过三根。有关每条线的更多信息,请参见数据表。

树莓派温度传感器代码

设置温度传感器的代码比电路本身要复杂一些。这种复杂性仅仅是因为我们需要处理来自传感器的数据的方式。

在使用 Python 时,值得学习一些基础知识,因此,我强烈建议您查看我们的 Python 入门指南。

在制作 Python 脚本之前,我们首先需要设置 Pi ,以便它可以从传感器读取数据。为此,我们需要添加 OneWire 支持。

1 要添加对 OneWire 的支持,我们首先需要打开启动配置文件,这可以通过运行以下命令来完成。

sudovim/boot/config.txt

2 在此文件的底部输入以下内容。

dtoverlay = w1-gpio

3 完成后,按 ctrl x,然后按 y 保存并退出。现在,通过运行以下命令重新启动 Pi 。

sudo reboot

4 您可以跳过将代码下载到 Pi 上的操作,也可以按照接下来的几个步骤检查传感器是否在正常工作。

5 树莓派重新启动后,我们需要运行 modprobe,以便加载正确的模块。

sudo modprobe w1-gpio
sudo modprobe w1-therm

6 现在转到 devices 目录,并使用 ls 查看目录中的文件夹和文件。

cd/sys/bus/w1/devices
ls

7 现在运行以下命令,使用 ls 命令将 cd 之后的编号更改为目录中显示的编号。 (如果您有多个传感器,则将有多个目录)

光盘 28 -000007602ffa

8 现在运行以下命令。

猫 w1 _slave

9 该命令应该输出数据,但是您会发现它不是非常友好。

第一行的末尾应为 YES 或 NO 。如果是,则第二行显示温度。这条线看起来类似于 t = 12323,并且您需要做一些数学运算才能使它成为我们可以轻易理解的可用温度。例如,摄氏仅需除以 1000 。

现在是时候使用 Python 脚本了。

如果您想进一步了解以下代码,我将在下面简要解释。此代码来自本教程的 Adafruit。如果要下载,只需在 Pi My Life Up GIT 页面上下载,或使用以下命令即可下载。

git clone https://github.com/pimylifeup/temperature_sensor.git

为了开始 Python 脚本,我们导入三个软件包,OS,Glob 和时间。

接下来,我们运行 modprobe 命令,这些命令与之前使用的命令相同。

我们声明了三个不同的变量,它们将指向传感器数据的位置。您无需更改其中任何一项。

导入操作系统
导入球
导入时间

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'

在”read_temp_raw” 函数中,我们打开包含温度输出的文件。我们从中读取所有行,然后将其返回,以便调用此函数的代码可以使用它。在这种情况下,”read_temp” 函数将调用此函数。

def read_temp_raw():
    f =打开(device_file,'r')
    行= f.readlines()
    f.close()
    回线

在”read_temp” 函数中,我们处理来自”read_temp_raw” 函数的数据。我们首先确保第一行包含 YES 。这意味着其中将有一条温度线。

如果有温度,则通过使用 lines [1] .find (‘t =’)` 找到带有 t = 的线。 Lines \ [1 ] 表示我们正在查看数组中的第二个元素,在本例中为第二行。

一旦我们有了这条线,我们就可以简单地获取所有在 t = 之后的数字,这是在 lines [1] [equals_pos + 2:] 处完成的。”Equals_pos” 是温度 (t) 的起始位置,我们在该位置加 2 ,所以我们只能得到实际的温度数字。

然后,我们将数字转换为摄氏温度和华氏温度。我们将这两个都返回到调用此函数的代码中。该功能位于 while 循环中。

def read_temp():
    行数= read_temp_raw()
    而 lines [0] .strip()[-3:]!='YES':
        time.sleep(0.2)
        行数= read_temp_raw()
    equals_pos = lines [1] .find('t =')
    如果 equals _pos!= -1:
        temp_string =行[1] [equals_pos + 2:]
        temp_c =浮点数(temp_string)/1000.0
        temp_f = temp_c * 9.0/5.0 + 32.0
        返回 temp _c,temp_fwhile循环始终为 true ,因此它将永久运行,直到程序因错误或用户取消脚本而中断为止。它只是在打印函数中调用`read_temp`。打印功能使我们可以在屏幕上看到输出。每次读取传感器后,脚本都会进入休眠状态 1 秒钟。
而 True :
打印(read_temp())
time.sleep(1)

测试代码

一旦下载或完成编写代码,并且还正确设置了电路,我们现在就可以调用 Python 脚本了。要调用 python 脚本,只需运行以下命令。

sudo 蟒蛇体温计_sensor.py

现在,您应该同时具有华氏度和摄氏温度的温度输出。您可以更改它,仅显示您喜欢的温度标度。

这就是启动和运行树莓派 ds18b20 温度传感器所需的一切。

如果您想进一步扩展此步骤,请务必在下面查看我的提示。我将在将来的项目中考虑将此传感器纳入其中,敬请期待。

可能的进一步工作

这款树莓派温度传感器还有很多其他功能。我会很快提到一些想法,将来可能会涉及其中一些。

您可以将 Python 脚本连接到 MYSQL 之类的数据库并以这种方式存储数据。如果将时间戳记添加到数据,则将来可以回顾数据并比较所有更改。

下一个技巧将与上面的技巧一起工作。您可以使用存储在 MYSQL 数据库中的数据制作漂亮的漂亮图形,以显示一天,一个月甚至一年的温度变化。您也可以实时绘制图形。

另外,将 influxDB 与 Grafana 一起使用是一种很好的可视化显示方式您的温度统计信息。

我希望您能够构建并使该树莓派温度传感器正常工作。

如果您遇到任何问题,反馈或任何其他问题,请与我联系。

分享到