dummybot-firmware/README.md

104 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# DummyBot Firmware
Firmware del ESP32 para **DummyBot**, task manager para TDAH con pantalla OLED.
## Hardware
- **ESP32-D0WD-V3** (DevKitC / WROOM-32, 4 MB flash)
- **Pantalla OLED SSD1306 0.96"** (128x64, I2C, 4 pines)
- **3× TTP223** (botones táctiles: Siguiente / Hecha / Snooze)
- **1× motor vibrador 1027** (3V DC, controlado por MOSFET en GPIO 25)
### Cableado
```
ESP32 (WROOM-32) OLED SSD1306 0.96" (GM009605 v4.x)
───────────────────── ─────────────────────────
3V3 ───────▶ VDD (también OK con 5V)
GND ───────▶ GND
GPIO 22 ───────▶ SCK (I2C SCL)
GPIO 21 ───────▶ SDA (I2C SDA)
ESP32 TTP223 (×3)
───────── ───────────
GPIO 26 ──▶ SIG TTP223 #1 Siguiente tarea
GPIO 27 ──▶ SIG TTP223 #2 Marcar como hecha
GPIO 14 ──▶ SIG TTP223 #3 Snooze 5 min
3V3 ──▶ VCC de los 3
GND ──▶ GND de los 3
ESP32 Módulo vibrador (con MOSFET)
───────── ──────────────────────────────
GPIO 25 ──▶ Gate del MOSFET
3V3 o 5V ──▶ V+ del vibrador
GND ──▶ GND del vibrador
```
Para el motor 1027 (3V, 70-100 mA), un MOSFET AO3400 o 2N7000 + resistencia 100Ω en gate. Si solo tienes NPN (BC547/2N2222/S8050), esquema alternativo: motor entre 3V3 y colector, resistencia 1kΩ en base.
## Build
```bash
# 1. Instalar PlatformIO (si no lo tienes)
pip install platformio
# 2. Compilar
pio run
# 3. Flashear
pio run -t upload --upload-port /dev/ttyUSB0
# 4. Monitor serie (opcional, para ver logs)
pio device monitor --port /dev/ttyUSB0 --baud 115200
```
## Configurar
Hay dos formas:
**A) Hardcodear en `platformio.ini`** (más cómodo, editas antes de flashear):
```ini
build_flags =
-DDEFAULT_WIFI_SSID=\"TuWiFi\"
-DDEFAULT_WIFI_PASS=\"TuPassword\"
-DBACKEND_URL=\"http://tu-servidor.com\"
-DDEFAULT_DEVICE_TOKEN=\"tu-token-del-dispositivo\"
```
**B) Captive portal** (recomendado si vas a dar el bot a otra persona):
1. Flashear el firmware sin configurar.
2. En el primer arranque, el bot abre un AP `DummyBot-Setup` (pass `dummybot`).
3. Conéctate desde el móvil y abre `http://192.168.4.1/`.
4. Verás una lista de redes WiFi detectadas (con intensidad en dBm).
5. Selecciona la tuya, escribe la contraseña, el token y guarda.
6. El bot reinicia y conecta solo.
Para resetear la configuración guardada: mantén pulsado el botón **BOOT (GPIO 0)** durante 5 s al arrancar.
## Pantalla OLED
La OLED muestra:
- **Sin tareas**: "Sin tareas :)" + "Añade desde la web"
- **Con tarea**: nombre de la tarea (en grande), prioridad en el header
- **Conectando**: "WiFi..." con puntos animados
- **Portal cautivo**: "Config WiFi" + AP + contraseña
## Funcionalidad
- **WiFi**: conexión automática con reconexión. Captive portal para configurar.
- **HTTP**: polling cada 30 s a `BACKEND_URL/api/device/tasks/pending` con token de dispositivo.
- **3 botones**: Siguiente (pasa a la siguiente), Hecha (marca como hecha), Snooze (pospone 5 min).
- **Vibrador**: vibra cuando llega una tarea nueva (patrón de 2 buzzes).
- **Captive portal**: lista redes WiFi detectadas con dBm, prueba conexión antes de guardar.
## Tests
```bash
# Test diagnóstico de pantalla (en otra rama)
pio run -e diag -t upload
```
## Licencia
MIT