logging_csv_usb.ino
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);
}