- 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>
104 lines
2.5 KiB
Markdown
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";
|
|
```
|