logging_qspi.py

Adafruit Feather nRF52840 Express · Archivo : logging_qspi.py · Lenguaje : Python · Uso : Journaliser des mesures sur la flash QSPI

Los 2 MB de flash QSPI expuestos como sistema de archivos forman un registrador autónomo: este script journaliza una medida analógica en CSV cada 10 s con marcas relativas. El archivo se recupera luego conectando la placa por USB.

Hardware

Una Adafruit Feather nRF52840 Express (nRF52840, BLE 5) con NeoPixel, LED rojo, 2 MB de flash QSPI para CircuitPython y conector LiPo. Solo la Feather; un sensor 0-3,3 V en A0 (o nada: el canal flotante da valores de prueba). Un PC para leer journal.csv después.

Cableado

Sensor en A0/3V3/GND según su ficha. La flash QSPI es interna de la placa: nada que cablear, y las escrituras sobreviven al corte de corriente.

Funcionamiento

open("/journal.csv", "a") añade una línea por ciclo; CircuitPython escribe en la partición CIRCUITPY de la flash QSPI. time.monotonic da segundos relativos desde el arranque, suficiente para una curva.

Ejecución

CircuitPython (build feather_nrf52840_express) vía bootloader UF2 (doble reset); editar code.py en la unidad CIRCUITPY.

Variantes

Fechar en absoluto con un módulo DS3231 (I2C), comprimir a binario para ahorrar sitio, o volcar el journal a un teléfono por BLE antes de rotar.

logging_qspi.py

# Journal CSV sur la flash QSPI de 2 Mo (le système de fichiers).
# Les fichiers survivent à la coupure d'alimentation.
import time
import board
import analogio
import rtc

entree = analogio.AnalogIn(board.A0)
CHEMIN = "/journal.csv"

# Horloge interne : figée à minuit au boot, d'où le temps relatif.
t0 = time.monotonic()

with open(CHEMIN, "a") as f:
    f.write("t_s,brut,volts\n") if False else None  # en-tête optionnel

while True:
    brut = entree.value
    with open(CHEMIN, "a") as f:
        f.write("%d,%d,%.3f\n" % (
            time.monotonic() - t0, brut, brut * 3.3 / 65535))
    time.sleep(10)   # une ligne toutes les 10 s

← Volver a la ficha