imu_bhi260.ino
L’accéléromètre 16 bits du BHI260AP s’ouvre avec la bibliothèque Arduino_BHY2 : accel.checkNewData puis x/y/z en g. La doc insiste : BHY2.update() est la pompe de la messagerie du hub — sans elle, aucun capteur ne répond.
Matériel requis
Une Arduino Nicla Sense ME (nRF52832 dans un module ANNA-B112, BLE seul, pas de Wi-Fi) avec hub capteurs Bosch BHI260AP, magnétomètre BMM150, baromètre BMP390, capteur de gaz BME688, LED RVB sur pilote I2C et chargeur LiPo BQ25120. La carte seule sur USB ; le BHI260AP et son firmware BHY2 sont flashés en usine dans sa flash QSPI dédiée.
Câblage
Aucun câblage : tous les capteurs Bosch sont soudés et câblés en interne vers le hub. Les broches du connecteur restent libres.
Fonctionnement
BHY2.begin démarre le hub (prover/advanced) ; accel.begin active le capteur dans le firmware BHY2 ; update() draine les FIFO, checkNewData lit la dernière trame. Sortie en g, 1 g ≈ 9,81 m/s².
Exécution
Programmation via Arduino IDE (core ArduinoCore-mbed, target NICLA_SENSE_ME) ; bibliothèques Arduino_BHY2 (capteurs) et Nicla_System (LED, chargeur) ; USB via pont série SAMD11.
Variantes
Ajouter gyro et rotation vectorielle (fusion BSX du hub), augmenter la fréquence de l’update pour du temps réel, ou streamer les 9 axes en BLE.
imu_bhi260.ino
// Les capteurs du Sense ME ne pendent pas sur l'I2C direct :
// ils sont derrière le hub BHI260AP, servi par Arduino_BHY2.
// Règle docs-db : BHY2.update() est la pompe aux lettres du hub,
// à appeler en continu.
#include "Arduino_BHY2.h"
SensorAccel accel(0);
void setup() {
Serial.begin(115200);
BHY2.begin();
accel.begin();
BHY2.update(); // premier échange avec le hub
}
void loop() {
BHY2.update(); // OBLIGATOIRE à chaque tour de boucle
if (accel.checkNewData()) {
Serial.print("ax="); Serial.print(accel.x());
Serial.print(" ay="); Serial.print(accel.y());
Serial.print(" az="); Serial.println(accel.z());
}
delay(10);
}