Files
s23_time-attend-v2/compiler_info.md
Marco Gallegos 06719b56a1 first commit
2025-12-24 16:57:32 -06:00

333 lines
9.4 KiB
Markdown

# 🔧 Guía de Compilación y Carga del Firmware
Esta guía te ayudará a compilar, cargar y monitorear el firmware del checador NFC en tu ESP8266 NodeMCU.
---
## 🚀 Método Rápido (Script Automático)
El proyecto incluye un script automatizado que realiza todo el proceso en un solo comando:
```bash
./compile_and_upload.sh
```
### ✨ Características del Script
#### 1. **Verificación de Estado del Dispositivo** 🔌
- ✅ Detecta automáticamente si el ESP8266 está conectado
- ✅ Muestra información detallada del puerto y tipo de placa
- ✅ Detecta automáticamente el puerto si el configurado no está disponible
- ✅ Verifica el estado antes de cada operación crítica
#### 2. **Barras de Progreso y Spinners** 📊
- ✅ Spinner animado durante la compilación
- ✅ Indicadores de progreso durante la carga del firmware
- ✅ Etapas visuales: "Iniciando", "Escribiendo", "Verificando", "Completando"
- ✅ Feedback visual claro en cada paso
#### 3. **Interfaz Mejorada** 🎨
- ✅ Encabezado visual con bordes
- ✅ Colores diferenciados para cada tipo de mensaje
- ✅ Indicadores de progreso paso a paso [1/4], [2/4], etc.
- ✅ Mensajes de error más descriptivos con sugerencias
#### 4. **Detección Automática** 🔍
- ✅ Busca automáticamente dispositivos disponibles si el puerto configurado no funciona
- ✅ Pregunta al usuario si desea usar el puerto detectado
- ✅ Muestra todos los puertos disponibles si no encuentra ninguno
### 📋 Ejemplo de Salida del Script
```
╔══════════════════════════════════════════════════════════╗
║ Checador NFC - Compilación y Carga Automática ║
╚══════════════════════════════════════════════════════════╝
[0/4] Verificando configuración...
✅ secrets.h encontrado
[1/4] Verificando conexión del dispositivo...
Puerto configurado: /dev/ttyUSB0
Estado: ✅ Conectado (NodeMCU 1.0)
Puerto seleccionado: /dev/ttyUSB0
[2/4] Compilando el sketch...
FQBN: esp8266:esp8266:nodemcuv2
Sketch: soul23_time_attendance.ino
[|] Compilando... | ← Spinner animado
[✓] Compilación completada
✅ Compilación exitosa
[3/4] Cargando firmware al dispositivo...
Puerto: /dev/ttyUSB0
Estado: ✅ Conectado (NodeMCU 1.0)
[|] Escribiendo... | ← Spinner con etapas
[✓] Carga completada
✅ Firmware cargado exitosamente
[4/4] Abriendo monitor serial...
Puerto: /dev/ttyUSB0
Baud rate: 115200
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Monitor Serial (Presiona Ctrl+C para salir)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
### 🛠️ Personalización del Script
Puedes modificar estas variables al inicio del script `compile_and_upload.sh`:
```bash
PORT="/dev/ttyUSB0" # Puerto del dispositivo
FQBN="esp8266:esp8266:nodemcuv2" # Tipo de placa
BAUD_RATE="115200" # Velocidad del monitor serial
```
---
## 🔧 Comandos Individuales
Si prefieres ejecutar los comandos manualmente o necesitas más control:
### 1. Verificar puertos disponibles
```bash
arduino-cli board list
```
### 2. Compilar el sketch
```bash
arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
```
**Nota:** El FQBN `esp8266:esp8266:nodemcuv2` es para NodeMCU 1.0 (ESP-12E Module).
### 3. Cargar al dispositivo
```bash
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
```
**⚠️ Importante:** Reemplaza `/dev/ttyUSB0` con el puerto correcto de tu dispositivo (verifica con `arduino-cli board list`)
### 4. Abrir monitor serial
```bash
arduino-cli monitor -p /dev/ttyUSB0 --config baudrate=115200
```
**Para salir del monitor:** Presiona `Ctrl+C`
### 5. Compilar sin cargar (solo verificar errores)
```bash
arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
```
### 6. Ver información detallada de compilación
```bash
arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 --verbose soul23_time_attendance.ino
```
### 7. Limpiar archivos de compilación
```bash
rm -rf build/
```
---
## 📦 Instalación de Dependencias
### Instalar Core de ESP8266
```bash
arduino-cli core install esp8266:esp8266
```
### Instalar Librerías Necesarias
```bash
# Librerías principales
arduino-cli lib install "MFRC522"
arduino-cli lib install "Adafruit SSD1306"
arduino-cli lib install "Adafruit GFX Library"
arduino-cli lib install "ArduinoJson"
arduino-cli lib install "Time"
```
---
## 🔍 Verificar Instalación
### Ver librerías instaladas
```bash
arduino-cli lib list
```
### Ver cores instalados
```bash
arduino-cli core list
```
### Verificar FQBN correcto
```bash
arduino-cli board listall | grep -i nodemcu
```
Salida esperada:
```
NodeMCU 0.9 (ESP-12 Module) esp8266:esp8266:nodemcu
NodeMCU 1.0 (ESP-12E Module) esp8266:esp8266:nodemcuv2
```
---
## 🐛 Solución de Problemas
### Error: "No se encuentra secrets.h"
```bash
cp secrets.h.example secrets.h
# Luego edita secrets.h con tus credenciales
```
### Error: "Puerto no encontrado"
1. Verifica que el ESP8266 esté conectado:
```bash
arduino-cli board list
```
2. Si no aparece, verifica permisos:
```bash
sudo usermod -a -G dialout $USER
```
Luego reinicia sesión o ejecuta:
```bash
newgrp dialout
```
### Error: "FQBN no válido"
Verifica el modelo exacto de tu NodeMCU y ajusta el FQBN:
- **NodeMCU 1.0 (ESP-12E):** `esp8266:esp8266:nodemcuv2`
- **NodeMCU 0.9:** `esp8266:esp8266:nodemcu`
### Monitor serial no muestra datos
1. Verifica el baud rate (debe ser **115200**)
2. Presiona el botón **RESET** del ESP8266
3. Verifica que el puerto sea correcto
4. Asegúrate de que no haya otro programa usando el puerto serial
### Error durante la carga del firmware
1. **Desconecta el buzzer** temporalmente (desconecta el GND) durante la carga
2. Verifica que no haya otro programa usando el puerto
3. Presiona el botón **RESET** del ESP8266 antes de cargar
4. Si es necesario, mantén presionado el botón **BOOT** mientras cargas
### El script no encuentra el dispositivo
1. El script buscará automáticamente puertos disponibles
2. Si encuentra uno, te preguntará si deseas usarlo
3. Si no encuentra ninguno, verifica:
- Que el cable USB esté bien conectado
- Que el driver USB-Serial esté instalado
- Que tengas permisos para acceder al puerto
---
## 💡 Tips y Mejores Prácticas
### Uso del Script Automático
- El script detecta automáticamente el puerto si el configurado no está disponible
- Los spinners muestran que el proceso está en ejecución
- Los mensajes de error incluyen sugerencias para solucionarlos
- El estado del dispositivo se verifica antes de cada operación crítica
### Desarrollo y Depuración
- **Mantén el monitor serial abierto** mientras pruebas para ver los mensajes de debug
- El código imprime información útil en Serial a 115200 baud
- Si cambias el código, solo necesitas recompilar y cargar (no necesitas cerrar el monitor)
- Para depuración, busca mensajes que empiezan con `--- Checador IOT (Public Version) ---`
### Flujo de Trabajo Recomendado
1. **Primera vez:**
```bash
# Instalar dependencias
arduino-cli core install esp8266:esp8266
arduino-cli lib install "MFRC522" "Adafruit SSD1306" "Adafruit GFX Library" "ArduinoJson" "Time"
# Configurar secrets.h
cp secrets.h.example secrets.h
# Editar secrets.h con tus credenciales
# Compilar y cargar
./compile_and_upload.sh
```
2. **Desarrollo iterativo:**
```bash
# Solo necesitas ejecutar el script
./compile_and_upload.sh
```
3. **Solo verificar compilación:**
```bash
arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
```
### Optimización
- Si tienes problemas de espacio, puedes limpiar archivos de compilación:
```bash
rm -rf build/
```
- Para compilaciones más rápidas, el script ya optimiza el proceso automáticamente
---
## 📝 Resumen de Comandos Rápidos
```bash
# Método rápido (recomendado)
./compile_and_upload.sh
# Comandos individuales
arduino-cli board list # Ver puertos
arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
arduino-cli upload -p /dev/ttyUSB0 --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
arduino-cli monitor -p /dev/ttyUSB0 --config baudrate=115200
# Verificación
arduino-cli lib list # Ver librerías
arduino-cli core list # Ver cores
arduino-cli board listall | grep -i nodemcu # Ver placas disponibles
```
---
## 🎯 Próximos Pasos
Una vez que hayas compilado y cargado el firmware exitosamente:
1. ✅ Verifica que el dispositivo se conecte a WiFi
2. ✅ Revisa el monitor serial para confirmar la sincronización de tiempo
3. ✅ Prueba acercando una tarjeta NFC para verificar la lectura
4. ✅ Verifica que los registros se envíen correctamente al webhook
Para más información sobre el hardware y la configuración, consulta el [README.md](README.md).