🛠 Logger sur carte microSD en SPI (mode carte)

RP2040 (carte / puce générique) · 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

Objectifs

Rendre ta carte RP2040 autonome : écrire des fichiers sur une carte microSD en mode SPI. Le RP2040 dispose de 2 contrôleurs SPI (datasheet) et MicroPython embarque un pilote SD générique (module sdcard de micropython-lib) qui parle le mode SPI de la norme SD (initialisation à ~400 kHz puis transfert plus rapide). Bonus autonomie : la microSD est en 3,3 V natif, aucun level-shifter nécessaire.

Matériel

Code complet

# 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)

Vérification attendue

Après quelques secondes, démonte la carte et lis-la sur un PC : log.csv contient une ligne par seconde avec l'horodatage en ms et la température (~27–30 °C au repos ; la formule du capteur interne, 0,706 V et −1,721 mV/°C, vient de la section « Temperature Sensor » de la datasheet RP2040). Relance le script : le fichier continue de grandir (mode « a ») — la persistance fonctionne.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels