from machine import SPI, Pin
import os
import sdcard
# Wokwi Pico + SD 模块 标准引脚
SPI_ID = 0
SCK_PIN = 2
MOSI_PIN = 3
MISO_PIN = 4
CS_PIN = 5
MOUNT_PATH = "/sd"
sd_dev = None
vfs = None
def sd_mount():
global sd_dev, vfs
try:
spi = SPI(SPI_ID, baudrate=10000000, sck=Pin(SCK_PIN), mosi=Pin(MOSI_PIN), miso=Pin(MISO_PIN))
cs = Pin(CS_PIN, Pin.OUT)
sd_dev = sdcard.SDCard(spi, cs)
vfs = os.VfsFat(sd_dev)
os.mount(vfs, MOUNT_PATH)
return True
except Exception as e:
print("挂载失败:", e)
return False
def sd_unmount():
try:
os.umount(MOUNT_PATH)
return True
except:
return False
def file_append(path, data):
try:
with open(MOUNT_PATH + path, "a") as f:
f.write(data + "\n")
return True
except:
return False
def file_read(path):
try:
with open(MOUNT_PATH + path, "r") as f:
return f.read()
except:
return ""
# ===================== 测试 =====================
if __name__ == "__main__":
if sd_mount():
print("✅ SD 卡挂载成功!")
file_append("/data.txt", "Hello Wokwi!")
file_append("/data.txt", "Temp:25C Humidity:60%")
print("--- 文件内容 ---")
print(file_read("/data.txt"))
statvfs = os.statvfs(MOUNT_PATH)
total_kb = (statvfs[0] * statvfs[2]) // 1024
free_kb = (statvfs[0] * statvfs[3]) // 1024
print(f"总容量:{total_kb} KB | 剩余:{free_kb} KB")
sd_unmount()
print("✅ 已卸载")
else:
print("❌ 挂载失败,请检查接线")