Блог 2Smart (RU)

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

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

Зачем нужна еще одна статья о создании контроллера?


Подробное описание сборки и прошивки контроллера адресных светодиодных лент приводится здесь. В первой статье описано создание прошивки с использованием SDK платформы - мощного инструмента, который рекомендуется большинству вендоров.

Тем не менее, во многих случаях ESPHome является достаточным с точки зрения функционала инструментом. Его главное преимущество - простота. Используя ESPHome, вам будет проще модифицировать прошивку и добавлять новый функционал - например, подключать дополнительные датчики и создавать умный мультитул.

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

Что нужно для начала работы


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

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


1 - Войдите в кабинет вендора - https://cloud.2smart.com/.

2 - На странице “Продукты” нажмите “Создать продукт” (аналогичная кнопка на главном экране запускает пошаговый помощник - последовательность шагов в инструкции ниже может немного отличаться).

Экран Продукты кабинета вендора 2Smart Cloud

3 - Выберите микроконтроллер - ESP32.

Выбор микроконтроллера для создания устройства

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

Название и иконка устройства

5 - Нажмите “Создать прошивку” и выберите базу 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 - Сохраните код прошивки. На экране продукта нажмите “Собрать прошивку” для Sandbox варианта. Укажите данные вашей Wi-Fi сети - они будут переданы устройству в коде тестовой прошивки для быстрого подключения к интернету.

Настройки Wi-Fi для сборки Sandbox прошивки

8 - Дождитесь, пока прошивка будет собрана. Нажмите “Скачать”.

Сборка Sandbox прошивки

Ссылка на скачивание архива с прошивкой

9 - Подключите контроллер к компьютеру при помощи USB кабеля.

ВНИМАНИЕ! Отключите LED ленту от контроллера, прежде чем приступать к процессу прошивки!

10 - Распакуйте скачанный архив, войдите в папку с полученными файлами и ознакомьтесь с инструкцией по прошивке в файле readme.md.

Прошивка возможна с устройств на Mac OS и Linux – мы использовали 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 в поле “Статус устройства”.

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

14 - Нажмите “Предпросмотр состояния” – вам будут доступны данные всех сенсоров вашего устройства.

Данные сенсоров устройства

15 - Нажмите “Создать интерфейс” – откроется эмулятор мобильного приложения.

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

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

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

17 - Обратите внимание – вы можете управлять устройством с экрана компьютера уже на этом этапе. Завершив настройку интерфейса, нажмите “Сохранить”.

Эмулятор мобильного приложения

18 - Запустите мобильное приложение 2Smart Cloud на смартфоне – вероятно, вы уже использовали его для подключения и управления виртуальной лампой. Выйдите из своего аккаунта, включите Sandbox режим и авторизуйтесь с тем логином и паролем, который вы использовали для регистрации в кабинете вендора.

Включение Sandbox режима в мобильном приложении

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

Список подключенные устройств в Sandbox режиме

Интерфейс управления устройством в Sandbox режиме

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

20 - Вернитесь на платформу и нажмите “Собрать прошивку” для Production варианта. Будет собрана финальная версия прошивки, которая не содержит параметров вашей Wi-Fi сети и других специфических строк кода, необходимых для работы в тестовом окружении. Скачайте получивший архив.

Сборка Production прошивки

21 - Нажмите “Опубликовать” - продукт будет доступен пользователям для привязки к мобильному устройству.

Устройство успешно опубликовано и доступно пользователям

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

ВНИМАНИЕ! Отключите LED ленту от контроллера, прежде чем приступать к процессу прошивки!

Используйте следующие команды:
./2smart.sh erase_flash -d /dev/tty.SLAB_USBtoUART
./2smart.sh write -d /dev/tty.SLAB_USBtoUART

Очистка памяти микроконтроллера и прошивка устройства

23 - Вернитесь в мобильное приложение, выйдите из учетной записи и отключите Sandbox режим. Авторизуйтесь с любыми параметрами как обычный пользователь.

Отключение Sandbox режима в мобильном приложении

24 - Нажмите кнопку “Добавить устройство” на экране “Устройства” – запустится процедура сопряжения.

Сопряжение устройства с мобильным приложением 2Smart Cloud

25 - Выберите в списке доступных для привязки к приложению устройств “Другие”. Затем нажмите “Продолжить”.

Сопряжение устройства с мобильным приложением 2Smart Cloud

Сопряжение устройства с мобильным приложением 2Smart Cloud

26 - Укажите данные вашей Wi-Fi сети, которые будут переданы устройству для подключения к интернету.

Данные WI-Fi сети для подключения устройства

27 - После прошивки Production версией кода микроконтроллер раздает точку доступа Wi-Fi с названием, которое соответствует названию вашего устройства на платформе. Подключитесь к этой сети на следующем шаге.

Переход к настройкам Wi-Fi мобильного устройства

Настройки Wi-Fi мобильного устройства

28 - Дождитесь завершения процедуры сопряжения.

Сопряжение устройства с мобильным приложением 2Smart Cloud

Сопряжение устройства с мобильным приложением 2Smart Cloud

29 - Теперь ваш контроллер светодиодных лент отображается на экране “Устройства”. Убедитесь, что вы можете управлять им с экрана смартфона.

Список подключенных устройств

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

Простота - главное преимущество ESPHome. Поэтому, даже если вендоры изначально планируют использовать на готовых устройствах прошивку на основе нашего SDK, мы рекомендуем тестировать продукт, используя более простые инструменты. Это позволяет сократить время на создание IoT устройства.


Made on
Tilda