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

9.4 KiB

🔧 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:

./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:

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

arduino-cli board list

2. Compilar el sketch

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

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

arduino-cli monitor -p /dev/ttyUSB0 --config baudrate=115200

Para salir del monitor: Presiona Ctrl+C

5. Compilar sin cargar (solo verificar errores)

arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino

6. Ver información detallada de compilación

arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 --verbose soul23_time_attendance.ino

7. Limpiar archivos de compilación

rm -rf build/

📦 Instalación de Dependencias

Instalar Core de ESP8266

arduino-cli core install esp8266:esp8266

Instalar Librerías Necesarias

# 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

arduino-cli lib list

Ver cores instalados

arduino-cli core list

Verificar FQBN correcto

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"

cp secrets.h.example secrets.h
# Luego edita secrets.h con tus credenciales

Error: "Puerto no encontrado"

  1. Verifica que el ESP8266 esté conectado:

    arduino-cli board list
    
  2. Si no aparece, verifica permisos:

    sudo usermod -a -G dialout $USER
    

    Luego reinicia sesión o ejecuta:

    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:

    # 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:

    # Solo necesitas ejecutar el script
    ./compile_and_upload.sh
    
  3. Solo verificar compilación:

    arduino-cli compile --fqbn esp8266:esp8266:nodemcuv2 soul23_time_attendance.ino
    

Optimización

  • Si tienes problemas de espacio, puedes limpiar archivos de compilación:
    rm -rf build/
    
  • Para compilaciones más rápidas, el script ya optimiza el proceso automáticamente

📝 Resumen de Comandos Rápidos

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