dummybot-firmware/README.md

3.6 KiB
Raw Permalink Blame History

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