• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Вопрос Подсксжите Пример работы с светодиодами WS2812

Chouck

New member
Начал через Arduino IDE и столкнулся с глюками (1-3% сбои-неточности) при зажигании ленты из WS2812 чипов.
Перешёл на правильный эклипс и Unofficial Development Kit, видел в обсуждениях на форуме упоминания в кусках кода библиотеки ws2812.h но вот полного примера и самой библиотеки и с гуглом не отыскал. Видел обсудение потенциальных проблем времени и прирываний (с которыми собственно и сталкнулся в Aduino IDE) при посылки пакетов этим чипам в теме "библиотеки малого webсервера на esp8266.", но там какието обрывки и ничего конкретного.
Даже криво работающий пример с китайскими либами для начала пойдёт.
Подкиньте пожалуйста.
 

sav-13

Member
Начал через Arduino IDE и столкнулся с глюками (1-3% сбои-неточности) при зажигании ленты из WS2812 чипов.
Перешёл на правильный эклипс и Unofficial Development Kit, видел в обсуждениях на форуме упоминания в кусках кода библиотеки ws2812.h но вот полного примера и самой библиотеки и с гуглом не отыскал. Видел обсудение потенциальных проблем времени и прирываний (с которыми собственно и сталкнулся в Aduino IDE) при посылки пакетов этим чипам в теме "библиотеки малого webсервера на esp8266.", но там какието обрывки и ничего конкретного.
Даже криво работающий пример с китайскими либами для начала пойдёт.
Подкиньте пожалуйста.
В последней сборке ESP8266 core for Arduino IDE видел портированную библиотеку NeoPixel
В принципе прикручивал обычную Ардуиновскую библиотеку NeoPixel к ESP-шке
Из обнаруженных глюков:
- Много ложных срабатываний при работе ленты от 5В из за разности логических уровней, видимо.
Лечится снижением питания ленты до 3.3В (там ведь токовый драйвер в WS2812 - ему хватает)
- Если есть какой-то непрерывный эффект, например, как в этой снежинке то раз в несколько секунд цикл обработки WS2812 прерывается, видимо на свои WiFi дела и эффект получается дерганным. Поэтому плюнул, ушел обратно на ардуину
 

Chouck

New member
- Если есть какой-то непрерывный эффект, например, как в этой снежинке то раз в несколько секунд цикл обработки WS2812 прерывается, видимо на свои WiFi дела и эффект получается дерганным. Поэтому плюнул, ушел обратно на ардуину
Да похоже я именно с этим эффектом и борюсь, вот посмотрите всполохи

Вы про Адафрутовскую библиотеку или Makuna/NeoPixelBus ?
А это решение через серийник и библиотеку вы пробовали https://github.com/Makuna/NeoPixelBus/tree/UartDriven ?

вот тут люди обсуждали но я не очень понял суть и итог http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-28#post-6775

Что-то сдаваться и ради одного этого добовлять ещё ардуину в проект не хочется...
 
Последнее редактирование:

sav-13

Member
У меня затык, по вайфай все работает, но не могу правильно реализовать чтобы есп сидел и слушал гпио, не нажал ли я кнопку и не переключал свет.
Да похоже я именно с этим эффектом и борюсь, вот посмотрите всполохи
Вы про Адафрутовскую библиотеку или Makuna/NeoPixelBus ?
А это решение через серийник и библиотеку вы пробовали https://github.com/Makuna/NeoPixelBus/tree/UartDriven ?

вот тут люди обсуждали но я не очень понял суть и итог http://esp8266.ru/forum/threads/raz...go-webservera-na-esp8266.56/page-28#post-6775

Что-то сдаваться и ради одного этого добовлять ещё ардуину в проект не хочется...
NeoPixelBus у меня. Эффект случайных пикселов решился снижением напряжения на диодах
Библотеки нужно будет разные попоовать
 

Chouck

New member
У меня затык, по вайфай все работает, но не могу правильно реализовать чтобы есп сидел и слушал гпио, не нажал ли я кнопку и не переключал свет.
Да я тоже думаю присобачить Attany к ESP,заодно проблема с повышением уровней решится. Я её решил FET транзисторомб вы понижением напряжения. но от всполохов это не спасло.
Я думаю как раз в тайни выподить на ws2812 и заодно слушать кнопки типо безконтактной ёмкостной...
 

