Bacchetta magica IA con TensorFlow Lite per microcontroller e Arduino

1. Introduzione

Cosa creerai

In questo codelab imparerai a utilizzare TensorFlow Lite per microcontroller per eseguire un modello di deep learning su Arduino Nano 33 BLE. Il microcontroller si trasforma in una "bacchetta magica" digitale dall'utente per sventolare e lanciare vari incantesimi. Mentre l'utente muove la bacchetta, questi dati dei sensori complessi e multidimensionali, che sarebbero impercettibili all'uomo, vengono trasmessi come input al modello, che produce una semplice classificazione che ci avvisa se si è verificato uno di più movimenti.

9208eb1207211349.gif

Machine learning su microcontroller

Il machine learning può essere utilizzato per creare strumenti intelligenti che semplificano le è tutto più semplice, come l'Assistente Google. Spesso, tuttavia, queste esperienze richiedono molte risorse di calcolo o di calcolo, ad esempio un potente server cloud o un desktop. Tuttavia, ora è possibile eseguire l'inferenza del machine learning su hardware di piccole dimensioni e a basso consumo, come i microcontroller.

I microcontroller sono estremamente comuni, economici, richiedono poca energia e sono molto affidabili. Fanno parte di tutti i tipi di dispositivi per la casa, ad esempio elettrodomestici, auto e giocattoli. Infatti, ogni anno vengono prodotti circa 30 miliardi di dispositivi alimentati da microcontroller.

1914a419dfacf0b5.jpeg

Fornendo il machine learning a microcontroller di piccole dimensioni, possiamo aumentare l'intelligenza di miliardi di dispositivi che usiamo nelle nostre vite, senza dover fare affidamento su hardware costoso o connessioni a internet affidabili. Immagina elettrodomestici smart in grado di adattarsi alla tua routine quotidiana, sensori industriali intelligenti in grado di comprendere la differenza tra problemi e normale funzionamento e giocattoli magici che possono aiutare i bambini a imparare in modi divertenti e piacevoli.

TensorFlow Lite per microcontroller (software)

864114d0c2b4c919.png

TensorFlow è il framework di machine learning open source di Google per l'addestramento e l'esecuzione di modelli. TensorFlow Lite è un framework software, una versione ottimizzata di TensorFlow, destinata all'esecuzione di modelli TensorFlow su dispositivi di piccole dimensioni e con potenza relativamente bassa, come i telefoni cellulari.

TensorFlow Lite per microcontroller è un framework software, una versione ottimizzata di TensorFlow, destinata all'esecuzione di modelli TensorFlow su hardware minuscolo e a bassa potenza come i microcontroller. È conforme ai vincoli richiesti in questi ambienti incorporati, ovvero ha dimensioni binarie ridotte, non richiede il supporto del sistema operativo, alcuna libreria C o C++ standard, né allocazione di memoria dinamica e così via.

Arduino Nano 33 BLE (hardware)

bcd452d4d660efa9.jpeg

Arduino è una popolare piattaforma open source utilizzata per creare progetti elettronici. Si compone di:

  1. Una scheda per circuiti programmabili fisici (spesso un microcontroller) come l'Arduino Nano 33 BLE utilizzata in questo codelab.
  2. Il software IDE (Integrated Development Environment) di Arduino per scrivere e caricare il codice del computer sulla scheda fisica.

Arduino Nano 33 BLE è una piattaforma basata su microcontroller: un piccolo computer su un'unica scheda a circuito. Dispone di un processore, di una memoria e di un hardware di I/O che gli consentono di inviare e ricevere segnali digitali ad altri dispositivi. A differenza di un computer, un microcontroller non è potente e di solito non esegue alcun sistema operativo. Hanno processori di piccole dimensioni, poca memoria e i programmi che scrivi vengono eseguiti direttamente sull'hardware. Ma dato che sono progettati per essere il più semplici possibile, un microcontroller può utilizzare pochissima energia.

Attività previste

  • Configura il microcontroller Arduino Nano 33 BLE e trasformalo in una "bacchetta magica" digitale
  • Configura l'IDE Arduino e installa le librerie necessarie
  • Esegui il deployment del programma sul dispositivo
  • Lancia una varietà di incantesimi sventolando la bacchetta magica e visualizza le previsioni

Che cosa ti serve

2. Configura il microcontroller Arduino

Apri la confezione di Arduino

Rimuovila dalla scatola ed estraila dalla schiuma da imballaggio. È conduttivo e potrebbe causare problemi.

6ed84a651c871a58.jpeg

