电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>树莓派监视器开源项目

树莓派监视器开源项目

2023-06-14 | zip | 0.00 MB | 次下载 | 免费

资料介绍

描述

向任何 Raspberry Pi 项目添加状态监视器对于实时了解 CPU 在使用、温度和 RAM 使用以及重要连接信息方面的执行情况非常有用。如果超频是您的事,那么这对于查看您的设置对 Pi 的影响并做出相应的调整非常有价值。

Breadboard Mates TIMI-130显示器与 Breadboard Mates Pi 适配器一起,是该项目的完美选择,因为它易于使用且启动和运行所需的代码简单。

面包板伴侣 TIMI-130
 

Breadboard Mates 提供了一个 Python 库,使 Python 编码体验变得轻松。

第 1 步:需要什么。

该项目需要以下内容。

硬件

软件

第 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,如下所示。

poYBAGNYweiAUT97AAaYdV2kusI061.png
 

由于需要为状态监视器配置 TIMI-130,因此需要将 Pi 适配器上的开关设置为 PROG。

接下来,将Mates Programmer连接到 Pi 适配器。

pYYBAGNYwe2ANyAJAAZjZYfyNjY613.png
 

USB 电缆连接到 Mates Programmer 和 PC USB 端口。TIMI-130 现在已准备好安装状态监视器项目。

需要Mates Studio来配置 TIMI-130,您可以从这里下载https://breadboardmates.com/products/mates-studio/

创建状态监视器项目当您启动 Mates Studio 时,系统会提示您选择您的产品

pYYBAGNYwfCAOzVhAACkvhoAaTU576.png
 

单击 TIMI-130,TIMI-130 的图形表示将出现在右侧面板上。

pYYBAGNYwfKASBpLAAC4NziNZSQ658.png
 

在 TIMI-130 的图像上单击两次可将显示屏旋转 180 度。

pYYBAGNYwfWAZwa-AAC84VQ1GYo868.png
 

点击 CONFIRM 然后选择Commander Environment

poYBAGNYwfiAYT2JAAD65YW72bc281.png
 

Commander 环境现在将打开。

poYBAGNYwfuAA33-AABuRGM3oC8411.png
 

点击“+”浏览页面库。

然后从通知选项卡中选择状态和资源监视器,然后单击确认。

poYBAGNYwf2AO2RLAAE_wOk6RWE514.png
 

波特率需要从 9600 更改为 115200,方法是单击工具和配置按钮并选择 115200

pYYBAGNYwgCAJUuIAAGkKH26ylU803.png
 

接下来,通过单击 COM 面板并从下拉菜单中选择正确的端口,为 Mates Programmer 选择 com 端口。

poYBAGNYwgOABTesAAF8sS42j-E801.png
 

最后,单击上传按钮将状态监视器上传到 TIMI-30。

poYBAGNYwgWABA-uAAAOc_F-EkI370.png
 

状态监视器现在将显示在 TIMI-130 上

poYBAGNYwgqAJ7KQAAPSfzxMruM355.png
 

现在可以从 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)

可下载资源

以下是软件应用程序、库和已完成项目文件的链接。


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费