Блог 2Smart (UK)

Контролер LED стрічок на базі ESPHome – розумний пристрій без програмування

Контролер LED стрічок на базі ESPHome – розумний пристрій без програмування
Ми вже описували створення контролера адресних світлодіодних стрічок із реалізацією прошивки на базі SDK 2Smart Cloud. У цій статті буде показано, як написати повністю сумісну прошивку для цього ж контролера, але вже на базі ESPHome.

Навіщо потрібна ще одна стаття про створення контролера?


Детальний опис складання та прошивки контролера адресних світлодіодних стрічок наводиться тут. У першій статті описано створення прошивки з використанням платформи SDK - потужного інструменту, який рекомендується більшості вендорів.

Тим не менш, у багатьох випадках ESPHome є достатнім з точки зору функціоналу інструментом. Його головна перевага – простота. Використовуючи ESPHome, вам буде простіше модифікувати прошивку та додавати новий функціонал – наприклад, підключати додаткові датчики та створювати розумний мультитул.

Конфігурація прошивки, яка наводиться в цій статті, може використовуватися як частина конфігурації коду більш складного пристрою. Також ви можете на прикладі контролера LED стрічок спробувати у справі та порівняти два інструменти створення прошивки для мікроконтролера ESP32: SDK та ESPHome.

Що потрібно для початку роботи


  • Контролер - список комплектуючих та опис складання наведено у попередній статті.
  • Адресна світлодіодна стрічка.
  • Блок живлення.
  • USB-microUSB кабель для прошивки.

Створюємо прошивку контролера на базі ESPHome


1. Увійдіть до кабінету вендора - https://cloud.2smart.com/.

2. На сторінці "Products" натисніть "Add Product" (аналогічна кнопка на головному екрані запускає покроковий помічник - послідовність кроків в інструкції нижче може трохи відрізнятися).

Екран Products кабінету вендора 2Smart Cloud

3. Виберіть мікроконтролер – ESP32.

Вибір мікроконтролера для створення пристрою

4. Додайте назву пристрою та іконку - вони відображатимуться в мобільному додатку 2Smart Cloud.

Назва та іконка пристрою

5. Натисніть “Add Firmware” та виберіть базу ESPHome.

Вибір бази прошивки

6. Вставте код прошивки контролера у нове вікно. Створити код допоможе документація та готові приклади для ESPHome. Ми використовували такі джерела:


Вибравши відповідні для нашої мети рядки коду, ми додали ефекти контролера та включили у прошивку підтримку кнопки Reset та сенсора Wi-Fi сигналу.

Повний код нашого прикладу:

light:
- platform: fastled_clockless
chipset: WS2812B
pin: 18
num_leds: 300
rgb_order: GRB
name: FastLED WS2812 Light
id: light_rgb
effects:
- Random: null
- pulse:
name: "Fast Pulse"
transition_length: 0.5s
update_interval: 0.5s
- strobe: null
- addressable_scan:
move_interval: 50ms
scan_width: 4
- addressable_random_twinkle:
twinkle_probability: 20%
progress_interval: 100ms
- addressable_color_wipe: null
- addressable_rainbow: null
- addressable_fireworks:
name: Fireworks Effect With Custom Values
update_interval: 32ms
spark_probability: 10%
use_random_color: false
fade_out_rate: 120
binary_sensor:
- platform: gpio
id: led_switch
pin:
number: GPIO5
mode: INPUT_PULLUP
inverted: true
name: Led switch
on_click:
then:
- light.toggle: light_rgb
- platform: gpio
id: change_effect
pin:
number: GPIO4
mode: INPUT_PULLUP
inverted: true
name: Change effect
on_click:
then:
- lambda: !<!lambda> |-
uint32_t total = id(light_rgb)->get_effects().size();
uint32_t curr_idx = 0;
uint32_t i = 0;
std::string curr_effect = id(light_rgb)->get_effect_name();
auto call = id(light_rgb)->turn_on();

// set first effect in list
if (strcasecmp(curr_effect.c_str(), "none") == 0) {
call.set_effect(1);
call.perform();

return;
}

for (auto *effect : id(light_rgb)->get_effects()) {
i++;
if (strcasecmp(effect->get_name().c_str(), curr_effect.c_str()) == 0)
curr_idx = i;
}

if (curr_idx == total) {
call.set_effect(0);
} else {
call.set_effect(curr_idx + 1);
}

call.perform();
- platform: reset_sensor
pin:
number: GPIO0
mode: INPUT_PULLUP
inverted: true
name: Reset button
filters:
- delayed_on: 1s
sensor:
- platform: wifi_signal
name: WiFi1 Signal
update_interval: 30s
id: wifi_config

Код прошивки

7. Збережіть код прошивки. На екрані продукту натисніть "Build Firmware" для тестового пристрою. Вкажіть дані вашої Wi-Fi мережі - вони будуть передані пристрої в коді тестової прошивки для швидкого підключення до інтернету.

Налаштування Wi-Fi для збірки тестової прошивки

8. Дочекайтеся, доки прошивка буде зібрана. Натисніть "Download".

Складання тестової прошивки

Посилання на завантаження архіву з прошивкою

9. Підключіть контролер до комп'ютера за допомогою кабелю USB.

