要在香橙派Orange Pi Zero 2上连接的OLED SSD1306上显示CPU温度、硬盘内存占比、IP地址和时间日期
先按照官方手册的3.24《3.24. I2C 接口的 0.96 寸 OLED 模块使用方法》先点亮屏幕测试通后进行下面的操作。
接线
显示器 — 香橙派
SDA — SDA
SCL — SCK
VCC — 5v或者3.3v(看自己买的屏幕所需要的电压)
GND — GND
以下是一个示例代码,假设您已经连接了SSD1306 OLED屏幕。
首先,请确保您的Orange Pi Zero 2上已安装了必要的库,您可以使用以下命令来安装:
sudo apt-get update
sudo apt-get install python-dev python-pip
sudo pip install luma.oled psutil netifaces
然后,您可以使用以下Python代码来获取并显示所需的信息: 代码中的serial = i2c(port=1, address=0x3C),port=1,自行查看dev目录下i2c设备号
import time
from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306
import psutil
import netifaces
from datetime import datetime# 初始化OLED屏幕
serial = i2c(port=1, address=0x3C)
device = ssd1306(serial)def get_cpu_temperature():
try:
with open('/sys/class/thermal/thermal_zone0/temp', 'r') as file:
temp = float(file.read()) / 1000.0
return temp
except FileNotFoundError:
return Nonedef get_ip_address(interface='eth0'):
try:
addrs = netifaces.ifaddresses(interface)
ip = addrs[netifaces.AF_INET][0]['addr']
return ip
except (KeyError, ValueError):
return Nonewhile True:
with canvas(device) as draw:
cpu_temp = get_cpu_temperature()
if cpu_temp is not None:
draw.text((0, 0), f"CPU Temp: {cpu_temp:.1f}°C", fill="white")mem_usage = psutil.virtual_memory().percent
draw.text((0, 16), f"Memory: {mem_usage:.1f}%", fill="white")ip_address = get_ip_address()
if ip_address is not None:
draw.text((0, 32), f"IP Address: {ip_address}", fill="white")current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
draw.text((0, 48), f"Time: {current_time}", fill="white")time.sleep(5) # 更新屏幕数据的时间间隔,这里设置为5秒
这段代码将定期更新OLED屏幕上的信息,显示CPU温度、内存使用率、IP地址和当前时间日期。请根据您的需求调整屏幕布局和更新频率。确保您的OLED屏幕已正确连接到香橙派Orange Pi Zero 2,并且I2C总线设置正确。您还可以根据需要更改显示的信息。