Files
Arduino-Car/firmware/README.md
Natxo1000 dacc913c5a Coche RC con OTA via Gitea
- ESP32-CAM: servidor web, stream MJPEG, control motores via Serial
- ESP8266/Wemos D1: control motores DC, servos pan/tilt, buzzer
- OTA automatico en arranque via Gitea (HTTPS, WiFiClientSecure)
- Interfaz web rediseñada: full-screen, tema gaming, reconexion de stream
- partitions.csv con esquema dual OTA (2x1.75MB) para ESP32-CAM
- firmware/ con version.txt inicial para cada placa

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

104 lines
2.5 KiB
Markdown

# 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
```bash
# 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
```bash
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:
```cpp
#define GITEA_HOST "http://TOKEN@IP:3000"
```
O usa la URL completa con token en la query:
```cpp
String base = String("http://IP:3000/owner/repo/raw/branch/main/firmware/esp32cam/")
+ "?token=TU_TOKEN";
```