import os
import sys
import gc
import machine
import ubinascii
def system_report():
print("\nš ļø YD-RP2040 System Utility Report")
print("=" * 40)
# CPU Info
print("\n[š] CPU Info:")
print(f" Platform : {sys.platform}")
print(f" Frequency : {machine.freq() / 1_000_000:.1f} MHz")
# Unique ID
try:
uid = ubinascii.hexlify(machine.unique_id()).decode()
print(f" Unique ID : {uid.upper()}")
except Exception:
print(" Unique ID : Not available")
# Temperature (ADC4 on RP2040)
try:
sensor_temp = machine.ADC(4)
voltage = sensor_temp.read_u16() * 3.3 / 65535
temperature = 27 - (voltage - 0.706) / 0.001721
print(f" MCU Temperature : {temperature:.2f} °C")
except Exception as e:
print(f" MCU Temperature : Error ({e})")
# Memory
print("\n[š¾] Memory Info:")
gc.collect()
print(f" Free RAM : {gc.mem_free()} bytes")
print(f" Allocated RAM : {gc.mem_alloc()} bytes")
# Filesystem
print("\n[š] Flash Filesystem (/):")
try:
fs = os.statvfs("/")
total = fs[0] * fs[2]
free = fs[0] * fs[3]
used = total - free
print(f" Total : {total / 1024:.1f} KB")
print(f" Used : {used / 1024:.1f} KB")
print(f" Free : {free / 1024:.1f} KB")
print("\n[š] Directory Listing:")
for name in os.listdir("/"):
try:
stats = os.stat(name)
size = stats[6]
print(f" {'<DIR>' if stats[0] & 0x4000 else ' '} {name:20} {size} bytes")
except Exception:
print(f" [ERR] {name}")
except Exception as e:
print(f" Filesystem check failed: {e}")
# I2C Scan
print("\n[š] I2C Bus Scan (GPIO0=SDA, GPIO1=SCL):")
try:
i2c = machine.I2C(0, scl=machine.Pin(1), sda=machine.Pin(0))
devices = i2c.scan()
if devices:
for addr in devices:
print(f" Found I2C device at 0x{addr:02X}")
else:
print(" No I2C devices found.")
except Exception as e:
print(f" I2C Scan failed: {e}")
print("\nā
System check complete.\n")
# Run immediately when script is executed
if __name__ == "__main__":
system_report()