Chouck

New member
Пробовал обе ветки из Makuna/NeoPixelBus
master и UartDriven разгонял чип до 160мгц и следующий простой код, FET транзистор с подорками поднимающий уровень на простую полоску из 8 чиов и неворужённым глазом видно как минают в среднем раз в 3-5 секунд некоторые из диодов, некоторые (гаснут на такт, неторорые зажигаются не в попад на такт).
Я один такой? Проверьте пож

Код:
#include <NeoPixelBus.h>

#define pixelCount 8
#define colorSaturation 128

NeoPixelBus strip = NeoPixelBus(pixelCount, 12);

RgbColor red = RgbColor(colorSaturation, 0, 0);
RgbColor green = RgbColor(0, colorSaturation, 0);
RgbColor blue = RgbColor(0, 0, colorSaturation);
RgbColor white = RgbColor(colorSaturation);
RgbColor black = RgbColor(0);

void setup()
{
  // this resets all the neopixels to an off state
  strip.Begin();
  strip.Show();
}


void loop()
{
   

    // set the colors,
    // if they don't match in order, you may need to use NEO_GRB flag
    strip.SetPixelColor(0, red);
    strip.SetPixelColor(1, green);
    strip.SetPixelColor(2, blue);
    strip.SetPixelColor(3, white);
    strip.SetPixelColor(4, black);
    strip.SetPixelColor(5, black);
    strip.SetPixelColor(6, black);
    strip.SetPixelColor(7, white);
    strip.Show();
delay(30);
  
}
 

pvvx

Активный участник сообщества
Вроде давно сделали управление WS2812 по DMA (SCL регистры) через выход данных пина I2S...
Выход I2S просто льет биты в пределе со скоростью 20 Mbits/s. I2S управляется загрузкой слов по 32 бита через SCL блоками по 64 слова из 14-ти буферов, как и в MP3 плеере, где через эту же систему выливают звук с двойной дельта-сигмой модуляцией для вывода без всяких драйверов на R-C цепь.
 
Последнее редактирование:

Chouck

New member
Вроде давно сделали управление WS2812 по DMA (SCL регистры) через выход данных пина I2S...
Выход I2S просто льет биты в пределе со скоростью 20 Mbits/s. I2S управляется загрузкой слов по 32 бита через SCL блоками по 64 слова из 14-ти буферов, как и в MP3 плеере, где через эту же систему выливают звук с двойной дельта-сигмой модуляцией для вывода без всяких драйверов на R-C цепь.
Да Вот я видел в ваших обсуждениях веб сервера какието упоминания но ни примера ни библиотек немогу найти... тыкните носом пожалуйста.
 

pvvx

Активный участник сообщества
Исходник вывода в I2S находится в и Arduino (core_esp8266_i2s.c).
Для 20Mbits/сек (50ns bit) надо исправить I2S_BCK_DIV_NUM = 4, I2S_CLKM_DIV_NUM = 1.
Для 100ns bit I2S_BCK_DIV_NUM = 8, I2S_CLKM_DIV_NUM = 1.
Написать конвертер время -> битовые поля и выкинуть из core_esp8266_i2s.c инициализацию других выводов, кроме GPIO3 как выхода.
Там можно ещё кое чего оптимизировать и вперед. :)
 

Lstt

Member
Последнее редактирование:

pvvx

Активный участник сообщества
Нормально на I2S выходит:
WS2812_I2S.gif
все временные в допусках по PDF для WS2812.
Можно упростить до 32-х битного слова составленного из 4-х по 8 бит:
[HASHTAG]#define[/HASHTAG] bit0bits 0xE0
[HASHTAG]#define[/HASHTAG] bit1bits 0xF0
описывающих диаграмму передачи "0" и "1" 4-х бит из входного потока.
Строб выходит в 162 ns: I2S_BCK_DIV_NUM = 13, I2S_CLKM_DIV_NUM = 1.
При 8 бит получаем период в 1300 ns, что и показано на осцилле...
Имея буфер в 2048 байт (такой по умолчанию в core_esp8266_i2s.c), сливаемый по DMA, получаем, что дополнять его надо в период до 2048*1.3 us = 2.6 ms
 

