Skip to content

pinpacho/tinywaveml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TinyWaveML: Inferencia de Onda Senoidal en ESP32

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.

Cómo empezar

Puedes ejecutar este proyecto de dos maneras:

Opción A: Google Colab (Recomendado)

Entrena y convierte el modelo en la nube sin instalar nada localmente:

Open In Colab

Opción B: Entorno Local (Python)

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.txt

Flujo de Trabajo

El proyecto se divide en tres fases críticas:

  1. 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.
  2. 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.
  3. Despliegue (C++): El modelo se exporta como un arreglo hexadecimal (.cc) y se integra en un sketch de Arduino que utiliza la librería TensorFlowLite_ESP32.

Despliegue en el 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ón extern const unsigned char g_model[].
  • model.cpp: El archivo generado por xxd con los datos del modelo. Asegúrate de que el nombre de la variable sea g_model.

Detalles Técnicos

  • Librerías: Requiere TensorFlowLite_ESP32 y el core de ESP32 versión 2.0.11.
  • Inferencia: El modelo recibe un valor x y predice y. Este valor se mapea al rango 0-255 para controlar el brillo del LED mediante ledcWrite.

Resultados Visuales

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.

Despliegue del modelo en ESP32

Contacto

Para cualquier pregunta o comentario, no dudes en ponerte en contacto :

Julian Francisco Pinchao Ortiz

Referencias y Recursos

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

About

Este proyecto es una guía práctica de TinyML que abarca todo el ciclo de trabajo de un modelo de IA: desde entrenar una red neuronal para aprender la función seno hasta implementarla en un ESP32 para controlar un LED con PWM.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors