Files
Arduino-Car/firmware
Natxo1000 b9bd18a568 firmware: v10 — fix OTA ESP8266 memoria + idioma de pitidos
Fix OTA ESP8266 (pitidos cada arranque):
- BearSSL ocupa ~20KB de heap. El cliente de version.txt y el cliente
  de firmware.bin coexistian → sin heap suficiente → descarga falla.
- Ahora el primer cliente se destruye en su scope {} antes de crear
  el segundo. setBufferSizes(512,512) reduce uso BearSSL durante descarga.

Idioma de pitidos:
- 2 pitidos: handshake OK, ambas placas conectadas y listas
- 3 pitidos: ESP32-CAM actualizandose via OTA
- 4 pitidos: ESP8266 actualizandose via OTA

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-02 14:49:11 +02:00
..
2026-06-02 09:52:51 +02:00

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.bin
  • ESP8266/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";