ESP8266: - Eliminado completamente WiFi, BearSSL, HTTPClient, ESPhttpUpdate - Firmware pasa de 375KB a 240KB (sin stack WiFi) - Sin interferencia de WiFi con analogWrite/PWM de motores - Se mantiene: waitForReady(), 2 pitidos conexion, watchdog 1.5s - Solo se actualiza por USB (el hardware cambia poco) ESP32-CAM: - OTA sin cambios, version -> 20 - Indicador OTA: 3 x Serial H1/H0 -> 3 flashes LED GPIO4 (el ESP8266 estaba en waitForReady() y no procesaba Serial) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Firmware OTA
Carpeta de binarios compilados. Cuando el coche arranca, cada placa
consulta su version.txt, lo compara con la versión en el código,
y descarga firmware.bin si hay novedad.
Estructura
firmware/
├── esp32cam/
│ ├── version.txt ← número entero (1, 2, 3…)
│ └── firmware.bin ← binario compilado
└── esp8266/
├── version.txt
└── firmware.bin
Publicar nueva versión
1 · Compilar el binario
En Arduino IDE:
Sketch → Exportar binario compilado (o Ctrl+Alt+S)
El .bin aparece en la carpeta del sketch:
Esp32Cam/Esp32Cam.ino.binESP8266/ESP8266.ino.bin
2 · Copiar al repo
# ESP32-CAM
cp Esp32Cam/Esp32Cam.ino.bin firmware/esp32cam/firmware.bin
# ESP8266 / Wemos D1
cp ESP8266/ESP8266.ino.bin firmware/esp8266/firmware.bin
3 · Incrementar version.txt
Edita el archivo de la placa que has cambiado.
El número debe ser mayor que el anterior — solo el entero:
2
4 · Subir al repo
git add firmware/
git commit -m "firmware: v2 — descripción del cambio"
git push
Las placas actualizarán en el próximo arranque automáticamente.
Primera vez (configuración inicial)
Config en el código
Antes de flashear por primera vez, edita en cada .ino:
| Variable | Dónde | Valor |
|---|---|---|
GITEA_HOST |
Ambos .ino |
http://IP-DE-TU-GITEA:3000 |
GITEA_OWNER |
Ambos .ino |
Tu usuario Gitea |
GITEA_REPO |
Ambos .ino |
Nombre del repositorio |
WIFI_SSID |
ESP8266.ino |
Nombre de tu WiFi |
WIFI_PASS |
ESP8266.ino |
Contraseña WiFi |
Partición ESP32-CAM (importante)
El OTA necesita dos particiones de app. El partitions.csv ya
está actualizado, pero la primera vez hay que flashear por USB para
que el IDE grabe la nueva tabla de particiones.
A partir de ese flash inicial, las actualizaciones son 100% OTA.
Subir el primer firmware.bin
Compila cada sketch, copia los .bin a sus carpetas y haz push.
La version.txt inicial vale 1 (ya está puesta).
Repo privado en Gitea
Si el repo es privado, añade tu token al HOST en el código:
#define GITEA_HOST "http://TOKEN@IP:3000"
O usa la URL completa con token en la query:
String base = String("http://IP:3000/owner/repo/raw/branch/main/firmware/esp32cam/")
+ "?token=TU_TOKEN";