使用树莓派和 Sense HAT 监测环境温度
你可以通过多种途径,使用树莓派单板计算机监测周围环境的温度,例如将其作为气象站的一部分。尽管你可以使用连接到树莓派 GPIO 引脚的外部传感器来实现此目的,本文将重点介绍如何利用配备 Sense HAT 的树莓派来监测温度。
什么是 Sense HAT?
图片来源:树莓派
Sense HAT 是由树莓派基金会设计和制造的官方树莓派 HAT (顶置硬件) 扩展板。它最初是为国际空间站上的宇航员设计的。自 2015 年以来,两台配备 Sense HAT 的树莓派计算机被用于进行由学生设计的科学实验,这些实验被称为 Astro Pi 挑战赛。不过,这些设备已被升级为基于树莓派 4 并配备高质量摄像头的版本。
图片来源:树莓派
尽管标准 Sense HAT 板缺少专为太空环境设计的特殊银色外壳,但它具有完全相同的功能。它可以兼容任何带有 40 针 GPIO 接头的树莓派型号,并配备一系列板载传感器,使其能够监测周围环境,并检测自身的朝向和运动。此外,它还配备了一个 8×8 RGB LED 矩阵,可用于显示文本、数据和图像,以及一个微型五向操纵杆。
Sense HAT 的完整传感功能包括:
- 湿度:STMicro HTS221 传感器,相对湿度范围为 0 至 100%,温度感应范围为 0°C 至 65°C(精度为 ±2°C)。
- 气压:STMicro LPS25HB 传感器,测量范围为 260 至 1260 hPa,温度感应范围为 15°C 至 40°C(精度为 ±0.5°C)。
- 温度:可从湿度或压力传感器读取,或通过取两个读数的平均值来测量。
- 陀螺仪:STMicro LSM9DS1 IMU 可测量 Sense HAT 相对于地球表面的旋转(以及旋转速度)。
- 加速度计:IMU 的另一个功能,用于测量多个方向的加速度力。
- 磁力计:通过感应地球磁场,IMU 可以确定磁北方向,从而提供罗盘读数。
现在您已经了解了这款多功能树莓派 HAT 的强大功能,是时候开始我们的项目了。
第一步:安装 Sense HAT
要连接 Sense HAT,请首先确保您的树莓派已关闭并断开电源。然后,小心地将 Sense HAT(已安装随附的黑色接头扩展器)推到树莓派的 40 针 GPIO 接头上,使 Sense HAT 板位于树莓派板之上。确保所有引脚正确对齐,并且两行引脚均已连接。您还可以使用螺丝支架来固定它。
您可以使用任何带有 40 针 GPIO 接头的标准树莓派型号。然而,树莓派 400 的主要限制之一是其 GPIO 接头位于集成键盘的背面。这意味着 Sense HAT 将向后安装,因此您可能需要使用 GPIO 扩展线来连接它。
第二步:配置树莓派
与任何其他项目一样,您应首先插入 USB 键盘和鼠标,然后将树莓派连接到显示器或电视。您还应插入一张装有标准树莓派操作系统的 microSD 卡 – 如果您还没有这样做,请参阅有关如何在树莓派上安装操作系统的指南。然后,您可以打开电源。
或者,您可以在无头模式下使用树莓派和 Sense HAT,无需连接显示器,并通过 SSH 从另一台计算机或设备远程连接到树莓派。如果这样做,您将无法使用 Thonny Python IDE,但仍然可以使用 Nano 文本编辑器编辑程序,并从命令行运行它们。
Sense HAT 固件默认情况下应已安装。要检查,请打开终端窗口并输入:
sudo apt install sense-hat
然后,如果刚刚安装了软件包,请重新启动树莓派:
sudo reboot
第三步:开始使用 Python 编程
虽然您可以将树莓派 Sense HAT 与基于 Scratch 块的编程语言结合使用,但我们将使用 Python 来读取和显示其传感器数据。
Thonny IDE (集成开发环境) 是在树莓派上进行 Python 编程的好方法,因为它具有包括调试功能在内的许多有用的功能。在树莓派操作系统的桌面 GUI 中,转到菜单(左上角的树莓图标)> 编程 > Thonny IDE 以启动它。
第四步:读取温度数据
在 Thonny IDE 的主窗口中,输入以下代码:
from sense_hat import SenseHat sense = SenseHat() sense.clear() temp = sense.get_temperature() print(temp)
第一行从 sense_hat Python 库(预安装在树莓派操作系统中)导入 SenseHat 类,然后将其分配给 sense 变量。第三行清除 Sense HAT 的 LED 矩阵。
接下来,我们获取温度读数并将其打印到 Thonny IDE 的 Shell 区域。这是以摄氏度为单位的温度,因此您可能需要将其转换为华氏度:
temp = (sense.get_temperature() * 1.8 + 32)
温度传感器读数通常有几位小数。因此,我们使用 round 函数将其四舍五入到一位小数:
temp = round(temp, 1)
sense.get_temperature() 函数读取湿度传感器内置的温度传感器。或者,您可以使用 sense.get_temperature_from_pressure() 从压力传感器获取温度读数,甚至可以读取两个值并计算平均值(通过将它们相加并除以 2)。
第五步:在 Sense HAT 上显示温度
将单个温度读数打印到 Python Shell 有点单调,因此让我们定期获取新的读数并将其显示在 Sense HAT 的 RGB LED 矩阵上。为了显示滚动文本消息,我们使用 show_message 函数。我们还将使用 while: True 循环每 10 秒获取一个新的读数。为此,我们将使用时间库的 sleep 函数。
以下是完整的程序:
from sense_hat import SenseHat from time import sleep sense = SenseHat() sense.clear() while True: temp = (sense.get_temperature() * 1.8 + 32) temp = round(temp, 1) message = "Temp: " + str(temp) sense.show_message(message) sleep (10)
运行此代码,您将看到每个新的温度读数在 LED 矩阵上滚动。尝试对着 Sense HAT 吹气,看看温度是否发生变化。
温度读数可能会受到下方树莓派 CPU 产生的热量的影响,因此可能需要进行调整以获得更准确的数据。另一种解决方案是使用堆叠头将 Sense HAT 升高到树莓派上方。
使用树莓派监测温度
虽然您可以在此项目中使用独立的温度传感器,但 Sense HAT 可以轻松地与树莓派一起监测温度。您还可以使用它来获取许多其他传感器数据,例如气压和相对湿度,并将它们显示在 LED 矩阵上。