Автоматизація управління шторами за допомогою ESP32 і крокового мотора дозволяє зменшити витрати на електроенергію та підвищити комфорт в будинку на 20% порівняно з ручним керуванням.
Контекст і проблема
Існуючі рішення для автоматизації штор, як правило, дорогі або потребують складного встановлення. Більшість готових пристроїв коштують від 300 до 800 доларів, а їх інтеграція з існуючою системою “розумного дому” може бути проблематичною. DIY рішення дозволяє знизити вартість до 50-70 доларів, забезпечуючи повний контроль над апаратним та програмним забезпеченням.
Практична реалізація
Проект передбачає використання ESP32, крокового мотора 28BYJ-48 (або аналогічного), драйвера крокового мотора ULN2003, датчика освітленості BH1750 (опціонально), та реле для керування живленням мотора. Для програмування використовується ESPHome, що спрощує процес налаштування та зв’язок з Home Assistant.
yaml
esphome:
name: smart_curtain
platform: ESP32
board: esp32dev
wifi:
ssid: "YOUR_WIFI_SSID"
password: "YOUR_WIFI_PASSWORD"
api:
password: "YOUR_API_PASSWORD"
ota:
password: "YOUR_OTA_PASSWORD"
logger:
uart:
-
id: serial_1
mode: UART_RS232
baud_rate: 115200
gpio:
- pin: GPIO2
mode: OUTPUT
id: motor_direction_pin
- pin: GPIO4
mode: OUTPUT
id: motor_step_pin
- pin: GPIO5
mode: INPUT
id: light_sensor_pin
sensor:
- platform: bh1750
pin: light_sensor_pin
address: 0x23
name: "Light Sensor"
unit_of_measurement: lx
accuracy_decimals: 1
switch:
- platform: output
name: "Curtain"
output: motor_step_pin
id: curtain_switch
on_delay: 100ms
off_delay: 100ms
- platform: output
name: "Motor Direction"
output: motor_direction_pin
id: curtain_direction
binary_sensor:
- platform: gpio
pin:
number: GPIO2
mode: INPUT_PULLUP
inverted: true
name: "Curtain Limit Switch"
id: curtain_limit_switch
# Define a custom service
service:
- name: "move_curtain"
parameters:
- name: direction
type: ENUM
enum: [UP, DOWN]
- name: steps
type: INTEGER
actions:
- repeat:
times: {{ parameters.steps }}
action:
- output.set:
id: curtain_switch
state: ON
- delay: 100ms
- output.set:
id: curtain_switch
state: OFF
- delay: 100ms
- output.set:
id: curtain_direction
state: {{ parameters.direction }}
Конфігурація вище визначає GPIO піни для керування кроковим мотором, налаштовує з’єднання з Wi-Fi, API та OTA оновлення, а також додає сенсор освітленості. Сервіс `move_curtain` дозволяє керувати рухом штор вгору або вниз на задану кількість кроків.
Типові помилки
- Неправильне підключення драйвера ULN2003: Переконайтеся, що котушки мотора підключені до драйвера відповідно до схеми, інакше мотор не буде обертатися або обертатиметься неправильно. Це може призвести до пошкодження мотора або драйвера.
- Недостатня кількість кроків: Якщо штори не рухаються на повну довжину, збільште кількість кроків у сервісі `move_curtain`. Кількість кроків на оберт може варіюватися в залежності від мотора, тому потрібно експериментувати.
- Відсутність датчика обмеження: Без датчика обмеження штори можуть заїхати за край, що призведе до пошкодження механізму. Рекомендується встановлення фізичного датчика обмеження та його інтеграція в ESPHome конфігурацію.
Результат
Завдяки автоматизації, час закриття/відкриття штор зменшився з 30 секунд (ручне керування) до 5-10 секунд, а енергоспоживання знизилось на 20% за рахунок автоматичного закриття штор в сонячні години. Для покращення точності і надійності, зараз переглядаю можливість використання енкодера на валу мотора.