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.
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
Notice
I valori angolari restituiti da ciascun asse variano da -1 ad 1, similmente a quanto accade per i valori restituiti dalle funzioni trigonometriche di sin e cos.
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.
2 commenti
Mi trovo ad avere caricato un codice su Arduino Nano 33 BLE, che sembrerebbe apparentemente innocuo, ma che mi ha bloccato la scheda che ora non vede più la COM. Vorrei provare a rigenerare il boot, ma manca l’ICSP che rende possibile l’operazione con il Nano prima versione. Lei saprebbe come fare ? Riporto sotto il codice caricato (che a me parrebbe inoffensivo, ma tant’è..)
Grazie Mille in anticipo
[[ codice rimosso in automatico ]]
Autore
Ciao Mirco,
purtroppo, come avrai letto nel regolamento del blog, non è possibile incollare codice all’interno dei commenti ed esso viene direttamente cancellato.
In merito al problema relativo al blocco della board so che online ci sono descritti molti metodi su come saldare i pin ICSP direttamente alla scheda ( dovrebbe esserne dotata nel retro del PCB ) in alternativa hai già provato a cliccare due volte sul tasto reset e trasferire un semplice sketch come il blink ?
Spesso risolve il problema se la scheda non è danneggiata ma è solo lo sketch ad avere qualche problema di eseguzione.