LSM9DS1
- Il modulo inerziale LSM9DS1 è integrato nell'Arduino Nano 33 BLE Sense e pertanto si può usare solo con tale scheda.
- Il datasheet è accessibile qui (scaricato) o qui (fonte originale).
- Per l'uso dei sensori su questa scheda è necessario installare la libreria omonima. Si può fare in due modi:
- Il modo più comodo per perdere meno tempo con gli studenti in laboratorio è copiare i file Arduino_LSM9DS1.h, LSM9DS1.h e LSM9DS1.cpp nella cartella del progetto, quella in cui è presente anche il file .ino. Poi il progetto sarà portabile a tutti i computer senza ulteriore setup necessario. I tre file sono già presenti nei progetti di esempio per accelerometro, giroscopio e magnetometro, quindi basta copiare le relative cartelle e modificarle.
- Altrimenti basta andare in
Strumenti -> Gestione librerie
, cercare "LSM9DS1" ed installare "Arduino_LSM9DS1". Bisognerà però ripetere questa azione su ogni computer su cui si vuole usare il progetto.
- Per interagire con la libreria all'interno del codice bisogna includerla con
#include "Arduino_LSM9DS1.h"
. La documentazione della libreria è disponibile qui. - All'interno del
setup()
, per inizializzare la connessione con il modulo, si usaIMU.begin()
.
Magnetometro
Progetto di esempio: magnetometro
// include la libreria che mette a disposizione l'oggetto IMU
#include "Arduino_LSM9DS1.h"
void setup() {
// inizializza il seriale
Serial.begin(9600);
while (!Serial);
// inizializza il LSM9DS1
IMU.begin();
}
void loop() {
// le misurazioni sono a 20Hz, quindi piuttosto lente rispetto alla velocità di esecuzione di
// codice dell'Arduino, pertanto bisogna controllare se sono arrivati dei dati prima di leggerli
if (IMU.magneticFieldAvailable()) {
// crea le variabili x, y e z, inizialmente senza alcun valore
float x, y, z;
// legge il valore del campo magnetico lungo x, y e z nelle tre variabili x, y e z
// (unita' di misura: uT/microTesla)
IMU.readMagneticField(x, y, z);
// scrive sulla seriale una linea contenente i tre valori letti separati da uno spazio, così
// che si possano visualizzare col Plotter Seriale
Serial.print(x);
Serial.print(" ");
Serial.print(y);
Serial.print(" ");
Serial.println(z);
}
}
- Fornisce misurazioni ad una frequenza di 20Hz.
- Riesce a leggere valori di campo magnetico da a , con una precisione di .
- Fornisce i dati nell'unità di misura , ovvero microTesla.
Nel caso in cui si voglia fare una calibrazione iniziale del magnetometro, così da rimuovere il campo magnetico terrestre ed altre interferenze dalle misurazioni, si può fare riferimento al progetto magnetometro_calibrazione
Più informazioni sul magnetometro sono disponibili nel tutorial ufficiale di Arduino.