Construimos una barrera móvil que se abrirá o cerrará gracias a un servo, como el que vimos hace un par de artículos.
Además, la barrera dispone de un radar LD2410 que permite detectar la cercanía de una persona y abrir la barrera, pero no se abrirá si quien se acerca es mi perra.
La barrera está gobernada por un ESP8266 y está conectada y monitorizada desde Home Assistant.
Te dejo aquí los enlaces de compra para los materiales que se han usado en el vídeo:
- NodeMCU ESP8266
- Protoboard
- Cables para prototipos
- Servo Futaba S3003
- LD2410 formato ancho o LD2410 formato alargado
- Este es el Mini PC que gobierna mi domótica
- Si estás empezando con la domótica, te bastará con una Raspberry Pi 4
No te pierdas el vídeo a continuación.
Te dejo a continuación el código usado en ESPHome:
esphome:
name: barrera-automatica
friendly_name: Barrera automática
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "6dAjfGhSYvqP6XIVN90k4J+DRhcnIJtsyXBT6gAOkEQ="
ota:
password: "92f833ebaca41b9b11dd178c65dd6dd3"
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
- ssid: !secret wifi_ssid2
password: !secret wifi_password
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Barrera-Automatica"
password: "hBmoirOKJmjL"
captive_portal:
globals:
- id: pos_servo
type: float
restore_value: no
initial_value: '100'
number:
- platform: template
name: Servo Control
id: posicion
min_value: -100
initial_value: -100
max_value: 100
step: 1
optimistic: true
internal: False
set_action:
then:
- servo.write:
id: mi_servo
level: !lambda 'return x / 100.0;'
servo:
id: mi_servo
output: pwm_output
output:
- platform: esp8266_pwm
id: pwm_output
pin: GPIO5
frequency: 50 Hz
uart:
tx_pin: GPIO1
rx_pin: GPIO3
baud_rate: 256000
parity: NONE
stop_bits: 1
ld2410:
id: ld2410_radar
#sensor:
# - platform: ld2410
# moving_energy:
# name: Radar Move Energy
light:
- platform: status_led
id: led_azul
pin: GPIO2
restore_mode: ALWAYS_ON
binary_sensor:
- platform: homeassistant
name: "Barrera automática"
id: barrera_activada
entity_id: input_boolean.barrera_automatica
- platform: homeassistant
name: "Barrera"
id: barrera
entity_id: input_boolean.barrera
on_state:
then:
if:
condition:
binary_sensor.is_on: barrera
then:
script.execute: abrir_barrera
else:
script.execute: cerrar_barrera
- platform: ld2410
has_moving_target:
name: Radar Moving Target
filters:
- delayed_on_off:
time_on: 50ms
time_off: 3s
on_press: # abrimos la barrera
then:
- if:
condition:
binary_sensor.is_on: barrera_activada
then:
script.execute: abrir_barrera
on_release: # cerramos la barrera
then:
- if:
condition:
binary_sensor.is_on: barrera_activada
then:
script.execute: cerrar_barrera
script:
- id: abrir_barrera
then:
- logger.log: "Abriendo"
- number.set:
id: posicion
value: !lambda return id(pos_servo);
- light.turn_off:
id: led_azul
- id: cerrar_barrera
then:
- logger.log: "Cerrando"
- globals.set:
id: pos_servo
value: '-100'
- number.set:
id: posicion
value: -100
- light.turn_on:
id: led_azul
- delay: 3s
- globals.set:
id: pos_servo
value: '100'

