AI e Arduino con Teachable Machine

Inauguriamo una serie di tutorial su AI e Arduino. In questo primo articolo vedremo:

  1. come addestrare un modello di Machine Learning a riconoscere i suoni;
  2. come caricare il modello sul cloud;
  3. come inviare i dati ad Arduino;
  4. come programmare Arduino a ricevere questi dati e gestirli.

Il progetto riguarda la creazione di un semaforo che cambia colore in base al genere musicale ascoltato.

Addestrare il modello di Machine Learning

Per addestrare il modello utilizzeremo Teachable Machine. Si tratta di uno stumento web-based sviluppato da google che permette di addestrare il computer a riconoscere suoni, immagini o pose.

Dopo aver cliccato su Inizia selezioneremo Progetto di audio.

ai e arduino

Qui, oltre al rumore di sottofondo, andremo a creare tante classi quanti sono i generi musicali che vogliamo utilizzare. Nel mio caso vado a creare rock, pop e trap, nominandoli rispettivamente 1, 2 e 3.

Fatto questo possiamo utilizzare dei campioni e caricarli con l’apposito strumento oppure registrare degli esempio con il microfono del computer.

ai e arduino

Per il rumore di sottofondo occorre una registrazione di 20 secondi mentre per le varie classi 8 esempi da un paio di secondi. Ovviamente un numero maggiore di campioni servirà a rendere il modello più preciso.

Una volta completata questa fase andiamo a cliccare su addestra modello. Al termine, nella parte destra dell’interfaccia, possiamo sfruttare il microfono del computer per fare dei test.

ai e arduino

Esportare il modello di AI per utilizzarlo con Arduino

In alto a destra abbiamo la voce Esporta modello. Selezioniamo Tensorflow.js, Carica (link condivisibile) e clicchiamo su Carica il mio modello. In questo modo il progetto sarà ospitato gratuitamente sul cloud.

ai e arduino

Il link condivisibile verrà aggiornato in automatico con l’url del nostro progetto.

A questo punto ci trasferiamo su p5.js ed utilizziamo lo sketch condiviso dall’utente Krantas.

sketch p5.js

Nella quarta riga dobbiamo sostituire l’url incompleto con quello del modello che abbiamo caricato nel cloud; nella quinta invece dobbiamo inserire la porta COM sul quale si trova la scheda Arduino (a breve vedremo come si ricava questa informazione).

Questo sketch eseguirà il progetto che abbiamo ricavato in precedenza e trasferirà, mediante comunicazione seriale, l’informazione sulla classe riconosciuta (“Rumore di sottofondo”, “1”, “2” o “3”).

Caricare su Arduino lo sketch per interagire con l’AI

Adesso dobbiamo programmare una scheda Arduino per fare in modo che alla ricezione delle informazioni faccia accendere dei LED. Il circuito è il seguente.

semaforo circuito

A livello di codice sorgente i vari casi li possiamo gestire con uno switch o degli if. Alla ricezione di “1” si accende il LED verde, con “2” il giallo, con “3” il rosso.

char result = 0;

void setup() {
    Serial.begin(9600);
    pinMode(13,OUTPUT);
    pinMode(12,OUTPUT);
    pinMode(11,OUTPUT);
}

void loop() {
    while (Serial.available() > 0) {
        result = Serial.read();
        if(result=='1') {
            digitalWrite(13,HIGH);
            digitalWrite(12,LOW);
            digitalWrite(11,LOW);
        }
        else if(result=='2') {
          digitalWrite(12,HIGH);
          digitalWrite(13,LOW);
          digitalWrite(11,LOW);
        }
        else if(result=='3') {
          digitalWrite(11,HIGH);
          digitalWrite(13,LOW);
          digitalWrite(12,LOW);
        }
        else{
          digitalWrite(13,LOW);
          digitalWrite(12,LOW);
          digitalWrite(11,LOW);
        }
    }
    delay(100);
}

Per far comunicare p5.js e la scheda Arduino occorre installare questo strumento che permette di selezionare la porta seriale su cui si trova la scheda e aprirla. Per individuarla occorre selezionare il menù Strumenti nell’IDE di Arduino e controllare sotto la voce Porta.

Una volta caricato lo sketch su Arduino e aperta la porta con p5.serialcontrol torniamo su p5.js ed eseguiamo il codice cliccando il tasto run.

A questo punto non resta che riprodurre una canzone e testare il funzionamento del progetto.

Conclusioni

Spero che questo tutorial ti sia stato utile. Come hai potuto vedere è rivolto ad utenti che hanno già delle competenze base di Arduino. Se stai muovendo i primi passi in questo mondo ti consiglio il corso online che abbiamo realizzato per la nostra academy online: è ottimo per iniziare a sperimentare con i microcontrollori.

Nei prossimi giorni pubblicheremo un secondo articolo che tratterà l’utilizzo di Arduino ed AI nel riconoscimento di immagini. Per dubbi o suggerimenti puoi metterti in contatto con noi utilizzando il form qui in basso.

    Acconsento al trattamento dei dati personali ai sensi del Regolamento UE 2016/679. Leggi la Privacy Policy.