Chouck

New member
Нормально на I2S выходит:
Я суть грубо понимаю, реализовать неспособен.
Не смог разобраться как использовать https://github.com/cnlohr/esp8266ws2812i2s/blob/master/user/ws2812_i2s.c
там они непрерывно шлют фреймы. А надо просто функцияВывода(R1,G1,B1,R2,G2....)

Обидно что в NodeMCU с их язычком луа всё работает (правда <21 пикчела, дальше рестарты) без миганий и проблем...

Готов донировать нужную сумму для реализации нормальной библоеки для WS2812 ...
 
Последнее редактирование:

Lstt

Member
Может быть этот вариант попробуете - https://github.com/sticilface/ESP8266-wifi , он тоже основан на UartDriven...(https://github.com/sticilface/ESP8266-wifi/wiki)
P.S. Кстати, автор вскоре обещает переделать всё на Ajax и jquerymobile - для увеличения быстродействия и отзывчивости..
https://github.com/sticilface/ESP8266-wifi/issues/9
Вчера пришла лента 5-ти метровая на WS2812b. Данная прошивка на базе Arduino IDE работает отлично (на 150 светодиодах), хотя конечно, в коде ещё есть маленькие ошибки, не допилена до конца, но вполне работоспособна! Для новичков самое то.
 

Chouck

New member
Вчера пришла лента 5-ти метровая на WS2812b. Данная прошивка на базе Arduino IDE работает отлично (на 150 светодиодах), хотя конечно, в коде ещё есть маленькие ошибки, не допилена до конца, но вполне работоспособна! Для новичков самое то.
Если использовать код который я привёл выше и присмотреться в течении нескольких минут, не заметро всполохов и промигиваний?
прведите пример кода если не сложно
 

Lstt

Member
Если использовать код который я привёл выше и присмотреться в течении нескольких минут, не заметро всполохов и промигиваний?
прведите пример кода если не сложно
Вы о чём?) Вот же все исходники https://github.com/sticilface/ESP8266-wifi . Ваш пример не пробовал, не вижу смысла терять для себя время...
 

Chouck

New member
да я видел это, и ещё https://github.com/cnlohr/esp8266ws2812i2s но насколько я понял у него до конца не получилось и есть поблемы (он вынужтен постояннно передавать последовательности в I2S - неприрывно иначе что-то глючит в шине).
вот что-то интересное может портировать на ESP http://www.ejberg.dk/portfolio/ws2812-xcl/ ?

было бы замечательно иметь нормальную библиотеку.
 
Последнее редактирование:

COBECTb

New member
Подскажите из-за чего могут перегреваться светодиоды? Купил кольцо neopixel 24 диода. Подключил к esp8266 и запитал от 3.3v. Пару раз запустил пример Подключаем модули NeoPixel на базе WS2812B светодиодов к Arduino - Урок для Arduino
Диоды очень нагрелись. После нескольких запусков секунд на 30-40 перестал работать 12 светодиод и все после него горят случайным светом или не горят тоже.
 

fandy

Member
По-моему для WS питание светодиодов идет отдельно от схемы управления. И там надо запитываться через токоограничивающие резисторы 150 Ом. В SK резисторы встроены.
Короче надо смотреть конкретную схему.
 
Последнее редактирование:

Shara

New member
Подскажите из-за чего могут перегреваться светодиоды? Купил кольцо neopixel 24 диода. Подключил к esp8266 и запитал от 3.3v. Пару раз запустил пример Подключаем модули NeoPixel на базе WS2812B светодиодов к Arduino - Урок для Arduino
Диоды очень нагрелись. После нескольких запусков секунд на 30-40 перестал работать 12 светодиод и все после него горят случайным светом или не горят тоже.
Вы запитали диоды от 3v? Насколько я помню, по даташиту у них питание должно быть от 5 вольт и там есть встроенный стабилизатор. Собственно из-за нехватки напряжения увеличивается ток и чип греется. Запитывайте от 5 вольт диоды, а для данных достаточно трёх вольт напрямую с esp8266.

C WS дел не имел, имел дела с APA.
 
Сверху Снизу