journalisation.py
MicroPython expone la flash interna como sistema de archivos: este script escribe allí un CSV de temperatura cada 5 s, en modo append para no sobrescribir nunca los datos. El archivo se recupera luego como un pendrive.
Hardware
Una placa genérica con microcontrolador RP2350 (doble Cortex-M33) programada en MicroPython. Sin componentes externos; la flash de la placa es el almacenamiento (unos pocos MB disponibles).
Cableado
Sin cableado: solo medidas internas. Añade un sensor (DHT, ADC) manteniendo el mismo formato de línea.
Funcionamiento
open(FICHIER, "a") abre en modo añadir; cada línea contiene segundos desde el arranque y la temperatura. os.stat()[6] da el tamaño para vigilar el llenado.
Ejecución
Graba la versión MicroPython « RP2350 » vía BOOTSEL (.uf2) y copia el script en la unidad. El pin del LED de usuario varía según el fabricante: consulta la documentación de la placa.
Variantes
Añade rotación (renombrar journal.csv a journal-1.csv al pasar de 100 KB), o marca la hora con un RTC externo tipo 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".