Collegalo al laptop

  • Collega il cavo MicroUSB alla presa del chip.
  • Collega l'altra estremità del cavo a una presa USB sul laptop.
  • Il LED in basso a sinistra di Arduino (in alto a sinistra nell'immagine sotto) dovrebbe accendersi.

c6936696f9659104.jpeg

Acquisisci familiarità con il flusso di lavoro

99852afbed7e78b0.png

Come mostrato nel diagramma precedente, l'interprete TFLite su Arduino esegue periodicamente l'inferenza sul modello. Il modello utilizza i dati dell'accelerometro elaborati come input e restituisce una previsione che suggerisce il gesto che si è probabilmente verificato. Inoltre, verrebbe stampato l'output desiderato e i LED giusti si accendono.

3. Configura l'IDE Arduino

1. Scarica l'IDE di Arduino

Per eseguire il deployment del programma nel microcontroller Arduino, utilizziamo l'IDE di Arduino.

Dopo averlo scaricato, installa e apri l'IDE di Arduino facendo clic sull'applicazione la cui icona è simile alla seguente: 75717f13527f36b9.png

La pagina di destinazione iniziale si apre nel seguente modo:

933c91e6e1997c61.png

2. Configurare il Board Manager

  1. Dal menu Arduino, seleziona Tools -> Board: "Arduino .." —> Boards Manager
  2. Cerca "Arduino Nano 33 BLE" e installa Arduino nRF528x Boards (Mbed OS). Questo assicura che il nostro microcontroller Arduino Nano 33 BLE sia supportato dall'IDE Arduino. 817c63346152eda9.png
  1. Dal menu Arduino, seleziona Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

9357691e1a1348eb.png

  1. Infine, verifica che la scheda selezionata sia "Arduino Nano 33 BLE" in basso a destra nell'IDE.

aa08706bb84fa9b2.png

3. configura la porta

Dal menu Arduino, seleziona Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). Il risultato dovrebbe essere simile a questo:

8c25990d0c6fb6f8.png

4. controlla la connessione della scheda

Dal menu Arduino, seleziona Tools -> Get Board Info. Il risultato dovrebbe essere simile a questo:

ccd8f5305be6cf59.png

4. Installazione delle librerie

1. Libreria TensorFlow Arduino

Questa libreria contiene tutti gli esempi di TensorFlow Lite per microcontroller, che include il codice sorgente della bacchetta magica richiesto per questo codelab.

  1. Dal menu Arduino, seleziona Sketch -> Include Library -> Add .ZIP Library...
  2. Aggiungi la libreria TensorFlow Arduino .zip che hai scaricato.

2. Libreria Arduino LSM9DS1

Questa libreria ti consente di leggere i valori di accelerometro, magnetometro e giroscopio dall'IMU LSM9DS1 sul tuo Arduino Nano 33 BLE Sense.

  1. Dal menu Arduino, seleziona Sketch -> Include -> Manage Libraries...
  2. Cerca e installa "Arduino_LSM9DS1". ac2f78a737c5f233.png

5. Carica e crea l'esempio

1. Carica l'esempio

Dal menu Arduino, seleziona File -> Examples -> Arduino_TensorFlowLite -> magic_wand per caricare il codice campione.

de349f2d3cb49b98.png

Verrà caricato il codice sorgente della bacchetta magica.

cda8c35a597b0798.png

2. Crea l'esempio

Fai clic sul pulsante Upload nella finestra dello schizzo.

71cb1474d5e14669.png

Dopo alcuni minuti, dovresti vedere un testo rosso che indica che il lampeggiamento è terminato. Durante il caricamento, il LED destro dovrebbe lampeggiare e poi spegnersi alla fine.

3df1d0858c6e40a4.png

6. Demo

Al momento la bacchetta magica è in grado di rilevare tre gesti, come mostrato di seguito: 99a607da66af9fc8.png

  1. Ala: inizia dall'angolo in alto a sinistra e traccia con attenzione la lettera "W" per due secondi.
  2. Anello: inizia in posizione verticale, sposta la bacchetta in senso orario per un secondo.
  3. Pendenza: inizia tenendo la bacchetta rivolta verso l'alto, con i LED rivolti verso di te. Sposta la bacchetta verso il basso con un'inclinazione verso sinistra e poi orizzontalmente verso destra per un secondo.

L'immagine seguente mostra due gesti. Prima, una pendenza e poi un'ala (da usare come riferimento per la demo).

9208eb1207211349.gif

Per eseguire la demo, segui le istruzioni riportate di seguito:

  1. Con la porta USB collegata, seleziona Tools -> Serial Monitor dal menu Arduino. Inizialmente si aprirà una schermata vuota senza output.

38e8d53652eb28f2.png

  1. Muovi il microcontroller Arduino per tracciare attentamente ciascuna delle forme sopra indicate e controlla se il monitor seriale rileva il gesto.

60b8a0017bcae419.png

  1. Dall'output del monitor seriale, notiamo che la bacchetta magica ha effettivamente rilevato tutte le forme! Noterai anche che si accende il LED destro.

7. Passaggi successivi

Congratulazioni, hai creato la tua prima bacchetta magica che riconosce i gesti su un microcontroller Arduino.

Ci auguriamo che questa breve introduzione allo sviluppo con TensorFlow Lite per microcontroller ti sia piaciuta. L'idea del deep learning sui microcontroller è nuova ed entusiasmante e ti invitiamo a uscire e a sperimentare.

Documenti di riferimento

647c3ef0dc103804.png

Grazie e divertiti a costruire!