journalisation.py

RP2350 (générique / cartes basées sur le RP2350) · 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 RP2350 (double Cortex-M33) 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 le MicroPython « RP2350 » via BOOTSEL (.uf2), puis copier le script sur le lecteur. La broche de la LED utilisateur varie selon le fabricant : vérifier la documentation de la carte.

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