Firmware ESP32 - DummyBot task manager
Go to file
javiservices 478bb65d32 feat: firmware v6.1 producción (sin botones)
- Reescritura desde cero con arquitectura modular (Config, UI, Vib, Task, Api, Portal, Wifi)
- NVS en lugar de SPIFFS para persistencia
- WiFi: máquina de estados BOOT→CONNECTING→CONNECTED/FAILED→PORTAL
- OLED: 5 frames nombrados (boot, connecting, idle, task, portal)
- API: cliente HTTP reutilizable con lectura completa del body
- Portal: AP + DNS + WebServer, /test restaura correctamente web/dns
- Cmd serie: B0/B1/B2 simula botones, S estado, P pines, A ADC, C calibrar
- Vibrador: patrón 2-buzz al recibir tarea nueva

WiFi default: PHARMACO/arnoldgym2010 (BatKuevaUp sin internet)
2026-06-18 12:00:17 +02:00
src feat: firmware v6.1 producción (sin botones) 2026-06-18 12:00:17 +02:00
.gitignore v2: TFT_eSPI + SPIFFS + AnimatedGIF, 12 caritas kawaii, polling 30s, vibrador, 3 botones 2026-06-17 02:07:52 +02:00
partitions.csv v2: TFT_eSPI + SPIFFS + AnimatedGIF, 12 caritas kawaii, polling 30s, vibrador, 3 botones 2026-06-17 02:07:52 +02:00
platformio.ini feat: firmware v6.1 producción (sin botones) 2026-06-18 12:00:17 +02:00
README.md v5: OLED SSD1306 128x64 (I2C), captive portal con WiFi scanner y test de conexión 2026-06-17 14:04:03 +02:00

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

# 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):

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

# Test diagnóstico de pantalla (en otra rama)
pio run -e diag -t upload

Licencia

MIT