TINY MACHINE LEARNING LEZIONE 5

INDICE

  1. Avvertenze
  2. Note sul Copyright
  3. Microfono digitale omnidirezionale MP34DT05
  4. Il Condensatore
  5. Il LED RGB sull’Arduino Nano 33 BLE Sense
  6. PAI-010: Il LED RGB on board
  7. Analisi dello sketch del Progetto AI-010 – Il LED RGB on board
  8. PAI-011: Analizzatore di Suono con Microfono MP34DT05
  9. PAI-012: Pilotaggio LED RGB con analisi del suono
  10. Analisi dello sketch del Progetto AI-012 – Pilotaggio LED RGB con analisi del suono
  11. Il modulo BLE in Arduino Nano 33 BLE Sense
  12. PAI-013: Accensione LED RGB della Nano tramite Smartphone
  13. Analisi dello sketch del Progetto AI-013 – Accensione LED RGB Nano tramite Iphone

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

Microfono digitale omnidirezionale MP34DT05

Il microfono MP34DT05 presente sulla scheda Arduino Nano 33 BLE Sense consente di catturare e analizzare il suono anche in tempo reale e può essere utilizzato per creare un’interfaccia vocale per i nostri progetti TinyML.

E’ definito, questo microfono, come di tipo “omnidirezionale”, perché è capace di catturare il suono proveniente da qualsiasi direzione.

L’elemento sensibile del microfono è di tipo capacitivo. Per capire meglio il suo funzionamento è opportuno chiarire che cosa significa in termini elettrici “capacità” e per fare questo è opportuno conoscere il ”condensatore”.

Il Condensatore

Il condensatore, in elettrotecnica, è un bipolo passivo composto da due lamine metalliche fra cui si interpone un materiale isolante (dielettrico) che sottoposto ad una tensione elettrica in continua, dopo una prima fase transitoria (detta di carica), non lascia più passare corrente ed è capace di accumulare cariche elettriche.

La “Capacità” è quindi la quantità di cariche elettriche che il condensatore riesce ad accumulare nella sua fase di carica iniziale. Essa dipende, oltre dalla superficie delle due lamine affacciate (le lamine possono essere avvolte anche tipo “rullo”, purché fra esse non vi sia un contatto metallico, ma venga interposto sempre i materiale dielettrico), anche dal tipo di materiale dielettrico utilizzato ed anche dalla distanza tra le due lamine.

La cosa interessante di questo componente elettrico, come si è detto pocanzi, è che la capacità di accumulare cariche elettriche dipende anche dalla distanza delle due lamine e se questa distanza varia, anche le cariche presenti nel condensatore variano.

Quindi, immaginate un condensatore alimentato con una tensione continua ed una delle due lamine risulta essere mobile (ad esempio una membrana che si muove in funzione delle onde sonore che la colpiscono), è facilmente immaginabile che c’è un rilascio di cariche elettriche quando le due lamine si avvicinano ed un assorbimento (ricarica) di cariche elettriche quando si allontanano.

Abbiamo, in questo modo, realizzato un trasduttore elettrico che trasforma quelle che sono le onde sonore, in segnali elettrici che possono poi essere utilizzati per i diversi fini.

Nei prossimi paragrafi vedremo due progetti che ci mostrano l’uso del microfono presente sulla Nano 33 BLE Sense, uno di questi progetti farà uso anche del LED RGB presente sulla stessa scheda e per tale ragione, prima di passare ai progetti, vediamo come attivare il LED RGB on board.

Il LED RGB sull’Arduino Nano 33 BLE Sense

La scheda Nano 33 BLE Sense ha un LED RGB integrato che è collegato ai pin 22, 23 e 24, questo LED è possibile utilizzarlo a nostro piacimento in funzione dei progetti che desideriamo realizzare.

E’ un LED ad anodo comune, per cui per attivarlo bisogna portare il PIN ad uno stato basso cioè “LOW”, per spegnerlo (ovviamente) ad uno stato alto “HIGH”.

Ma vediamo subito con un progetto dedicato, l’uso di questo LED RGB.

 

 

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

PAI-010: Il LED RGB on board

