En este apartado, os voy a enseñar como conectar una tira de LED RGB y un sensor de temperatura y humedad DHT11, a la placa ESP32 CAM.
En este caso, vamos a usar una placa ESP32 CAM, a la que le falla la conexión de la cámara, pero podéis modificar el código para usarlo con otro tipo de placa.
La finalidad de este proyecto, es controlar la tira de LED que hemos colocado detrás de un cuadro y debajo de la cama de nuestro dormitorio, con el ESP32 a través de wifi, conectado a nuestro Home Assistant, para su posterior manejo y automatización.
Los materiales que vamos a usar son los siguientes:
- Soldador
- Estaño
- Cables
- Placa perforada. Aliexpress o Amazon
- 3 resistencias de 10Kohms. Aliexpress o Amazon
- Conectores rapidos. Aliexpress o Amazon
- Placa ESP32 CAM. Aliexpress o Amazon
- DHT11. Aliexpress o Amazon
- TIP120. Aliexpress o Amazon
Esquema de montaje:

El sensor DHT11, irá conectado al pin GPIO2 y los pines positivo y negativo, a sus correspondientes pines en el ESP32.
Código para ESPHome en Home Assistant:
esphome:
name: luz-cama
esp32:
board: esp32dev
framework:
type: arduino
#EN MI CASO TENGO 3 REDES WIFI EN CASO DE FALLO DE ALGUNA, SE CONECTA A OTRA
wifi:
networks:
- ssid: NOMBRE RED WIFI 1
password: CONTRASEÑA WIFI
- ssid: NOMBRE RED WIFI 2
password: CONTRASEÑA WIFI
- ssid: NOMBRE RED WIFI 3
password: CONTRASEÑA WIFI
#QUITAR ALMOHADILLAS EN CASO DE USAR MQTT
# mqtt:
# broker: DIRECCION IP DEL SERVIDOR MQTT SI TENEIS
# username: USUARIO MQTT SI TENEIS
# password: CONTRASEÑA MQTT SI TENEIS
logger:
#level: INFO
api:
captive_portal:
ota:
password: "CONTRASEÑA DE OTA SI TENEIS"
time:
- platform: homeassistant
#DECLARACION DEL SENSOR DE HUMEDAD Y TEMPERATURA CON INTERVALO DE 5 MINUTOS
sensor:
- platform: dht
pin: GPIO2
model: DHT11
temperature:
name: "Temperatura dormitorio principal"
humidity:
name: "Humedad dormitorio principal"
update_interval: 300s
#SENSOR PARA SABER LA INTENSIDAD DE LA SEÑAL WIFI DEL ESP32
- platform: wifi_signal
name: "señal wifi luz cama"
update_interval: 3600s
#PARTE DE DECLARACION DE PINES DE SALIDA
output:
- platform: ledc
pin: GPIO12
id: GPIO12
frequency: 100 Hz
max_power: 100%
- platform: ledc
pin: GPIO13
id: GPIO13
frequency: 100 Hz
max_power: 100%
- platform: ledc
pin: GPIO15
id: GPIO15
frequency: 100 Hz
max_power: 100%
#PARTE DEL FUNCIONAMIENTO DE LOS LED
light:
- platform: rgb
red: GPIO13
green: GPIO15
blue: GPIO12
name: "luz cama"
id: strip_porta
effects:
# PARAMETROS POR DEFECTO
- random:
# PARAMETROS CUSTOMIZADOS
- random:
name: "Efecto aleatorio lento"
transition_length: 30s
update_interval: 30s
- random:
name: "Efecto aleatorio rápido"
transition_length: 4s
update_interval: 5s
- strobe:
name: Efecto estroboscópico con valores customizados
colors:
- state: True
brightness: 100%
red: 100%
green: 90%
blue: 0%
duration: 500ms
- state: False
duration: 250ms
- state: True
brightness: 100%
red: 0%
green: 100%
blue: 0%
duration: 500ms
- flicker:
- flicker:
name: Flicker Effect With Custom Values
alpha: 95%
intensity: 1.5%
- lambda:
name: Mi efecto customizado
update_interval: 1s
lambda: |-
static int state = 0;
auto call = id(strip_porta).turn_on();
// Transtion of 1000ms = 1s
call.set_transition_length(1000);
if (state == 0) {
call.set_rgb(1.0, 1.0, 1.0);
} else if (state == 1) {
call.set_rgb(1.0, 0.0, 1.0);
} else if (state == 2) {
call.set_rgb(0.0, 0.0, 1.0);
} else {
call.set_rgb(1.0, 0.0, 0.0);
}
call.perform();
state += 1;
if (state == 4)
state = 0;
#PARTE PARA EL SERVIDOR WEB
web_server:
port: 80
#BOTON VIRTUAL PARA REINICIAR EL ESP32
button:
- platform: restart
name: "reinicio luz cama"

