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:
Bit | Hex value | Meaning |
---|---|---|
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ối | Sự 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
Nhiệt độ của Raspberry Pi đạt tới nhưng không vượt quá mức 80°C, mức nhiệt mà CPU sẽ bị giảm tốc trong quá trình
vcgencmd measure_clock arm
Bài viết liên quan: