资料介绍
描述
向任何 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次阅读
下载排行
本周
- 1DH251全极型霍尔效应传感器中文手册
- 0.86 MB | 3次下载 | 免费
- 2RK3506G参考设计
- 0.97 MB | 2次下载 | 3 积分
- 3英飞凌ICL5102 PFC+LLC第二代谐振控制器规格书
- 0.84 MB | 1次下载 | 免费
- 451单片机交通灯仿真
- 0.16 MB | 1次下载 | 2 积分
- 5DH281L全极型霍尔效应传感器中文手册
- 0.71 MB | 1次下载 | 免费
- 6水流量计手册
- 2.4MB | 1次下载 | 免费
- 7LMZ315x0电源模块评估模块用户指南
- 850.76KB | 次下载 | 免费
- 8LMZ12003 SIMPLE SWITCHER电源模块评估模块用户指南
- 660.49KB | 次下载 | 免费
本月
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 163次下载 | 1 积分
- 2PCB布线和布局电路设计规则
- 0.40 MB | 73次下载 | 免费
- 3开关电源设计原理手册
- 1.83 MB | 24次下载 | 免费
- 4智能门锁原理图
- 0.39 MB | 15次下载 | 免费
- 5elmo直线电机驱动调试细则
- 4.76 MB | 10次下载 | 6 积分
- 6OAH0428最新规格书(中文)
- 2.52 MB | 10次下载 | 7 积分
- 7BQ76952评估模块
- 3.67MB | 7次下载 | 免费
- 8PC1013三合一快充数据线充电芯片介绍
- 1.03 MB | 7次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935115次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183334次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73806次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多