Итак, нам понадобится:
-светодиодная лента с контроллерами WS2812
-контроллер на базе ESP8266, в идеале это Wemos D1 mini, как у меня
-блок питания под ленту и контроллер
-тактовая кнопка и резистор на 10к
Для начала, подключим кнопку, как показано в этом примере, только пин для кнопки будем использовать D1, в обозначениях Wemos D1 mini. Ленту подключаем к пину D2.
Затем зальем прошивку и файловую систему через эту софтину.
Внимание, так как настройки читаются из EEPROM, если вы на своем контроллере раньше в него что-то писали, то настоятельно рекомендую его предварительно очистить.
Итак, по порядку: гирлянда имеет 3 режима работы: как клиент-подключается к вашему роутеру по WiFi, как самостоятельная точка доступа и режим принудительной настройки.
1. Режим клиента
В режиме клиента гирлянда цепляется к вашей вайфай сети, получает адрес в сети роутера и поднимает на нем http сервер. Достучаться до нее можно по адресу, который ей выдал роутер. Например, если роутер выдал ей адрес 192.168.1.10 то адрес для доуступа к веб интерфейсу будет выглядеть как http://192.168.1.10
Первая загрузка веб интерфейса происходит очень долго, запаситесь терпением. Ждать придется около 20 секунд. После загрузки все кешируется (на 1 месяц) и уже работает очень шустро. Также, не знаю как на iOS, но на андроиде можно для веб приложений создавать ярлыки на рабочем столе, я сделал так, чтобы в этом режиме приложение венлядело и работало максимально приближенно к реальному приложению. Очень рекомендую так сделать. При работе в режиме клиента контроллер мигает 1 раз в 10 секунд.
Скриншоты веб-приложения:
2. Режим точки доступа
В этом режиме гирлянда сама создает точку доступа с параметрами, которые вы ей укажете. Светодиод контроллера мигает тоже 1 раз в 10 секунд.
3. Режим принудительной настройки.
В этом режиме недоступно управление, он должен использоваться только для перенастройки устройства или, скажем, если вы ввели неправильный пароль и гирлянда не может подключиться к вашей точке доступа.
В режим принудительной настройки можно попасть в 2 случаях:
-если была нажата кнопка прямо после запуска, когда контроллер мигает 2 раза в секунду и ждет в течение 3 секунд пока пользователь нажмет кнопку
-если не удалось прочитать настройки из памяти
Что бы я еще хотел дополнительно упомянуть:
-не все светодиодные ленты имеют светодиоды подключенные по схеме RGB, поэтому, если у вас именно такая лента, то некоторые цвета, например зеленый и красный, поменяются местами.
-максимальная длина ленты 510 светодиодов, можно сделать и больше, но мне пока не надо
-без кнопки устройство всегда будет грузиться в режим принудительно настройки (3)
-есть некоторые баги, о них, просьба, сообщать мне. Протестировать абсолютно все сценарии использования и настройки у меня не хватило сил и времени, так что очень надеюсь на обратную связь.
Пару слов о разработке и технологиях. Хоть у меня и был в запасе целый год, делать гирлянду я начал только в середине нобря, поделал буквально пару дней и закрутился в круговороте дел до середины декабря, с этого момента возобновил разработку и вот вчера, 28 декабря, все доделал. Итого примерно 2 недели по вечерам и ночам, около 60 часов времени. Клиентская часть написана на Angular 5 + прикручены контролы и темы https://material.angular.io/. Обновление параметров сделано через вебсокеты в режиме реального времени. Архитектура приложения построена таким образом, чтобы можно было легко и быстро добавлять новые режимы и параметры к уже существующим режимам. Веб приложение абсолютно всю информацию о режимах, параметрах и типах параметров берет из контроллера, в зависимости от типа параметра рендерит соответствующий ему контрол и привязывает данные. Таким образом, добавление новых режимов в прошивку вызовет автоматическое обновление веб-интерфейса под них. Режиов пока мало, но широкие возможности кастомизации каждого из них на первое время устроят большинство пользователей. Режимы буду добавлять, конечно же, через год=)
Немного картинок по внутрянке, как добавлены режимы:
Вот, собственно, и вся магия.
От всей души поздравляю всех с Наступающим новым годом. До новых встреч!
P.S. может кому-то покажется, очень сумбурно написано или слишком много воды или что-то еще - прошу простить, чукча не писатель, чукча программист