🛠 Enregistreur de capteurs sur la flash embarquée

Arduino Nicla Sense ME · avance · Schéma : IMG-nicla-sense-me-avance-2-niclasense-enregistreur-flash.svg — Nicla Sense ME avec puce de flash SPI 2 MB mise en évidence, flèches entrantes des capteurs et sortantes d'un fichier CSV vers l'ordinateur, carte SD barrée pour signifier l'absence de slot

Objetivos

Constituir un registrador autónomo (datalogger) sin tarjeta SD: la placa incorpora 2 MB de memoria flash SPI (U7, MX25R1635F) conectada al módulo ANNA-B112, distinta de los 2 MB de memoria flash QSPI (U2) reservados para el firmware y los datos de calibración del hub BHI260AP. El ejemplo oficial «StandaloneFlashStorage» de la biblioteca Arduino_BHY2 muestra cómo registrar el acelerómetro, el giroscopio, la temperatura, los gases y la rotación en formato CSV directamente en esta memoria flash, y luego releer el archivo a través del puerto serie. Caso de uso típico de Arduino Pro: nodo de monitorización de maduración en almacén, sin conexión durante días.

Material

Código completo

#include "Arduino_BHY2.h"

SensorXYZ accel(SENSOR_ID_ACC);    // ID 4
Sensor temp(SENSOR_ID_TEMP);       // ID 128
File logFile;

void setup {
  Serial.begin(115200);
  while (!Serial);
  BHY2.begin;
  accel.begin;
  temp.begin;

  // Ecriture sur la flash SPI 2 MB embarquee
  logFile = BHY2.open("log.csv", O_WRONLY | O_CREAT | O_TRUNC);
  if (!logFile) {
    Serial.println("Ouverture flash impossible");
    while (1);
  }
  logFile.println("millis,ax,ay,az,temp_C");
}

void loop {
  static auto printTime = millis;
  BHY2.update;
  if (millis - printTime >= 1000) {
    printTime = millis;
    if (accel.dataAvailable && temp.dataAvailable) {
      logFile.printf("%lu,%.3f,%.3f,%.3f,%.2f\n", millis,
                     accel.x, accel.y, accel.z, temp.value);
    }
  }
}

Verificación esperada

Después de unos minutos de funcionamiento, el archivo «log.csv» contiene una línea por segundo con marca de tiempo, tres ejes y temperatura. Se relee y se copia al PC con el ejemplo de lectura de la memoria flash (o se explota directamente como CSV en una hoja de cálculo). Verificar también la robustez: reiniciar la placa borra el registro debido a O_TRUNC, lo cual es intencional en este ejemplo.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales