Este proyecto es una guía práctica de TinyML que recorre todo el ciclo de trabajo de un modelo de Inteligencia Artificial: desde el entrenamiento de una red neuronal que aprende la función seno, hasta su despliegue físico en un microcontrolador ESP32 para controlar un LED mediante PWM.
Puedes ejecutar este proyecto de dos maneras:
Entrena y convierte el modelo en la nube sin instalar nada localmente:
Si prefieres trabajar localmente, sigue estos pasos para configurar tu entorno virtual:
# Verificar versiones
python --version
pip --version
# Crear entorno virtual
python -m venv tinyhello
# Activar entorno (Linux/Mac)
source tinyhello/bin/activate
# Activar entorno (Windows)
.\tinyhello\Scripts\Activate.ps1
# Instalar dependencias
pip install -r requirements.txtEl proyecto se divide en tres fases críticas:
- Entrenamiento: Usamos TensorFlow para crear una red neuronal con dos capas de 16 neuronas que aprende a predecir la curva de una función seno a partir de datos ruidosos.
- Optimización y Conversión: El modelo se convierte a formato TFLite . Esto reduce el tamaño del modelo y permite que el procesador del ESP32 realice cálculos más rápidos con números enteros.
- Despliegue (C++): El modelo se exporta como un arreglo hexadecimal (
.cc) y se integra en un sketch de Arduino que utiliza la libreríaTensorFlowLite_ESP32.
Para que el modelo funcione en tu hardware, debes incluir los siguientes archivos en tu proyecto de Arduino:
esp32_deploy.ino: El código que gestiona el Tensor Arena (20 KB) y ejecuta la inferencia.model.h: Contiene la declaraciónextern const unsigned char g_model[].model.cpp: El archivo generado porxxdcon los datos del modelo. Asegúrate de que el nombre de la variable seag_model.
- Librerías: Requiere
TensorFlowLite_ESP32y el core de ESP32 versión 2.0.11. - Inferencia: El modelo recibe un valor
xy predicey. Este valor se mapea al rango 0-255 para controlar el brillo del LED medianteledcWrite.
Al cargar el modelo, puedes abrir el Serial Plotter (115200 baudios) para ver la precisión de la IA frente a la función matemática real.
Para cualquier pregunta o comentario, no dudes en ponerte en contacto :
Julian Francisco Pinchao Ortiz
-
Correo: jfrancisco.pinchao@udea.edu.co
-
GitHub:@pinpacho
Este proyecto se basa en las siguientes herramientas y documentación oficial de TinyML:
- Librería TensorFlowLite_ESP32: Puerto oficial de TensorFlow Lite Micro para la arquitectura ESP32. Repositorio en GitHub
- Libro "TinyML: Machine Learning with TensorFlow Lite on Arduino": Guía fundamental de Pete Warden y Daniel Situnayake (O'Reilly, 2020) para el desarrollo de IA en sistemas embebidos. Versión PDF
- TensorFlow Lite para Microcontroladores: Guía oficial de Google sobre el flujo de trabajo, conversión de modelos y optimización para hardware restringido. Sitio Oficial
