# 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