УВАГА! Відключіть LED стрічку від контролера, перш ніж приступати до процесу прошивки!

10. Розпакуйте завантажений архів, увійдіть до папки з отриманими файлами та ознайомтеся з інструкцією з прошивки у файлі readme.md.

Прошивка можлива з пристроїв на Mac OS, Linux та Windows – ми використовували Mac OS.

Вміст папки з прошивкою

11. Очистіть пам'ять мікроконтролера - у Mac OS використовується команда ./2smart.sh erase_flash -d /dev/tty.SLAB_USBtoUART.

Очищення пам'яті мікроконтролера

12. Дочекайтесь очищення і запустіть команду установки прошивки . /2smart.sh write -d /dev/tty.SLAB_USBtoUART

Установка прошивки на мікроконтролер

13. Після завершення процесу прошивки поверніться на платформу – пристрій автоматично підключиться до тестового оточення. Про успішне підключення говорить зелений індикатор та статус Ready у полі "Device status".

Успішне підключення тестового пристрою до платформи

14. Натисніть “Preview State” – доступні дані всіх сенсорів пристрою.

Дані сенсорів пристрою

15. Натисніть “Add Layout” – відкриється емулятор мобільного додатка.

Налаштування інтерфейсу мобільного додатка для керування пристроєм

16. Всі сенсори пристрою автоматично створюють відповідні віджети. Ви можете настроїти зовнішній вигляд додатка, як вам подобається, у тому числі вибрати віджети інших типів замість тих, що встановлені за замовчуванням, а також встановити зручний порядок віджетів на екрані.

Вибір віджета для керування функціями пристрою

17. Зверніть увагу – ви можете керувати пристроєм із екрана комп'ютера вже на цьому етапі. Після завершення налаштування інтерфейсу натисніть “Save”.

Емулятор мобільного додатка

18. Запустіть мобільний додаток 2Smart Cloud на смартфоні - ймовірно, ви вже використовували його для підключення та управління віртуальною лампою. Увійдіть з тим же ім'ям користувача та паролем, які ви використовували для реєстрації в обліковому записі розробника.

19. Ваш новий пристрій вже відображається у додатку – протестуйте функціонал усіх віджетів.

Список підключених пристроїв

Інтерфейс управління пристроєм

Приклад віджета в інтерфейсі мобільного додатка 2Smart Cloud

20. Поверніться на платформу та натисніть “Build firmware” для Production варіанта. Буде зібрано фінальну версію прошивки, яка не містить параметрів вашої Wi-Fi мережі та інших специфічних рядків коду, необхідних для роботи у тестовому оточенні. Завантажте архів, що отримали.

Складання Production прошивки

21. Натисніть “Publish” – продукт буде доступний користувачам для прив'язки до мобільного пристрою.

Пристрій успішно опублікований та доступний користувачам

22. Прошийте пристрій Production прошивкою аналогічно до тестової прошивки. Не забудьте очистити пам'ять мікроконтролера.

УВАГА! Відключіть LED стрічку від контролера, перш ніж приступати до процесу прошивки!

Використовуйте такі команди:

./2smart.sh erase_flash -d /dev/tty.SLAB_USBtoUART
./2smart.sh write -d /dev/tty.SLAB_USBtoUART

Очищення пам'яті мікроконтролера та прошивка пристрою

23. Поверніться в мобільний додаток, увійдіть із будь-якими параметрами як звичайний користувач.

24. Натисніть кнопку "Add new device" на екрані "Devices" - запуститься процедура приєднання.

Приєднання пристрою з мобільним додатком 2Smart Cloud

25. Виберіть у списку доступних для прив'язки до додатка “Others”. Потім натисніть "Continue".

Сполучення пристрою з мобільним додатком 2Smart Cloud

Сполучення пристрою з мобільним додатком 2Smart Cloud

26. Вкажіть дані вашої Wi-Fi мережі, які будуть надіслані пристрою для підключення до інтернету.

Дані WI-Fi мережі для підключення пристрою

27. Після прошивки Production версією коду мікроконтролер роздає точку доступу Wi-Fi під назвою, яка відповідає назві вашого пристрою на платформі. Підключіться до цієї мережі на наступному етапі.

Перехід до налаштувань мобільного пристрою

Налаштування Wi-Fi мобільного пристрою

28. Дочекайтеся завершення процедури приєднання.

Приєднання пристрою з мобільним додатком 2Smart Cloud

Приєднання пристрою з мобільним додатком 2Smart Cloud

29. Тепер контролер світлодіодних стрічок відображається на екрані “Devices”. Переконайтеся, що ви можете керувати ним із екрана смартфона.

Список підключених пристроїв

На цьому все! Ми створили контролер LED стрічок без програмування та використання сторонніх програм. Код прошивки для ESPHome був написаний документацією до цієї бази - фактично ми просто взяли готові приклади і використовували їх на своєму пристрої.

Простота – головна перевага ESPHome. Тому навіть якщо вендори спочатку планують використовувати на готових пристроях прошивку на основі нашого SDK, ми рекомендуємо тестувати продукт, використовуючи простіші інструменти. Це дозволяє скоротити час створення IoT пристрою.
Made on
Tilda