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.
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.
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)
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)
Arduino è una popolare piattaforma open source utilizzata per creare progetti elettronici. Si compone di:
- Una scheda per circuiti programmabili fisici (spesso un microcontroller) come l'Arduino Nano 33 BLE utilizzata in questo codelab.
- 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
- Laptop Linux, MacOS o Windows
- Arduino Nano BLE Sense 33 (senza intestazioni)
- Cavo Micro USB (se usi un laptop USB-C, procurati un cavo da USB-C a Micro USB)
- (opzionale) Bastone, circa 12 pollici (30 cm di lunghezza)
- (Facoltativo) Nastro adesivo
2. Configura il microcontroller Arduino
Apri la confezione di Arduino
Rimuovila dalla scatola ed estraila dalla schiuma da imballaggio. È conduttivo e potrebbe causare problemi.
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.
Acquisisci familiarità con il flusso di lavoro
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:
La pagina di destinazione iniziale si apre nel seguente modo:
2. Configurare il Board Manager
- Dal menu Arduino, seleziona
Tools -> Board: "Arduino .." —> Boards Manager
- Cerca
"Arduino Nano 33 BLE"
e installaArduino nRF528x Boards (Mbed OS)
. Questo assicura che il nostro microcontroller Arduino Nano 33 BLE sia supportato dall'IDE Arduino.
- Dal menu Arduino, seleziona
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"
- Infine, verifica che la scheda selezionata sia "Arduino Nano 33 BLE" in basso a destra nell'IDE.
3. configura la porta
Dal menu Arduino, seleziona Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)
. Il risultato dovrebbe essere simile a questo:
4. controlla la connessione della scheda
Dal menu Arduino, seleziona Tools -> Get Board Info
. Il risultato dovrebbe essere simile a questo:
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.
- Dal menu Arduino, seleziona
Sketch -> Include Library -> Add .ZIP Library...
- 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.
- Dal menu Arduino, seleziona
Sketch -> Include -> Manage Libraries...
- Cerca e installa
"Arduino_LSM9DS1"
.
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.
Verrà caricato il codice sorgente della bacchetta magica.
2. Crea l'esempio
Fai clic sul pulsante Upload
nella finestra dello schizzo.
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.
6. Demo
Al momento la bacchetta magica è in grado di rilevare tre gesti, come mostrato di seguito:
- Ala: inizia dall'angolo in alto a sinistra e traccia con attenzione la lettera "W" per due secondi.
- Anello: inizia in posizione verticale, sposta la bacchetta in senso orario per un secondo.
- 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).
Per eseguire la demo, segui le istruzioni riportate di seguito:
- Con la porta USB collegata, seleziona
Tools -> Serial Monitor
dal menu Arduino. Inizialmente si aprirà una schermata vuota senza output.
- Muovi il microcontroller Arduino per tracciare attentamente ciascuna delle forme sopra indicate e controlla se il monitor seriale rileva il gesto.
- 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
- Ora che hai esperienza con il programma di base, addestra il tuo modello.
- Scopri di più su TensorFlow Lite per microcontroller ( sito web, GitHub).
- Prova altri esempi e prova a eseguirli su Arduino, se è supportato.
- Prova l'altro codelab: IA su un microcontroller con TensorFlow Lite e SparkFun Edge
- Fai riferimento al libro di O'Reilly TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers, che illustra il machine learning su piccoli dispositivi e descrive diversi progetti divertenti. Questo codelab è basato sul capitolo 11 di questo libro.
Grazie e divertiti a costruire!