1. Introducción
Qué compilarás
En este codelab, aprenderemos a usar TensorFlow Lite para microcontroladores para ejecutar un modelo de aprendizaje profundo en Arduino Nano 33 BLE. El microcontrolador se convierte en una “varita mágica” digital. por el usuario para agitar y lanzar una variedad de hechizos. A medida que el usuario mueve la batuta, estos datos complejos y multidimensionales del sensor que serían inescrutables para un ser humano se pasan como una entrada al modelo, lo que da como resultado una clasificación simple que nos alerta si se produce uno de varios movimientos.
Aprendizaje automático en microcontroladores
El aprendizaje automático puede usarse para crear herramientas inteligentes la vida más fácil, como Asistente de Google. A menudo, estas experiencias requieren mucho procesamiento o recursos, que pueden incluir un servidor en la nube potente o una computadora de escritorio. Sin embargo, ahora es posible ejecutar la inferencia del aprendizaje automático en un hardware pequeño de baja potencia, como los microcontroladores.
Los microcontroladores son extremadamente comunes, económicos, requieren muy poca energía y son muy confiables. Son parte de todo tipo de dispositivos domésticos, como electrodomésticos, autos y juguetes. De hecho, cada año se producen alrededor de 30,000 millones de dispositivos que funcionan con microcontroladores.
Si llevamos el aprendizaje automático a pequeños microcontroladores, podemos potenciar la inteligencia de miles de millones de dispositivos que usamos en nuestras vidas, sin depender de hardware costoso ni de conexiones a Internet confiables. Imagina electrodomésticos inteligentes que puedan adaptarse a tu rutina diaria, sensores industriales inteligentes que comprendan la diferencia entre los problemas y el funcionamiento normal, y juguetes mágicos que puedan ayudar a los niños a aprender de formas divertidas y agradables.
TensorFlow Lite para microcontroladores (software)
TensorFlow es el framework de aprendizaje automático de código abierto de Google para entrenar y ejecutar modelos. TensorFlow Lite es un marco de trabajo de software, una versión optimizada de TensorFlow, destinada a ejecutar modelos de TensorFlow en dispositivos pequeños y de potencia relativamente baja, como los teléfonos celulares.
TensorFlow Lite para microcontroladores es un marco de trabajo de software, una versión optimizada de TensorFlow, destinada a ejecutar modelos de TensorFlow en un hardware pequeño y de baja potencia, como los microcontroladores. Cumple con las restricciones requeridas en estos entornos incorporados; es decir, tiene un tamaño binario pequeño, no requiere compatibilidad con el sistema operativo, ninguna biblioteca C o C++ estándar, asignación de memoria dinámica, etcétera.
Arduino Nano 33 BLE (hardware)
Arduino es una plataforma popular de código abierto que se usa para crear proyectos electrónicos. Consta de lo siguiente:
- Una placa de circuito programable física (que suele ser un microcontrolador), como el Arduino Nano 33 BLE que se usa en este codelab.
- El IDE (entorno de desarrollo integrado) de Arduino, un software que se usa para escribir y subir código de computadora a la placa física.
Arduino Nano 33 BLE es una plataforma basada en microcontroladores: una pequeña computadora en una sola placa de circuitos. Tiene un procesador, memoria y hardware de E/S que le permiten enviar y recibir señales digitales a otros dispositivos. A diferencia de una computadora, un microcontrolador no es potente y no suele ejecutar un sistema operativo. En cambio, tienen procesadores pequeños, no mucha memoria, y los programas que escribes se ejecutan directamente en el hardware. Sin embargo, dado que están diseñados para ser lo más sencillos posible, un microcontrolador puede consumir muy poca energía.
Actividades
- Configura el microcontrolador Arduino Nano 33 BLE y conviértelo en una varita mágica digital.
- Configura el IDE de Arduino e instala las bibliotecas necesarias
- Implementa el programa en el dispositivo
- Lanza una variedad de hechizos agitando la varita mágica y mira las predicciones
Requisitos
- Laptop con Linux, macOS o Windows
- Arduino Nano BLE Sense 33 (sin encabezados)
- Cable micro-USB (si usas una laptop USB-C, obtén un cable USB-C a micro USB)
- (Opcional) Palo, aproximadamente 30 cm de largo (12 pulgadas)
- Cinta adhesiva (opcional)
2. Configura el microcontrolador Arduino
Desempaqueta tu Arduino
Quítalo de la caja y sácalo de la espuma de embalaje. Es conductivo y puede causar problemas de otro modo.
Conéctalo a tu laptop.
- Conecta el cable microUSB al enchufe del chip.
- Conecta el otro extremo del cable a un tomacorriente USB de tu laptop.
- La luz LED de la parte inferior izquierda de la placa Arduino (la parte superior izquierda en la imagen de abajo) debería encenderse.
Familiarízate con el flujo de trabajo
Como se muestra en el diagrama anterior, el intérprete de TFLite en Arduino ejecuta inferencias en el modelo de manera periódica. El modelo usa los datos procesados del acelerómetro como entrada y genera una predicción que sugiere el gesto más probable que ocurrió. Además, se imprimiría el resultado deseado y se encenderían las luces LED correctas.
3. Configura el IDE de Arduino
1. Descarga el IDE de Arduino
Para implementar el programa en el microcontrolador Arduino, usamos el IDE de Arduino.
Después de descargarla, instala y abre el IDE de Arduino haciendo clic en la aplicación cuyo ícono se ve de la siguiente manera:
La página de destino inicial se abriría de la siguiente manera:
2. Configura el Board Manager
- En el menú de Arduino, selecciona
Tools -> Board: "Arduino .." —> Boards Manager
. - Busca
"Arduino Nano 33 BLE"
e instalaArduino nRF528x Boards (Mbed OS)
. Esto garantizará que nuestro microcontrolador Arduino Nano 33 BLE sea compatible con el IDE de Arduino.
- En el menú de Arduino, selecciona
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"
.
- Por último, verifica que la placa seleccionada sea "Arduino Nano 33 BLE". en la parte inferior derecha del IDE.
3. Configura el puerto
En el menú de Arduino, selecciona Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)
. Deberías ver un resultado similar a este:
4. Verifica la conexión de la placa
En el menú de Arduino, selecciona Tools -> Get Board Info
. Deberías ver un resultado similar a este:
4. Instala bibliotecas
1. Biblioteca de Arduino de TensorFlow
Esta biblioteca contiene todos los ejemplos de TensorFlow Lite para microcontroladores, que incluyen el código fuente de varita mágica que se requiere para este codelab.
- En el menú de Arduino, selecciona
Sketch -> Include Library -> Add .ZIP Library...
. - Agrega la biblioteca de Arduino de TensorFlow
.zip
que descargaste.
2. Biblioteca de Arduino LSM9DS1
Esta biblioteca te permite leer los valores del acelerómetro, el magnetómetro y el giroscopio del IMU LSM9DS1 en tu Arduino Nano 33 BLE Sense.
- En el menú de Arduino, selecciona
Sketch -> Include -> Manage Libraries...
. - Busca e instala
"Arduino_LSM9DS1"
.
5. Carga y compila el ejemplo
1. Carga el ejemplo
En el menú de Arduino, selecciona File -> Examples -> Arduino_TensorFlowLite -> magic_wand
para cargar el código de muestra.
Esta acción cargará el código fuente de la varita mágica.
2. Compila el ejemplo
Haz clic en el botón Upload
en la ventana de boceto.
Después de unos minutos, deberías ver un texto en rojo que indica que el flash se completó. Durante la carga, la luz LED de la derecha debería parpadear y, luego, oscurecer al final.
6. Demostración
Actualmente, la varita mágica puede detectar 3 gestos, como se muestra a continuación:
- Ala: Comienza desde la esquina superior izquierda y traza cuidadosamente la letra "W". durante dos segundos.
- Anillo: Comienza en posición vertical y mueve la batuta en un círculo en el sentido de las manecillas del reloj durante un segundo.
- Pendiente: Para comenzar, sostén la batuta hacia arriba, con los LED hacia ti. Mueve la batuta hacia abajo inclinando hacia la izquierda y, luego, de forma horizontal hacia la derecha durante un segundo.
En la siguiente imagen, se muestran dos gestos. Primero, una pendiente y, luego, un ala (utilice esto como referencia para su demostración).
Para ejecutar la demostración, sigue las instrucciones que se indican a continuación:
- Con el USB conectado, selecciona
Tools -> Serial Monitor
en el menú de Arduino. Inicialmente, se abrirá una pantalla en blanco sin resultados.
- Mueve el microcontrolador de Arduino para trazar cada una de las formas anteriores con cuidado y comprueba si el monitor en serie detecta el gesto.
- En el resultado del monitor en serie, notamos que la varita mágica efectivamente detectó todas las formas. También verás que se enciende la luz LED del lado derecho.
7. Próximos pasos
Felicitaciones, creaste con éxito tu primera “varita mágica” de reconocimiento de gestos en un microcontrolador Arduino.
Esperamos que hayas disfrutado esta breve introducción al desarrollo con TensorFlow Lite para microcontroladores. La idea del aprendizaje profundo en los microcontroladores es nueva y emocionante, y ¡te animamos a que salgas a experimentar!
Documentos de referencia
- Ahora que tienes experiencia con el programa básico, entrena tu propio modelo.
- Obtén más información sobre TensorFlow Lite para microcontroladores ( sitio web, GitHub).
- Prueba otros ejemplos y ejecútalos en Arduino, si es compatible.
- Prueba el otro codelab: IA en un microcontrolador con TensorFlow Lite y SparkFun Edge.
- Consulta el libro de O'Reilly TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers, que presenta el aprendizaje automático en dispositivos pequeños y explica varios proyectos divertidos. Este codelab se basa en el capítulo 11 de este libro.
Gracias y que te diviertas creando.