TINY MACHINE LEARNING LEZIONE 4

INDICE

  1. Avvertenze
  2. Note sul Copyright
  3. L’inerzia ed il Sensore IMU – LSM9DS1
  4. PAI-007: Misura accelerazione lungo gli assi cartesiani con LSM9DS1
  5. Analisi dello sketch del Progetto AI-007 – Misura accelerazione x, y, e z con LSM9DS1
  6. PAI-008: Misura velocità angolare con LSM9DS1
  7. Analisi dello sketch del Progetto AI-008 – Misura velocità angolare con LSM9DS1
  8. PAI-009: Misura del Campo Magnetico su assi cartesiani con LSM9DS1
  9. Analisi dello sketch del Progetto AI-009 – Misura del Campo Magnetico 3D con LSM9DS1

Avvertenze

Relativamente agli aspetti di sicurezza, poiché i progetti sono basati su alimentazione elettrica in bassissima tensione erogata dalla porta usb del pc o da batterie di supporto o alimentatori con al massimo 9V in uscita, non ci sono particolari rischi di natura elettrica. È comunque doveroso precisare che eventuali cortocircuiti causati in fase di esercitazione potrebbero produrre danni al pc, agli arredi ed in casi estremi anche a ustioni, per tale ragione ogni qual volta si assembla un circuito, o si fanno modifiche su di esso, occorrerà farlo in assenza di alimentazione e al termine dell’esercitazione occorrerà provvedere alla disalimentazione del circuito rimuovendo sia il cavo usb di collegamento al pc che eventuali batterie dai preposti vani o connettori di alimentazione esterna. Inoltre, sempre per ragioni di sicurezza, è fortemente consigliato eseguire i progetti su tappeti isolanti e resistenti al calore acquistabili in un qualsiasi negozio di elettronica o anche sui siti web specializzati.

Al termine delle esercitazioni è opportuno lavarsi le mani, in quanto i componenti elettronici potrebbero avere residui di lavorazione che potrebbero arrecare danno se ingeriti o se a contatto con occhi, bocca, pelle, etc. Sebbene i singoli progetti siano stati testati e sicuri, chi decide di seguire quanto riportato nel presente documento, si assume la piena responsabilità di quanto potrebbe accadere nell’esecuzione delle esercitazioni previste nello stesso. Per i ragazzi più giovani e/o alle prime esperienze nel campo dell’Elettronica, si consiglia di eseguire le esercitazioni con l’aiuto ed in presenza di un adulto.

Roberto Francavilla

L’inerzia ed il Sensore IMU - LSM9DS1

Per comprendere al meglio la funzione del Sensore LSM9DS1 presente sulla board Arduino Nano 33 BLE Sense è opportuno dare alcune nozioni base di Fisica.

Partiamo con la definizione di inerzia; si definisce “inerzia”, in Fisica, la tendenza di un corpo a conservare il proprio stato di quiete o di moto uniforme.

Vediamo meglio cosa significa “stato di quiete” per un corpo; lo stato di quiete è quando tutte le forze agenti sul corpo si equilibrano, per cui la forza risultante è nulla. In tal caso il corpo resta fermo anche se su di esso agiscono diverse forze. Un esempio è una palla posta nel cerchio del centro del campo. Su di essa agisce solo la forza peso P che viene equilibrata dalla forza di reazione R del campo di calcio.

La palla resterà immobile sin tanto qualcuno non gli imprime una forza che si trasferisce alla palla con una accelerazione.

Lo stesso dicasi per un corpo che si “muove di moto uniforme”, semplificando opportunamente il modello, supponiamo di avere una locomotiva che viaggia su dei binari rettilinei:

La Forza peso della locomotiva P e bilanciata dalla reazione dei binari R, la Forza di attrito Fa dell’aria e bilanciata dalla Forza di spinta (o trazione) Fs del motore della locomotiva. Il sistema è in questo modo equilibrato e la locomotiva viaggia ad una velocità costante, per cui si muove di moto uniforme.

La domanda è: cosa succede se in uno degli esempi visti sopra viene applicata una forza aggiuntiva a quelle presenti? La risposta è semplice, il sistema di squilibra ed il corpo subisce una accelerazione, per cui la palla si muoverà e la locomotiva subirà una accelerazione.

L’accelerazione in Fisica si definisce come la variazione di velocità nel tempo e si misura, a differenza della velocità che si misura in “m/s” (metri al secondo),  in “ m/s2 “ (metri al secondo quadro).

Il sensore IMU (“IMU” è un acronimo che significa Inertial Measurement Unit – Unità Di Misura Inerziale) della società ST, il cui nome del modello è chiamato LSM9DS1 [per il datasheet clicca qui] è un sensore capace di misurare queste accelerazioni. Le accelerazioni che riesce a misurare il sensore della ST non sono solo lungo gli assi cartesiani, ma sono anche di tipo giroscopiche, ovvero accelerazioni angolari attorno agli stessi assi cartesiani ed inoltre riesce anche a misurare i campi magnetici lungo gli stessi assi cartesiani.

Vediamo di preciso cosa misura il sensore LSM9DS1:

Misura dell’accelerazione lungo i tre assi cartesiani – Accelerometro; il sensore restituisce un valore in “g”, ovvero in “accelerazione di gravità”. Sapendo che 1 g = 9,8 m/s2 è possibile convertire il valore da “g” in valori riferiti al Sistema Internazionale cioè m/s2 

Misura della velocità angolare sui tre assi cartesiani – Giroscopio; il sensore restituisce il valore in “dps”, ovvero “degrees per second”, cioè in “gradi/s”. Anche in questo caso, sapendo che 180° = 3,14 rad, è possibile convertire il valore da “gradi/s” in “rad/s” (radianti al secondo).

Misura del campo di induzione magnetica lungo i tre assi cartesiani – Magnetometro; Il sensore restituisce un valore in “G” (gauss), ovvero misura la densità del flusso magnetico. Sapendo che 1 gauss = 1×10−4 T dove “T” sta per “Tesla” che è l’unità di misura del campo di induzione magnetica (B) nel Sistema Internazionale, è possibile effettuare facilmente la conversione.

Questo sensore è anche detto a 9 DOF (DOF sta per Degree Of Freedom – cioè Grado di Libertà), infatti se si sommano le possibili misurazioni, si può facilmente intuire del perché del nome:

  • 3 gradi di libertà (movimenti lungo gli assi x, y e z) per l’accelerometro
  • 3 gradi di libertà (rotazioni sugli assi x, y e z) per il giroscopio
  • 3 gradi di libertà (campi magnetici lungo gli assi x, y e z) per il magnetometro.

da cui 3+3+3 =9 gradi di libertà.

Andiamo a vedere, in pratica, il funzionamento di questo sensore.

Per tutti i progetti che seguono abbiamo bisogno solo della scheda Nano BLE Sense, di un PC e del cavo USB di collegamento.

PAI-007: Misura accelerazione lungo gli assi cartesiani con LSM9DS1

Lo sketch da utilizzare per questo progetto è quello mostrato sotto, esso è stato ottenuto direttamente dallo sketch di esempio presente nella libreria (a parte qualche piccola modifica effettuata da me):

Una volta caricato lo sketch, come descritto sopra e cambiata la porta a cui è collegata la board, aprire il Plotter Seriale e verranno mostrate le letture effettuate sotto forma di grafici… è facilmente intuibile la variazione lungo i tre assi rappresentati con tre diversi colori.

Comunque il video del progetto mostra in dettaglio tutto.

Analisi dello sketch del Progetto AI-007 - Misura accelerazione x, y, e z con LSM9DS1

Per questo sensore occorre utilizzare la Libreria  Arduino_LSM9DS1.h, ed occorre richiamarla con la classica sintassi:

#include <Arduino_LSM9DS1.h>

Come è possibile osservare dallo sketch, occorre prima definire le tre variabili che ospiteranno i valori restituiti dal sensore:

float x, y, z;

le letture dal sensore avvengono mediante la funzione:

IMU.readAcceleration(x, y, z);

I tre valori restituiti sono di tipo float e rappresentano l’accelerazione lungo i tre assi espressa in g. Per cui se si desidera ottenere i valori espressi in m/s2, occorre dividere il valore ottenuto per 9,8.

PAI-008: Misura velocità angolare con LSM9DS1

Anche per questo progetto utilizzeremo, modificandolo opportunamente, lo sketch messo a disposizione dall’esempio della libreria.

Lo sketch da utilizzare per questo progetto è:

Una volta caricato lo sketch e cambiata la porta a cui è collegato la Nano BLE Sense, aprire il Plotter Seriale e vi verrà mostrato in forma grafica le letture del sensore.

Comunque il video del progetto mostra in dettaglio tutto.

Analisi dello sketch del Progetto AI-008 - Misura Velocità angolare con LSM9DS1

Come è possibile osservare dallo sketch, anche in questo caso l’uso della Libreria <Arduino_LSM9DS1.h > semplifica tantissimo lo sketch. Infatti, una volta richiamata la libreria con “include”, basta definire le tre variabili che ospiteranno i valori restituiti dal sensore:

float x, y, z;

le letture dal sensore avvengono mediante la funzione:

IMU.readGyroscope(x, y, z);

I tre valori restituiti sono di tipo float e rappresentano la velocità angolare lungo i tre assi espressa in dps, cioè degrees per second, o meglio gradi/sec. Se si desidera ottenere i valori espressi in rad/s, occorre moltiplicare il valore del sensore per 3,14 e dividerlo per 180.

PAI-009: Misura del Campo Magnetico su assi cartesiani con LSM9DS1

Il sensore LSM9DS1 è capace anche di misurare il Campo Magnetico (B) lungo i tre assi cartesiani. Questo ci consente di individuare il Polo Nord magnetico e quindi darci anche indicazioni in che direzione si hanno le accelerazioni e le rotazioni rilevate con le funzioni di accelerometro e  giroscopio dello stesso sensore.

Per mostrare la funzionalità anche in questo caso è stato utilizzato lo sketch presente negli esempi della libreria.

Caricato lo sketch e cambiata la porta di comunicazione tra il PC e la board, passando da quella di scrittura a quella di lettura, è possibile aprire il plotter seriale che ci mostra i valori letti sottoforma di grafico. Nel video progetto ho utilizzato una calamita per mostrare meglio la variazione dei valori letti sugli assi.

Analisi dello sketch del Progetto AI-009 – Misura Campo Magnetico 3D con LSM9DS1

Anche in questo caso, la libreria ci aiuta tantissimo nel ricevere immediatamente i valori espressi in G cioè in gauss.

Definite le tre variabili che ospiteranno i valori restituiti dal sensore:

float x, y, z;

le letture dal sensore avvengono mediante la funzione:

IMU.readMagneticField(x, y, z);

Per avere i Tesla (unità di misura nel S.I. del Campo di Induzione Magnetica B) occorre moltiplicare per 10-4.

Se hai trovato la lezione interessante fai una donazione mi aiuterai a realizzarne tante altre.