🛠 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

Objectifs

Constituer un enregistreur autonome (datalogger) sans carte SD : la carte embarque 2 MB de flash SPI (U7, MX25R1635F) reliée au module ANNA-B112, distincte des 2 MB de flash QSPI (U2) réservés au firmware et aux données de calibration du hub BHI260AP. L'exemple officiel « StandaloneFlashStorage » de la bibliothèque Arduino_BHY2 montre comment journaliser accéléromètre, gyroscope, température, gaz et rotation au format CSV directement sur cette flash, puis relire le fichier par le port série. Cas d'usage typique d'Arduino Pro : nœud de surveillance de maturation en entrepôt, hors ligne pendant des jours.

Matériel

Code complet

#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 embarquée
  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);
    }
  }
}

Vérification attendue

Après quelques minutes de fonctionnement, le fichier « log.csv » contient une ligne par seconde avec horodatage, trois axes et température. On le relit et on le copie vers le PC avec l'exemple de lecture de la flash (ou on l'exploite directement en CSV dans un tableur). Vérifier aussi la robustesse : redémarrer la carte efface le log à cause de O_TRUNC, volontaire dans cet exemple.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels