Tiny Machine Learning LEZIONE 1

INDICE

  1. Avvertenze
  2. Note sul Copyright
  3. Introduzione
  4. Prepariamo il nostro Laboratorio di AI
  5. Istallazione e Configurazione della Arduino Nano 33 BLE Sense
  6. Come caricare lo sketch e come eseguirlo sulla Nano BLE Sense

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

Introduzione

Con questo nuovo Corso affrontiamo uno degli argomenti più dibattuti tra scienziati e filosofi degli ultimi decenni: l’Intelligenza Artificiale.

Ovviamente, per noi che facciamo robotica, questa disciplina deve essere, insieme a tante altre, alla base dei nostri studi.

Innanzi tutto cerchiamo di capire in modo semplice cosa è l’Intelligenza Artificiale e per fare questo, facciamo prima riferimento a ciò che viene scritto su Wikipedia:

«L’intelligenza artificiale (o IA, dalle iniziali delle due parole, in italiano o in inglese AI) è una disciplina appartenente all’informatica che studia i fondamenti teorici, le metodologie e le tecniche che consentono la progettazione di sistemi hardware e sistemi di programmi software capaci di fornire all’elaboratore elettronico prestazioni che, a un osservatore comune, sembrerebbero essere di pertinenza esclusiva dell’intelligenza umana.»

Su questa definizione vorrei soffermarmi su due concetti che reputo importanti che capiate bene:

  • L’Intelligenza Artificiale è una disciplina informatica (ovvero, ciò che noi chiamiamo CODING)
  • fornire all’elaboratore elettronico prestazioni che, a un osservatore comune, sembrerebbero essere di pertinenza esclusiva dell’intelligenza umana …. [Ndr: questa parte della definizione è complessa da spiegare, specialmente a voi giovani che praticamente siete già immersi nell’AI in modo inconsapevole. Ci provo lo stesso…]

Per spiegare al meglio il concetto espresso nel secondo punto, vi rifaccio un esempio: le traduzioni on line.

Alcuni decenni fa, quando iniziai i miei studi di informatica, le traduzioni consistevano nel memorizzare il vocabolario della lingua interessata e quindi grazie a dei cicli di “if” ed “else” il computer traduceva, parola per parola, il testo che veniva inserito nel modulo da tradurre. Ovviamente questo modo di tradurre sapete benissimo che non era molto corretto, anzi erano più le volte che si sbagliava che non quelle che si azzeccava la risposta giusta. Oggi, qualsiasi traduttore automatico, come quello di Google, usa l’AI. Infatti l’elaborazione non è solo una ricerca della parola del vocabolario, ma è anche una ricerca del concetto che si desidera esprimere e voi sapete bene, soprattutto per voi che parlate bene, ad esempio l’inglese, che ci sono tanti “modi di dire” che differiscono dalla semplice traduzione parola per parola. I nuovi processi ed algoritmi di traduzione riescono sempre più ad “indovinare” nella traduzione il concetto che si desidera tradurre. [Ndr: uso il termine “indovinare”, perché nell’AI c’è anche il Machine Learning, ma di questo ne parleremo meglio più avanti]. Quindi, ritornando alla definizione, se io fossi l’“osservatore comune”, la traduzione di un testo effettuata, a mia insaputa, da un elaboratore, è talmente simile a quella che farebbe una persona che io, se mi fosse sottoposta a giudizio, la confonderei… cioè per me la traduzione sarebbe stata effettuata da una persona… quando si crea questa condizione, allora  l’azione effettuata è di una Intelligenza Artificiale.

Spero di essere stato chiaro nella spiegazione, nel caso non ci sia riuscito, non preoccupatevi, come dico sempre in questi casi… andate avanti che sicuramente capirete meglio più avanti, con altri esempi ed altre spiegazioni…

Prepariamo il nostro Laboratorio di AI

Per la scoperta insieme di questo nuovo fantastico mondo dell’Intelligenza Artificiale, faremo riferimento alla Piattaforma open source Arduino ed in particolare utilizzeremo la board di sviluppo chiamata Arduino Nano 33 BLE Sense.

Questa board di sviluppo viene venduta singolarmente, ma anche a kit, il kit si chiama “Arduino Tiny Machine Learning KIT” di cui ne suggerisco l’acquisto.

Ho recensito sia il kit che la singola scheda e la recensione potete trovarla cliccando su questo link: recensione Arduino Nano 33 BLE Sense & Tiny ML KIT

 

Il kit, mostrato nell’immagine sopra, è composto da:

  • Scheda Arduino nano 33 BLE Sense con i PIN saldati
  • Modulo fotocamera (OV7675)
  • Shield Arduino di espansione
  • Cavo di collegamento USB – Micro USB da 1 m (ne ho acquistato, separatamente, uno da 3 m… più comodo per poter effettuare i movimenti che ci interessano nei vari progetti)
  • Box contenitore in plastica

Questa nuova scheda di sviluppo che utilizzeremo è un piccolo gioiellino di tecnologia che i fantastici ragazzi del Team di Arduino hanno sviluppato per noi, umili mortali, per consentirci di studiare l’Intelligenza Artificiale.

Infatti, oltre ad essere pienamente compatibile con l’ambiente di sviluppo IDE di Arduino, che ormai conosciamo bene, ha tante caratteristiche importanti… vediamo quali sono le sue caratteristiche principali che ovviamente proveremo nei vari progetti che realizzeremo:

  • Le dimensioni della scheda sono veramente ridotte, tant’è che viene classificata come scheda “indossabile”, già l’aggettivo qualifica chiaramente la possibilità di uso di questa scheda di sviluppo.
  • Ha un sensore inerziale a 9 assi, cioè è capace di registrare qualsiasi movimenti dell’oggetto su cui è posizionata la scheda.
  • Ha un sensore di umidità e temperatura per poter misurare con accuratezza le condizioni ambientali in cui essa si trova
  • Ha un sensore barometrico che ci indica la pressione ambientale a cui essa è sottoposta
  • Ha un microfono per catturare e analizzare il suono anche in tempo reale
  • Ha un sensore sensibile ai gesti e di prossimità, nonché rileva il colore della luce e l’intensità luminosa. Questo sensore è capace di “sentire” se qualcuno si sta avvicinando!

Cioè, in sostanza, già da sola la scheda di sviluppo è un assemblato di sensori pronti all’uso per tutti quei progetti che ci faranno scoprire il mondo dell’Intelligenza Artificiale e non sarà necessario acquistarne di altri se non per progetti specifici.

Altre caratteristiche ugualmente importanti:

  • La Nano 33 BLE Sense è alimentabile tramite micro USB a 5 V, ma la tensione ai suoi PIN è 3.3V . Il che significa che non devi mai applicare più di 3,3 V ai suoi pin digitali e analogici, altrimenti rischi di danneggiare la scheda.
  • Ha la connettività Bluetooth nella versione BLE, cioè a basso consumo energetico
  • La massima corrente ai PIN è di 10 mA
  • di PIN digitali: 14 di cui PWM 5 e N. PIN analogici: 8

Lo schema sopra è quello che si chiama PIN-out della scheda di sviluppo e ci descrive l’architettura della nostra scheda.

Istallazione e Configurazione della Arduino Nano 33 BLE Sense

Iniziamo con l’istallazione dei driver della scheda nell’IDE in modo tale che l’ambiente di sviluppo Arduino riconosca la nuova scheda collegata, per fare questo cliccate due volte sull’icona dell’applicativo Arduino sul Desktop:

si apre la finestra dell’IDE. A questo punto, se non compare uno sketch vuoto, andate a cliccare su “Nuovo” e vi comparirà una finestra vuota dell’IDE e  chiudete la precedente.

A questo punto andate su Strumenti -> Scheda “Arduino Uno” -> Gestione Schede…

Si apre una nuova finestra, chiamata Gestore Schede

Nella barra di ricerca scrivete Nano 33 BLE

Istallate: Arduino Mbed OS Nano Boards…

Vi chiederà di istalla il driver e successivamente il dispositivo (due volte):

Cliccate sempre su “Installa”.

Alla fine della procedura comparirà la finestra con la libreria delle nuove schede installata..

Adesso dobbiamo installare le librerie dei sensori presenti sulla board.

Per primo istalliamo la libreria: APDS9960 – del Sensore di Colore

Andate sempre sull’IDE e poi cliccate su Strumenti -> Gestione Librerie

Comparirà la finestra:

A questo punto nella barra di ricerca digitate APDS9960

Cliccate su installa sulla libreria Arduino_ APDS9960

E la libreria verrà istallata

Ripetiamo la stessa procedura per la Libreria HTS221 – del Sensore di Temperatura e Umidità:

La stessa cosa per la Libreria LPS22HB – del Sensore Barometro

Ancora, proseguiamo ed installiamo la Libreria LSM9DS1 – del Sensore IMU (accelerometro, giroscopio, magnetometro):

Infine la Libreria: Adafruit PDM – Microfono, cliccando su

Dopo la fase di installazione del driver della scheda e delle librerie dei vari sensori, la prima cosa da fare è la configurazione dell’IDE per permettere il riconoscimento della nuova board e quindi, dopo aver collegato la Nano BLE Sense al PC tramite l’apposito cavo USB, occorre selezionare la scheda corretta nell’IDE di Arduino:

Andare su Strumenti -> Schede -> Arduino Mbed Nano Board -> Arduino Nano BLE

Come caricare lo sketch e come eseguirlo sulla Nano BLE Sense

Per caricare lo sketch occorre, dopo aver collegato la Nano BLE Sense al PC e verificato che sull’IDE sia impostata la scheda corretta, cliccare due volte velocemente sul pulsante bianco, si accende così oltre al LED verde che indica l’alimentazione, anche un LED arancione lampeggiante che indica che la board è pronta per il processo di upload:

A questo punto è necessario verificare che la scheda sia collegata sulla porta COM corretta:

Andare su Strumenti -> Porta:… -> COM… Arduino Nano 33 BLE

Selezionata la porta a cui è collegata la board, per caricare lo sketch cliccare sulla classica freccia “ -> “.

Attendere qualche minuto per la compilazione dello sketch ed il caricamento ed una volta terminato, la scheda automaticamente si disconnetterà dalla modalità “upload”. In questa fase l’IDE cambia la porta COM della scheda che risulta essere collegata ad una porta COM diversa da quella dell’upload, per cui, per l’esecuzione dello sketch, è necessario controllare nuovamente che la scheda sia collegata alla porta COM corretta.

Ricordarsi sempre che la porta COM dell’upload della scheda è diversa dalla porta COM di esecuzione del programma caricato soprattutto quando è necessario tenere la board collegata al PC ad esempio per leggere dei dati dal monitor seriale.

Una volta selezionata la porta COM corretta la nostra Nano BLE Sense sta già eseguendo lo sketch caricato precedentemente.

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