logging_csv_usb.ino

Arduino Nicla Sense ME · Archivo : logging_csv_usb.ino · Lenguaje : Arduino · Uso : Journaliser tous les capteurs en CSV série

El puente serie USB (SAMD11) del Sense ME sirve de cable registrador: aceleración, giro, presión y temperatura fluyen en CSV con marca de tiempo a 1 Hz. Copiar a una hoja de cálculo y la curva está trazada: la adquisición de datos más simple de la placa.

Hardware

Una Arduino Nicla Sense ME (nRF52832, solo BLE) con hub Bosch BHI260AP, BMM150, BMP390, BME688, LED RGB en driver I2C y cargador LiPo. La placa conectada a un PC por USB (el conector va por el puente SAMD11, el nRF52832 no tiene USB nativo). Un terminal serie o una hoja de cálculo abierta.

Cableado

Sin cableado. Para una versión autónoma sin PC, la flash de 2 MB embarca el journal (ejemplo StandaloneFlashStorage de la lib BHY2).

Funcionamiento

BHY2.update bombea el hub, accel/gyro.update refrescan los últimos valores, los accesores estáticos dan presión y temperatura. La cabecera CSV al principio facilita la importación a la hoja.

Ejecución

Programación desde Arduino IDE (core ArduinoCore-mbed); librerías Arduino_BHY2 y Nicla_System; USB por puente serie.

Variantes

Pasar a la flash interna para autonomía, enviar el CSV por BLE a una app que trace, o añadir el IAQ del BME688 a las columnas para un balance de calidad del aire + actividad.

logging_csv_usb.ino

// Enregistreur multi-capteurs : une ligne CSV par seconde sur
// l'USB (pont série SAMD11). Copier-coller la sortie dans un
// tableur, ou la logger avec un enregistreur de terminal (PuTTY).

#include "Arduino_BHY2.h"

SensorAccel accel(0);
SensorGyro gyro(0);

void setup() {
  Serial.begin(115200);
  BHY2.begin();
  accel.begin();
  gyro.begin();
  BHY2.update();
  Serial.println("t_ms,ax,ay,az,gx,gy,gz,p_hPa,t_C");
}

void loop() {
  BHY2.update();

  static unsigned long t = 0;
  if (millis() - t >= 1000) {
    t = millis();
    accel.update();
    gyro.update();
    Serial.print(t);
    Serial.print(","); Serial.print(accel.x(), 3);
    Serial.print(","); Serial.print(accel.y(), 3);
    Serial.print(","); Serial.print(accel.z(), 3);
    Serial.print(","); Serial.print(gyro.x(), 2);
    Serial.print(","); Serial.print(gyro.y(), 2);
    Serial.print(","); Serial.print(gyro.z(), 2);
    Serial.print(","); Serial.print(BHY2.readPressure(), 2);
    Serial.print(","); Serial.println(BHY2.readTemperature(), 2);
  }
  delay(2);
}

← Volver a la ficha