RSS блога
Подписка
Ещё одна гирлянда на WS2812
- Цена: $17.98 (2 x 50шт)
- Перейти в магазин
Зимняя погода на этот Новый Год, похоже, не удалась, но настроения хочется. Представлю свой вариант гирлянды с попиксельно адресуемыми светодиодами. Подобные обзоры недавно уже были (раз, два); в этом использованы другие светодиодные модули, а также использован свой скетч для визуальных эффектов.
Под катом описание модулей, чуть измерений и скетч.
Схемотехника гирлянды не отличается оригинальностью – применена самая дешёвая плата 5-вольтовая Arduino Pro Mini, коих несколько штук валялось без дела. Гирлянда подключается напрямую к плате единственным сигнальным проводом. Подключить питание к плате и гирлянде – и «железо» готово. В упомянутых выше обзорах это подробно и качественно описано.
Свою реализацию фоткать не буду – стыдно за колхоз, гордится нечем :)
Выбрал именно такой вариант гирлянды я по единственной причине – ёлка у нас белая. Реализации на WS2811 с RGB-светодиодом, которая однозначно лучше, я не нашёл с белыми или прозрачными проводами (плохо искал?). Чёрные или зелёные слишком виднелись бы на белой ёлке. Но в этом варианте в силу конструктивных особенностей светят только в одну сторону (на 180 градусов), поэтому многие из них при установке подсвечивают внутренности ёлки, а не создают эффект точечного источника. Но если не придираться, то это не такой уж большой недостаток. Ниже покажу, как это выглядит.
Основу гирлянды составляют модули WS2812, представляющие собой чип с интегрированным RGB-светодиодом. Модули запаяны на маленькие круглые платы, с обратной стороны которых предусмотрены контактные площадки для соединения плат в гирлянду. Помимо модуля, на плате запаяны резистор и конденсатор – необходимая обвязка для соединения модулей.
Платы соединены трёхпроводным шлейфом из достаточно толстых (диаметр около 1мм) многожильных проводов в прозрачной изоляции.
Пайка визуально выглядит неплохо. Но в паре мест провода всё-таки отвалились при экспериментах и «монтаже» на ёлку.
Продавец предлагает на выбор соединительные провода длиной 10 или 12 сантиметров. Я купил 10-сантиметровые, хотя потом оказалось, что 12-сантиметровые подошли бы лучше. Длины двух купленных гирлянд чуть-чуть не хватило, чтобы полностью «обмотать» ёлку высотой 180 см.
На концах гирлянд припаяны парные трёхконтактные разъёмы с фиксаторами (не знаю, как их правильно называть), т.е. гирлянды можно просто соединять последовательно. Мало того, что разъёмы чёрные, они припаяны красно-бело-зелёными проводами, которые резко выделяются на белой ёлке. Поэтому точку ввода и место соединения гирлянд пришлось прятать на «теневой» стороне ёлки. Можно было, конечно, избавится от места соединения, подключив две гирлянды напрямую без разъёмов, но я пока решил этого не делать.
Почему-то помимо разъёмов к контактам питания были дополнительно припаяны отрезки провода длиной сантиметров 10. На фото продавца такого нет. Я их сразу отпаял за ненадобностью, к сожалению фото не сделал. Также отпаял разъём с одного их концов одной гирлянды и использовал его для подключения к Arduino. Получилось достаточно удобно – две «половинки» гирлянды и блок управления быстро и просто соединяются.
На фото продавца особенности гирлянд неплохо видны; я приведу несколько своих фоток, так сказать, «в интерьере».
Некрасивое соединение гирлянд
Разъёмы
Итого — гирлянда выглядит вполне прилично, не выделяется.
Теперь о нескольких допущенных мною проколах. Все они связаны с питанием гирлянды. Гирлянда потребляет достаточно приличный ток: если верить данным продавца, то аж 5.76 ампера на моих две гирлянды, исходя из строки «Расход энергии (Вт/м):2,88 Вт/м». Блок питания на такой ток найти непросто, максимум что у меня оказалось – 2 А. Далее, на больших токах даже на толстых проводах при достаточной их длине падает приличное напряжение. Следовательно, светодиоды в конце гирлянды питаются меньшим напряжением, чем светодиоды в начале. Ну и конечно часть напряжение падает на подводящих проводах и разъёмах от блока питания (я использовал ненужный USB-MiniUSB кабель). Таким образом, напряжение на конце гирлянды может «просесть» ниже минимального рабочего напряжения для модулей (3,5 В по спецификации).
Для измерений «на натуре» я использовал скетч, включающий в цикле все светодиоды на красный, зелёный, синий и белый цвета. Для каждого из включённых цветов измерял напряжения в начале (Uнач) и в конце (Uкон) гирлянды, а также потребляемый ею ток (I). Для полноты картины измерения делал как для полной (100-светодиодной), так и для «половинчатой» (50-светодиодной) гирлянд, и дополнительно мерял напряжение прямо на выходе блока питания (Uбп).
Результаты измерения приведены в таблице.
Видно, что падение напряжение действительно значительное. Однако на функционировании гирлянды это визуально почти не сказывается. Только на 100-светодиодной гирлянде при максимальной нагрузке (белый цвет) слегка видно падение яркости и уход в жёлтый цвет верхней трети гирлянды. Это неудивительно, поскольку в этом случае на конце гирлянды оказывается меньше трёх вольт. Также хорошо видно, что подводящий провод с его разъёмами совсем хиленький – на нём при максимальной нагрузке падает целый вольт.
Можно было, конечно, усилить подводящие питание провода, убрать лишние разъёмы. Был даже вариант организовать встречное питание (один из полюсов подключить к концу гирлянды отдельным проводом). Но это отличие в цвете на ёлке, когда конец отдалён от начала, не виден. А режимы с максимальной нагрузкой в эффектах встречаются очень редко. Поэтому было решено не заморачиваться :)
А заявленные продавцом ватты, как можно было ожидать, оказались китайскими. Несмотря на это гирлянда имеет весьма приличную яркость, даже при свете эффекты хорошо видны. Сколь-нибудь заметного нагрева светодиодов (проверял рукой) при работе не заметил.
И самое главное – скетч. За его основу я взял скетч github.com/bportaluri/ALA, творчески его так сказать переработав. Основные отличительные особенности скетча такие:
— скетч полностью автономен, режимы переключаются автоматически случайным образом
— в эффектах использованы палитры цветов, т.е. один и тот же эффект может работать с разными цветами. Палитры также переключаются случайным образом
— между режимами реализован плавный переход для исключения «дёргания»
— использовано что-то вроде гамма-коррекции для более равномерного изменения яркости в эффектах
Случайный выбор режимов и палитр, случайные параметры некоторых режимов и случайная скорость дают очень большое разнообразие итоговых эффектов, что и было конечной целью.
Сам скетч можно скачать отсюда.
Скетч я делал в Visual Studio Code с «родным» плагином для Arduino от Microsoft, но он нормально компилируется и в «родной» среде Arduino IDE. Неродных внешних библиотек не требуется — использованную adafruit_neopixel для управления лентой встроил прямо в скетч.
UPD: из-за проблем с запуском убрал поддержку Visual Studio Code и встроенную библиотеку. Теперь скетч нужно запускать в Arduino IDE с установленной внешней библиотекой Adafruit_NeoPixel.
При открытии в Arduino IDE необходимо поместить все скачанные файлы в папку с названием «arws2812» — так же, как и называется стартовый файл скетча (arws2812.ino).
Для тех, кто будет дорабатывать: в файле anim.h задаётся номер «ноги» Arduino, к которой подключена гирлянда, и количество светодиодов. Единственный момент — 100 светодиодов это уже предел для 2 кбайт ОЗУ. Отвечу на вопросы в комментариях :)
Для демонстрации я немного поменял скетч — сделал последовательный перебор режимов и палитр. Вот результат его работы:
С наступающим Новым Годом!
Под катом описание модулей, чуть измерений и скетч.
Схемотехника гирлянды не отличается оригинальностью – применена самая дешёвая плата 5-вольтовая Arduino Pro Mini, коих несколько штук валялось без дела. Гирлянда подключается напрямую к плате единственным сигнальным проводом. Подключить питание к плате и гирлянде – и «железо» готово. В упомянутых выше обзорах это подробно и качественно описано.
Свою реализацию фоткать не буду – стыдно за колхоз, гордится нечем :)
Выбрал именно такой вариант гирлянды я по единственной причине – ёлка у нас белая. Реализации на WS2811 с RGB-светодиодом, которая однозначно лучше, я не нашёл с белыми или прозрачными проводами (плохо искал?). Чёрные или зелёные слишком виднелись бы на белой ёлке. Но в этом варианте в силу конструктивных особенностей светят только в одну сторону (на 180 градусов), поэтому многие из них при установке подсвечивают внутренности ёлки, а не создают эффект точечного источника. Но если не придираться, то это не такой уж большой недостаток. Ниже покажу, как это выглядит.
Основу гирлянды составляют модули WS2812, представляющие собой чип с интегрированным RGB-светодиодом. Модули запаяны на маленькие круглые платы, с обратной стороны которых предусмотрены контактные площадки для соединения плат в гирлянду. Помимо модуля, на плате запаяны резистор и конденсатор – необходимая обвязка для соединения модулей.
Платы соединены трёхпроводным шлейфом из достаточно толстых (диаметр около 1мм) многожильных проводов в прозрачной изоляции.
Пайка визуально выглядит неплохо. Но в паре мест провода всё-таки отвалились при экспериментах и «монтаже» на ёлку.
Продавец предлагает на выбор соединительные провода длиной 10 или 12 сантиметров. Я купил 10-сантиметровые, хотя потом оказалось, что 12-сантиметровые подошли бы лучше. Длины двух купленных гирлянд чуть-чуть не хватило, чтобы полностью «обмотать» ёлку высотой 180 см.
На концах гирлянд припаяны парные трёхконтактные разъёмы с фиксаторами (не знаю, как их правильно называть), т.е. гирлянды можно просто соединять последовательно. Мало того, что разъёмы чёрные, они припаяны красно-бело-зелёными проводами, которые резко выделяются на белой ёлке. Поэтому точку ввода и место соединения гирлянд пришлось прятать на «теневой» стороне ёлки. Можно было, конечно, избавится от места соединения, подключив две гирлянды напрямую без разъёмов, но я пока решил этого не делать.
Почему-то помимо разъёмов к контактам питания были дополнительно припаяны отрезки провода длиной сантиметров 10. На фото продавца такого нет. Я их сразу отпаял за ненадобностью, к сожалению фото не сделал. Также отпаял разъём с одного их концов одной гирлянды и использовал его для подключения к Arduino. Получилось достаточно удобно – две «половинки» гирлянды и блок управления быстро и просто соединяются.
На фото продавца особенности гирлянд неплохо видны; я приведу несколько своих фоток, так сказать, «в интерьере».
Фото гирлянды на ёлке
Некрасивое соединение гирлянд
Разъёмы
Итого — гирлянда выглядит вполне прилично, не выделяется.
Теперь о нескольких допущенных мною проколах. Все они связаны с питанием гирлянды. Гирлянда потребляет достаточно приличный ток: если верить данным продавца, то аж 5.76 ампера на моих две гирлянды, исходя из строки «Расход энергии (Вт/м):2,88 Вт/м». Блок питания на такой ток найти непросто, максимум что у меня оказалось – 2 А. Далее, на больших токах даже на толстых проводах при достаточной их длине падает приличное напряжение. Следовательно, светодиоды в конце гирлянды питаются меньшим напряжением, чем светодиоды в начале. Ну и конечно часть напряжение падает на подводящих проводах и разъёмах от блока питания (я использовал ненужный USB-MiniUSB кабель). Таким образом, напряжение на конце гирлянды может «просесть» ниже минимального рабочего напряжения для модулей (3,5 В по спецификации).
Для измерений «на натуре» я использовал скетч, включающий в цикле все светодиоды на красный, зелёный, синий и белый цвета. Для каждого из включённых цветов измерял напряжения в начале (Uнач) и в конце (Uкон) гирлянды, а также потребляемый ею ток (I). Для полноты картины измерения делал как для полной (100-светодиодной), так и для «половинчатой» (50-светодиодной) гирлянд, и дополнительно мерял напряжение прямо на выходе блока питания (Uбп).
Результаты измерения приведены в таблице.
Видно, что падение напряжение действительно значительное. Однако на функционировании гирлянды это визуально почти не сказывается. Только на 100-светодиодной гирлянде при максимальной нагрузке (белый цвет) слегка видно падение яркости и уход в жёлтый цвет верхней трети гирлянды. Это неудивительно, поскольку в этом случае на конце гирлянды оказывается меньше трёх вольт. Также хорошо видно, что подводящий провод с его разъёмами совсем хиленький – на нём при максимальной нагрузке падает целый вольт.
Можно было, конечно, усилить подводящие питание провода, убрать лишние разъёмы. Был даже вариант организовать встречное питание (один из полюсов подключить к концу гирлянды отдельным проводом). Но это отличие в цвете на ёлке, когда конец отдалён от начала, не виден. А режимы с максимальной нагрузкой в эффектах встречаются очень редко. Поэтому было решено не заморачиваться :)
А заявленные продавцом ватты, как можно было ожидать, оказались китайскими. Несмотря на это гирлянда имеет весьма приличную яркость, даже при свете эффекты хорошо видны. Сколь-нибудь заметного нагрева светодиодов (проверял рукой) при работе не заметил.
И самое главное – скетч. За его основу я взял скетч github.com/bportaluri/ALA, творчески его так сказать переработав. Основные отличительные особенности скетча такие:
— скетч полностью автономен, режимы переключаются автоматически случайным образом
— в эффектах использованы палитры цветов, т.е. один и тот же эффект может работать с разными цветами. Палитры также переключаются случайным образом
— между режимами реализован плавный переход для исключения «дёргания»
— использовано что-то вроде гамма-коррекции для более равномерного изменения яркости в эффектах
Случайный выбор режимов и палитр, случайные параметры некоторых режимов и случайная скорость дают очень большое разнообразие итоговых эффектов, что и было конечной целью.
Сам скетч можно скачать отсюда.
UPD: из-за проблем с запуском убрал поддержку Visual Studio Code и встроенную библиотеку. Теперь скетч нужно запускать в Arduino IDE с установленной внешней библиотекой Adafruit_NeoPixel.
При открытии в Arduino IDE необходимо поместить все скачанные файлы в папку с названием «arws2812» — так же, как и называется стартовый файл скетча (arws2812.ino).
Для тех, кто будет дорабатывать: в файле anim.h задаётся номер «ноги» Arduino, к которой подключена гирлянда, и количество светодиодов. Единственный момент — 100 светодиодов это уже предел для 2 кбайт ОЗУ. Отвечу на вопросы в комментариях :)
Для демонстрации я немного поменял скетч — сделал последовательный перебор режимов и палитр. Вот результат его работы:
С наступающим Новым Годом!
Самые обсуждаемые обзоры
+199 |
8059
297
|
+31 |
1571
50
|
+45 |
2457
84
|
+43 |
2768
63
|
+58 |
3013
50
|
есть такая пословица — обозревай гирлянды летом, а плавки зимой.
А до следующего года — уже будет опыт использования, и время на доработку :)
Вот теперь подумываю собрать скетч из обзора и опробовать на своей его)
ЗЫ: Вести отдельный двухжильный (и длинный) провод питания к верхушке ёлки — тоже не особо хороший выход.
За обзор "+"
Если нужны WS2811 с белыми проводами, то вот 100 шт.
Платки, правда, всё равно зелёные(((
Но можно их белой термоусадкой закрыть.
с меня +
Решил проблему просто. Дальний конец у меня на макушке. От него тоже спустил питающую линию аккуратненько по стволу, там почти и не видно. Так что гирлянда питается сразу с двух концов. Это только аудиофилы не любят «земляных петель», а у меня всё ровненько и стабильно работает.
они былым никогда не светят
Я просто не думал что у кого-то будет больше 100 диодов
Вместо 100 нужно вписать требуемое число.
Но боюсь на 120 не хватит памяти, на nano вроде те же 2 килобайта, что и на pro mini
Никакого Visual Studio Code ни с какими плагинами у меня, конечно, нет. Весь код под ардуино я пишу, что логично, в ArduinoIDE.
Скормил ваш исходник.
Всё скомпилировалось и собралось без проблем.
Использовал ProMini, памяти хватает.
Пин 2 — правильный, количество диодов 100, правильно. Т.е. вообще не менял исходник. У меня всё совпадает с вашим железом.
Вгружается без проблем, но абсолютно никакого движения. Такое впечатление, что во второй пин ничего не дует.
Беру классический пример из стандартной библиотеки Adafruit_NeoPixel. Устанавливаю тот же пин и то же количество диодов. Всё работает и мигает, значит, аппаратно нет проблем. Вгружаю свой собственный скетч. Всё работает. Вгружаю ваш — тишина.
Окей. Обойдёмся без костыля ExtNeoPixel. Используем стандартную внешнюю.
1. Убираю в вашем скетче все упоминания о ExtNeoPixel, вытираю ExtNeoPixel.h и ExtNeoPixel.cpp.
2. Прописываю использование вместо неё Adafruit_NeoPixel.h.
Всё компилится и вгружается. Тишина. Вгружаю пример из этой библиотеки ещё раз. Всё мигает.
В anim.cpp проверяю строку с конструктором Adafruit_NeoPixel(LEDS, PIN, NEO_GRB + NEO_KHZ800);
Всё правильно, тип нужный, а LEDS и, PIN у нас определены вверху. С этим типом и этими константами всё работает на стандартном примере.
Вопрос: что делать ©.
Смотрю вывод в терминал.
Т.е. main работает, что-то перебирает. Аппаратного вывода на пин 2 нет или с таймингами что-то не то. Установки в IDE для платы, конечно, не менялись подо все примеры, всё одинаково.
Видимо, идея писать в сторонней студии была не очень хорошей…
Я использовал ExtNeoPixel из упомянутой в обзоре ALA потому, что с Adafruit_NeoPixel, стянутой из официального репозитория, скетч у меня вообще вис. Тогда не стал разбираться, похоже, зря…
Чуть позже попробую залить из Arduino IDE
Буду разбираться.
Результат:
1) Pro Micro (328 5v) — поставил управляющим 13-й пин (было удобней). Среда Arduino 1.8.5, выставил 72 диода — залилось отлично стартануло с пол-пинка.
В ленте у меня 144 диода, прошка при увеличении до 144,140,120 компилилась, но ругалась. Вытянул Leonardo (наверное micro, размером с Pro Mini, но на AT32U4)
2)AT32U4 (Leonardo), 144 диода, 2-й пин управляет. Скомпилировалось, запустилось с пол-пинка, на все 144 диода :)
Автору респект — Новогоднее Миганее обеспечено.
Для остальных — напомню некоторые моменты, которые могли повлиять на неуд. результат:
1) Arduino 1.8.5 — лежит на офсайте.
2) Архив распаковываем в одну папку (можно с оригинальным названием, можно ws2812)
Далее — ОБЯЗАТЕЛЬНО переименовываем main.ino в «название_архива».ino (ws2812.ino).
Запускаем. Должны автоматом подтянуться все библиотеки. Добавится кучка закладок.
3) Правим anim.h по вкусу.
Думаю основная проблема именно в main.ino->архив.ino
1) 1.8.2, 1.8.5 — результат один и тот же
2) при чем тут имя файла? проект открывается, все вкладки тоже, если б не — он бы даже не скомпилировался. (хотя для смеха переименовал, закономерно, без результата).
даже у автора симптомы те же появились.
У меня название этого файла было (arws2812.ino) переделал в (ws2812.ino) всё пошло.
спасибо автору и shaman1010.
плата Leonardo (наверное micro, размером с Pro Mini, но на AT32U4)
Dimon_, Igorrrrr и у кого ещё скетч не работал — при возможности проверьте обновление, интересно же…
shaman1010, спасибо, советы дельные, но не помогли. Кажется мне что тут какая-то глубоко закопанная особенность компилятора…
Далее, вытащил из класса переменную pixels, сделал её обычной переменной, и инициализировал в самом скетче, а не в конструкторе класса.
В общем не нужно было чрезмерно усложнять с самого начала :)
Хотя поначалу я хотел сделать всё по канонам ООП — по классу на каждый эффект, наследование и т.п., но очень быстро упёрся в ограничение памяти. Так что вывод — для слабых микроконтроллеров современные навороты программирования вредны :)
Для любителей «виртуального секса» выкладываю на ЯДе архив Proteus_garland — это работающий проект в симуляторе Proteus 8.6 на полста пикселей: yadi.sk/d/J8gLN6j43Njria
Можно поиграться с отладкой без паяльника и Ардуинки. Ес-но сам Proteus 8.6, Arduino IDE и в ней Adafruit_NeoPixel должны быть установлены на компьютере.
Да, алгоритмически теперь всё стало гораздо изящнее. Была очень «чаща непролазная» :)
Был бы у меня ещё один зелёный плюс, поставил бы обзору ещё:)
Линия данных может быть довольно тоненькой, она же не передаёт нагрузку. Какой-нибудь МГТФ 0.06 вполне подойдёт.
Хочу белую ёлку со встроенными светодиодами и модулем управления ими. Управление по Blurtooth/WiFi приветствуется…
Ау, Сяоми!.. Где умная ёлка?..
PS: Я серьёзно. Надеюсь к следующему НГ китайцы накреативят…
А то я с третьего раза только правильно прочитал :)
А вообще да, чтобы поменять направление нужно реверсировать два цикла в Anim::run(). Больше нигде ничего менять не нужно.
Возьму доработку на заметку, спасибо!
Одна проблема всплыла — переименуйте main.ino во что-нибудь другое. У меня название конфликтовало с main.cpp в дебрях ардуино-оболочки на линуксе. Говорит нет setup и нет loop.
За обзор +! Спасибо!
compilation terminated.
Несколько библиотек найдено для «Adafruit_NeoPixel.h»
Используется: C:\Xiaomi\arduino-1.8.5-windows\arduino-1.8.5\libraries\Adafruit_NeoPixel
Не используется: C:\Xiaomi\arduino-1.8.5-windows\arduino-1.8.5\libraries\Adafruit_NeoPixel-master
exit status 1
Ошибка компиляции для платы Arduino Nano.
1. файл *.ino должен совпадать с именем архива
2. в anim.h выставляем нужный рабочий пин и количество светодиодов.
3. Больше 100 светодиодов работать не будет(
P.S. Кстати, красиво в снежинке 6-лучевой по 10 светодиодов смотрится типа этой — mysku.club/blog/aliexpress/47632.html
Только что скетч залил.
P.S. Не просто красиво, а намного шикарнее всех скетчей для снежинок, которые я пробовал.
Вот только яркость как-нибудь бы уменьшить, а то 1А БП сильно греется, да и ардуинка подвисает в самом начале из-за того, что все светодиоды одновременно светят белым цветом. 2А БП спасает положение, но их мало и они дорогие, а вот 1А БП — есть запас.
P.S. Спустя 10 минут все никак не налюбуюсь эффектами.
Рад, что эффекты не только к линейной гирлянде подходят. Хорошо бы видео увидеть ;)
Во первых перестало слепить (но все-равно светит достаточно ярко). Во-вторых пиковое потребление упало до 1.2А (в среднем 0.7А при ярких малодинамичных анимациях с участием большого количества светодиодов).
Как было:
Слепило. А во вторых в пике потребляло 1.85А (в среднем больше 1А). К тому же ардуинка подвисала с 1А БП при очень ярких анимациях.
Замер производил белым доктором.
Но это приятные хлопоты )))
P.S. 1А БП после получасовой работы нагрелся несильно.
Замечательно режется выдвижным канцелярским ножом.
Спасибо за решение.
Там в RAM все упирается.
144шт работает на atmega32u4 (leonardo), по идее должно работать на esp8266.
Неплохо бы смотрелся перенос на stm32f103 ($1.8 платка)
В двух словах — там фиксированные 8 бит градации яркости на каждый цвет. т.е. 8х3=24бит (3 байта) на каждый светодиод. Протокол использует 3 бита для передачи каждого. Итого 3х3=9 байт на каждый светодиод. Для формирования эффекта, часто приходится заполнять буфер, равный количеству светодиодов. Т.е. 9х100шт=900 байт только для буфера. (из 2048 общей), без памяти для исполнения программы, непосредственно.
Дальше, надеюсь, понятно.
Использовать больше можно либо используя внешнюю ram, либо формируя эффекты «на лету», но тогда упираемся в производительность 328-го.
Мне кажется, лучше перенести код на ARM (stm32f103), там и памяти и скорости достаточно, стоит как про-микро ($1,8), под ардуино тоже завели.
Либо esp8266 (не проверял, но думаю нормально должно быть), либо Leonardo и выше для AVR.
Пока это в теории, если руки дойдут — проверю. Народ еще i2s использует как транспорт, может там что-то интересное.
Яндекс предлагает холодные и горячие обёртывания :)
Каждый бит (из 24 на один светодиод) по стандарту должен передаваться в виде посылки из 3-х бит.
110 — это 1
100 — это 0
Дык вот значащими — являются только вторые, а первый и третий можно (по идее) добрасывать в момент отсылки. Они не меняются, то есть накладываем маску и выпуливаем.
Как-то так :)
Я предполагал что хранится массив только значений с наложенными эффектами, а не массив готовых посылок, и обёртывание производится библиотечной функцией в момент отсыла. А тут действительно богатый запас ресурса.
Я копал пример из mysku.club/blog/aliexpress/47920.html, использующий Adafruit_NeoPixel. Там всё происходит внутри библиотечных функций, и в каком виде хранится — неясно, надо исходники смотреть. Но новый год снова далеко, а дела близко. :)
Идёте по ссылке, нажимаете зелёную кнопку «Clone or download», далее во всплывшем окошке «Download ZIP»…
Исходники открыты, может кто побыстрее чем я сделает.
Сейчас уже заниматься этим, пожалуй, неактуально, а вот к следующему Н.Г. есть несколько задумок. Тогда и кнопки можно будет добавить.
Но DIY тем и хорош, что процесс обычно более увлекательный, чем результат ;)
Сразу после просмотра, заказал себе на маленькую елочку ленту из 50 диодов, дети визжат от восторга, уже елку убирать не дают :-)
А можно скетч с последовательным перебором?
Или что надо в текущем скетче поменять?
и заменить им такой же метод в основной ветке: github.com/Vasil-Pahomov/ArWs2812/blob/master/arws2812.ino
К сожалению сам проверить сейчас не могу
Отцы, что не так? Леонарду (под эту платку компилится без ошибок) что ли брать?
Можно детальный вывод компилятора при компиляции под Uno (лучше наверное в личку)?
Пишет что занимает меньше 100 процентов но при этом выводит ошибку.
Сразу скажу я могу только повторять за умными людьми.
У меня получилось запустить только 94 светодиода из 100.
И ещё вопрос. А почему не использовать esp8266 NodeMCU v2 Lua wifi( валятся такой в загашнике) вместо bluetooth?
К своему стыду, с esp ещё дела не имел, а pro mini валялось достаточно много уже давно. И всё никак не нахожу времени освоить esp нормально.
Но насколько я представляю, портировать будет просто, но, конечно, нужно будет добавить управление по WiFi. Возможно, спрос стимулирует меня ;)…
Попробовал на esp8266 запустить выдало ошибки я просто вырезал где были эти ошибки и вроде запустилось нормально
Сейчас в master-ветке скетч, где bluetooth можно полностью отключить, закомментировав #define BLUETOOTH
По умолчанию 30 секунд (30000 миллисекунд). Можно менять на своё усмотрение
github.com/Vasil-Pahomov/ArWs2812/blob/before_bluetooth/arws2812.ino#L11
великолепная гирлянда выходит)
попробую прицепить регулировку яркости кнопками и вообще огонь будет)
Мне нужна гирлянда на 150-200 светодиодов, поэтому ардуино отпало.
Пин D4
Брал этот скетч github.com/Vasil-Pahomov/ArWs2812/tree/before_bluetooth
Удалял строчки
Менял количество светодиодов
Управляющий пин не менял и все заработало.
Сейчас попробовал залить на 100 светодиодов все залилось и работает.
тоже за esp
И, хоть убейте, не понимаю, для чего тут нужен Bluetooth? Что за манера за столом телефон доставать и пальцами тыкать?
Все таки с точки зрения повторения, ардуинка предпочтительней. А если еще и дофига светодиодов будет…
Извините, наболело… Высказался.
А насчёт ESP vs Arduino… Сам мечусь между повторяемостью на Arduino и гибкостью и настраиваемостью ESP. Сам склоняюсь к ESP, чтобы детям развлекаловку делать (им прикольно управлять гирляндой с телефона), ну и народ больше за ESP как-то. И то, и другое точно не сделаю, тут хотя бы что-то одно успеть.
Прошу понять и простить…
github.com/Vasil-Pahomov/ArWs2812/tree/before_bluetooth точно рабочий
Уже пару фиксов есть, сейчас скетч вроде как на ESP работает нормально
А не подскажите «чайнику»(сам так и не понял)… у ESP01 с какого пина управление снимается? Или его самому можно/надо прописывать?
Вообще пин можно поменять в строке 6 файла anim.h (https://github.com/Vasil-Pahomov/ArWs2812/blob/esp/anim.h#L6)
Но у ESP01 сильно не разбежишься, только GPIO0 и GPIO2 выведены, как я понял.
А про ESP01 — она как раз без дела валяется,… и много «ног» для Вашего проекта не требуется :)
Для запуска:
1. В arws2812.ino меняете WIFI_SSID и WIFI_PASS на данные вашей сети WiFi.
2. После запуска в мониторе порта выводится IP-адрес ESP.
3. Заходите IP-адрес_ESP/
В интерфейсе пока два выпадающих списка — анимация и палитра. Пока открыт интерфейс, эффекты не меняются (за исключением стартового).
Жду конструктивной критики, пожеланий, предложений :)
Если не трудно пояснения как это отрабатывает. К примеру выбрал режим. а как его запустить?
при открытой веб морде эфекты меняются в автомате по своему алгоритму.
моя хотелка и думаю другие тоже поддержат. что мы в веб морде была кнопка включить выключить гирлянду.
Про выключение понял, беру на заметку.
еще если возможно что бы при прошивке сразу айпишник вбить. как то привык что бы все что дома со своими статическими адресами жило (к примеру можно будет в не дома через интернет управлять)
еще скрин ф12 нажата после смены эфекта
А статический IP лучше, как мне кажется, прописать на роутере в настройках DHCP.
ВАЖНО: теперь гирлянду нужно подключать к GPIO2, поскольку GPIO2 теперь используется для вывода отладочной информации.
Жду обратной связи :)
И гирлянду и отладочную — все на 2?
C:\Users\Andrey\AppData\Local\Temp\arduino_build_361921\sketch\anim.cpp.o:(.text._ZN4Anim7setAnimEh+0x48): undefined reference to `Anim::animOff_Run()'
collect2.exe: error: ld returned 1 exit status
Используем библиотеку Adafruit_NeoPixel версии 1.1.7 из папки: C:\Users\Andrey\Desktop\arduino-1.8.5\my sketch\libraries\Adafruit_NeoPixel
Используем библиотеку ESP8266WiFi версии 1.0 из папки: C:\Users\Andrey\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WiFi
Используем библиотеку ESP8266WebServer версии 1.0 из папки: C:\Users\Andrey\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266WebServer
Используем библиотеку ESP8266mDNS в папке: C:\Users\Andrey\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.2\libraries\ESP8266mDNS (legacy)
exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).
Ps^Предыдущий релиз компилился нормально
а по поводу GPIO2, тут просто описка нужно понимать что по умолчанию вывод на ленту происан GPIO, на странице загрузки про это несколько раз написано.
еще вариант плохие контакты.
как вариант запитать еспешку от одного БП, а ленту от другого и сразу будет понятно.
Я так и не понял зачем два списка?
Других идей по управлению не приходит в голову, буду рад любым мыслям.
Мой багрепорт
Если включаешь полет
Выскакивает ошибка и при переключении нижней вкладки ошибка повторяется
И мои пожелания.
Возможность регулировать длительность эффектов.
И может сделать галочку как для выключения, чтоб оставался выбранный эффект и после закрытия вебморды.
Не знаю насколько грамотное от меня решение, но если запускать без wifi точки, то она будет до скончания веков её ждать. Добавил такой вот код. Все работает.
Скетч ArWs2812-master не прошивается — пишет ошибку
sketch\animGlow.cpp: In member function 'void Anim::glowForEachLed(int)':
animGlow.cpp:11:16: error: 'sint8_t' was not declared in this scope
int bra = (sint8_t) (braPhase + i * braFreq);
^
exit status 1
'sint8_t' was not declared in this scope
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
«Показать подробный вывод во время компиляции»
Скетч ArWs2812-before_bluetooth прошивается без проблем, но при подключения платы к питанию и светодиодной ленты WS2811 IC RGB только раз тускло моргает красным цветом и все.
По подключению вроде тоже все верно — плюс — 5v, минус — GND, управление — D2.
Уже и не знаю куда копать. На сегодня, пожалуй, хватит — спать пора.
Буду признателен за любую помощь и подсказки.
Насчёт же работы самой гирлянды — можно попробовать поиграть третьим параметром в конструкторе Adafruit_NeoPixel в строке 8 файла anim.cpp:
Например, попробовать понизить частоту (NEO_KHZ400 вместо NEO_KHZ800), попробовать другой порядок цветов (NEO_RGB вместо NEO_GRB).
Если не поможет, для верности можно попробовать загрузить примеры из Adafruit_NeoPixel. Если и они не пойдут, значит проблема аппаратная (плохой контакт, питание гирлянды или Arduino, или же их неисправность).
Но режим управления акселерометром эффектный.
Как проверить саму ленту? Что-то подозрения на нее. Когда откидываю + или — от ленты — загорается красный светодиод на ардуино. При подключении обратно — гаснет и больше не загорается.
— проблема с прошивкой
— не хватает питания.
Вроде мерцания особого нет, если я правильно понял про 50Hz
Как раз к НГ, в том году не успел, так сделал в этом.
Удачи, творчества и успехов в НГ!!!
Использую arduino nano (три разных из Китая); Среда arduino 1.8.7;
Прошивка ArWs2812-before_bluetooth.zip — устанавливается и запускается;
Прошивка ArWs2812-master.zip — устанавливается и запускается только с при установке на 99 светодиодов;
Но в обоих случаях по кругу работает только один эффект (первый из видео), как включаются остальные...?
Попробуйте указать к примеру 10 светодиодов.
Все, проблема решилась с «посыла» kollj. Повербанк из дешовых и видно дает наводку по питанию. Подал нормальные 5 вольт и все побежало!
Спасибо.
Подскажите как будет выглядеть http строка в браузере. Спасибо
ip/set?a=-1&p=2 это отключить
по крайней мере у меня типа так
А если не секрет, в каком сценарии планируете управлять запросами напрямую? Я планирую переделать управление на websockets, но если http-управление надо, то конечно оставлю его.
а вторая цифра это вторая строка от 0 до 7
я бы тоже сделал бы ряд кнопок типа не выпадающих а сразу кнопка с эффектом и второй ряд кнопки с палитрами и кнопка включения и вторая кнопка выключения. хорошо бы что бы кнопки подсвечивались после нажатия
И да, я создал новый репозиторий для проекта под ESP (github.com/Vasil-Pahomov/Liana/), но пока там особо ничего готового нет, поэтому и не говорил.
В мастер-ветке этого репозитория (github.com/Vasil-Pahomov/Liana/tree/master) находится теоретически работающий код, в котором заменена библиотека работы со светиками. Использованная ранее Adafruit_Neopixel периодически вызывала Soft WDT reset на моей плате, хотя больше никто не жаловался.
Новая библиотека (NeoPixelBus) такой проблемы не вызывает. Внешне отличий в функционале со старой веткой нет, но гирлянда теперь опять цепляется на GPIO2, это ограничение NeoPixelBus.
Если кто проверит у себя работоспособность новой версии с NeoPixelBus, буду благодарен :)
на днях заберу ленту с почты и буду тестить, попробую лиану)
а еще вопрос вебсокет контрол чем лучше?
Вообще делаю эффект, которому нужна быстрая асинхронная передача данных с клиента на ESP, по HTTP это было бы сложно.
HTTP-эндпоинты оставлю, по крайней мере /set (@hunter59 просил для автоматизации управления).
Визуально почти ничего не поменяется при переходе на websockets
з.ы.: эффекты можно вот тут еще подсмотреть :) youtu.be/jOywT-22yaA
прошу помощи!
Проверте до ленты подходят от модуля два провода (с сигналом и землей. Как запитана сама лента 5В или сразу от модуля?
Проверте до ленты подходят от модуля два провода (с сигналом и землей. Как запитана сама лента 5В или сразу от модуля?
С правильной стороны подаетте сигнал.
с подключением все ок, питание общее, Din пробовал и на д0 и на д2, даже пробовал переназначить в скетче вообще на другой порт — ничего. Повторюсь, на ардуино все работает, такое ощущение, что на пин ничего не приходит по какой-то причине(
а вот liana не работает с таким
порт один и тот же gpio2 (на вемосе d4), библиотека одна и так же. непонятно :(
З.Ы.: пожалуй, на конец ленты надо еще один такой же бп повесить…
Остальные выводы тоже не совпадают. Короче, пробуй перекинуть ленту на д4, а в скетче 2 пин оставить.
А ветку websocket_control лучше не смотреть, там нестабильная версия :)
скетч по ссылке автора: github.com/Vasil-Pahomov/ArWs2812
2) В главном скетче пропорционально уменьшаете количество анимаций: github.com/Vasil-Pahomov/ArWs2812/blob/master/arws2812.ino#L9
Правда, после этих изменений управление через Bluetooth будет работать не всегда некорректно, в приложении для Android тоже нужно обновить список эффектов.
От nano гирлянда работает. Можете помочь с проблемой?
Последние деньги со степухи потратил на тиньку и ленту, уж очень хочется новогоднего настроения((
youtu.be/8JA_mj-Q3EU?t=80 вот этот режим красивый, не могу найти оригинал видео, там автор писал что он конвертировал спецом мод контролер эти режимы. я в прошлом году такую ставил себе красота, на этот год подарил.
а сам мучаюсь с ардуиной :( хотел на 200 диодов сделать
Эффект красивый, возьму на заметку, спасибо!
В списке появился новый эффект — «Магия». При его выборе при наклоне телефона гирлянда подсвечивается, вращение вдоль «длинной» оси меняет цвет, а резкий «бросок» вперёд подсвечивает всю гирлянду.
Скетч здесь: github.com/Vasil-Pahomov/Liana/tree/websocket_control
Примерно так это выглядит.
Периодически подтормаживает, пока не разобрался, почему. Предполагаю, что из-за связи (слабый WiFi).
Долго не мог понять, почему 13-я нога не работает :)
Остатки дебага или какой-то сакральный смысл заложен?
Просто я рылся у себя в закромах, и нашел парочку Pro mini. А к ЕСП пришлось бы преобразователь уровня прикручивать.
Ну а вообще если Pro Mini лежали без дела, то можно их и использовать, это правильно.
Это просто магия какая то
kollj говорил, что похоже на проблему с питанием, так и оказалось.
Но хорошо что всё разрешилось!
Но всё же опыт как никак) потому всем спасибо за участие)))
или брак светодиода, хотя сам в этой теме только недавно… но глюки уже были во всяких поделках, когда цвета не те и не так горели. но там был плохой контакт и коротило на землю именно пина данных.
Какие у вас светодиоды?
Также попробуйте уменьшить количество светодиодов до, допустим, 10, и в основном скетче в строке (https://github.com/Vasil-Pahomov/ArWs2812/blob/master/arws2812.ino#L55) поменять 20 на 500. Это уменьшит скорость обновления светодиодов. Есть смутное предположение, что проблема может быть в этом.
Задействовано 60шт
Вторая эта -https://ru.aliexpress.com/item/DC5V-WS2812B-1-4-5-30-60-74-96-144-s/32832420003.html?spm=a2g0s.9042311.0.0.747833edWIU5j7
задействовано 40 шт,
Изменение параметра 20 на 500 не повлияло на работу.
Спасибо за долготерпение и внимание ко мне, на этом всё.
Файлов прошивки выкладывать пока не планировал, т.к. прошивка очень сырая. В частности, SSID и пароль сети вбиты в прошивку, т.е. нужно перекомпилировать её, чтобы подключиться к другой сети WiFi.
Вот всё же бинарник для NodeMCU: github.com/Vasil-Pahomov/Liana/raw/master/Liana.ino.nodemcu.bin
Он работает автономно (как и для Arduino), а также допускает подключение для управления в режиме точки доступа.
нужно вписать
где XXX заменить на нужный пароль
Нескромный вопрос: а зачем пароль? Гирлянда работает и без подключения к роутеру.
Разве что застраховаться от соседей, чтобы не пугали родителей :)
Как я понимаю менять надо в этой строчке
А как правильно для 2811 или методом тыка.
Залил на ESP-01, лента работает, web морда не открывается. В роутере выставил статический айпи, не помогает. Захожу с браузера — лента замирает, но страница не открывается. В роутере айпи пингуется. Скетч из темы, с раздела esp. Где покопать?
Плата верная выбрана? Можно попытаться настройками платы поиграться. У меня на китайский LoLin nodemcu v3 настройки такие:
Другие скетчи с web-сервером работают нормально?
Вот настройки платы:
Лиану не смог скомпилировать, ругается на кучу библиотек.
Можно попробовать бинарник: github.com/Vasil-Pahomov/Liana/raw/master/Liana.ino.nodemcu.bin
По крайней мере так можно отсеять аппаратную проблему от проблем компиляции.
Так а плата-то какая?
Нарисовалась другая проблема — переустанавливал arduino-1.8.10, почистил всё где нашёл. Сейчас менеджер плат не ставится, не грузится архив, браузер тоже не скачивает архив. А вот опера через впн скачивает архив esp8266-2.5.2.zip. Как им дальше воспользоваться не пойму, что бы платы в списке появились? Куда его подсунуть? Гугл внятного ответа не дал. И да, шью пока через Arduino Uno, USB — UART что то долго едет.
Чтобы менеджер плат скачать через Arduino, можно попробовать VPN системного уровня, например protonvpn.
Пути ес-но другие.
Вопрос к автору. Скажите какая версия Arduino IDE у вас. И какая версия пакета плат для ESP.
Буквально вчера обновил версию ESP, была 2.4.2. При этом потребовалось обновить NeoPixelBus до последней версии. Но компилировалось и работало успешно как с ESP 2.4.2, так и с 2.5.2.
А если попробовать скомпилить пример File->Examples->ESP8266WebServer->HelloServer? Там тоже подключается ESP8266WiFi.h. По крайней мере поймём в чём проблема — в установке Arduino/ESP или всё же в скетче.
1. очистил папки
C:\Users\user\Documents\Arduino\libraries
C:\Users\user\AppData\Local\Arduino15
2. прописал в настройках ссылку для менеджера плат
arduino.esp8266.com/stable/package_esp8266com_index.json
3. Через менеджер плат установил ESP8266 community v2.5.2
4. установил библиотеки WebSockets и NeoPixelBus by Makuna v2.5.2
5. В файл C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\SoftwareSerial\src\SoftwareSerial.h
дописал #include <sys/types.h>
И у меня всё скомпилилось без ошибок
Но не заработало на втором компе
6. скопировал все библиотеки из C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries
и вставил в C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries
И опять всё скомпилилось на ура
Да и не забудьте выбрать свою плату перед компиляцией!
2. запускаете uninstal. По дефолту лежит здесь C:\Program Files (x86)\Arduino
3. удаляете всю папку C:\Users\Maxim\AppData\Local\Arduino15
4. Перезагрузка.
5. Скачиваете последний Arduino IDE с сайта
6. Прописываете путь к платам ESP в настройках IDE arduino.esp8266.com/stable/package_esp8266com_index.json
7. Выбираете свою плату в менеджере плат
8. Ставите необходимые библиотеки
У меня ошибки про несколько библиотек ушли. Как мне показалось, это связано с обновлением компонентов Python. По дефолту это должно происходить без участия пользователя. Но если вдруг будут такие ошибки попробуйте поставить на комп Python.
Только ещё нужно не забыть исправлять `ssize_t` на `size_t` в c:\Users\XXX\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\SoftwareSerial\src\SoftwareSerial.h
— при подключении в режиме точки доступа включается Captive Portal (запрос на авторизацию в сети, как часто делают в публичных сетях). По открытию запроса сразу показывается web-морда, не надо вбивать в браузере 192.168.4.1
— поиск сети происходит параллельно с анимацией, т.е. нет задержки при включении.
Также буду рассматривать хотелки, просьба писать здесь или на гитхабе.
2. Проверил
компилируется без ошибок.
3. Пробую лиану:
… не знаю что ещё сделать?
и вставить в C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries
Спасибо, парни, что отвечаете. Не помогло.
Добавлю информации на всякий случай: дополнительно поставил Python, ос — Win10.
Менеджер плат все грузят через впн?
Ещё добавлю:
из этого поставил только NeoPixelBus by Makuna, WebSockets — не совсем понимаю что ставить, в поиске менеджера библиотек такой не вижу
это действие тоже не выполнял, автор скетча про него не упоминает.
C SoftwareSerial.h всё верно, нужно добавить #include <sys/types.h>, иначе будет ругаться на ssize_t (https://github.com/esp8266/Arduino/issues/6482)
можно по подробней, для чайников?
Файл лежит здесь C:\Users\Maxim\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\SoftwareSerial\src
В начале файла будет блок
#include <inttypes.h>
#include <Stream.h>
#include #include вот после него надо вставить
#include <sys/types.h>
и файл сохранить.
после этого пробуйте загрузить файл. Компилятор будет ругаться, но это warning, а не error. Т.е. скетч должен загрузиться.
компилирую
Уррраааа!
Вроде как всё благополучно.
у меня при попытке зайти в веб происходит ресет платы и запускается приветственная анимация((
epc1=0x4021653c epc2=0x00000000 epc3=0x00000000 excvaddr=0x4024affb depc=0x00000000
>>>stack>>>
ctx: cont
sp: 3ffffca0 end: 3fffffc0 offset: 01a0
3ffffe40: 4024affb 3fff0d84 00000000 40210abc
3ffffe50: 00000000 fffee9fc 3fff0d5c 40201116
3ffffe60: 00000000 00000000 ffff0d5c 402068d0
3ffffe70: 00000000 402068e0 3fff0d5c 401000a9
3ffffe80: 3fff0d5c 3ffeea44 3ffffeb0 402074d2
3ffffe90: 00000000 00000000 fffeea00 402105ec
3ffffea0: 3fff0d5c 3ffeea44 3ffeea00 4020755d
3ffffeb0: 0000002f 00000000 00000000 00000000
3ffffec0: ff2f5054 3ffef06c 3fff0f78 4010015b
3ffffed0: 3ffeea28 3ffeeab4 00000001 40209fc1
3ffffee0: 00000001 4bc6a7f0 00000000 0000000f
3ffffef0: 00000000 00000000 4bc6a7f0 3ffe84dc
3fffff00: 00000001 3ffeea28 3ffeea00 402077b0
3fffff10: 00000000 00000001 3ffef0dc 4020905a
3fffff20: 00000000 4bc6a7f0 d126e978 00000000
3fffff30: 3ffee82c 00000001 3ffef34c 40201a18
3fffff40: 3ffeeaf0 3ffeeaf0 401004ac 40201a51
3fffff50: 00000000 c080fdf4 3ffe856c 00000000
3fffff60: 00440611 3ffef37c 4021149c 3fffefa0
3fffff70: 3ffe872c 00000014 3ffef34c 3ffe84dc
3fffff80: 3ffeeaf0 00000000 3ffef34c 40201bcb
3fffff90: 00000000 00000000 00000001 3ffef37c
3fffffa0: 3fffdad0 00000000 3ffef34c 4021154c
3fffffb0: feefeffe feefeffe 3ffe856c 4010087d
<<<stack<<<
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v8b899c12
~ld
Entering setup
(start)Setup done
IP address: 192.168.0.54
mDNS responder started
Приветствие я имею в виду стартовую анимацию
сейчас пробую расшифоровать, на что ругается
0x40210abc: String::equals(String const&) const at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\WString.cpp line 498
0x40201116: std::_Function_handler ::_M_invoke(const std::_Any_data &) at C:\Users\Андрей\Desktop\Liana/webserver.ino line 11
0x402068d0: String::operator!=(String const&) const at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/WString.h line 188
0x402068e0: FunctionRequestHandler::canHandle(HTTPMethod, String) at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WebServer\src\detail/RequestHandlersImpl.h line 20
0x401000a9: std::function ::operator()() const at c:\users\������\appdata\local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\2.5.0-3-20ed2b9\xtensa-lx106-elf\include\c++\4.8.2/functional line 2465
0x402074d2: FunctionRequestHandler::handle(ESP8266WebServer&, HTTPMethod, String) at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WebServer\src\detail/RequestHandlersImpl.h line 44
0x402105ec: String::String(String const&) at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\WString.cpp line 41
0x4020755d: ESP8266WebServer::_handleRequest() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WebServer\src\ESP8266WebServer.cpp line 599
0x4010015b: esp8266::polledTimeout::timeoutTemplate >::expiredOneShot() const at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266/PolledTimeout.h line 216
0x40209fc1: esp8266::MDNSImplementation::MDNSResponder::_updateProbeStatus() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266mDNS\src\LEAmDNS_Control.cpp line 1121
0x402077b0: ESP8266WebServer::handleClient() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266WebServer\src\ESP8266WebServer.cpp line 308
0x4020905a: esp8266::MDNSImplementation::MDNSResponder::update() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\ESP8266mDNS\src\LEAmDNS.cpp line 1124
0x40201a18: webRun() at C:\Users\Андрей\Desktop\Liana/webserver.ino line 52
0x401004ac: millis() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_wiring.cpp line 186
0x40201a51: wifiLoop() at C:\Users\Андрей\Desktop\Liana/wifi.ino line 30
0x4021149c: esp_yield() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_main.cpp line 91
0x40201bcb: loop() at C:\Users\Андрей\Desktop\Liana/Liana.ino line 105
0x4021154c: loop_wrapper() at C:\Users\������\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\cores\esp8266\core_esp8266_main.cpp line 125
Что это значит и как с этим бороться ХБЗ ((
flopic просьба проверить.
Всё заработало с новым скетчем без дополнительных манипуляций.
Жму руку!
У меня такая проблема. Веб морда грузится. Гирлянда не горит. Выбираю в веб морде режимы- наблюдаю в консоли:
[0] Connected from 192.168.1.221 url: /
Text: SFF00, data:65280, a:255, p:0Text: S0, data:0, a:0, p:0(start)Text: S100, data:256, a:1, p:0(run)Text: S101, data:257, a:1, p:1(run)
и всё. Как я понимаю должен запуститься anim->(run), но этого не происходит.
Раз можно писать хотелки, может сделать отдельный тестовый режим?
Библиотека Websokets от Link2004 есть в менеджере библиотек. Я ставил оттуда (вдруг это важно)
пробовал лить бинарник- ВебСокетс не поднимается. В мониторе порта Connecting…
to andronnag Попробуйте выбрать другую плату и настройки как у автора выше скрин был.
Другие скетчи гирлянду заводят?
С бинарником тоже странность, не знаю как объяснить. Плата у вас такая же, Lolin NodeMCU v3?
Спасибо за указание на WebSockets, действительно можно ставить из менеджера. Исправлю в readme.
Василь, вам огромное спасибо.
Наверное стоит указать, что взлетело на версии плат для ESP 2.5.2. На 2.6 у меня тоже не компилится.
В качестве стариковского брюзжания. Разобраться с параметрами плат, тот ещё квест. У меня прошилось и как для Generic, так и для NodeMCU (0.9). А вот некоторый параметры к этим платам я так и не понял.
Всё работает, web тоже работает. Пока гоняю на макетке, буду корпус думать.
Методом проб определил, что ESP запускается только до подключения ленты:
1. если одновременно подать питание — не запускается, если сначала ленту подключить, потом ESP — не запускается, вернее запускается — диод горит, ресет срабатывает, но к сети не подключается и на пин ничего выводит;
2. если сначала на ESP подать питание, а затем на ленту — то всё работает штатно.
Всё запитано от одного импульсника 5 В, 5А, параллельно лента и ESP, ESP через стабилизатор 5В-3,3В, земли стабилизатора и ленты объединены. Понятно, что проблемы по питанию, но как решить?
Также перевёл интерфейс на английский (прошу прощения, это моя слабость), и по умолчанию установил 150 светодиодов в гирлянде, т.к. недавно докупил себе ещё кусочек.
Буду признателен за обратную связь
Есть возможность в веб интерфейс добавить число светодиодов в ленте?
Обновился, словил ошибку с подключением к WiFi.
Видимо, данные об авторизации где-то в энергонезависимой памяти лежат, т.к. после прошивки плата стала не точкой доступа, а тут же попыталась подключиться к роутеру (хотя я наделся что это будет «чистая установка»). Получается в ней сохранилось название моей сети и пароль.
Алгоритм был такой:
1. Прошил через ардуино. Плата не стала точкой доступа а сразу пошла стучаться в роутер. У меня она была привязана жестко к айпи. Попробовал зайти на айпи — тайм-аут.
2. Прошил через бин файлы, естественно то же самое, но в какой то момент смог достучаться до платы по айпи и переключить ее в настройках в точку доступа.
3. Ещё раз прошился через ардуино иде, так как кол-во светодиодов у меня не дефолтное и бин файл пока не мой вариант.
4. Плата таки стала точкой доступа, но при попытке зайти на 192.168.4.1 происходит бесконечный 302 редирект.
Похоже тут надо добавлять в инструкцию способ как полностью затереть все данные на плате, если апдейтишь ее, а не ставишь на чистую.
Конечно можно было выключить вайфай и по идее ап на плате появилась наверно (как это было на предыдущем релизе), но это немного геморно :)
Не знаю, возможно эксперимент не чистый, но когда на шаге 2 достучался до платы, показалось, что интерфейс стал менее отзывчив. Как будто дольше загружается.
Про задумчивость интерфейса не знаю что сказать. Сам иногда наблюдаю, что после рестарта платы долго грузится начальная страница, но после вроде всё работает адекватно.
А вот тут есть метод как очистить конкретно участок памяти где данные о сети.
Вчера уже не было времени все это проверять, вечером затестю и отпишусь.
А инструкцию я специально делал для Flash Download Tools, а не esptool, чтобы она была проще.
Но если по-другому никак, переделаю для esptool (сам-то им и пользуюсь).
1. Все три способа очистки памяти работают, что через IDE, что через прошивку бланка (не важно, esptool или esp8266 download tool), что через команду выше erase_flash. Для кого-то я думаю это не новость, но наверняка в топике найдутся те, кому пригодится.
2. Если заливать в esp bin файлы c гитхаб-инструкции, то все корректно работает.
3. Танцы начинаются, если заливать прошивку через arduino ide, на тот момент я пробовал лить уже на «чистую» esp. После заливки прошивки точка доступа появляется, при коннекте к ней открывается сайт _msftconnecttest.com и виснет в бесконечном редиректе (с разных браузеров и устройств).
Если же вручную перейти на 192.168.4.1, то и там начнется 302 редирект на саму себя, вот он:
Настройки в ардуино иде стоят такие:
Получается, что или код предкомпилированного гитхабовского bin отличается или при сборке в ардуино что-то идет не так.
Добавил в readme.
Ждем исправления целой толпой: github.com/esp8266/arduino-esp8266fs-plugin/issues/64
Прошивал на NodeMCU
Плагин тоже обновился и работает.
Веб морда работает. Андроид сам нашел плату нормально.
Через настройки подключил к своему роутеру почему-то со второй попытки.
Ленту не подключал.
PS Проблем как у народа выше не наблюдал, иде установлена давно, обновлял много раз.
«04 декабря 2019, 21:59
Выложил обновление — теперь количество светодиодов можно задавать из web-морды. Правда после установки плату нужно рестартануть.»
обновил версии плат на 2.6.2 и все залилось через ардуино иде. Все стартануло с первого раза.
Копать тут.
Утешаю себя тем, что теперь в гирлянде круглое число светодиодов — 128. :)
И скажите есть возможность добавить управление яркостью через web?
Сам я с STM не работал, поэтому только предположения…
…
Entering setup
(start)Setup done
Connected, local IP:192.168.1.212
anim->(pixiedust)
…
То есть он присоединился к моей AP с SSID и паролем, которые я задавал ранее в предыдущем скетче!
Доступ по http по указанному адресу из браузера есть…
А еще заметил, что первый светодиод в цепочке с этой прошивкой, залитой из бинарника, всегда светится только белым, остальные все правильно мигают. Проблема не аппаратная, с другими скетчами, и с вашими в том числе, он мигает корректно.
Еще одно дополнение. В прошивке из бинарника перепутаны красный и зелёный местами (но это в случае с моей гирляндой) То есть тут без подстройки под себя и перекомпиляции не обойтись…
Один недостаток заметил — яркость по умолчанию равна нулю, это нехорошо. Лучше дефолтное значение таки указать, к примеру 100 или 256 (на усмотрение Lvr)
Пытался в файле anim.h закоментить строки:
не сработало, анимация не отключилась
Что имею:
Arduino Mega, лента на 100 светодиодов ws2811 5V (https://ru.aliexpress.com/item/32791781404.html?spm=a2g0s.9042311.0.0.274233ed1OlPio), блок питания от стационарного компа.
Была проблема — во время запуска при первой анимации пробегают огоньки по всей ленте, дальше все должно загореться ярким светом. Начинают все светится и видимо доходя до пика яркости белого света блок питания вырубается как при коротком замыкании.
Если первым подать питания на Arduino, подождать пару секунд пока пройдет стартовая анимация, потом подключаем ленту все работает, но через какое-то время опять вырубается. Я так понял цикл начинается с начала.
Все подключаю к 1 блоку питания. Ардуино 12V, лента 5V. Также пробовал разделить питание. Ардуино от телефонной зарядки подключал, лента оставалась на том же БП. Результат такой же, вырубается.
Подключено все по феншую, GND и на ленту и на Ардуино, на провод DI резистор 330 Ом.
В итоге поменял на БП покачественее, все запустилось нормально. Только почему-то последний, сотый светодиод не горит.
Это так для инфо, может кто с таким же столкнется.
NeoPixelBus<NeoRgbFeature, NeoEsp8266Dma800KbpsMethod>* strip;
Стало хорошо. Разницы теперь не вижу.
Немного не понятен сам принцип — что дает подключение к Wifi? Как-то нужно узнавать какой получен айпишник — не лазить же каждый раз в админку роутера? Может все же сделать настраиваемую АР с паролем, что сосед не баловался.
А в целом грузится шустрее, работать начинает практически сразу в сравнении с первой прошивкой.
Подключение к WiFi даёт защиту от несанкционированного подключения, возможность управлять с телефона, не пеиеключая сети и не теряя интернет, а также в перспективе возможность синхронизации времени и включения/выключения по расписанию и других фишек вроде интеграции с умными домами.
Вообще задумка была, что режим AP — временный, основной как раз в сети. Но пожелание насчёт пароля постараюсь учесть.
Connected, local IP:192.168.10.2
anim->(randCyc)
pal->(randCyc)0
pal->(randCyc)4
При этом из под Win не заходит на liana.local. По айпишнику пускает.
И до кучи теперь если есть wifi сама не включается в режим АР. Перепрошивать чтоль?
Скажите, почему перестал работать magic (хотел дочку порадовать), и второй вопрос — можно ли в терминале порулить какими-либо командами?
Magic должен работать, но не из Chrome. Google зарезали доступ к сенсорам без https.
Через COM-порт приём команд не делал, только web
, только хардкорВ терминале контроллер что показывает при переключении в режим и при «махании» телефоном?
1. Переделал UI управления эффектами и палитрами, теперь вместо выпадающих списков кнопки, и палитры отображаются цветами, а не названиями. Так мне показалось лучше. Также вернул русский язык.
2. Добавилась настройка конфигурации светодиодов (RGB/GRB и т.п.)
Magic заработал. Не знаю, что это было, возможно глюк конкретной ЕСП-шки.
В целом все отлично. не совсем понятно, для чего настройка конфигурации RGB/GRB — визуально это выглядит как выбор с какого цвета стартует эффект, красного, или зеленого :) Подозреваю, что есть какие-то эффекты, где это критично?
Еспшку затолкал в корпус, можно вешать гирлянду на елку :)
если неправильно выбрана конфигурация то вместо красного горит зеленый и на оборот, раньше приходилось в скетч лезть и там править, а теперь очень удобно взял и с телефона поправил как надо.
Спасибо.
и все на ESP8266.
ссылка
При компиляции из исходников с рекомендованной автором версией платы 2.5.2 вылезла ошибка на отсутствующую библиотеку SPIFFSReadServer. После добавления библиотеки компиляция все равно не завершилась с жалобами на дубли разных версий библиотек (лог не сохранил, но если надо, то можно повторить).
После обновления версии платы ESP8266 до последней (2.6.3) все успешно скомпилировалось. В качестве платы использовался generic ESP2866 (не nodemcu). После прошивки (и заливки SPIFFFS) все успешно заработало.
C:\Users\...\Новая папка\ArWs2812-esp\ArWs2812-esp\arws2812\arws2812.ino: In function 'void setup()':
arws2812:58:3: error: 'ticker' was not declared in this scope
exit status 1
'ticker' was not declared in this scope
Что делать?
Прошивал эту-же NodeMCU версией прошивки из «папки ардуино» прошилась и работает гирлянда, при прошивке из «папки ESP» выдает ошибку…
Все браузеры подхватили стандарты безопасности и запрещают доступ к датчикам устройства на не-https сайтах. Поэтому эффект и не работает.
Единственный более-менее нормальный вариант обхода этого ограничения, который я нашёл — в мобильном Chrome зайти в настройки (chrome://flags) и включить флаг --unsafely-treat-insecure-origin-as-secure, прописав в нём адрес web-интерфейса.
Закомментировать строку 8.
Раскомментировать строку 9 и добавить в конце точку с запятой, строка должна выглядеть как const ESP_WS = «ws://» + location.hostname + ":81/";
Затем пересобрать и перезалить образ файловой системы. В меню задач (морда инопланетянина) Build Filesystem Image, Download Filesystem Image.
В строке 42 вместо onAnimPalChange(); должна вызываться функция onAPChange(); иначе анимация после снятия и установки флажка «вкл» не запустится.
В строке 84 вместо substring(4,6) должно быть substring(3,5) иначе из номера палитры считается только последняя цифра.
В anim_sparkr вместо glowForEachLed(i) в строке 42 лучше использовать glowForEachLed(pos), иначе картинка дергается.
Функция getPalColor в palette.h дает неверный результат, переписал код.
if (i<1) {
int i0 = (int)(i*(numColors-1));
float t0 = i*(numColors-1) — truncf(i*(numColors-1));
return colors[i0].interpolate(colors[i0+1], t0);
}
else {return colors[numColors-1];} //avoid t0==0 when i==1
Также желательно убрать потенциально бесконечный цикл при выборе нового цвета в anim_pixiedust в строке 42 (похоже, в строке 31 тоже должен быть аналогичный цикл) и anim_sparkr в строке 58. Пока переписал этот кусок, но возможно решение поудачнее найдется.
int j=0;
while (prevColor.isCloseTo(curColor)) {
curColor = palette->getPalColor((float)rngb()/256);
if (j++>50) break;
}
С одной стороны стыдно за код (плохой принцип «работает и ладно»). С другой — приятно что кто-то ещё разбирается :)
Пин задаётся последним аргументом конструктора NeoPixelWrapper здесь: github.com/Vasil-Pahomov/Liana/blob/master/src/anim.cpp#L111
Но нужно иметь в виду, что у меня используется режим NeoEsp8266Uart1800KbpsMethod, который работает только с этим пином. Т.е. если будете менять пин, то нужно в github.com/Vasil-Pahomov/Liana/blob/06112e3b74599ae37042286a454d6a80f7fbcf0a/src/NeoPixelWrapper.cpp заодно поменять режим на подходящий для пина. Поначалу я экспериментировал и методом научного тыка нашёл этот режим. Пин 2 меня устроил, поэтому дальше не ковырял.
Про режимы и совместимые пины рассказано здесь: github.com/Makuna/NeoPixelBus/wiki/ESP8266-NeoMethods
Вот кусок лога:
Entering setup
SPIFFS started
PWM: _fresh, ssid=
(start)RGB
Setup done
PWM: force AP, status=0, _fresh=1, sinceStartMS=13
AP MODE
anim->(pixiedust)
NF: /
NF: /
[0] Connected from 192.168.4.100 url: /
NF: /wifi.htm
[0] Disconnected!
NF: /ncsi.txt
Not found: '/ncsi.txt'
NF: /ncsi.txt
Not found: '/ncsi.txt'
NF: /stable/package_esp8266com_index.json
Not found: '/stable/package_esp8266com_index.json'
PWM: Begin(home,password)
PWM: ssid=home
anim->(static)100
PWM: force AP, status=1, _fresh=0, sinceStartMS=30001
AP MODE
pal->6…
Для чистоты эксперимента можно попробовать залить тестовый скетч (например WiFiClientBasic в ArduinoIDE) и попробовать подключить плату к сети им.
Спасибо ув. Lvr.
Вас и всех с наступающим Новым годом. Удачи в Новом году, новых прошивок и новых гирлянд)))
Пытаюсь повторить проект на ESP8266 и возникли два вопроса при использовании разных светодиодов.
1. Работает ли проект Liana на ESP8266 со светодиодной гирляндой на WS2811?
2 вопрос, на который тоже не могу найти ответ:
с матрицей 16х16 из светодиодов WS2812B все работает прекрасно, а с лентой, типа такой
уже не работает.
В ленте у Вас, возможно, какой-то другой чип, или подключение неверное. Сложно сказать, не зная подробностей.
Уже не первый год задаюсь вопросом (нашел тут такое же свое сообщение от 30 декабря 19 года :D ), можно ли остановить пошаговое воспроизведение эффектов, выбрав в интерфейсе необходимый + нужную палитру как фиксированные? К примеру, хочу выбрать красно-зеленую палитру, выбираю, но все равно спустя время происходит возврат к поочередной их смене.
Никак не удается загрузить в NodeMCU второй файл прошивки. Постоянно сбой происходит на нем. Только первый файл загружается нормально.