Contents

如何使用 Raspberry Pi 透過 Sense HAT 監控溫度

您可以透過多種方式使用 Raspberry Pi 單板電腦監控環境溫度,也許作為氣象站設定的一部分。雖然您可以使用連接到 Raspberry Pi GPIO 引腳的外部感測器,但這裡我們將解釋如何使用配備 Sense HAT 的 Raspberry Pi 監控溫度。

什麼是 Sense HAT?

/bc/images/sense-hat-angle.jpg 圖片來源:Raspberry Pi

Sense HAT 是由 Raspberry Pi 公司設計和生產的官方 Raspberry Pi HAT(頂部硬體)附加板,最初是為國際太空站上的太空人使用而設計的。自2015 年以來,兩台配備Sense HAT 的Raspberry Pi 計算機已用於參加正在進行的Astro Pi 挑戰賽的學童設計的科學實驗。這兩台計算機已被替換為基於 Raspberry Pi 4 並配備高品質攝影機的升級版本。

/bc/images/astro-pi.jpg 圖片來源:Raspberry Pi

Sense HAT 板雖然缺少用於外星用途的獨特銀色外殼,但在與任何具有 40 針 GPIO 接口的 Raspberry Pi 型號配對時仍保持相同的功能。這種多功能設備擁有各種整合感測器,可全面監控周圍環境,並檢測其自身的方向和運動。此外,它還配備了 8x8 RGB LED 矩陣,有助於文字、圖形和圖像等資訊的視覺呈現。此外,設計中還包括一個緊湊的五位操縱桿。

Sense HAT 與感測和感知相關的完整功能可概括如下:

本設備採用 STMicro HTS221 感測器,能夠測量 0-100% 相對濕度和 32°F 至 149°F(0°C 至 65°C ± 2°C)範圍內的相對濕度和溫度。溫度。

STMicro 的 LPS25HB 氣壓計測量範圍為 260 至 1260 hPa,能夠感應 59°F 至 104°F(15°C 至 40°C)範圍內的溫度,精度為 +/-0.5°C)。

溫度可以透過濕度或壓力感測器的讀數來獲得,也可以透過取兩個讀數的平均值來計算。

STMicro LSM9DS1 IMU 整合在 Raspberry Pi 的 Sense HAT 中,能夠測量裝置相對於地面的方向和角速度及其旋轉速率。

加速度計是慣性測量單元 (IMU) 的一個組件,能夠測量各個方向的加速力。

慣性測量單元 (IMU) 內的磁力計能夠偵測地球磁場,從而確定磁北方向並提供羅盤讀數。

在全面了解多功能 Raspberry Pi HAT 的功能和潛在應用之後,現在適合開始各自專案的實施過程。

步驟 1:安裝 Sense HAT

若要將 Sense HAT 正確連接到 Raspberry Pi,請確保後者已關閉並拔掉任何電源。接下來,將 Sense HAT 及其隨附的黑色接頭擴展器輕輕插入到 Raspberry Pi 的 40 針 GPIO 接頭上。確保 Sense HAT 在 Raspberry Pi 頂部正確對齊,並在兩塊板之間建立所有連接。為了增加安全性,您可以使用旋入式支架。

/bc/images/raspberry-pi-sense-hat-mount.jpg

人們可以在該專案中使用任何具有 40 針通用輸入/輸出 (GPIO) 接頭的傳統 Raspberry Pi 型號。然而,與 Raspberry Pi 400 型號相關的一個重要限制是其 GPIO 接頭位於靠近整合式鍵盤的背面。因此,Sense HAT 在操作期間將面朝相反方向定位。為了解決這個問題,建議使用延長線在 GPIO 接頭和 Sense HAT 之間建立連接。

步驟 2:設定 Raspberry Pi

若要開始操作 Raspberry Pi,請依照下列步驟操作:1.將 USB 鍵盤和滑鼠連接到裝置。2.將 Raspberry Pi 連接到顯示器或電視螢幕。3.將包含預設 Raspberry Pi 作業系統的 microSD 卡插入裝置插槽中。如果尚未執行,請參閱在 Raspberry Pi.4 上安裝作業系統的說明。透過向電源供電來為 Raspberry Pi 供電。