Lo sketch da utilizzare per questo progetto è quello mostrato sotto:

Una volta caricato lo sketch, come descritto sopra e cambiata la porta a cui è collegata la board, si potrà osservare il LED RGB in funzione.

In particolare, ad ogni secondo si accende un LED di colore diverso a rotazione.

Comunque il video del progetto mostra in dettaglio tutto.

Analisi dello sketch del Progetto AI-010 - Il LED RGB on board

Non vi è nulla da evidenziare per questo sketch se non rimarcare i PIN a cui è collegato il LED RGB che sono 22, 23 e 24 e con l’istruzione #define:

#define RED 22

#define GREEN 23

#define BLUE 24

il numero del PIN è associato al nome della rispettiva variabile, ovvero: RED, GREEN e BLUE.

PAI-011: Analizzatore di Suono con Microfono MP34DT05

Questo progetto legge i dati audio dal microfono e li stampa tramite il plotter seriale dell’IDE.

In questo progetto utilizzeremo, senza alcuna modifica, l’esempio messo a disposizione dalla libreria PDM (Pulse Density Modulation) che per comodità viene riportato anche di seguito.

Una volta caricato lo sketch e cambiata la porta a cui è collegato la Nano BLE Sense, aprire il Monitor seriale e l’output sarà una serie di numeri. Aprendo invece il Plotter Seriale vi verrà mostrato in forma grafica le letture del microfono.

L’output mostrato è molto importante, perché servirà in tutti quei progetti dove occorrerà il riconoscimento vocale.

Comunque il video del progetto mostra in dettaglio tutto.

PAI-012: Pilotaggio LED RGB con analisi del suono

Questo progetto, a differenza del primo, utilizza i dati audio acquisiti dal microfono e li trasforma in segnali di attivazione / spegnimento del LED RGB presente a bordo della scheda.

Anche in questo progetto utilizzeremo, la libreria PDM (Pulse Density Modulation) per trasformare il segnale analogico proveniente dal microfono MP34DT05 in stati (HIGH o LOW) per i PIN 22, 23 e 24.

Lo sketch da utilizzare è il seguente:

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 microfono, contestualmente il LED RGB farà variare il colore in funzione di tali valori.

Comunque il video del progetto mostra in dettaglio tutto.

Analisi dello sketch del Progetto AI-012 – Pilotaggio LED RGB con analisi del suono

Come è possibile vedere dallo sketch, la libreria di riferimento è la PDM.h, esistono delle istruzioni che possono modificare i parametri di configurazione:

  PDM.setGain(30);  // come settare il guadagno, di default è 20

  PDM.begin (1, 16000) //come settare nel caso di mono mode e campionamento a 16kHz

Il modulo BLE in Arduino Nano 33 BLE Sense

Innanzitutto BLE sta per Bluetooth® Low Energy cioè è una tipologia di comunicazione wireless a corto raggio, diversa, in termini di funzionalità, dalla Bluetooth® classica (e pertanto non compatibile), nata per consentire la comunicazione tra piccoli dispositivi elettronici a bassi consumi energetici. Questa tipologia di comunicazione nasce quindi specificatamente come alternativa al Bluetooth® classico per motivi di risparmio energetico.

I dispositivi che hanno il Bluetooth® 4.0 o superiore, possono comunicare sia via Bluetooth® classico che in BLE.

La comunicazione Bluetooth® è un vasto mondo e per spiegarla in modo appropriato occorrerebbe un corso specifico (magari lo farò in seguito 🙂 ) per cui mi limiterò a dare solo delle indicazioni a carattere intuitivo sul funzionamento e su come utilizzarla nei progetti di nostro interesse, lasciando a voi gli approfondimenti, qualora necessari, che possono essere trovati facilmente in internet.

Innanzi tutto i dispositivi collegati via BLE formano una rete denominata “piconet” ed essi possono svolgere funzioni da Unità Centrale (detti Master o anche Server) e Unità Periferiche (detti Slave o anche Client). Cosa definisce se un dispositivo si sta comportando da Server o da Client è chi dei due dispositivi mette a disposizione i propri Servizi.

All’interno dei Servizi ci sono le Caratteristiche del Servizio, un esempio di servizi e caratteristiche è il rilevamento della Temperatura e dell’Umidità che il sensore HTS221 della Nano BLE Sense riesce a restituire come informazioni, ma anche il rilevamento dei gesti, oppure i colori o la prossimità tramite il sensore APDS9960. In questo caso la disponibilità del sensore è chiamato servizio e la misura della temperatura e dell’umidità sono caratteristiche

Quindi, in questo caso, la board mette a disposizione i suoi servizi, come Server, e chi li richiede, tali servizi, è detto Client.

Ogni servizio, ma anche le caratteristiche, ha un codice identificativo univoco chiamato UUID. Questo codice, per i servizi a specifica Bluetooth® ufficiali , può essere lungo 16 bit o 32 bit, mentre i servizi Bluetooth® non ufficiali (cioè quelli che possiamo sviluppare in modo arbitrario) sono lunghi 128 bit. Gli UUID possono essere creati, in questo caso, in modo casuale. Un Profilo è un gruppo di servizi che contiene più caratteristiche.

La tipologia di comunicazione BLE tra due dispositivi si basa su tre tipi di azioni: Lettura, Scrittura e Notifica.

Questa comunicazione si attiva solo su eventi specifici e si disattiva subito dopo aver terminato l’azione (questo è il motivo principale per cui c’è un forte risparmio energetico).

Facciamo un esempio per comprendere meglio cosa significa Lettura, Scrittura e Notifica prendendo a riferimento una piconet formata da uno smartphone e dal nostro Arduino Nano 33

Rappresentiamo le tre azioni con delle immagini:

Azione di Lettura

Lo smartphone chiede alla Nano di ricevere la lettura della Temperatura che il sensore a bordo della scheda sta rilevando in quel momento. La Nano si attiva e trasmette l’informazione richiesta.

Azione di Scrittura

Lo smartphone chiede alla Nano di porre uno dei suoi PIN digitali in stato di LOW. La Nano, si attiva e pone il PIN digitale in stato di LOW.

Azione di Notifica

Lo smartphone invia informazioni alla Nano, ad esempio, sul proprio stato della batteria.

Per capire meglio la comunicazione BLE, realizziamo il seguente progetto, ma prima è necessario scaricare l’opportuna libreria nell’IDE Arduino.

Aprire l’IDE Arduino, cliccare su Strumenti à Gestione Librerie…, compare la finestra Gestore Librerie e digitare nella barra di ricerca “ArduinoBLE”:

Procedete con l’istallazione della Libreria cliccando su “Istalla”.

Per quanto riguarda il nostro smartphone, occorre istallare l’applicazione LightBlue per accedere al servizio e alle caratteristiche previste.

Puoi scaricare l’App per Iphone su: LightBlue per Iphone

Puoi scaricare l’App per Android su: LightBlue per Android

PAI-013: Accensione LED RGB della Nano tramite Smartphone.

Una volta aperto l’IDE di Arduino , digitare il seguente sketch:

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 monitor seriale, a questo punto la board è visibile a tutti i dispositivi con il BLE attivo. Facendo la scansione dei dispositivi sull’app del telefono è possibile collegare la Nano allo smartphone. Tramite l’App a questo punto è possibile impartire istruzioni alla Nano. Maggiori dettagli sono mostrati nel video-progetto.

Analisi dello sketch del Progetto AI-013 – Accensione LED RGB Nano tramite Iphone

Dopo aver incluso la libreria “ArduinoBLE.h” nello sketch, nella funzione di servizio “ledService()” l’argomento da inserire è “180A” che indica “Informazioni sul dispositivo” [questo è un UUID ufficiale], mentre nella funzione “switchCharacteristic()” l’argomento da inserire è “2A57” che indica “Uscita digitale”.

Nella funzione “BLE.setLocalName()” dobbiamo cambiare il nome in “Nano 33 BLE Sense”per identificare la scheda che stiamo utilizzando.

Il resto dello sketch sono istruzioni e funzioni note per cui invito ad andare a leggere il Corso Base di Arduino.

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