Estado del Proyecto - OpenWokwi Arduino Emulator
Resumen de Funcionalidades Implementadas
Repositorios de Wokwi Clonados y Configurados
Repositorios oficiales de Wokwi en wokwi-libs/:
| Repositorio |
Estado |
Descripción |
| wokwi-elements |
Compilado y en uso |
48+ componentes electrónicos Web Components |
| avr8js |
Compilado y en uso |
Emulación real de AVR8 (ATmega328p) |
| rp2040js |
Clonado |
Emulador RP2040 (futuro) |
| wokwi-features |
Clonado |
Documentación y features |
Emulación AVR Real (avr8js)
| Feature |
Estado |
| CPU ATmega328p a 16MHz |
Funcionando |
| Timer0, Timer1, Timer2 |
Funcionando |
| USART (Serial) |
Funcionando |
| ADC (analogRead) |
Funcionando |
| GPIO completo (PORTB/C/D) |
Funcionando |
| Loop ~60fps (267k ciclos/frame) |
Funcionando |
| Control de velocidad (0.1x - 10x) |
Funcionando |
| Debugging paso a paso (step) |
Funcionando |
| Monitoreo PWM (6 canales) |
Funcionando |
| Inyección de pin externo (inputs) |
Funcionando |
Sistema de Componentes (48+)
| Feature |
Estado |
| Descubrimiento automático por AST |
48 componentes detectados |
| ComponentPickerModal con búsqueda |
Funcionando |
| 9 categorías con filtros |
Functioning |
| Thumbnails en vivo (web components) |
Funcionando |
| DynamicComponent renderer genérico |
Funcionando |
| Drag-and-drop en el canvas |
Funcionando |
| Rotación (90° incrementos) |
Funcionando |
| Diálogo de propiedades (click) |
Funcionando |
| Selector de pines (doble-click) |
Funcionando |
| Pin overlay (puntos cyan clickeables) |
Funcionando |
16 Partes con Simulación Interactiva
| Parte |
Tipo |
Estado |
| LED |
Output |
|
| RGB LED |
Output (digital + PWM) |
|
| LED Bar Graph (10 LEDs) |
Output |
|
| 7-Segment Display |
Output |
|
| Pushbutton |
Input |
|
| Pushbutton 6mm |
Input |
|
| Slide Switch |
Input |
|
| DIP Switch 8 |
Input |
|
| Potentiometer |
Input (ADC) |
|
| Slide Potentiometer |
Input (ADC) |
|
| Photoresistor |
Input/Output |
|
| Analog Joystick |
Input (ADC + digital) |
|
| Servo |
Output |
|
| Buzzer |
Output (Web Audio) |
|
| LCD 1602 |
Output (HD44780 completo) |
|
| LCD 2004 |
Output (HD44780 completo) |
|
Sistema de Cables (Wires)
| Feature |
Estado |
| Creación pin-a-pin con click |
Funcionando |
| Preview en tiempo real (verde, punteado) |
Funcionando |
| Routing ortogonal (sin diagonales) |
Funcionando |
| Edición por segmentos (drag perpendicular) |
Funcionando |
| 8 colores por tipo de señal |
Funcionando |
| Offset automático para cables paralelos |
Funcionando |
| Auto-actualización al mover componentes |
Funcionando |
| Grid snapping (20px) |
Funcionando |
| Selección y eliminación de cables |
Funcionando |
Editor de Código
| Feature |
Estado |
| Monaco Editor (C++, dark theme) |
Funcionando |
| Syntax highlighting + autocomplete |
Funcionando |
| Botones Compile/Run/Stop/Reset |
Funcionando |
| Compilación via arduino-cli backend |
Funcionando |
| Mensajes de error/éxito |
Funcionando |
| Font size configurable |
Funcionando |
Ejemplos (8 Proyectos)
| Ejemplo |
Categoría |
Dificultad |
| Blink LED |
basics |
beginner |
| Traffic Light |
basics |
beginner |
| Button Control |
basics |
beginner |
| Fade LED (PWM) |
basics |
beginner |
| Serial Hello World |
communication |
beginner |
| RGB LED Colors |
basics |
intermediate |
| Simon Says Game |
games |
advanced |
| LCD 20x4 Display |
displays |
intermediate |
- Galería con filtros de categoría y dificultad
- Carga con un click (código + componentes + cables)
Integración Configurada
| Item |
Estado |
| Vite aliases para repos locales |
|
Package.json con file:../wokwi-libs/... |
|
| TypeScript declarations para Web Components |
|
| CORS backend (puertos 5173-5175) |
|
| React Router (2 rutas) |
|
| Zustand stores (editor + simulator) |
|
Documentación
| Archivo |
Descripción |
README.md |
Instrucciones de instalación y uso |
doc/ARCHITECTURE.md |
Arquitectura detallada del proyecto |
doc/WOKWI_LIBS.md |
Guía de integración con Wokwi |
doc/SETUP_COMPLETE.md |
Este archivo — estado del proyecto |
CLAUDE.md |
Guía para asistentes IA |
update-wokwi-libs.bat |
Script de actualización automática |
Cómo Empezar
1. Asegúrate de tener arduino-cli instalado
arduino-cli version
arduino-cli core install arduino:avr
2. Inicia el Backend
cd backend
venv\Scripts\activate
uvicorn app.main:app --reload --port 8001
3. Inicia el Frontend
cd frontend
npm run dev
4. Abre en el Navegador
Actualizar Librerías de Wokwi
# Ejecutar script de actualización
update-wokwi-libs.bat
# Regenerar metadata de componentes (si actualizaste wokwi-elements)
cd frontend
npx tsx ../scripts/generate-component-metadata.ts
Próximos Pasos (Pendiente)
| Feature |
Prioridad |
Descripción |
| Serial Monitor |
Alta |
UI para leer output USART de la simulación |
| Persistencia |
Alta |
SQLite para guardar/cargar proyectos |
| Undo/Redo |
Media |
Historial de edición para código y circuito |
| Multi-board |
Media |
Cambio de board en runtime (Mega, Nano, ESP32) |
| Validación de cables |
Media |
Validación eléctrica y resaltado de errores |
| Export/Import |
Baja |
Compartir proyectos como archivos |
Troubleshooting
Los componentes no se muestran
cd wokwi-libs/wokwi-elements
npm run build
Error: "Cannot find module 'avr8js'"
cd wokwi-libs/avr8js
npm install
npm run build
arduino-cli no funciona
arduino-cli version
arduino-cli core list
arduino-cli core install arduino:avr
LED no parpadea en simulación
- Verifica que compilaste el código (botón Compile)
- Verifica que ejecutaste la simulación (botón Run)
- Revisa la consola del navegador para errores de port listeners
- Verifica el pin mapping en el diálogo de propiedades del componente
Componente nuevo no aparece en el picker
cd frontend
npx tsx ../scripts/generate-component-metadata.ts
Estado General
El proyecto tiene implementadas todas las funcionalidades core:
- Editor de código profesional (Monaco)
- Compilación Arduino local (arduino-cli)
- Emulación AVR8 real con periféricos completos
- 48+ componentes electrónicos con descubrimiento automático
- 16 partes con simulación interactiva (LED, LCD, buttons, potentiometers, servo, buzzer)
- Sistema de cables ortogonales con edición visual
- 8 proyectos de ejemplo con galería filtrable
- Sistema de actualización automática para librerías Wokwi