104 lines
3.6 KiB
Markdown
104 lines
3.6 KiB
Markdown
# 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 |