Arduino nano 33 BLE IMU LSM9DS1

Arduino nano 33 BLE IMU LSM9DS1 è il primo articolo dedicato alla scheda della nuova famiglia nano dotata di un IMU 9DOF.

In questa serie di articoli proverai a utilizzare il codice di esempio fornito con la libreria Arduino_LSM91DS1, nata per controllare agevolmente l’integrato di tipo IMU presente sulla scheda.

Arduino nano 33 BLE IMU LSM9DS1

L’IMU, come sai, è l’acronimo di inertial measurement unit ( unità di misura inerziale o piattaforma inerziale )  come puoi leggere su wikipedia.

IMU example

Ogni grado di libertà è noto anche come DOF ( Degree Of Freedom – grado di libertà ) da cui deduci facilmente che dire 9DoF equivale a:

  • 3 gradi di libertà per l’accelerometro
  • 3 gradi di libertà per il giroscopio
  • 3 gradi di libertà per il magnetometro

In questo articolo inizi a verificare come leggere i dati dell’accelerometro e visualizzarli sul plotter seriale.

Installazione della libreria LSM9DS1

Per utilizzare il sensore IMU dell’arduino nano 33 BLE  ti serve la libreria LSM9DS1 che puoi installare direttamente dall’IDE:

cercando il nome della stessa  “LSM9DS1” ( come sopra ) dal gestore librerie e selezionando quella ufficiale Arduino:

Dopo averla installata:

potrai accedere agli esempi Arduino nano 33 BLE IMU LSM9DS1 messi a disposizione dal Team Arduino.

Lettura accelerometro per IMU LSM9DS1

La lettura dell’accelerometro LSM9DS1 è semplificata dall’uso della libreria e degli esempi, è proprio dal primo esempio che ti consiglio di partire:

ed ecco il codice che avrai di difronte:

#include <Arduino_LSM9DS1.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("Started");

  if (!IMU.begin()) {
    Serial.println("Failed to initialize IMU!");
    while (1);
  }

  Serial.print("Accelerometer sample rate = ");
  Serial.print(IMU.accelerationSampleRate());
  Serial.println(" Hz");
  Serial.println();
  Serial.println("Acceleration in G's");
  Serial.println("X\tY\tZ");
}

void loop() {
  float x, y, z;

  if (IMU.accelerationAvailable()) {
    IMU.readAcceleration(x, y, z);

    Serial.print(x);
    Serial.print('\t');
    Serial.print(y);
    Serial.print('\t');
    Serial.println(z);
  }
}

partendo dalla prima linea 01: includi la libreria LSM9DS1;

linee 04-06: inizializzi la comunicazione seriale tra l’arduino nano 33 ed il computer;

linee 08-11: usi il metodo begin della libreria per inizializzare l’IMU ed allo stesso tempo verificare, mediante return code, che tale inizializzazione sia andata a buon fine;

infine le linee 13-18: le usi per scrivere sul monitor seriale alcuni dati relativi alle operazioni che hai raccolto come il rate in Hz derivante dall’accelerometro.

La funzione loop è altrettanto semplice da leggere, la linea 22 imposta le tre variabili di tipo float in cui memorizzare i valori provenienti dalle accelerazioni sui tre assi: x,y,z;

linea 24: verifica che la comunicazione con il sensore IMU sia presente e che ci siano informazioni disponibili;

linea 25: usa il metodo readAcceleration per leggere i dati dall’accelerometro e memorizzarli nei tre vettori x,y,z

linee 27-31: invia i 3 dati letti al plotter seriale.

Il video

Durante i test dell’arduino nano 33 BLE IMU LSM9DS1 ho ripreso questo semplice video in cui spostando il micro controllore vedi le linee del grafico rappresentate:

In conclusione hai notato la semplicità del codice necessaria per leggere e rappresentare i valori di x,y e z sul plotter seriale grazie alla libreria Arduino LSM9DS1.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/arduino-nano-33-ble-imu-lsm9ds1.html

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.