06. Diseno de hardware - diegogopa/Challenge-IOT GitHub Wiki

6. Diseño de hardware

6.1 Distribución de pines

Dispositivo Pin del dispositivo ESP32 Observación
DHT22 DATA GPIO 4 —
HC-SR04 TRIG GPIO 5 Salida 3.3 V, aceptada por el sensor
HC-SR04 ECHO GPIO 18 directo
GUVA-S12SD OUT GPIO 34 Entrada solo-ADC, atenuación 2.5 dB
OLED SH1106 SDA GPIO 21 Bus I2C compartido, dirección 0x3C
OLED SH1106 SCL GPIO 23 Bus I2C compartido
BMP180 SDA GPIO 21 Bus I2C compartido, dirección 0x77
BMP180 SCL GPIO 23 Bus I2C compartido
Buzzer + GPIO 33 —
Todos GND GND Referencia común

6.2 Conexión del HC-SR04

La señal ECHO del HC-SR04 se conectó directamente al GPIO 18 del ESP32.

El firmware toma 5 muestras por ciclo (separadas 50 ms) y descarta lecturas fuera de 3–25 cm; si en 5 ciclos seguidos no obtiene al menos 3 muestras válidas, declara ERROR_SENSOR.

6.3 Conexión del DHT22

DHT22
 ├── VCC  → 3.3 V
 ├── DATA → GPIO 4
 └── GND  → GND

Una lectura se considera válida si no es NaN, la temperatura está entre −40 y 80 °C y la humedad entre 0 y 100 %. Tres lecturas inválidas seguidas activan la falla FALLA_DHT22.

6.4 Conexión del GUVA-S12SD

GUVA-S12SD
 ├── VCC → 3.3 V
 ├── OUT → GPIO 34 (ADC1)
 └── GND → GND

Se configura el ADC a 12 bits con atenuación de 2.5 dB (rango útil hasta ≈ 1.25 V, que corresponde a índice UV ≈ 11) y se lee con analogReadMilliVolts(), que aplica la calibración de fábrica del ADC. Se promedian 16 muestras por ciclo.

6.5 Bus I2C compartido: OLED y BMP180

            3.3 V ─────────┬─────────────┐
                           │             │
 GPIO 21 (SDA) ────────────┼──── SDA ────┼──── SDA
 GPIO 23 (SCL) ────────────┼──── SCL ────┼──── SCL
                        OLED (0x3C)   BMP180 (0x77)
 GND ──────────────────────┴─────────────┘
Wire.begin(SDA_PIN, SCL_PIN);   // 21, 23
Wire.setClock(100000);          // 100 kHz (modo estándar)
Wire.setTimeOut(100);           // evita bloqueos si un dispositivo se desconecta

Ambos módulos incluyen resistencias de pull-up en la placa. Al compartir el bus:

  • Cada dispositivo tiene una dirección distinta, por lo que no hay conflicto.
  • El acceso desde la tarea de sensado (BMP180) y desde el ciclo principal (OLED) se serializa con mutexI2C.
  • La presencia de cada dispositivo se verifica con una transacción vacía (Wire.beginTransmission(addr) / endTransmission() == 0), lo que permite detectar su desconexión y reinicializarlo cuando vuelve.
  • Si se corta SDA o SCL se pierden ambos dispositivos a la vez; por eso las pruebas de desconexión individual se hacen retirando la alimentación del módulo (sección 11.6).

6.6 Conexión del buzzer

Buzzer activo
 ├── + → GPIO 33
 └── - → GND

6.7 Alimentación

Todos los componentes comparten una referencia común de GND. El ESP32 se alimenta por su conector USB/VIN a 5 V; el regulador de la placa entrega 3.3 V al DHT22, GUVA-S12SD, BMP180 y OLED, y el HC-SR04 toma 5 V de VIN.

Parámetro Valor
Fuente Versátil: puede usarse una toma de corriente o una batería portátil
Voltaje 5 V
Corriente nominal de la fuente 5 V / 2 A
Consumo medido Ver sección 11.7
Protección Electrónica alojada dentro de la caja de protección (sección 17)

6.8 Consideraciones de seguridad eléctrica

  • Compatibilidad de niveles lógicos: el resto de dispositivos opera a 3.3 V.
  • GND común para todos los módulos.
  • Fuente capaz de entregar los picos de corriente del WiFi.
  • Protección de las conexiones frente a humedad y sujeción mecánica dentro de la caja.
  • El ECHO del HC-SR04 (5 V) entra directo al GPIO 18 (3.3 V). Funcionó en las pruebas, pero excede la tensión nominal del pin.