
버전충돌로 가상화에서 진행하였습니다.
Python 3.11.2
sudo apt update
sudo apt install python3 python3-venv
- 가상환경 생성 원하는 디렉토리
python3 -m venv ~/myenv
가상환경 활성화
source ~/myenv/bin/activate
가상환경 종료
deactivate
코드
import time
import socket
import psutil
from datetime import datetime
from luma.core.interface.serial import spi
from luma.oled.device import ssd1351
from PIL import Image, ImageDraw
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
# ==============================
# ip
# ==============================
def get_ip():
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.8.8", 80)) # 외부 서버에 연결 시도
ip = s.getsockname()[0] # 실제 할당된 IP 확인
s.close()
return ip
except Exception as e:
return f"Error: {e}"
# ==============================
# OLED 초기화
# ==============================
def init_oled():
serial = spi(
port=0,
device=0,
gpio_DC=25,
gpio_RST=27,
bus_speed_hz=4000000
)
device = ssd1351(serial, width=128, height=128, rotate=2)
return device
# ==============================
# 시스템 정보 가져오기
# ==============================
def get_system_info():
try:
ip = get_ip()
except Exception:
ip = "N/A"
cpu = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory()
disk = psutil.disk_usage('/')
mem_info = f"{mem.percent}% ({mem.used//(1024**2)}MB/{mem.total//(1024**2)}MB)"
disk_info = f"{disk.percent}% ({disk.used//(1024**3)}GB/{disk.total//(1024**3)}GB)"
return ip, cpu, mem_info, disk_info
# ==============================
# OLED에 표시하기
# ==============================
def show_system_info(device):
ip, cpu, mem_info, disk_info = get_system_info()
img = Image.new("RGB", (128,128), "black")
draw = ImageDraw.Draw(img)
draw.rectangle((0,0,127,127), outline="white")
draw.text((5,5), f"IP: {ip}", fill="yellow")
draw.text((5,25), f"CPU: {cpu:.1f}%", fill="cyan")
draw.text((5,45), f"MEM: {mem_info}", fill="green")
draw.text((5,65), f"DISK: {disk_info}", fill="red")
now = datetime.now().strftime("%H:%M:%S")
draw.text((5,95), f"TIME: {now}", fill="white")
device.display(img)
# ==============================
# main 루프
# ==============================
if __name__=="__main__":
device = init_oled()
while True:
show_system_info(device)
time.sleep(5) # 5초마다 갱신
추후 알리에서 LED 넓은 바형태를 이용해서 실시간으로 컴퓨터의 상태를 출력하는것을 만들어봐야 겠음.
역시...케이스가 문제...
'Life > 취미' 카테고리의 다른 글
| 죽어가던 딸기모종 (0) | 2025.07.15 |
|---|---|
| 로즈마리 살려! (0) | 2025.07.10 |
| 채굴 정리 (1) | 2024.10.23 |
| 수경 재배 (0) | 2022.06.13 |
| 도시 농부 체험 7일차 (0) | 2022.05.28 |
| 도시 농부 체험 6일차 (0) | 2022.05.27 |
| 도시 농부 체험 4일차 (0) | 2022.05.26 |
| 도시 농부 체험 3일차 (0) | 2022.05.24 |





















