Зимняя погода на этот Новый Год, похоже, не удалась, но настроения хочется. Представлю свой вариант гирлянды с попиксельно адресуемыми светодиодами. Подобные обзоры недавно уже были (раз, два); в этом использованы другие светодиодные модули, а также использован свой скетч для визуальных эффектов.
Под катом описание модулей, чуть измерений и скетч.
Схемотехника гирлянды не отличается оригинальностью – применена самая дешёвая плата 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 кбайт ОЗУ. Отвечу на вопросы в комментариях :)
Для демонстрации я немного поменял скетч — сделал последовательный перебор режимов и палитр. Вот результат его работы:
С наступающим Новым Годом!
Планирую купить+138Добавить в избранноеОбзор понравился+130
+235
Красиво!
За обзор "+"
Если нужны WS2811 с белыми проводами, то вот 100 шт.
Платки, правда, всё равно зелёные(((
Но можно их белой термоусадкой закрыть.
У елки пока сидеть некогда :( Из 55 режимов реально можно использовать не более 10, но каждый требует подстройки скорости переключения, яркости светодиодов. Через телефон очень удобно.
Только на 100-светодиодной гирлянде при максимальной нагрузке (белый цвет)
Обновлял свой проект двухгодичной давности только на вот таких светодиодах. Увеличил тоже до 100 штук и в конце гирлянды ощутил уже реальное падение, хотя там проводочки не такие хлипенькие. Последние два десятка диодов начинали «мерцать» на высоких яркостях, этакая глубокая модуляция получалась.
Решил проблему просто. Дальний конец у меня на макушке. От него тоже спустил питающую линию аккуратненько по стволу, там почти и не видно. Так что гирлянда питается сразу с двух концов. Это только аудиофилы не любят «земляных петель», а у меня всё ровненько и стабильно работает.
Не знаю, я к 50-диодной такой же присобачил вторую, стало 100, никаких чисто визуальных проблем с просадкой не наблюл. Вот коротенькое видео: yadi.sk/i/vqYI69S43R6bpx видно, что верхние диоды горят столь же ярко, что и остальные.
А вот зря отпали провода на стыке двух лент, это как раз для подачи питания и нужно… На каждые 50 диодов идёт где-то до 3 ампер, в зависимости от цвета и яркости… У меня справляются 3, 2ух амперных зарядок на 150…
Не подскажете, как увеличить число светодиодов в вашем скетче? У меня Arduino Nano. Эффекты понравились, только 20 диодов не горят. Заранее благодарен.
в файле anim.h параметр define LEDS — кол-во диодов. но если ставить больше 105 при компиляции уже ругается что возможен недостаток памяти. можно упростить скетч, пожертвовав частью эффектов. но у меня этот скетч пока вообще не работает ))
Там одному эффекту (stars) нужен дополнительный большой массив в ОЗУ. Эффект так себе, можно и пожертвовать им (или адаптировать как-нибудь).
Я просто не думал что у кого-то будет больше 100 диодов
Lvr, спасибо за проект. Но код, судя по всему, нерабочий :(
Никакого 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 для платы, конечно, не менялись подо все примеры, всё одинаково.
Видимо, идея писать в сторонней студии была не очень хорошей…
Верное, конечно. Я ничего не перепаиваю. Свой скетч работает. Стандартный пример от неопиксел работает. Данный скетч — нет. Аппаратно ничего не трогаю, просто вгружаю разные скетчи. Пин один и тот же, PIN 2.
Arduino nano. К своему стыду не знаю, что такое среда. На старости лет только начинаю осваивать Ардуино. Тупо пользуюсь ARDUINO 1.6.6. Научился немного скетчи подправлять, но тут не могу найти количество светодиодов.
Заинтересовался после этого сообщения, проверил (правда были только Nano на 328й меге и кусок ленты на 69 диодов, но разницы-то нет), аналогичная ситуация — стандартные примеры вгружаются и моргают (пробовал выходы D2 и D5), адалайт работает, скетч из обзора грузится без ошибок, но никакой активности нет.
Это странно, т.к. для компиляции плагин к visual studio использует Ardiuno IDE, т.е. результат не должен отличаться…
Я использовал ExtNeoPixel из упомянутой в обзоре ALA потому, что с Adafruit_NeoPixel, стянутой из официального репозитория, скетч у меня вообще вис. Тогда не стал разбираться, похоже, зря…
Чуть позже попробую залить из Arduino IDE
Да, действительно при загрузке из Arduino IDE симптомы как у Dimon_ и Igorrrrr. Очередной раз зарекаюсь использовать неродные средства разработки.
Буду разбираться.
Да, действительно при загрузке из 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) при чем тут имя файла? проект открывается, все вкладки тоже, если б не — он бы даже не скомпилировался. (хотя для смеха переименовал, закономерно, без результата).
даже у автора симптомы те же появились.
Сделал как написал уважаемый shaman1010. Всё работает. Ардуино нано, брал в китае уже и не помню когда. Ёлка давно стоит с гирляндами WS2811, запускал при помощи китайских контролёров. Но эта китайщина и в подмётки не годятся проекту автора. Огромное всем спасибо за скетч и за оказанную помощь в запуске его в железе. Красотища ещё какая.
Добился запуска при компиляции из Arduino IDE у себя (правда странным способом). Скетч в github обновил. Dimon_, Igorrrrr и у кого ещё скетч не работал — при возможности проверьте обновление, интересно же… shaman1010, спасибо, советы дельные, но не помогли. Кажется мне что тут какая-то глубоко закопанная особенность компилятора…
подтверждаю, заработало отлично! супер :) спасибо огромное. интересно всё же узнать «что это было») разные версии каких-то библиотек в средах разработки или что…
Поменял «встроенную» в скетч реализацию Adafruit_NeoPixel (в файлах ExtNeoPixel.*) на нормальную внешнюю. Как говорил, почему-то нормальная сначала не завелась, висла, скорее всего из-за VS Code.
Далее, вытащил из класса переменную pixels, сделал её обычной переменной, и инициализировал в самом скетче, а не в конструкторе класса.
В общем не нужно было чрезмерно усложнять с самого начала :)
Хотя поначалу я хотел сделать всё по канонам ООП — по классу на каждый эффект, наследование и т.п., но очень быстро упёрся в ограничение памяти. Так что вывод — для слабых микроконтроллеров современные навороты программирования вредны :)
Ну ООП не такой уж и «современный наворот», но для МК, конечно нет ничего лучше православного асма. Вот только поди попробуй написать на нем даже средний проект. Хотя для мигания гирляндой, пожалуй, самое то.
Ассемблер требует знания инструкций контроллера, нюансов организации регистров, адресного пространства и т.п., которые для каждого контроллера свои. В C с этим проще и универсальнее. Хотя, конечно, понимать во что примерно C-шный код превращается в итоге, очень полезное качество.
Вот теперь Вы поправили баги. Во «вчерашнем по пять» была полная анархия. Посмотрите даже вчерашний anim.h — в инклюдах объявлена ExtNeoPixel, а внутри обращение идёт к стандартной Adafruit_NeoPixel. У любого компилятора «крыша съедет». Ну, да ладно, заработало, подтверждаю…
Для любителей «виртуального секса» выкладываю на ЯДе архив Proteus_garland — это работающий проект в симуляторе Proteus 8.6 на полста пикселей: yadi.sk/d/J8gLN6j43Njria
Можно поиграться с отладкой без паяльника и Ардуинки. Ес-но сам Proteus 8.6, Arduino IDE и в ней Adafruit_NeoPixel должны быть установлены на компьютере.
Должен работать без изменений. Но сначала лучше загрузить заведомо работающий скетч, чтобы проверить соединения и узлы. Выше несколько человек говорили о неработоспособности моего.
Да не, на шину данных тоже можно параллельно цеплять, она ж однонаправленная. но тогда эффекты на «ветках» будут одинаковые начиная с точки ответвления. можно делать красивые «деревья». можно на выход ардуины сразу 2 одинаковые ленты повесить, будут синхронно «моргать». единственное, желательно между выходом ардуины и лентой/лентами ставить по шине данных резистор ом на 100-200 на всякий случай. ну и если «ветвить» ленты — тоже лучше с резисторами.
Прочитал обзор, прочитал комменты…
Хочу белую ёлку со встроенными светодиодами и модулем управления ими. Управление по Blurtooth/WiFi приветствуется…
Ау, Сяоми!.. Где умная ёлка?..
PS: Я серьёзно. Надеюсь к следующему НГ китайцы накреативят…
Lvr, и ещё вопросик по скетчу. Нужно реверсирование. У некоторых начало может быть на макушке ёлки, у некоторых — с нижней ветки. Какую бы-нибудь глобальную переменную, чтобы можно было указать, кому что надо. Это всего лишь чуть усложнит Anim::run(), как я понимаю, да? Или ещё где-то надо править?
Все эффекты, имеющие «направление», случайным образом реверсируются. Единственный жёстко привязанный к направлению — это стартовая анимация.
А вообще да, чтобы поменять направление нужно реверсировать два цикла в Anim::run(). Больше нигде ничего менять не нужно.
Возьму доработку на заметку, спасибо!
Спасибо за код! На 100 WS2811b + Arduino UNO заработало как родное. В НГ с новыми эффектами :)
Одна проблема всплыла — переименуйте main.ino во что-нибудь другое. У меня название конфликтовало с main.cpp в дебрях ардуино-оболочки на линуксе. Говорит нет setup и нет loop.
на Arduino nano даже не проходит проверку, также покажите пожалуйста в скетче где выставлять номер выходного контакта и количество диодов
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.
У вас похоже 2 раза библиотека Adafruit-NeoPixel установлена. Удалите папку C:\Xiaomi\arduino-1.8.5-windows\arduino-1.8.5\libraries\Adafruit_NeoPixel-master, скорее всего поможет.
Заработало.
1. файл *.ino должен совпадать с именем архива
2. в anim.h выставляем нужный рабочий пин и количество светодиодов.
3. Больше 100 светодиодов работать не будет(
P.S. Не просто красиво, а намного шикарнее всех скетчей для снежинок, которые я пробовал.
Вот только яркость как-нибудь бы уменьшить, а то 1А БП сильно греется, да и ардуинка подвисает в самом начале из-за того, что все светодиоды одновременно светят белым цветом. 2А БП спасает положение, но их мало и они дорогие, а вот 1А БП — есть запас.
P.S. Спустя 10 минут все никак не налюбуюсь эффектами.
Уже можно, параметр BRIGHTNESS в обновлённом скетче. Заодно переименовал main.ino в arws2812.ino, как просил Cucumber.
Рад, что эффекты не только к линейной гирлянде подходят. Хорошо бы видео увидеть ;)
Прописал в BRIGHTNESS 130.
Во первых перестало слепить (но все-равно светит достаточно ярко). Во-вторых пиковое потребление упало до 1.2А (в среднем 0.7А при ярких малодинамичных анимациях с участием большого количества светодиодов).
Как было:
Слепило. А во вторых в пике потребляло 1.85А (в среднем больше 1А). К тому же ардуинка подвисала с 1А БП при очень ярких анимациях.
Ребята. придумайте что-что что бы, не меняя платформу, более 100шт работало. кусок гирлянды не подсвечен, при увеличении длины перестаёт работать. платформа на 328 процессоре.
Спасибо за решение.
что бы, не меняя платформу, более 100шт работало… платформа на 328 процессоре
Две ардуины, и располовинить ленту.
Там в RAM все упирается.
144шт работает на atmega32u4 (leonardo), по идее должно работать на esp8266.
Неплохо бы смотрелся перенос на stm32f103 ($1.8 платка)
эффекты идут в случайном порядке, если 2 ведруины поставить — получится каша( самый простой вариант — можно к неработающему «концу» протянуть шину данных от середины гирлянды, будет повторяться, но если гирлянда длинная это не очень заметно будет…
Теоретически можно с одной ардуины запустить синхронизацию со второй ардуиной. Просто например для запуска второй ждать сигнала на определённом входе (если нет случайных режимов). А более хитро -собрать шину данных из трёх например проводов, Тогда возможно 8 комбинаций.
Не знаю, как там устроено — а если разрядность цвета вдвое-вчетверо уменьшить?
Вот здесь можно почитать в общих чертах.
В двух словах — там фиксированные 8 бит градации яркости на каждый цвет. т.е. 8х3=24бит (3 байта) на каждый светодиод. Протокол использует 3 бита для передачи каждого. Итого 3х3=9 байт на каждый светодиод. Для формирования эффекта, часто приходится заполнять буфер, равный количеству светодиодов. Т.е. 9х100шт=900 байт только для буфера. (из 2048 общей), без памяти для исполнения программы, непосредственно.
Дальше, надеюсь, понятно.
Использовать больше можно либо используя внешнюю ram, либо формируя эффекты «на лету», но тогда упираемся в производительность 328-го.
Мне кажется, лучше перенести код на ARM (stm32f103), там и памяти и скорости достаточно, стоит как про-микро ($1,8), под ардуино тоже завели.
Либо esp8266 (не проверял, но думаю нормально должно быть), либо Leonardo и выше для AVR.
Я имею в виду уменьшить разрядность под каждый цвет в буфере до например 5 бит — получим 32 градаций вместо 256 — а перед выдачей в линию умножать значение цвета на 8, потеряем тонкие изменения — но уменьшим занятость памяти почти вдвое.
Разрядность — управляет яркостью. Цвета 3 на каждом диоде. Мне больше нравится вариант обертывания каждого бита двумя другими (высокий в начале и низкий в конце). Тогда необходимая память уменьшится в 3 раза (вероятно), а маску накладывать непосредственно перед выдачей троицы в линию. Т.е. маску эффектов хранить во флеши, В процессе воспроизведения эффекта — оперировать данными непосредственно в оперативке, а перед выдачей в линию обертывать каждый бит маской.
Пока это в теории, если руки дойдут — проверю. Народ еще i2s использует как транспорт, может там что-то интересное.
Это способ обойти перерасход бит :))))
Каждый бит (из 24 на один светодиод) по стандарту должен передаваться в виде посылки из 3-х бит.
110 — это 1
100 — это 0
Дык вот значащими — являются только вторые, а первый и третий можно (по идее) добрасывать в момент отсылки. Они не меняются, то есть накладываем маску и выпуливаем.
Как-то так :)
А, вот тут сказывается что я не смотрел конкретную реализацию.
Я предполагал что хранится массив только значений с наложенными эффектами, а не массив готовых посылок, и обёртывание производится библиотечной функцией в момент отсыла. А тут действительно богатый запас ресурса.
Я копал пример из mysku.club/blog/aliexpress/47920.html, использующий Adafruit_NeoPixel. Там всё происходит внутри библиотечных функций, и в каком виде хранится — неясно, надо исходники смотреть. Но новый год снова далеко, а дела близко. :)
в LG бывают светодиоды на 3 и 6 вольт, определяешь, потом отпаиваешь и по полярности и форме контактов смотришь например здесь :https://ru.aliexpress.com/store/group/LG-Innotek-LED/936602_252833124.html?spm=a2g0v.12010608.0.0.287a15d7ZvKCDs
Хоть и с опозданием собрал, загрузил и всё побежало, правда сначала перепутал направление. С ардуинкой имел дело в первый раз, долго ждал БП 5В 5А из Китая, потому и припозднился. Зато детвора сегодня была в восторге. Спасибо за науку и помощь в освоении.
Здравствуйте, Господа! С Рождеством Христовым Вас. Вопрос к автору Ёлки. Можно ли получить готовый скетч, тот, что на последнем видео -https://youtu.be/if178oluID4. Спасибо заранее.
Ссылка на скетч на github есть в обзоре: github.com/Vasil-Pahomov/ArWs2812
Идёте по ссылке, нажимаете зелёную кнопку «Clone or download», далее во всплывшем окошке «Download ZIP»…
Спасибо огромное. Скачал, скетч залился без проблем. Еще вопрос, если можно. Есть ли возможность прикрутить дисплей на базе драйвера TM1637, чтобы показывал действующий эффект, как дополнение? Круто было бы. Спасибо. Думаю места в Нано хватит. И еще кнопки нельзя установить 1 — для зацикливания любого эффекта, 2 — перехода на другой эффект и 3 — автомат? Стал бы полноценной конструкцией. Сам скетчи писать не могу, вот и спрашиваю.
Наступит, через 11 месяцев и немного дней :)
Сейчас уже заниматься этим, пожалуй, неактуально, а вот к следующему Н.Г. есть несколько задумок. Тогда и кнопки можно будет добавить.
Но DIY тем и хорош, что процесс обычно более увлекательный, чем результат ;)
Большое спасибо за идею и превосходную реализацию. Сегодня получил гирлянды и БП и (о чудо!!!) за час реализовал проект. Вот честно, никогда у меня сразу не работало, а тут как по маслу пошло!.. На следующий НГ добавлю гирлянду на елку, и будут у меня все урашения на 2811 и 2812 (https://www.youtube.com/watch?v=9QUcCxezHDY ). Теперь будет «телевизор», бегущие огни, снежинка и ЕЛОЧКА!!! Еще раз спасибо!
Там совсем просто всё, питание на Arduino и ленту + единственный выход со 2-го пина ко входу данных ленты. Тут есть схемка: github.com/Vasil-Pahomov/ArWs2812. На схеме есть модуль Bluetooth, но это уже планируемое расширение, всё работает и без него.
а на Arduino NANO какие выходы задействовать? там немного разные? у вас идёт +5 v идет на RAW а на плате NANO такого нет (( подскажите пожалуйста схему для Arduino NANO
Если тема ещё жива, можете подсказать, как реализовать такое, человеку, не разу не сталкивающиеся с Ардуино, к тому же может что поменялось за год, и сейчас можно взять более интересные решения. Если не сложно — можете подсказать, какую плату и БП сейчас заказать, что бы порадовать своих детей к НГ и есть ли сейчас смысл брать другую светодиодную ленту или указанная топик стартером до сих пор оптимальна под данную задачу? Буду признателен за помощь.
Тут много завязано на скетч, т.е. на платформы, отличные от Arduino, придётся портировать. Я бы бы рекомендовал повторять как есть, т.е. на Arduino Pro Mini. Только гирлянду лучше заказать с другими светодиодами; в самом начале этого обзора есть ссылки на другие.
Пытаюсь скормить UNO данный чудесный (без преувеличения) скетч, и получаю «Недостаточно памяти, программа может работать нестабильно.» Ничего не работает. Уменьшаю количество светиков до 93, и красота взлетает.
Отцы, что не так? Леонарду (под эту платку компилится без ошибок) что ли брать?
Странно, в Uno, насколько я знаю, точно такая же ATMega328, как и в Pro Mini. Предупреждение о недостаточности памяти — всего лишь предупреждение, и с ним должно работать.
Можно детальный вывод компилятора при компиляции под Uno (лучше наверное в личку)?
Для прикола попробовал скомпилить. Странно, но действительно что на уно, что на нано пишет. Похоже глюк иде.
Пишет что занимает меньше 100 процентов но при этом выводит ошибку.
Изменены опции сборки, пересобираем все
Скетч использует 14712 байт (47%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 1605 байт (78%) динамической памяти, оставляя 443 байт для локальных переменных. Максимум: 2048 байт.
Недостаточно памяти, программа может работать нестабильно.
Разработка достойная всяких похвал! Хорошо, что тема не загибается, а имеет развитие в хорошем направлении. Ваш скетч пока лучшее, что я видел из бесплатного в сети, повторил уже несколько раз. Пробовал другие, но всегда возвращаюсь к вашему, т.к. эффекты собраны практически безупречно. Имеет смысл попробовать портировать на ESP и добавить WEB интерфейс, будет бомба!
Спасибо за гирлянду за отличный скетч. НГ на носу решил и я подготовиться в этом году получше купил ws2811 и Nano CH340/ATmega328P
Сразу скажу я могу только повторять за умными людьми.
У меня получилось запустить только 94 светодиода из 100.
И ещё вопрос. А почему не использовать esp8266 NodeMCU v2 Lua wifi( валятся такой в загашнике) вместо bluetooth?
А почему не запускается больше? Виснет, не компилируется?
К своему стыду, с esp ещё дела не имел, а pro mini валялось достаточно много уже давно. И всё никак не нахожу времени освоить esp нормально.
Но насколько я представляю, портировать будет просто, но, конечно, нужно будет добавить управление по WiFi. Возможно, спрос стимулирует меня ;)…
Добрый день, спасибо за скетч, все заработало с первого раза на Nano с лентой WS2811… подскажите в каком месте в скетче отвечает время выполнения одного режима, можно как то увеличить?
Подскажите, пожалуйста, как залить прошивку в NodeMcu V3? Вроде прошивается, ошибок нет, но лента не работает. Лента исправна, пины не спутал.
Мне нужна гирлянда на 150-200 светодиодов, поэтому ардуино отпало.
Даже не знаю
Брал этот скетч github.com/Vasil-Pahomov/ArWs2812/tree/before_bluetooth
Удалял строчки
Менял количество светодиодов
Управляющий пин не менял и все заработало.
Сейчас попробовал залить на 100 светодиодов все залилось и работает.
Народ, помимо прикрутки управления по Bluetooth есть идея, как заставить скетч управлять большим количеством светодиодов (в теории даже 500 должен потянуть) на Arduino? Есть ли смысл это делать, или же лучше смотреть в сторону ESP? В этом случае думаю самым оптимальным будет контрибутить в какой-нибудь готовый проект, например github.com/Aircoookie/WLED. Т.е. туда добавлю свои эффекты.
Я за esp (потому-то она у меня есть))). Было бы неплохо возможность управления длительностью и скоростью каждого эффекта по отдельности. И ещё добавить стартовую анимацию в список эффектов уж очень она мне нравится.
Поправьте меня, если я ошибаюсь, но ESP, вроде, к питанию более требовательный. Только 3.3 и не сантиметра…
И, хоть убейте, не понимаю, для чего тут нужен Bluetooth? Что за манера за столом телефон доставать и пальцами тыкать?
Все таки с точки зрения повторения, ардуинка предпочтительней. А если еще и дофига светодиодов будет…
На бордах с ESP типа NodeMCU стоят стабилизаторы, как впрочем на всех ардуинках. Питать их можно свободно от 5 вольт.
А насчёт ESP vs Arduino… Сам мечусь между повторяемостью на Arduino и гибкостью и настраиваемостью ESP. Сам склоняюсь к ESP, чтобы детям развлекаловку делать (им прикольно управлять гирляндой с телефона), ну и народ больше за ESP как-то. И то, и другое точно не сделаю, тут хотя бы что-то одно успеть.
Прошу понять и простить…
Всем, кто на ESP заливает — в этой ветке буду выкладывать для ESP сборку: github.com/Vasil-Pahomov/ArWs2812/tree/esp
Уже пару фиксов есть, сейчас скетч вроде как на ESP работает нормально
GPIO2 должен работать, у ESP01 он выведен.
Вообще пин можно поменять в строке 6 файла anim.h (https://github.com/Vasil-Pahomov/ArWs2812/blob/esp/anim.h#L6)
#define PIN 2 // WS2812 pin number
Но у ESP01 сильно не разбежишься, только GPIO0 и GPIO2 выведены, как я понял.
ну не знаю у меня точка доступа поднята и даже зайти могу (через браузер) но пустой экран. возможно это хвосты от старой прошивки где была точка доступа.
Залил первую версию с web-интерфейсом. Пока работает только с существующей точкой доступа, только по IP-адресу. Позволяет менять анимации и палитру. Адаптирована для мобилок.
Для запуска:
1. В arws2812.ino меняете WIFI_SSID и WIFI_PASS на данные вашей сети WiFi.
2. После запуска в мониторе порта выводится IP-адрес ESP.
3. Заходите IP-адрес_ESP/
В интерфейсе пока два выпадающих списка — анимация и палитра. Пока открыт интерфейс, эффекты не меняются (за исключением стартового).
Жду конструктивной критики, пожеланий, предложений :)
веб морда появилась. два списка.
Если не трудно пояснения как это отрабатывает. К примеру выбрал режим. а как его запустить?
при открытой веб морде эфекты меняются в автомате по своему алгоритму.
моя хотелка и думаю другие тоже поддержат. что мы в веб морде была кнопка включить выключить гирлянду.
Работать должно так: при входе в морду текущий эффект должен «замораживаться», и при изменении в списках сразу соответственно меняться. Можно в браузере нажать F12, затем открыть морду, поменять эффект и потом скинуть скрин (лучше в личку)? Спасибо!
Про выключение понял, беру на заметку.
еще если возможно что бы при прошивке сразу айпишник вбить. как то привык что бы все что дома со своими статическими адресами жило (к примеру можно будет в не дома через интернет управлять)
Новая версия для ESP. Добавлена возможность выключения гирлянды из web-морды, исправлены баги.
ВАЖНО: теперь гирлянду нужно подключать к GPIO2, поскольку GPIO2 теперь используется для вывода отладочной информации.
Жду обратной связи :)
C:\Users\Andrey\AppData\Local\Temp\arduino_build_361921\sketch\anim.cpp.o:(.text._ZN4Anim7setAnimEh+0x44): undefined reference to `Anim::animOff_SetUp()'
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).
Прошу простить, делаю урывками, спешу и косячу. Добавил отсутствующий файл, сейчас должно нормально компилироваться. Впредь буду стараться перепроверять всё.
Кто заливал скетч на ESP, отпишитесь плиз, наблюдаются ли у вас периодические сбросы контроллера? Внешне выражается в том, что внезапно опять запускается стартовая анимация. У меня есть такая проблема, и я не могу понять, дело в моей ESP или же это программная ошибка. Спасибо!
у меня если и наблюдается только из за питания. тоесть питанию должно хватать и на ленту и на еспешку, если не хватает то и будет сбрасываться.
еще вариант плохие контакты.
как вариант запитать еспешку от одного БП, а ленту от другого и сразу будет понятно.
Задумка была такая — когда гирлянда работает автономно (web-морда не открыта), эффекты и палитра меняются случайно каждые 30 секунд, как это было в «оригинальном» скетче для Arduino. При открытии web текущие эффект и палитра удерживаются, и есть возможность их поменять.
Других идей по управлению не приходит в голову, буду рад любым мыслям.
Мне все нравится. Отлично сделано.
Мой багрепорт
Если включаешь полет
Выскакивает ошибка и при переключении нижней вкладки ошибка повторяется
И мои пожелания.
Возможность регулировать длительность эффектов.
И может сделать галочку как для выключения, чтоб оставался выбранный эффект и после закрытия вебморды.
Гоняю гирлянду уже давно, сбросов не было, питание есп и гирлянды от разных источников (землю объединил ессно). Однако заметил интересную вещь — пару раз было что горели только зеленый, белый и синий цвета. Из эффектов пропадали остальные цвета, но после ребута есп все приходило в норму.
Можно подробнее — закономерность в проявлении? Анимация сохранялась, но цвета были не все? Похоже на пропадание красного цвета, но почему такое может быть — ума не приложу.
Спасибо за проект.
Не знаю насколько грамотное от меня решение, но если запускать без wifi точки, то она будет до скончания веков её ждать. Добавил такой вот код. Все работает.
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, или же их неисправность).
Спасибо. Качал вчера ночью. Я так понимаю, что если скачать сейчас архив — все должно залиться без проблем? К сожалению ссылку неудобно добавлять — сижу с телефона. Буду дома — попробую ещё.
Да, так и есть, сейчас должно всё компилироваться нормально. Но если не планируете использовать bluetooth, то разницы с веткой before_bluetooth никакой не будет.
Спасибо за оперативные ответы и помощь. Про Bluetooth увидел только в выходные, поэтому модуль пока ещё в пути. Пока попробую прошить с его поддержкой, а как придёт — допаяю все необходимое.
Попробовал сменить частоту и порядок цветов — не помогло. Теперь встал вопрос — как взять примеры из библиотеки для загрузки?
Как проверить саму ленту? Что-то подозрения на нее. Когда откидываю + или — от ленты — загорается красный светодиод на ардуино. При подключении обратно — гаснет и больше не загорается.
Спасибо за помощь. Разобрался наконец. Проблема оказалась в кривых перемычках. При достаточно тугом ходе контакт постоянно пропадал или напрочь отсутствовал, к тому же, провода этих перемычек нифига не лудятся. В итоге распотрошил 3-х жильную ВВГшку и подпоялся напрямую к плате ардуино. После этого все заработало с первого раза. Кстати, такая проблема только с перемычками мама-папа. Папа-папа с WAGOвскими клемниками и разъемами ленты работают пока без нареканий. Теперь жду, когда bluetooth модуль и переключатель придут.
Скажите, а в итоге нет мерцания «вырви глаз», как в китайских дешевых гирляндах? Я имею ввиду не переходы между эффектами, а само по себе свечение как на 50Hz
За что мне понравился данный скетч, это именно, что плавные переходы между эффектами. Конечно можно придраться к переходам, но это если хотеть.
Вроде мерцания особого нет, если я правильно понял про 50Hz
Доброго времени суток! Пока комплектующие на подходе, хотелось бы узнать. Bluetooth HC-06 надо ли как то настраивать или ардуина сама все сконфигурирует?
Помогите!
Использую arduino nano (три разных из Китая); Среда arduino 1.8.7;
Прошивка ArWs2812-before_bluetooth.zip — устанавливается и запускается;
Прошивка ArWs2812-master.zip — устанавливается и запускается только с при установке на 99 светодиодов;
Но в обоих случаях по кругу работает только один эффект (первый из видео), как включаются остальные...?
К сожалению моих знаний не хватает разобраться, как менять режимы и включать/выключать при помощи http запроса. Например, http/ip адрес/? команда выключения или http/ip адрес/? режим=2.
Подскажите как будет выглядеть http строка в браузере. Спасибо
http/ip адрес/ вот так и выглядит. Главное вместо ip адрес вписать айпишник модуля. (Он может после каждого нового подключения к блоку питания меняться). Должна открыться страница с надписями.
Да, всё верно. Запрос /set устанавливает заданную анимацию и палитру. Анимации нумеруются с 0 до 7 (0 — стартовая анимация), анимация -1 означает выключение. Палитры нумеруются с 0 до 7.
А если не секрет, в каком сценарии планируете управлять запросами напрямую? Я планирую переделать управление на websockets, но если http-управление надо, то конечно оставлю его.
насколько я понял первая цифра это от 0 до 8 это эффект, а -1 отключение эффектов
а вторая цифра это вторая строка от 0 до 7
я бы тоже сделал бы ряд кнопок типа не выпадающих а сразу кнопка с эффектом и второй ряд кнопки с палитрами и кнопка включения и вторая кнопка выключения. хорошо бы что бы кнопки подсвечивались после нажатия
в том то и дело, что есть сомнения насчет актуальности, ибо вот по этой ссылке github.com/Vasil-Pahomov/Liana/tree/master обновления проводились позже, чем по ArWs2812 (изменения всего неделю назад, против трех с лишним недель у ArWs2812), есть подозрение что проект Liana продолжение ArWs2812, но заточенный именно под esp. Хотелось бы услышать комментарии автора на этот счет
Заведомо работающая (не только у меня) версия находится в старом репозитории: github.com/Vasil-Pahomov/ArWs2812/tree/esp
И да, я создал новый репозиторий для проекта под ESP (github.com/Vasil-Pahomov/Liana/), но пока там особо ничего готового нет, поэтому и не говорил.
В мастер-ветке этого репозитория (github.com/Vasil-Pahomov/Liana/tree/master) находится теоретически работающий код, в котором заменена библиотека работы со светиками. Использованная ранее Adafruit_Neopixel периодически вызывала Soft WDT reset на моей плате, хотя больше никто не жаловался.
Новая библиотека (NeoPixelBus) такой проблемы не вызывает. Внешне отличий в функционале со старой веткой нет, но гирлянда теперь опять цепляется на GPIO2, это ограничение NeoPixelBus.
Если кто проверит у себя работоспособность новой версии с NeoPixelBus, буду благодарен :)
спасибо за развернутый ответ :) и за проделанную работу!
на днях заберу ленту с почты и буду тестить, попробую лиану)
а еще вопрос вебсокет контрол чем лучше?
Хочу попробовать, что такое websockets и с чем их едят :)
Вообще делаю эффект, которому нужна быстрая асинхронная передача данных с клиента на ESP, по HTTP это было бы сложно.
HTTP-эндпоинты оставлю, по крайней мере /set (@hunter59 просил для автоматизации управления).
Визуально почти ничего не поменяется при переходе на websockets
что-то лыжи не едут… не могу понять в чем причина, на ардуине все без проблем завелось, а на wemos d1 mini (esp) ни в какую, ни ArWs2812, ни Liana, ни на D0, ни на D2… не могу сообразить в чем дело. при том вебка стартует можно выбрать режим, к вифи цепляется, а вот лента молчит :(
прошу помощи!
с подключением все ок, питание общее, Din пробовал и на д0 и на д2, даже пробовал переназначить в скетче вообще на другой порт — ничего. Повторюсь, на ардуино все работает, такое ощущение, что на пин ничего не приходит по какой-то причине(
Попробуйте какой-нибудь тестовый пример. У ESP уровни 3.3В, у большинства Ардуин — 5В, возможно просто ленте не хватает уровня. Если так, то поможет любой преобразователь уровней 3.3В -> 5В, благо интерфейс односторонний. Схемы на транзисторе легко гуглятся, например chipenable.ru/index.php/how-connection/91-soglasovanie-logicheskih-urovney.html
я не знаю что это было, но оно починилось и работает) лента из 300 диодов, однако в некоторых режимах работают только (примерно) 50 диодов, в каких чуть позже отпишу если надо, речь про скетч liana. самсунговская 2а зарядка тащит это все дело с большим трудом, отдает 2.3-2.5а, иногда вемосу видимо не хватает напряжения (хотя зарядка видимо умная и завышает напряжение на выходе до 5.5в вместо 5.2 вхолостую) и начинается стартовая анимация. видео на ёлке на днях выложу) спасибо огромное!)
З.Ы.: пожалуй, на конец ленты надо еще один такой же бп повесить…
У вемос D2 и GPIO2 это не одно и то же. гпио2 на самом деле D4
Остальные выводы тоже не совпадают. Короче, пробуй перекинуть ленту на д4, а в скетче 2 пин оставить.
ага, да, спасибо большое, с этим разобрался пока игрался с тестовыми скетчами… но со скетчем автора все равно не работает( пробовал по разному, пробовал и перетыкать и в самом скетче менять, пока продолжаю тыкаться
liana почему-то вообще не стартует(( Еэспишка на wemos D1 борде, индикатор сразу загорается и больше никаких движений( кстати из другой ветки последняя сборка от 11 декабря тоже виснет — когда сама ребутнётся, когда приходится передёрнуть и сети.
1) В anim.cpp нужно убрать из switch (https://github.com/Vasil-Pahomov/ArWs2812/blob/master/anim.cpp#L102) ненужные эффекты, при этом сдвинув метки case так, чтобы они шли последовательно. Например, если убираете эффект Stars, то switch будет выглядеть так:
switch (animInd) {
case 0:
setUpImpl = &Anim::animRun_SetUp;
//пропущено для наглядности
break;
case 3:
setUpImpl = &Anim::animRandCyc_SetUp;
runImpl = &Anim::animRandCyc_Run;
setUpOnPalChange = true;
break;
/* закомментирован выбор эффекта Stars
case 4:
setUpImpl = &Anim::animStars_SetUp;
runImpl = &Anim::animStars_Run;
setUpOnPalChange = false;
break;
*/
/ *обращаю внимание - раньше эффект Spread был под меткой case 5, стал под case 4. Остальные эффекты ниже тоже сместили метки, чтобы метки шли последовательно. */
case 4:
setUpImpl = &Anim::animSpread_SetUp;
runImpl = &Anim::animSpread_Run;
setUpOnPalChange = false;
break;
case 5:
setUpImpl = &Anim::animFly_SetUp;
runImpl = &Anim::animFly_Run;
setUpOnPalChange = false;
break;
case 6: //special
setUpImpl = &Anim::animBT_SetUp;
//пропущено для наглядности
}
Правда, после этих изменений управление через Bluetooth будет работать не всегда некорректно, в приложении для Android тоже нужно обновить список эффектов.
Автору спасибо за отменную идею и разложенное по полочкам руководство! С ардуинами и прочим практически не знаком, провозился целый день — но она РАБОТАЕТ! Сижу не нагляжусь)) Еще раз спасибо!
Так же собрал на 50 ламп и лампы моргают быстро и хаотично. лампы вот такие: https://aliexpress.com/item/item/50-12-WS2811/32957179920.html менял в настройках 800khz/400khz. Питане ESP от usb, гирлянда от +5V внешнего.
От nano гирлянда работает. Можете помочь с проблемой?
Прежде всего огромное спасибо автору. Именно увидев эту елку я начал эксперименты с ардуино. Вопрос — кто нибудь пробовал приладить в скетч простой ардуиновский ИК пульт?
Здравствуйте. Возможно ли запустить данный скетч на attiny85? Диодов у меня немного — всего 25 штук. Управление по бл не нужно, нужно лишь красивое мигание.
Последние деньги со степухи потратил на тиньку и ленту, уж очень хочется новогоднего настроения((
youtu.be/8JA_mj-Q3EU?t=80 вот этот режим красивый, не могу найти оригинал видео, там автор писал что он конвертировал спецом мод контролер эти режимы. я в прошлом году такую ставил себе красота, на этот год подарил.
а сам мучаюсь с ардуиной :( хотел на 200 диодов сделать
Доделал до уровня альфа-версии управление под WebSocket, а также добавил управление акселерометром.
В списке появился новый эффект — «Магия». При его выборе при наклоне телефона гирлянда подсвечивается, вращение вдоль «длинной» оси меняет цвет, а резкий «бросок» вперёд подсвечивает всю гирлянду.
Скетч здесь: github.com/Vasil-Pahomov/Liana/tree/websocket_control
Примерно так это выглядит.
Периодически подтормаживает, пока не разобрался, почему. Предполагаю, что из-за связи (слабый WiFi).
Это ещё остатки от Arduino. Там я по «свечению» встроенного светодиода хотел оценивать загрузку процессора, что-то типа ШИМ-а должно было получиться (при работе светится, при простое погашен). В итоге оказалось малоинформативно, и убрать забыл :(
Ага. Это в ардуиновской прошивке. В ЕСП — закомментировано.
Просто я рылся у себя в закромах, и нашел парочку Pro mini. А к ЕСП пришлось бы преобразователь уровня прикручивать.
Да WS2812 и без преобразователя от ESP работает, у меня и не только.
Ну а вообще если Pro Mini лежали без дела, то можно их и использовать, это правильно.
Приветствую!) Не знаю, может, только у меня такое: прочитал всё, что нашёл по вашей прошивке, но никто с этим не сталкивался. Добрая половина анимаций в доброй половине палитр работает с жуткими артефактами. Использую ардуину мега, в цепочке 73 диода на внешнем блоке 5В 40А. Такое происходит на всех ШИМ-пинах. В чём может быть проблема?(((
все таки ваши симптомы больше показывают на качество питания. попробуйте от своего блока питания отдельным проводом запитать саму ардуину и отдельным проводом запитать ленку.
Не скажу, не сталкивался с таким контроллером. Насколько смог нагуглить сходу, он закрытый и позволяет только видосики загружать. Т.е. теоретически, наверное, можно. Но практически скорее всего проще заказать Arduin-у или ESP и подключить к ним :)
вопрос задавался уже второй раз какие у вас светики, ответ примерно угадай сам светики от туда светики 5 вольтовые светики 2812. по мне информации очень мало. по этому очень трудно догадаться в реальных причинах, что у вас происходит.
попробуйте сначала по 10 подпаивать и запускать. возможно что то с пайкой или партия такая. тоесть если по середине один не работает то дальше будет ерунда
Проблема закралась там, где её никто не ждал: выходной каскад китайского ИБП «шумит» на частоте 1кГц-это и даёт сбой в работе скетча, причём не только указанного в этой статье
Так же могу добавить, что неободимо подрегулировать напругу потенциометром) не должно быть более 5,1В-тоже артефакты будут)))
Но всё же опыт как никак) потому всем спасибо за участие)))
может непропай какой. у меня все ок.
или брак светодиода, хотя сам в этой теме только недавно… но глюки уже были во всяких поделках, когда цвета не те и не так горели. но там был плохой контакт и коротило на землю именно пина данных.
Возможно действительно брак светодиода. Попробуйте пустить линию данных на второй, в обход первого. Если второй не будет гореть зелёным — значит явно проблема в светодиоде.
так если центральную жилу к след светодиоду перенести. то он зеленый будет? значит ардуинка что то шалит с сигналом на первый… либо наводки какие на сигнальный провод… с GRN-дом его обмотайте, если они длинные у вас до гирлянды от ардуинки…
Уже был случай, когда скетчи-примеры работали нормально, а мой барахлил. Правда, там проблема была в качестве питания. Но всё равно, работа других скетчей не 100% указывает на исправность аппаратуры.
Какие у вас светодиоды?
Также попробуйте уменьшить количество светодиодов до, допустим, 10, и в основном скетче в строке
anim.setPeriod(20);
(https://github.com/Vasil-Pahomov/ArWs2812/blob/master/arws2812.ino#L55) поменять 20 на 500. Это уменьшит скорость обновления светодиодов. Есть смутное предположение, что проблема может быть в этом.
Первая лента -https://ru.aliexpress.com/item/DC5V-WS2812B-1-4-5-30-60-74-96-144-s/32832420003.html?spm=a2g0s.9042311.0.0.747833edWIU5j7
Задействовано 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 не повлияло на работу.
Спасибо за долготерпение и внимание ко мне, на этом всё.
Купил 2 гирлянды по 50 светодиодов, на 5В. Прошил нано на 100 диодов. При прошивке написало, что мало памяти. Но все заработало. Два часа работает, полет нормальный. Скоро Новый год. Готовь сани летом.
Очень давно не заходил в эту ветку. Был приятно удивлен внедрением в проект esp, благо есть в наличии. Осюда два вопроса — где в данный момент лежит актуальная версия проекта под esp, и нет ли в ней готовых файлов прошивки, чтоб не ставить ИДЕ и не копились самому, а просто залить флешлоадером. Автору спасибо за труд, на белой елке смотрится изюмительно :)
Актуальная версия находится тут: github.com/Vasil-Pahomov/Liana
Файлов прошивки выкладывать пока не планировал, т.к. прошивка очень сырая. В частности, SSID и пароль сети вбиты в прошивку, т.е. нужно перекомпилировать её, чтобы подключиться к другой сети WiFi.
Вот всё же бинарник для NodeMCU: github.com/Vasil-Pahomov/Liana/raw/master/Liana.ino.nodemcu.bin
Он работает автономно (как и для Arduino), а также допускает подключение для управления в режиме точки доступа.
Добрый день, а как то можно поставить пароль на точку доступа, что прошивка создает? Я думаю залить эту версию на гирлянду для родителей и для них будет сложно все эти приколы с роутером, а тут по сути всегда известный адрес)
Можно, для этого в строке 36 файла wifi.ino (https://github.com/Vasil-Pahomov/Liana/blob/master/wifi.ino#L39) вместо
WiFi.softAP(WIFI_AP_SSID);
нужно вписать
WiFi.softAP(WIFI_AP_SSID,"XXX");
где XXX заменить на нужный пароль
Нескромный вопрос: а зачем пароль? Гирлянда работает и без подключения к роутеру.
Разве что застраховаться от соседей, чтобы не пугали родителей :)
Ну примерно так. Без подключения к роутеру она работает в режиме все подряд, а иногда хотят какой то один режим или изменить палитру.) Спасибо за помощь.
Раз уж оживились, подскажите.
Залил на ESP-01, лента работает, web морда не открывается. В роутере выставил статический айпи, не помогает. Захожу с браузера — лента замирает, но страница не открывается. В роутере айпи пингуется. Скетч из темы, с раздела esp. Где покопать?
Скорее всего что-то в настройках компиляции. Скетч из мастер-ветки github.com/Vasil-Pahomov/Liana?
Плата верная выбрана? Можно попытаться настройками платы поиграться. У меня на китайский 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 что то долго едет.
Извиняюсь, проглядел в исходном сообщении, что у Вас ESP-01. К сожалению с такими не работал, ничего не могу сказать.
Чтобы менеджер плат скачать через Arduino, можно попробовать VPN системного уровня, например protonvpn.
Очень странно, ESP8266WiFi.h — это часть пакета для ESP. Возможно где-то с путями проблема. Попробуйте может полностью переустановить Arduino и пакет board для ESP.
Arduino 1.8.10, ESP 2.5.2
Буквально вчера обновил версию ESP, была 2.4.2. При этом потребовалось обновить NeoPixelBus до последней версии. Но компилировалось и работало успешно как с ESP 2.4.2, так и с 2.5.2.
А если попробовать скомпилить пример File->Examples->ESP8266WebServer->HelloServer? Там тоже подключается ESP8266WiFi.h. По крайней мере поймём в чём проблема — в установке Arduino/ESP или всё же в скетче.
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
И опять всё скомпилилось на ура
Да и не забудьте выбрать свою плату перед компиляцией!
1.Сохраняете все свои скетчи. По дефолту лежат здесь: C:\Users\Maxim\Documents\Arduino
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.
Спасибо за совет! Тоже раздражали ошибки про несколько библиотек. Сделал по инструкции, но установил последнюю версию плат ESP (2.6.0). Компиляция начала валиться с ошибками unknown type name 'uint32_t'. Поменял версию плат на 2.5.2 — всё стало хорошо, и ошибки про несколько библиотек тоже пропали.
Только ещё нужно не забыть исправлять `ssize_t` на `size_t` в c:\Users\XXX\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\SoftwareSerial\src\SoftwareSerial.h
Виноват, в SoftwareSerial.h не нужно исправлять ssize_t, правильно будет добавить #include <sys/types.h> в самое начало файла. Хотя у меня работает и с исправленным на size_t :)
Похоже, много кто смотрит за обновлениями Лианы здесь, буду отписываться. Недавно залил в master несколько новшеств:
— при подключении в режиме точки доступа включается Captive Portal (запрос на авторизацию в сети, как часто делают в публичных сетях). По открытию запроса сразу показывается web-морда, не надо вбивать в браузере 192.168.4.1
— поиск сети происходит параллельно с анимацией, т.е. нет задержки при включении.
Также буду рассматривать хотелки, просьба писать здесь или на гитхабе.
1.Сохраняете все свои скетчи. По дефолту лежат здесь: C:\Users\Maxim\Documents\Arduino
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. Ставите необходимые библиотеки
2. Проверил
скомпилить пример File->Examples->ESP8266WebServer->HelloServer
скопировать все библиотеки из C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries
и вставить в C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries
Спасибо, парни, что отвечаете. Не помогло.
Добавлю информации на всякий случай: дополнительно поставил Python, ос — Win10.
Менеджер плат все грузят через впн?
Ещё добавлю:
4. установил библиотеки WebSockets и NeoPixelBus by Makuna v2.5.2
из этого поставил только NeoPixelBus by Makuna, WebSockets — не совсем понимаю что ставить, в поиске менеджера библиотек такой не вижу
5. В файл C:\Users\user\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.2\libraries\SoftwareSerial\src\SoftwareSerial.h
дописал #include <sys/types.h>
это действие тоже не выполнял, автор скетча про него не упоминает.
Для установки WebSockets нужно качать zip отсюда: github.com/Links2004/arduinoWebSockets/archive/master.zip и добавить его в Adruino через меню Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку.
C SoftwareSerial.h всё верно, нужно добавить #include <sys/types.h>, иначе будет ругаться на ssize_t (https://github.com/esp8266/Arduino/issues/6482)
открываете файл SoftwareSerial.h любым текстовым редактором.
Файл лежит здесь 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. Т.е. скетч должен загрузиться.
Decoding stack results
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
Внезапно и у меня начала проявляться такая же проблема. После шаманств с откатом изменений, переустановкой Arduino и библиотек, полной чисткой флеша ESP и медитаций на stacktrace пришло озарение. Фикс залит в мастер-ветку, мне помогло. flopic просьба проверить.
Раз автор предложил этот топик, то пишу сюда :-)
У меня такая проблема. Веб морда грузится. Гирлянда не горит. Выбираю в веб морде режимы- наблюдаю в консоли:
и всё. Как я понимаю должен запуститься anim->(run), но этого не происходит.
Раз можно писать хотелки, может сделать отдельный тестовый режим?
Библиотека Websokets от Link2004 есть в менеджере библиотек. Я ставил оттуда (вдруг это важно)
пробовал лить бинарник- ВебСокетс не поднимается. В мониторе порта Connecting…
to andronnag Попробуйте выбрать другую плату и настройки как у автора выше скрин был.
В консоли всё верно, при управлении с морды anim-> не пишется (пишется только при переключении по времени). Возможно что-то с гирляндой (питание на неё не идёт, или к неправильному пину подключена, или обрыв где-то). Скетч судя по всему работает нормально.
Другие скетчи гирлянду заводят?
С бинарником тоже странность, не знаю как объяснить. Плата у вас такая же, Lolin NodeMCU v3?
Спасибо за указание на WebSockets, действительно можно ставить из менеджера. Исправлю в readme.
У меня гирлянда типа WS2811 на 12 вольт. 100 светодиодов. Плата такая же. Для теста попробовал запустить пример из NeoPixel (NeoPixelTest и NeoPixelCylon)- загораются первые 5 светодиодов в белый цвет и все. Тот же скетч на UNO запускает гирлянду без проблем.Стал курить wiki к библиотеки. Пока безрезультатно…
Всё взлетело! Сначала полная очистка через ESPTool. Потом залил скетч. Всё супер.
Василь, вам огромное спасибо.
Наверное стоит указать, что взлетело на версии плат для ESP 2.5.2. На 2.6 у меня тоже не компилится.
В качестве стариковского брюзжания. Разобраться с параметрами плат, тот ещё квест. У меня прошилось и как для Generic, так и для NodeMCU (0.9). А вот некоторый параметры к этим платам я так и не понял.
Ребят, проконсультируйте.
Методом проб определил, что ESP запускается только до подключения ленты:
1. если одновременно подать питание — не запускается, если сначала ленту подключить, потом ESP — не запускается, вернее запускается — диод горит, ресет срабатывает, но к сети не подключается и на пин ничего выводит;
2. если сначала на ESP подать питание, а затем на ленту — то всё работает штатно.
Всё запитано от одного импульсника 5 В, 5А, параллельно лента и ESP, ESP через стабилизатор 5В-3,3В, земли стабилизатора и ленты объединены. Понятно, что проблемы по питанию, но как решить?
Скорее всего просадка по питанию, тк лента при включении рандомно зажигает диоды… Пробуйте другой блок питания. Мне замена помогла победить подобный глюк.
Обновил версию на Github: добавлена возможность задавать настройки WiFi из web-интерфейса.
Также перевёл интерфейс на английский (прошу прощения, это моя слабость), и по умолчанию установил 150 светодиодов в гирлянде, т.к. недавно докупил себе ещё кусочек.
Буду признателен за обратную связь
Обновился, словил ошибку с подключением к WiFi.
Видимо, данные об авторизации где-то в энергонезависимой памяти лежат, т.к. после прошивки плата стала не точкой доступа, а тут же попыталась подключиться к роутеру (хотя я наделся что это будет «чистая установка»). Получается в ней сохранилось название моей сети и пароль.
Алгоритм был такой:
1. Прошил через ардуино. Плата не стала точкой доступа а сразу пошла стучаться в роутер. У меня она была привязана жестко к айпи. Попробовал зайти на айпи — тайм-аут.
2. Прошил через бин файлы, естественно то же самое, но в какой то момент смог достучаться до платы по айпи и переключить ее в настройках в точку доступа.
3. Ещё раз прошился через ардуино иде, так как кол-во светодиодов у меня не дефолтное и бин файл пока не мой вариант.
4. Плата таки стала точкой доступа, но при попытке зайти на 192.168.4.1 происходит бесконечный 302 редирект.
Похоже тут надо добавлять в инструкцию способ как полностью затереть все данные на плате, если апдейтишь ее, а не ставишь на чистую.
Конечно можно было выключить вайфай и по идее ап на плате появилась наверно (как это было на предыдущем релизе), но это немного геморно :)
Не знаю, возможно эксперимент не чистый, но когда на шаге 2 достучался до платы, показалось, что интерфейс стал менее отзывчив. Как будто дольше загружается.
Я знаю только как это сделать через Arduino IDE — при прошивке в Tools выбрать Erase Flash: Sketch + WiFi Settings или All flash contents. Как при прошивке бинарника затереть настройки не знаю. Разузнаю — обязательно впишу.
Про задумчивость интерфейса не знаю что сказать. Сам иногда наблюдаю, что после рестарта платы долго грузится начальная страница, но после вроде всё работает адекватно.
Спасибо, буду благодарен за решение!
А инструкцию я специально делал для 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 не описал, что нужно загрузить файлы в SPIFFS. Для этого нужно поставить плагин github.com/esp8266/arduino-esp8266fs-plugin, в меню Tools появится пункт ESP8266 Sketch Data Upload. Его и нужно выбрать при загруженном скетче.
Добавил в readme.
Я так понял проблема с версией плат 2.6.1. Рекомендую поставить 2.5.2, у меня с 2.6.0 не компилировалось, похоже какая-то из библиотек не обновлена была. Пока разбираться не стал.
Только что скомпилил на 2.6.2 и ардуино иде 1.8.10
Прошивал на NodeMCU
Плагин тоже обновился и работает.
Веб морда работает. Андроид сам нашел плату нормально.
Через настройки подключил к своему роутеру почему-то со второй попытки.
Ленту не подключал.
PS Проблем как у народа выше не наблюдал, иде установлена давно, обновлял много раз.
У меня такая же проблема как у Dude_Skywalker. Прошивал на NodeMCU v3 версия плат 2.5.2, ардуино 1.8.10, залил скетч после этого ESP8266 Sketch Data Upload с результатом «SPIFFS Upload failed!», но Веб морда неработает. скетч —
«04 декабря 2019, 21:59
Выложил обновление — теперь количество светодиодов можно задавать из web-морды. Правда после установки плату нужно рестартануть.»
Сам плагин генерит bin файл для заливки во spiffs. Нужно взять этот файл (он лежит в папке temp, путь до него пишется в логах) и залить его вручную в есп через например есптул. Указать при этом адрес в памяти куда его заливать, адрес тоже пишется в логах, которые выдаёт плагин, чуть выше ошибки. Костыли, конечно, но работает.
Напутствие всем, кто будет повторять: внимательно проверяйте полярность включения гирлянды! Сеголня неудачным эксперимента и сжёг 22 диода. Хоть и говорят что WS2812b защищена от переполюсовки, но китайцы такие китайцы…
Утешаю себя тем, что теперь в гирлянде круглое число светодиодов — 128. :)
Спасибо. Возник вопрос — в режиме точки доступа работает полный функционал web-морды, а при подключении к локалке работают только «LEDs settings» и «WiFi settings», сверху место чекбокса «вкл» и выборов режимов — строка «Connecting...» или «No Connecting...Retry.....»
И скажите есть возможность добавить управление яркостью через web?
Явно какая-то проблема с Adafruit Neopixel. Они заявляют поддержку Adafruit STM32 Feather @ 120 MHz, у вас такая же (или совместимая) плата?
Сам я с STM не работал, поэтому только предположения…
upd. поменял настройки в этом окне, появилось следующее:
…
Entering setup
(start)Setup done
Connected, local IP:192.168.1.212
anim->(pixiedust)
…
То есть он присоединился к моей AP с SSID и паролем, которые я задавал ранее в предыдущем скетче!
Доступ по http по указанному адресу из браузера есть…
А еще заметил, что первый светодиод в цепочке с этой прошивкой, залитой из бинарника, всегда светится только белым, остальные все правильно мигают. Проблема не аппаратная, с другими скетчами, и с вашими в том числе, он мигает корректно.
С белым первым светодиодом проблема решилась, это я балбес. Забыл подключить общую землю у гирлянды и nodemcu (она у меня не шьётся почему-то, когда общая земля подключена, даже если питание на гирлянду не подано)
Еще одно дополнение. В прошивке из бинарника перепутаны красный и зелёный местами (но это в случае с моей гирляндой) То есть тут без подстройки под себя и перекомпиляции не обойтись…
На гитхабе появилась обновлённая версия с регулировкий яркости из веб-интерфейса (Liana, для ESP).
Один недостаток заметил — яркость по умолчанию равна нулю, это нехорошо. Лучше дефолтное значение таки указать, к примеру 100 или 256 (на усмотрение Lvr)
Пока только редактированием скетча. Есть планы делать отключение эффектов и палитр через web-интерфейс, правда про сроки реализации сложно что-то сказать…
Подскажите пожалуйста что нужно закомментировать в коде чтоб отключить какой-нибудь. Пытался отключить стартовую анимацию, не нашел где.
Пытался в файле anim.h закоментить строки:
Если нужно отключить только стартовую анимацию при запуске, то достаточно в github.com/Vasil-Pahomov/Liana/blob/master/Liana.ino#L34 поменять 0 на любое число от 1 до 7 — это будет индекс анимации, которая будет работать сразу после запуска.
Добрый день!
Что имею:
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 Ом.
В итоге поменял на БП покачественее, все запустилось нормально. Только почему-то последний, сотый светодиод не горит.
Это так для инфо, может кто с таким же столкнется.
Имею две гирлянды, одна с того года на ардуине. В этом сделал на esp. Так вот когда они лежали рядом было заметно, что герлянда на esp как бы «подмаргивает», вообщем выглядело хуже. Изменил в anim.cpp строку 7 на
NeoPixelBus<NeoRgbFeature, NeoEsp8266Dma800KbpsMethod>* strip;
Стало хорошо. Разницы теперь не вижу.
Обновил прошивку загрузив бинарники. Из непонятного — перестал работать режим Magic. От слова совсем. Попытался подключить к своему WiFi — Liana из списка сетей пропадает, но по DHCP ничего не получает и вообще пропадает с горизонта. Помогает отключение роутера и перезагрузка ЕСП-хи с переключением в режим АР.
Немного не понятен сам принцип — что дает подключение к Wifi? Как-то нужно узнавать какой получен айпишник — не лазить же каждый раз в админку роутера? Может все же сделать настраиваемую АР с паролем, что сосед не баловался.
А в целом грузится шустрее, работать начинает практически сразу в сравнении с первой прошивкой.
Странное поведение. А есть возможность посмотреть, что пишет контроллер в COM-порт при запуске, будучи подключённым к WiFi? Скорость порта 115200.
Подключение к WiFi даёт защиту от несанкционированного подключения, возможность управлять с телефона, не пеиеключая сети и не теряя интернет, а также в перспективе возможность синхронизации времени и включения/выключения по расписанию и других фишек вроде интеграции с умными домами.
Вообще задумка была, что режим AP — временный, основной как раз в сети. Но пожелание насчёт пароля постараюсь учесть.
В компорт пишет свой айпишник, и начинает перечислять очередной эффект:
Connected, local IP:192.168.10.2
anim->(randCyc)
pal->(randCyc)0
pal->(randCyc)4
При этом из под Win не заходит на liana.local. По айпишнику пускает.
И до кучи теперь если есть wifi сама не включается в режим АР. Перепрошивать чтоль?
Включаю АР — появляется АР. Перезагружаю ЕСП, если она видит настроенный ранее WiFi, она опять вяжется к нему. Сейчас вышел из ситуации сделав кривой пароль к своему WiFi. Она не может соединиться и включает АР.
Скажите, почему перестал работать magic (хотел дочку порадовать), и второй вопрос — можно ли в терминале порулить какими-либо командами?
С переподключением к сети после ребута в режиме AP есть баг, это похоже в используемой библиотеке. Разберусь при возможности.
Magic должен работать, но не из Chrome. Google зарезали доступ к сенсорам без https.
Через COM-порт приём команд не делал, только web, только хардкор
Ничего не ломал в этом эффекте… У меня на последней версии работает.
В терминале контроллер что показывает при переключении в режим и при «махании» телефоном?
Очередное обновление:
1. Переделал UI управления эффектами и палитрами, теперь вместо выпадающих списков кнопки, и палитры отображаются цветами, а не названиями. Так мне показалось лучше. Также вернул русский язык.
2. Добавилась настройка конфигурации светодиодов (RGB/GRB и т.п.)
Прошил последнюю прошивку.
Magic заработал. Не знаю, что это было, возможно глюк конкретной ЕСП-шки.
В целом все отлично. не совсем понятно, для чего настройка конфигурации RGB/GRB — визуально это выглядит как выбор с какого цвета стартует эффект, красного, или зеленого :) Подозреваю, что есть какие-то эффекты, где это критично?
Еспшку затолкал в корпус, можно вешать гирлянду на елку :)
Конфигурации RGB/GRB для правильной передачи ветов, у меня на WS 2811 порядок RGB, а на WS2812B — GRB
если неправильно выбрана конфигурация то вместо красного горит зеленый и на оборот, раньше приходилось в скетч лезть и там править, а теперь очень удобно взял и с телефона поправил как надо.
Здравствуйте! Поставил актуальную версию программы. Все супер отлично! Большое спасибо автору за труд. Особенно впечатляет детишек режим «Магия». Но у меня возник аналогичный прошлому году вопрос. Как через http запрос управлять гирляндой? К сожалению websocket к Мажордомо привязывать не умею :(, поэтому могу только запросы дергать.
Спасибо.
Подскажите, как сделать чтобы режимы фиксировались? Скажем, выбрал я бег и палитру и чтобы она такой и оставалась. Сейчас происходит переключение на следующую через некоторое время
Случайно натолкнулся на проект. Очень понравилось, хочу реализовать, теперь уже к следующему Новому году. Вопрос к реализовавшим проект на esp. Какой конкретно модуль приобрести у луноликих? Много вариантов NodeMcu. Есть версии V2 и V3
и все на ESP8266.
Спасибо, заказал уже лампочки и подходящий б.п. в стране восходящего солнца, сейчас выберу что-нибудь из esp. Автору большой респект и уважуха :))) Сам в кодинге ни бум-бум, хотя несколько раз пытался освоить. Видимо не мое. Ну и всех, с Новым Годом!!!
Брал у этого продавца, «Беспроводной модуль NodeMcu v3 CH340» и к плате сразу взял «NodeMcu Breadboard» очень удобная плата, отправили и доставили заказ в Батайск за 12 дней. ссылка
Глупый вопрос. Пытаюсь прошить такой контроллер https://aliexpress.ru/item/item/32879758161.html бинарниками по инструкции. Процесс вроде проходит успешно. Но, появляется на короткое время сеть WiFi Liana, подключиться не удается, после этого сеть исчезает.
Разобрался. Похоже, плата не совсем совместима с NodeMCU (даже дизайн немного отличается). С компилированным бинарником от автора при попытке подключения к точке доступа WiFi Liana сеть пропадает (зависает плата?).
При компиляции из исходников с рекомендованной автором версией платы 2.5.2 вылезла ошибка на отсутствующую библиотеку SPIFFSReadServer. После добавления библиотеки компиляция все равно не завершилась с жалобами на дубли разных версий библиотек (лог не сохранил, но если надо, то можно повторить).
После обновления версии платы ESP8266 до последней (2.6.3) все успешно скомпилировалось. В качестве платы использовался generic ESP2866 (не nodemcu). После прошивки (и заливки SPIFFFS) все успешно заработало.
Здравствуйте. Скачал bin установил все работает, но как сделать чтобы эффекты сами переключались? Понял надо просто уйти со страницы. Мне не подошло, 600 диодов не тянет, какой максимум?
При попытке прошить NodeMCU v3 выдало ошибку:
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-интерфейса.
С последнего обновления перестала нормально грузиться веб-морда. Причину нашел — в файле index.html в 8-9 строках надо правильно задать переменную ESP_WS.
В Platformio открыть папку с проектом, в подпапке data выбрать файл index.html.
Закомментировать строку 8.
Раскомментировать строку 9 и добавить в конце точку с запятой, строка должна выглядеть как const ESP_WS = «ws://» + location.hostname + ":81/";
Затем пересобрать и перезалить образ файловой системы. В меню задач (морда инопланетянина) Build Filesystem Image, Download Filesystem Image.
Нашел еще пару ошибок в index.html
В строке 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;
}
UPD В файле anim_run надо добавить в конце после pos=pos+1 дополнительно if(pos>255) {pos=pos-256}. Иначе в функцию getPalColor начинает передаваться значение > 1.
Ещё раз огромное спасибо! Исправления внёс.
С одной стороны стыдно за код (плохой принцип «работает и ладно»). С другой — приятно что кто-то ещё разбирается :)
Пин задаётся последним аргументом конструктора 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
Подскажите, пожалуйста, как сделать так, чтобы после каждой перезагрузки не нужно было заново подключаться к точке доступа Liana и вводить данные своей сети. Почему-то не сохраняются изменения и приходится каждый раз вводить заново.
Да, проблему такую подтвердили. Пока не могу заняться и разобраться. Как временное решение советуют два раза подряд подключаться к WiFi (https://github.com/Vasil-Pahomov/Liana/issues/32)
После обновления, к сети WIFI подключаться не желает от слова совсем.
Вот кусок лога:
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…
По логу можно предположить, что неверный пароль, или по другой причине не подключает к WiFi (фильтр MAC-адресов например).
Для чистоты эксперимента можно попробовать залить тестовый скетч (например WiFiClientBasic в ArduinoIDE) и попробовать подключить плату к сети им.
Да! Это моя ошибка. Перекомпилировал проект, обновил ESP и все работает.
Спасибо ув. Lvr.
Вас и всех с наступающим Новым годом. Удачи в Новом году, новых прошивок и новых гирлянд)))
Всех с наступающим Новым Годом!
Пытаюсь повторить проект на ESP8266 и возникли два вопроса при использовании разных светодиодов.
1. Работает ли проект Liana на ESP8266 со светодиодной гирляндой на WS2811?
2 вопрос, на который тоже не могу найти ответ:
с матрицей 16х16 из светодиодов WS2812B все работает прекрасно, а с лентой, типа такой
C WS2811 работать должно. Сам пробовал на такой гирлянде: https://aliexpress.ru/item/item/32710826390.html, проблем не было
В ленте у Вас, возможно, какой-то другой чип, или подключение неверное. Сложно сказать, не зная подробностей.
Добрый день.
Уже не первый год задаюсь вопросом (нашел тут такое же свое сообщение от 30 декабря 19 года :D ), можно ли остановить пошаговое воспроизведение эффектов, выбрав в интерфейсе необходимый + нужную палитру как фиксированные? К примеру, хочу выбрать красно-зеленую палитру, выбираю, но все равно спустя время происходит возврат к поочередной их смене.
В последней версии для ESP предусмотрено отключение эффектов и палитр длинным нажатием на кнопки в web-интерфейсе. Можно отключить все, кроме красно-зелёной — тогда будут меняться только эффекты, палитра всегда будет оставаться. Аналогично можно оставить только один эффект.
Собрал на arduino nano. Все работает, но лента попалась с другой последовательностью цветов. Вместо RGB на ленте последовательность GBR. Где в скетче можно поменять это?
Попробуйте в конструкторе AdaFruit_NeoPixel поменять тип ленты (строка 8 файла anim.cpp, github.com/Vasil-Pahomov/ArWs2812/blob/529b040a7a68b5e1e12319f81a9c7bb924244858/anim.cpp#L8C1-L8C1). Сейчас там NEO_GRB, возможно Вам подойдёт NEO_RBG.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
есть такая пословица — обозревай гирлянды летом, а плавки зимой.
А до следующего года — уже будет опыт использования, и время на доработку :)
Вот теперь подумываю собрать скетч из обзора и опробовать на своей его)
ЗЫ: Вести отдельный двухжильный (и длинный) провод питания к верхушке ёлки — тоже не особо хороший выход.
За обзор "+"
Если нужны 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 второй файл прошивки. Постоянно сбой происходит на нем. Только первый файл загружается нормально.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.