mirror of
https://github.com/marcogll/s23_time-attend-v2.git
synced 2026-01-13 21:35:18 +00:00
333 lines
9.4 KiB
Markdown
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).
|
|
|
|
|