或者,人們可以在無顯示器環境中利用與 Sense HAT 整合的 Raspberry Pi,透過安全外殼 (SSH) 連接從其他計算設備或小工具建立遠端存取。在這種情況下,使用者將無法使用Thonny Python整合開發環境(IDE),但能夠使用nano文字編輯器編輯檔案並透過終端命令執行程式。

要驗證您的 Raspberry Pi 上是否預先安裝了 Sense HAT 固件,您可以從 Lubuntu 的“應用程式”選單中開啟終端仿真器應用程序,例如“Terminal”或“xterm”,然後鍵入命令“sudo dmesg | grep sensehat」。如果沒有出現任何輸出,則表示韌體已成功安裝。但是,如果出現任何錯誤訊息,您可能需要按照本節前面提供的說明手動安裝韌體。

 sudo apt install sense-hat

如果該軟體套件最近安裝在您的 Raspberry Pi 上,建議重新啟動系統,以確保正確實施和配置所有必要的變更。

 sudo reboot

步驟 3:開始使用 Python 編程

利用 Raspberry Pi Sense HAT 結合 Scratch 進行基於區塊的程式設計是可行的;但是,我們將使用 Python 作為解釋和顯示感測器收集的數據的首選方法。

鑑於其全面的功能和有利的偵錯工具,利用 Thonny 整合開發環境 (IDE) 是在 Raspberry Pi 上執行基於 Python 的程式設計任務的有效方法。要在 Raspberry Pi OS 桌面的圖形使用者介面 (GUI) 中存取 Thonny IDE,請導航至螢幕左上角並選擇“選單”,然後選擇“程式設計”,最後選擇“Thonny IDE”。

/bc/images/thonny-ide-hello-world.jpg

步驟 4:讀取溫度讀數

在 Thonny 整合開發環境 (IDE) 的主視窗中,請在程式編輯器中插入下列程式碼:

from sense_hat import SenseHat

sense = SenseHat()
sense.clear()

temp = sense.get_temperature()
print(temp) 

初始程式碼行從 sense\_hat Python 庫導入並分配 SenseHat 類,該庫預先安裝在 Raspberry Pi OS 上。隨後,使用提供的指令清除 SenseHat 的 LED 矩陣。

隨後,我們取得溫度測量結果並將其顯示在 Thonny 整合開發環境的 Shell 介面中。該值以攝氏度表示;因此,為了更容易解釋,最初將其轉換為華氏度可能是有利的:

 temp = (sense.get_temperature() * 1.8 \+ 32) 

為了確保溫度感測器讀數精確地表示為一位小數,我們將利用 round() 函數截斷值中出現的任何多餘小數。這種方法可以精確測量溫度並消除不必要的精度。

 temp = round(temp, 1) 

sense.get\_Temperature() 函數檢索從濕度感測器內的整合溫度感測器獲得的溫度資料。作為一種替代選項,可以利用 sense.get_temp_from_Pressure() 方法根據壓力感測器的測量值來取得溫度讀數。此外,還可以同時從兩個感測器取得溫度讀數,並透過對各個值取平均值然後除以二來計算它們的平均值。

步驟 5:顯示 Sense HAT 上的溫度

事實上,即時顯示連續的資料流可能非常令人著迷。在本例中,我們將透過使用 show\_message() 函數定期更新 Sense HAT RGB LED 矩陣上的目前溫度值來呈現動態視覺化。此外,我們將使用帶有「while True」語句的 while 循環,透過使用從時間庫派生的 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 輕輕呼氣,觀察由此可能發生的任何溫度波動。

/bc/images/raspberry-pi-sense-hat-temperature.jpg

可能需要對透過 Sense HAT 獲得的溫度讀數進行調整,因為它們可能受到位於其正下方的 Raspberry Pi 中央處理單元的熱傳遞的影響。為了在這些測量中獲得更高的精度,一種可能的方法是使用堆疊接頭將 Sense HAT 提升到遠離 Raspberry Pi 的位置。

使用 Raspberry Pi 監控溫度

使用獨立的溫度計對於這項工作是可行的;然而,Sense HAT 透過與 Raspberry Pi 整合簡化了溫度監控。此外,它還可以收集與各種環境因素相關的數據,包括大氣壓力和相對濕度,同時在其可單獨尋址的 LED 陣列上顯示這些測量結果。