🛠 Logger sur carte microSD en SPI (mode carte)

RP2040 (placa genérica / chip) · intermediaire · Schéma : IMG-rp2040-generic-intermediaire-2-rp2040-sdcard-spi.svg — module lecteur microSD relié en SPI à une carte RP2040 générique : GP2 CS, GP3 MOSI, GP4 MISO, GP5 SCK, 3V3 et GND, fichier journal avec horodatages

Objetivos

Hacer que tu placa RP2040 sea autónoma: escribir archivos en una tarjeta microSD en modo SPI. El RP2040 dispone de 2 controladores SPI (hoja de datos) y MicroPython incluye un controlador SD genérico (módulo sdcard de micropython-lib) que utiliza el modo SPI de la norma SD (inicialización a ~400 kHz y luego transferencia más rápida). Bonus de autonomía: la microSD funciona a 3,3 V nativos, no se necesita convertidor de nivel.

Material

Código completo

# logger.py — monte la SD et journalise la température interne
import os, time, machine
from machine import SPI, Pin
import sdcard

spi = SPI(0, baudrate=400_000, polarity=0, phase=0,
          sck=Pin(5), mosi=Pin(3), miso=Pin(4))
cs = Pin(2, Pin.OUT, value=1)

sd = sdcard.SDCard(spi, cs)
fs = os.VfsFat(sd)                 # monte le système de fichiers
os.mount(fs, '/sd')

t0 = time.ticks_ms
adc = machine.ADC(4)               # canal 4 = capteur thermique interne
with open('/sd/log.csv', 'a') as f:
    while True:
        ms = time.ticks_diff(time.ticks_ms, t0)
        mv = adc.read_u16 * 3.3 / 65535
        t = 27.0 - (mv - 0.706) / 0.001721   # formule datasheet RP2040
        f.write('%d,%.2f\n' % (ms, t))
        f.flush                             # écrit réellement la carte
        time.sleep_ms(1000)

Verificación esperada

Después de unos segundos, retira la tarjeta y léela en un PC: log.csv contiene una línea por segundo con la marca de tiempo en ms y la temperatura (~27–30 °C en reposo; la fórmula del sensor interno, 0,706 V y −1,721 mV/°C, proviene de la sección «Temperature Sensor» de la hoja de datos del RP2040). Vuelve a ejecutar el script: el archivo continúa creciendo (modo «a») — la persistencia funciona.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales