資料介紹
描述
向任何 Raspberry Pi 項目添加狀態監視器對于實時了解 CPU 在使用、溫度和 RAM 使用以及重要連接信息方面的執行情況非常有用。如果超頻是您的事,那么這對于查看您的設置對 Pi 的影響并做出相應的調整非常有價值。
Breadboard Mates TIMI-130顯示器與 Breadboard Mates Pi 適配器一起,是該項目的完美選擇,因為它易于使用且啟動和運行所需的代碼簡單。
Breadboard Mates 提供了一個 Python 庫,使 Python 編碼體驗變得輕松。
第 1 步:需要什么。
該項目需要以下內容。
硬件
- 樹莓派 3b 型或樹莓派 4 型
- 面包板伴侶 TIMI-130
- 面包板伴侶 Pi 適配器
- 微型 SD 卡(適用于樹莓派操作系統)
軟件
第 2 步:樹莓派設置。
通過訪問https://www.raspberrypi.com/software/并按照安裝操作系統的說明,設置 Raspberry Pi 非常容易。
安裝 Python 庫和 Git 克隆項目文件需要 Internet 連接。
Pi OS 需要配置為啟用 SSH 并啟用我們將用來與 TIMI-130 通信的串行端口 (UART)。
第 3 步:TIMI-130 設置。
Pi 適配器需要連接到 Pi GPIO 接頭和連接到適配器的 TIMI-130,如下所示。
由于需要為狀態監視器配置 TIMI-130,因此需要將 Pi 適配器上的開關設置為 PROG。
接下來,將Mates Programmer連接到 Pi 適配器。
將 USB 電纜連接到 Mates Programmer 和 PC USB 端口。TIMI-130 現在已準備好安裝狀態監視器項目。
需要Mates Studio來配置 TIMI-130,您可以從這里下載https://breadboardmates.com/products/mates-studio/
創建狀態監視器項目當您啟動 Mates Studio 時,系統會提示您選擇您的產品。
單擊 TIMI-130,TIMI-130 的圖形表示將出現在右側面板上。
在 TIMI-130 的圖像上單擊兩次可將顯示屏旋轉 180 度。
點擊 CONFIRM 然后選擇Commander Environment 。
Commander 環境現在將打開。
點擊“+”瀏覽頁面庫。
然后從通知選項卡中選擇狀態和資源監視器,然后單擊確認。
波特率需要從 9600 更改為 115200,方法是單擊工具和配置按鈕并選擇 115200
接下來,通過單擊 COM 面板并從下拉菜單中選擇正確的端口,為 Mates Programmer 選擇 com 端口。
最后,單擊上傳按鈕將狀態監視器上傳到 TIMI-30。
狀態監視器現在將顯示在 TIMI-130 上
現在可以從 Pi 適配器中移除 USB 引線和 Mates Programmer。Pi 適配器開關現在可以設置為 HOST,準備好接收來自 Pi 的命令。
第 4 步:安裝 Python 應用程序。
所有最近的 Raspberry Pi OS Distro 都預裝了 Python 3,因此我們可以使用 PIP 安裝所需的 Python 庫。
psutil庫可以通過運行安裝
pip3 install psutil
接下來,可以通過運行安裝 Breadboard Mates Controller 庫
pip3 install rpi-mates-controller
接下來,我們可以從 Github 克隆 Python 代碼
git clone https://github.com/BreadBoardMates/RPi-Status-Monitor.git
或者,可以從這里下載 Python 代碼https://github.com/BreadBoardMates/RPi-Status-Monitor
第 5 步:運行應用程序。
移動到 RPi-Status-Monitor 文件夾
cd RPi-Status-Monitor
然后運行應用程序
python3 ./BBMPiStatusMonitor.py
TIMI-130 應首先重置為屏幕外,然后開始顯示 CPU 使用狀態、CPU 溫度和 RAM 使用狀態以及連接的 IP 地址和正常運行時間。
如果您希望狀態監視器作為后臺任務運行,只需在命令中添加“&”即可。
python3 ./BBMPiStatusMonitor.py &
享受您閃亮的 Raspberry Pi 顯示器。
通過在 Mates Studio 中創建新頁面并更改 Python 代碼以匹配所使用的任何新小部件,可以簡單地更改或改進該項目以獲得所需的外觀。唯一的限制是想象力。
Python 代碼。
import time
import sys
import psutil
import socket
import fcntl
import struct
import uptime
from gpiozero import CPUTemperature
from rpi_mates.controller import RPiMatesController as MatesController
from mates.constants import *
def up():
t = uptime.uptime()
days = 0
hours = 0
min = 0
out = ''
while t > 86400:
t -= 86400
days += 1
while t > 3600:
t -= 3600
hours += 1
while t > 60:
t -= 60
min += 1
out += str(days) + 'd '
out += str(hours) + 'h '
out += str(min) + 'm'
return out
def get_interface_ipaddress(network):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
try:
return socket.inet_ntoa(fcntl.ioctl(s.fileno(), 0x8915,
struct.pack('256s',
network[:15].encode('utf-8')))[20:24]) # SIOCGIFADDR
except OSError:
return '0.0.0.0'
if __name__ == '__main__':
mates = MatesController('/dev/ttyS0')
mates.begin(115200)
gtime = up()
lastCpuUse = 0
lastTemp = 0
lastlTemp = 0
lastRamUse = 0
lastWIPaddr = '0.0.0.0'
lastEIPaddr = '0.0.0.0'
mates.updateTextArea(5, gtime, True)
cpu = CPUTemperature()
lastlTemp = int(cpu.temperature * 10)
IPinterval = 0
while True:
cpu = CPUTemperature()
gcpu = int(cpu.temperature)
lcpu = int(cpu.temperature * 10)
cpuuse = int(psutil.cpu_percent())
ramuse = int(psutil.virtual_memory().percent)
if cpuuse < lastCpuUse:
lastCpuUse = lastCpuUse - (1 + (lastCpuUse - cpuuse > 9))
if cpuuse > lastCpuUse:
lastCpuUse = lastCpuUse + 1 + (cpuuse - lastCpuUse > 9)
if gcpu < lastTemp:
lastTemp = lastTemp - (1 + (lastTemp - gcpu > 9))
if gcpu > lastTemp:
lastTemp = lastTemp + 1 + (gcpu - lastTemp > 9)
if lcpu < lastlTemp:
lastlTemp = lastlTemp - 1
if lcpu > lastlTemp:
lastlTemp = lastlTemp + 1
if ramuse < lastRamUse:
lastRamUse = lastRamUse - (1 + (lastRamUse - ramuse > 9))
if ramuse > lastRamUse:
lastRamUse = lastRamUse + 1 + (ramuse - lastRamUse > 9)
if gcpu != lastTemp:
mates.setWidgetValueByIndex(MatesWidget.MATES_MEDIA_GAUGE_B,0, lastTemp)
if lcpu != lastlTemp:
mates.setLedDigitsShortValue(0, lastlTemp)
if cpuuse != lastCpuUse:
mates.setWidgetValueByIndex(MatesWidget.MATES_MEDIA_GAUGE_B,1, lastCpuUse)
mates.setLedDigitsShortValue(1, lastCpuUse)
if ramuse != lastRamUse:
mates.setWidgetValueByIndex(MatesWidget.MATES_MEDIA_GAUGE_B,2, lastRamUse)
mates.setLedDigitsShortValue(2, lastRamUse)
if IPinterval > 20:
tempIPaddr = get_interface_ipaddress('eth0')
if tempIPaddr != lastEIPaddr:
mates.updateTextArea(1, tempIPaddr, True)
lastEIPaddr = tempIPaddr
tempIPaddr = get_interface_ipaddress('wlan0')
if tempIPaddr != lastWIPaddr:
mates.updateTextArea(3, tempIPaddr, True)
lastWIPaddr = tempIPaddr
IPinterval = 0
IPinterval = IPinterval + 1
time.sleep(0.060)
tempTime = up()
if tempTime != gtime:
mates.updateTextArea(5, tempTime, True)
gtime = tempTime
time.sleep(0.040)
Python 代碼將創建一個 Mates Controller 實例并以 115200 波特率啟動它。
mates = MatesController('/dev/ttyS0')
mates.begin(115200)
然后創建一組變量,這些變量將在每次更新各種狀態后設置。這使主循環能夠將剛剛讀取的狀態與其上一個狀態進行比較,然后僅在其值發生變化時才更新相應的小部件。
lastCpuUse = 0
lastTemp = 0
lastlTemp = 0
lastRamUse = 0
lastWIPaddr = '0.0.0.0'
lastEIPaddr = '0.0.0.0'
如果需要,循環的每次迭代都將使用以下簡單命令更新顯示屏上的小部件
mates.setWidgetValueByIndex(MatesWidget.MATES_MEDIA_GAUGE_B,0, lastTemp)
mates.setLedDigitsShortValue(0, lastlTemp)
mates.setWidgetValueByIndex(MatesWidget.MATES_MEDIA_GAUGE_B,1, lastCpuUse)
mates.setLedDigitsShortValue(1, lastCpuUse)
mates.setWidgetValueByIndex(MatesWidget.MATES_MEDIA_GAUGE_B,2, lastRamUse)
mates.setLedDigitsShortValue(2, lastRamUse)
mates.updateTextArea(1, tempIPaddr, True)
mates.updateTextArea(3, tempIPaddr, True)
mates.updateTextArea(5, tempTime, True)
可下載資源
以下是軟件應用程序、庫和已完成項目文件的鏈接。
- Pi Skype監視器開源分享
- 無線串口監視器開源分享
- 車庫門監視器開源分享
- 蜂窩連接的蜂巢監視器開源分享
- 管道監視器開源設計
- CPU和RAM使用監視器開源分享
- 小馬駒監視器開源分享
- 生命數據鏈路監視器開源項目
- 健康監視器開源分享
- OctoPrint打印監視器開源分享
- 樹莓派計算模塊開源項目
- 串行顯示LCD監視器開源項目
- 電源監視器開源項目
- 40v樹莓派電壓調節帽開源項目
- 樹莓派ATEM Tally開源項目
- 如何創建自定義監視器? 517次閱讀
- 光纖應用中的監視器校準 881次閱讀
- 虹科工業樹莓派應用小技巧 574次閱讀
- 如何通過Raspberry Pi設置CE電流監視器 2124次閱讀
- KUKA C4如何使用診斷監視器? 3596次閱讀
- dfrobotUSB/TTL樹莓派GPS模塊簡介 3212次閱讀
- 淺談香蕉派與樹莓派的不同 2.5w次閱讀
- 簡單分析樹莓派的優點與缺點 5.9w次閱讀
- 解答樹莓派如何開啟root賬戶 6378次閱讀
- 樹莓派有什么用_樹莓派能用來做啥_樹莓派新手入門教程 3.3w次閱讀
- 樹莓派安裝系統_樹莓派系統安裝教程 1.3w次閱讀
- 樹莓派用什么語言編程_樹莓派python編程詳解 3.8w次閱讀
- 樹莓派gpio接口及編程方法 6.4w次閱讀
- DIY一個樹莓派擴展板 7340次閱讀
- 液晶監視器的選購與保養 1022次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多