journalisation.py

RP2040 (carte / puce générique) · Fichier : journalisation.py · Langage : Python · Usage : Journaliser des mesures en CSV dans la mémoire flash de la carte

MicroPython expose la flash interne comme un système de fichiers : ce script y écrit un CSV de température toutes les 5 s, en mode append pour ne jamais écraser les données. Le fichier se récupère ensuite comme une clé USB.

Matériel requis

Une carte générique à microcontrôleur RP2040 (double Cortex-M0+) programmée en MicroPython. Aucun composant externe ; la flash de la carte sert de stockage (quelques Mo disponibles).

Câblage

Aucun câblage : mesures internes uniquement. Ajouter un capteur (DHT, ADC) en gardant le même format de ligne.

Fonctionnement

open(FICHIER, "a") ouvre en ajout ; chaque ligne contient les secondes depuis le démarrage et la température. os.stat()[6] donne la taille pour surveiller le remplissage.

Exécution

Flasher MicroPython via BOOTSEL (fichier .uf2), puis copier le script sur le lecteur de la carte. Vérifier la broche de la LED utilisateur de votre carte (souvent GP25) et l'adapter si besoin.

Variantes

Ajouter une rotation (renommer journal.csv en journal-1.csv au-delà de 100 Ko), ou horodater avec une horloge RTC externe type DS3231.

journalisation.py

# Journal CSV dans le systeme de fichiers interne (flash) de la carte.
import time
import os
import machine

FICHIER = "journal.csv"
ENTETE = "timestamp,temperature_c
"

def temperature():
    adc = machine.ADC(4)   # capteur thermique interne
    v = adc.read_u16() * 3.3 / 65535.0
    return 27.0 - (v - 0.706) / 0.001721

# Creer le fichier avec l'entete s'il n'existe pas.
if FICHIER not in os.listdir():
    with open(FICHIER, "w") as f:
        f.write(ENTETE)

print("Journalisation toutes les 5 s")
while True:
    t = temperature()
    horodatage = time.ticks_ms() // 1000
    with open(FICHIER, "a") as f:      # append : pas d'ecrasement
        f.write("%d,%.2f
" % (horodatage, t))
    taille = os.stat(FICHIER)[6]
    print("+1 ligne (%d octets au total)" % taille)
    time.sleep(5)

# Recuperer le CSV : ouvrir le lecteur de la carte ou "Thonny > Fichiers".

← Retour à la fiche