Theo dõi điện năng và nhiệt độ máy Raspberry Pĩ

Khi chúng tôi đang sử dụng bảng Raspberry Pi, đôi khi bạn có thể thấy điện áp thấp qua lời nhắc bên phải của màn hình hệ thống, hoặc tự nhiện khởi động máy lại. Như thế hệ thống hoạt động không ổn định, mất dữ liệu và thậm chí làm hỏng thẻ SD.
Ngay cả khi bộ đổi nguồn chất lượng cao được sử dụng để đáp ứng điện áp và dòng điện làm việc của Raspberry Pi, việc cắm và rút phích cắm lặp đi lặp lại sau khi sử dụng lâu dài sẽ dẫn đến tiếp xúc kém và điện trở cao, điều này sẽ làm cho điện áp đầu vào của Raspberry Pi không đủ.
Có thể ta nhập lệnh sau: get_throttled VCGenCMD
Chúng ta sẽ nhận được một số thập lục phân phản ánh thông tin trạng thái liên quan đến tần số hệ thống hiện tại, điện áp đầu vào, v.v. Sau khi số này được chuyển đổi thành nhị phân, 8 bit trong đó đại diện cho trạng thái của 8 lá cờ.
Để biết chi tiết, vui lòng tham khảo liên kết này trên trang web Raspberry Pi: https://www.raspberrypi.com/documentation/computers/os.html

Trả về trạng thái điều tiết của hệ thống. Đây là một mẫu bit – một bit được đặt chỉ ra các ý nghĩa sau:

BitHex valueMeaning

0

0x1

Phát hiện dưới điện áp

1

0x2

Giới hạn tần số cánh tay

2

0x4

Hiện đang bị điều tiết

3

0x8

Giới hạn nhiệt độ mềm hoạt động

16

0x10000

Đã xảy ra tình trạng dưới điện áp

17

0x20000

Giới hạn tần số cánh tay đã xảy ra

18

0x40000

Điều tiết đã xảy ra

19

0x80000

Giới hạn nhiệt độ mềm đã xảy ra

Hãy tập trung vào hai trong số chúng:
Nếu bit thứ 0 của số này là 1, nó chỉ ra rằng điện áp đầu vào hiện tại là không đủ;
Nếu bit thứ 16 của số này là 1, nó chỉ ra rằng đã có điện áp đầu vào không đủ sau khi khởi động;
Trên thực tế, miễn là chúng tôi phát hiện hai lá cờ này trong thời gian thực, chúng tôi có thể theo dõi điện áp đầu vào của Raspberry Pi.

Hiển thị điện áp hiện tại được sử dụng bởi khối cụ thể: vcgencmd measure_volts core

khốiSự miêu tả

core

Điện áp lõi VC4

sdram_c

Điện áp lõi SDRAM

sdram_i

Điện áp I / O SDRAM

sdram_p

Điện áp SDRAM Phy

Sử dụng câu lệnh python, đầu tiên cài thư viện

sudo pip3 install vcgencmd -i https://mirrors.aliyun.com/pypi/simple/

 

Tạo file pw.py

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# cython: language_level=3

#Flag Bits

UNDERVOLTED         = ‘0’

CAPPED              = ‘1’

THROTTLED           = ‘2’

SOFT_TEMPLIMIT      = ‘3’

HAS_UNDERVOLTED     = ’16’

HAS_CAPPED          = ’17’

HAS_THROTTLED       = ’18’

HAS_SOFT_TEMPLIMIT  = ’19’

 

from vcgencmd import Vcgencmd

from colorama import init

from colorama import Fore, Back, Style

import time

init(autoreset=True)

vcgm = Vcgencmd()

def print_log(flag, info):

if flag:

print(Fore.RED + Style.BRIGHT + info, end = ‘  ‘)

else:

print(Fore.GREEN + Style.DIM + info, end = ‘  ‘)

 

while True:

print(‘[{}] ‘.format(time.strftime(‘%M:%S’)), end = ”)

output = vcgm.get_throttled()

flag = output[‘breakdown’][UNDERVOLTED]

print_log(flag, ‘UNDERVOLTED’)

flag = output[‘breakdown’][CAPPED]

print_log(flag, ‘CAPPED’)

flag = output[‘breakdown’][THROTTLED]

print_log(flag, ‘THROTTLED’)

flag = output[‘breakdown’][SOFT_TEMPLIMIT]

print_log(flag, ‘SOFT_TEMPLIMIT’)

flag = output[‘breakdown’][HAS_UNDERVOLTED]

print_log(flag, ‘HAS_UNDERVOLTED’)

flag = output[‘breakdown’][HAS_CAPPED]

print_log(flag, ‘HAS_CAPPED’)

flag = output[‘breakdown’][HAS_THROTTLED]

print_log(flag, ‘HAS_THROTTLED’)

flag = output[‘breakdown’][HAS_SOFT_TEMPLIMIT]

print_log(flag, ‘HAS_SOFT_TEMPLIMIT’)

print()

time.sleep(1)

#EOF

Nếu bạn đang sử dụng nguồn điện bình thường trên Raspberry Pi 4B và bạn sẽ nhận được kết quả sau.

Nếu hệ thống hiển thị thông báo màu đỏ, nó chỉ ra rằng bit cờ có liên quan là 1.
Chúng ta có thể thấy rằng UNDERVOLTED màu đỏ chỉ ra rằng điện áp đầu vào quá thấp,Điều chỉnh màu đỏ cho biết tần số hoạt động của hệ thống đã bị ép xuống,HAS_UNDERVOLTED màu đỏ cho biết rằng tình trạng điện áp thấp đã được phát hiện,Một HAS_THROTTLED màu đỏ cho biết rằng nó đã được ép xung.

Theo dõi nhiệt độ.

Trả về nhiệt độ của SoC được đo bằng cảm biến nhiệt độ bên trong của nó; trên Raspberry Pi 4, trả về nhiệt độ của PMIC.

vcgencmd measure_temp
vcgencmd measure_temp pmic


Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *