journalisation.py
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 Raspberry Pi Pico (RP2040 double Cortex-M0+ @ 133 MHz) avec MicroPython installé, alimentée par USB. 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
Installer MicroPython si besoin (maintenir BOOTSEL, brancher l'USB, déposer le fichier .uf2), puis copier le script sur le lecteur de la carte ou via Thonny. Le script démarre seul s'il s'appelle main.py.
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".