Sistema de automatización domótica que permite el control remoto de dispositivos electrónicos mediante comunicación serial entre una aplicación Windows Forms (C#) y un microcontrolador ESP32.
Interfaz principal del sistema
- 🔌 Comunicación Serial bidireccional a 115200 bps
- 💡 Control de LEDs mediante GPIO del ESP32
- 🔄 Control de Motor DC con velocidad y dirección (L298N)
- 🌡️ Sensor de Temperatura LM75 por protocolo I2C
- 📝 Log en Tiempo Real con timestamps
- 🖥️ Interfaz Gráfica intuitiva en Windows Forms
- ⚡ Gestión de Dispositivos virtuales (crear, listar, controlar)
- Demostración
- Arquitectura
- Tecnologías
- Hardware Requerido
- Instalación
- Uso
- Protocolo de Comunicación
- Documentación
- Capturas
- Estructura del Proyecto
- Pruebas
- Licencia
- Autor
| Característica | Descripción |
|---|---|
| Gestión de Dispositivos | Agregar, listar y controlar múltiples dispositivos virtuales |
| Control de LED | Encendido/apagado con confirmación en tiempo real |
| Control de Motor | Velocidad ajustable (-255 a 255) y dirección bidireccional |
| Lectura de Temperatura | Sensor LM75 con precisión de 0.5°C |
| Log Completo | Registro de todos los comandos y respuestas |
Ver más capturas en la carpeta Documentacion/Capturas
┌─────────────────────────────────────────────────────────────┐
│ CAPA DE PRESENTACIÓN │
│ Windows Forms (C# .NET 8.0) │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ CAPA DE LÓGICA │
│ Domain: IActuable, DispositivoBase, Lampara │
│ ControladorDomotico │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ CAPA DE COMUNICACIÓN │
│ SerialPort (115200 bps, N, 8, 1) │
└──────────────────────┬──────────────────────────────────────┘
│ USB Serial
┌──────────────────────▼──────────────────────────────────────┐
│ CAPA DE HARDWARE │
│ ESP32 DevKit V1 + PlatformIO │
└──────────────────────┬──────────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────────┐
│ DISPOSITIVOS FÍSICOS │
│ LED (GPIO2) | Motor L298N | Sensor LM75 (I2C) │
└─────────────────────────────────────────────────────────────┘
| Componente | Tecnología | Versión |
|---|---|---|
| Aplicación Desktop | C# .NET | 8.0 |
| Framework GUI | Windows Forms | .NET 8.0 |
| IDE PC | Visual Studio | 2022 |
| Microcontrolador | ESP32 DevKit V1 | - |
| IDE Embebido | PlatformIO | VSCode |
| Framework ESP32 | Arduino | - |
| Comunicación | UART Serial | 115200 bps |
- System.IO.Ports - Comunicación serial
- Windows.Forms - Interfaz gráfica
- Wire.h - Comunicación I2C (Arduino)
| Componente | Especificaciones | Cantidad |
|---|---|---|
| ESP32 DevKit V1 | 38 pines, dual-core @ 240MHz | 1 |
| Módulo L298N | Driver motor DC dual, 2A/canal | 1 |
| Motor DC | 6V-12V | 1 |
| Sensor LM75 | Sensor temperatura I2C | 1 |
| Cables Jumper | Macho-Macho | 15 |
| Cable USB | Para programación ESP32 | 1 |
ESP32 DevKit V1
├── GPIO2 → LED Integrado
├── GPIO23 → L298N (ENA - PWM)
├── GPIO19 → L298N (IN1)
├── GPIO18 → L298N (IN2)
├── GPIO21 → LM75 (SDA)
└── GPIO22 → LM75 (SCL)
Ver diagrama detallado en Documentacion/DOCUMENTACION_COMPLETA.md
- Windows 10/11
- Visual Studio Code
- .NET 8.0 SDK (Descargar)
- VSCode + PlatformIO (Instalar PlatformIO)
- Driver USB-Serial para ESP32 (CP2102 o CH340)
git clone https://github.com/isslypa/SistemaDomoticoESP32.git
cd SistemaDomoticoESP32cd ControlDomotico
dotnet restore
dotnet buildO abrir ControlDomotico.sln en Visual Studio 2022.
cd ESP32/PlatformIO/Projects/Final
pio run --target uploadO usar la interfaz de PlatformIO en VSCode.
Desde Visual Studio:
- Abrir
ControlDomotico.sln - Presionar
F5o clic en "Iniciar"
Desde línea de comandos:
cd ControlDomotico
dotnet run- Conectar ESP32 por USB
- Seleccionar puerto COM en la aplicación
- Hacer clic en "Conectar"
- Verificar mensaje "READY" en el log
- Escribir nombre del dispositivo (ej: "Lámpara Sala")
- Hacer clic en "Agregar"
- Repetir para crear más dispositivos
- Encender/Apagar: Seleccionar dispositivo y usar botones
- Motor: Ajustar velocidad con TrackBar, usar Adelante/Reversa/Stop
- Temperatura: Hacer clic en "Leer Temperatura"
| Comando | Parámetro | Respuesta | Descripción |
|---|---|---|---|
LED1:ON |
- | OK |
Enciende LED |
LED1:OFF |
- | OK |
Apaga LED |
M1:SET:<val> |
-255 a 255 | OK |
Velocidad motor |
M1:STOP |
- | OK |
Detiene motor |
TEMP? |
- | TEMP:<val> |
Lee temperatura |
PING |
- | PONG |
Test conexión |
PC → ESP32: LED1:ON
ESP32 → PC: OK
PC → ESP32: M1:SET:200
ESP32 → PC: OK
PC → ESP32: TEMP?
ESP32 → PC: TEMP:24.50
Documentación completa del protocolo: PROTOCOLO_COMUNICACION.md
La documentación completa del proyecto incluye:
- PROTOCOLO_COMUNICACION.md - Especificación completa del protocolo serial
- DOCUMENTACION_COMPLETA.md - Documento técnico principal
- README.md - Índice de la documentación
El documento principal incluye:
- ✅ Descripción del sistema y objetivos
- ✅ Arquitectura detallada (4 capas)
- ✅ Componentes de software y hardware
- ✅ Implementación del código
- ✅ 10 casos de prueba documentados
- ✅ Resultados y métricas de rendimiento
| Creación | Control Motor | Temperatura |
|---|---|---|
![]() |
![]() |
![]() |
ControlDomotico/
│
├── ControlDomotico/ # Aplicación Windows Forms
│ ├── Program.cs # Punto de entrada
│ ├── Domain/ # Lógica de negocio
│ │ ├── IActuable.cs # Interfaz de dispositivos
│ │ ├── DispositivoBase.cs # Clase base abstracta
│ │ ├── Lampara.cs # Implementación lámpara
│ │ └── ControladorDomotico.cs # Gestor de dispositivos
│ ├── UI/ # Interfaz de usuario
│ │ ├── Form1.cs # Lógica de la interfaz
│ │ ├── Form1.Designer.cs # Diseño visual
│ │ └── Form1.resx # Recursos
│ └── ControlDomotico.csproj # Configuración del proyecto
│
├── ESP32/ # Firmware ESP32
│ └── PlatformIO/
│ └── Projects/
│ └── Final/
│ ├── platformio.ini # Configuración PlatformIO
│ └── src/
│ └── main.cpp # Código principal ESP32
│
├── Documentacion/ # Documentación técnica
│ ├── PROTOCOLO_COMUNICACION.md
│ ├── DOCUMENTACION_COMPLETA.md
│ └── Capturas/ # Imágenes del sistema
│
├── .gitignore # Archivos ignorados por Git
├── LICENSE # Licencia del proyecto
└── README.md # Este archivo
El proyecto incluye 10 casos de prueba documentados:
| ID | Tipo | Descripción | Estado |
|---|---|---|---|
| T01 | Unitaria | Agregar dispositivo | ✅ PASS |
| T02 | Unitaria | Evitar duplicados | ✅ PASS |
| T03 | Integración | Conectar puerto serial | ✅ PASS |
| T04 | Integración | Encender LED | ✅ PASS |
| T05 | Integración | Control motor adelante | ✅ PASS |
| T06 | Integración | Control motor reversa | ✅ PASS |
| T07 | Integración | Detener motor | ✅ PASS |
| T08 | Integración | Leer temperatura | ✅ PASS |
| T09 | Sistema | Secuencia completa | ✅ PASS |
| T10 | Estrés | Comandos rápidos | ✅ PASS |
Ver detalles en DOCUMENTACION_COMPLETA.md
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Juan - Estudiante de Ingeniería Electrónica
- GitHub: @isslypa
- Universidad: Santo Tomas, 4to Semestre



