Пять метров ленты на козырёк гаража я купил по наивности: в карточке было «адресная, 60 диодов на метр», и я уже видел, как радуга плывёт по фасаду. Скетч поднял из первого урока раздела, поменял в шаблоне только длину — и получил кашу: цвета ехали тройками, каждая треть ленты повторяла соседку, а последние два метра вообще не отвечали. Полчаса я искал обрыв данных, потом открыл спецификацию: на козырьке жила лента на чипах WS2811 с питанием 12 В — зверь той же породы, но с другим скелетом.
Разница по сути одна, но из неё растёт всё остальное. У WS2812B чип спрятан внутри каждого светодиода: один чип — один диод, каждый горит своим цветом. У WS2811 чип вынесен наружу и обслуживает сразу три диода: они горят одним цветом, и для скетча такая тройка — один пиксель. Отсюда счёт: на метре с шестьюдесятью диодами сидят двадцать чипов против шестидесяти у WS2812B, и NUM_LEDS в скетче считается по чипам, а не по диодам. Протокол на проводе тот же, что мы разбирали в уроке про однопроводной протокол: те же 800 килобит, тот же порядок каналов GRB, тот же резистор у входа.
Зато 12 вольт — не прихоть продавца, а ответ на главный страх длинных линий: просадку. Пять вольт от точки питания худеют с каждым метром, и к дальнему концу красный начинает желтить — этот симптом и правила инъекций мы разбирали в уроке про блок питания и инъекцию. Двенадцативольтовой ленте запас роднее: чип пережёвывает лишнее напряжение в тепло, и моя пятиметровка с одной точкой питания светит ровно по всей длине, тогда как у 5-вольтовой той же длины дальний конец отдаёт желтизной. Ток при этом не дешевле: полный белый ест те же около 60 миллиампер на диод, и метр с 60 диодами просит свои 3,6 ампера. Экономит 12 вольт не ток, а нервы: точки подачи реже, провод тоньше.
Подключение: три провода и правильный счёт
Схема повторяет 5-вольтовую наизусть: DI через резистор 330 Ом на пин 6, земля ленты и земля платы — в одну точку, плюс 12 В — только в ленту. Конденсатор у входа я ставлю электролит на 470-1000 мкФ, но с оговоркой, за которую платил: он обязан быть рассчитан на 16-25 В, потому что двенадцать рабочих вольт для шестивольтового — жизнь на грани, и пусковой бросок добьёт его за сезон. Роль конденсатора и то, почему первым умирает именно первый пиксель, — в уроке про питание и защиту. Если управляете с ESP32, чей GPIO отдаёт 3,3 В чипу на 12-вольтовой ленте, — согласование уровней решается так же, как для WS2812B: урок про 3,3 В подходит слово в слово.
Шаблон меняется в одном месте: FastLED.addLeds<WS2811, LED_PIN, GRB>(leds, NUM_PIXELS) — чип WS2811, тот же пин, тот же GRB. И счёт: пятиметровка с 60 диодами на метр — это 300 диодов, но NUM_PIXELS = 100, по числу чипов. Я вписал 300: библиотека честно отправила триста «пикселей», каждый чип проглотил девять байт вместо трёх, и цвета поехали группами со сдвигом, а хвост ленты остался за пределами сеанса. Симптом запомнить легко: лента показывает цвет тройками, и последние две трети не существуют — пересчитайте чипы.
На маркетплейсах под именем WS2811 продают и модули-капли на три диода с одним чипом внутри, и ленты, где чип обслуживает один диод, — перед покупкой смотрите на фото подложки и считайте чипы. Для скетча это всё равно один пиксель на чип, но ток на метр и расстояние между точками подачи у разных вариантов свои. Ещё деталь, которую я пропустил при покупке: 12-вольтовые ленты бывают 30 и 60 диодов на метр, и на дальних дистанциях — козырёк, забор, перила — тридцатки хватает глазу, а ток она просит вдвое меньший: полный белый около 1,8 ампера на метр против 3,6 у шестидесятки.
Про порядок подключения на живом козырьке — тот же, что в комнате, только строже. Сначала земля, потом данные, питание — последним: поданное на ленту 12 В с неподключённой землёй платы ищет обратный путь через сигнальную землю, и первый пиксель платит за спешку. Данные я веду витой парой из старого сетевого кабеля — провод земли рядом с сигналом глушит наводки от диммера соседа, и на пяти метрах у меня ни одного сбоя. И не ведите сигнал впритирку к линии 220 В, если она идёт по тому же козырьку — сантиметров двадцать разнесите, и проблем не будет.
#include <FastLED.h>#define LED_PIN 6#define NUM_PIXELS 100 // 5 м x 60 диодов/м = 300 диодов = 100 чипов WS2811 CRGB leds[NUM_PIXELS];int head = 0;unsigned long lastStep = 0; void setup() { FastLED.addLeds<WS2811, LED_PIN, GRB>(leds, NUM_PIXELS); FastLED.setBrightness(160);} void loop() { if (millis() - lastStep < 60) return; lastStep = millis(); fadeToBlackBy(leds, NUM_PIXELS, 40); // хвост за бегущей тройкой leds[head] = CRGB(0, 180, 255); head = (head + 1) % NUM_PIXELS; FastLED.show();}Скетч нарочно скучный: бегущий пиксель с хвостом проверяет всё, что можно проверить без эффектов. Если счёт верный, по ленте едет одна яркая тройка и догорает; если вписали диоды вместо чипов — тройки поедут втроём с разрывами, а хвост уедет за ленту. Отдельно про яркость: на 12 вольтах моя лента при одинаковой setBrightness светила заметно злее настольной 5-вольтовой — партии разные, и потолок я подобрал по глазу и по току: 160 на козырьке, где зрители дальние.
Про градиенты честно: главный минус группировки проявляется не в бегущих точках, а в плавных переливах. Радуга по WS2812B на шестидесяти диодах имеет шестьдесят ступеней цвета; та же радуга по WS2811 — двадцать, каждая ступень живёт три диода, и глаз на короткой ленте замечает лесенку. На длинных уличных линиях это неважно: там и ступени длинные, и смотрят издалека. А вот на настольной ленте в полметра лесенка честно видна. Поэтому моё правило: интерьер и мелкая пластика — WS2812B, фасад и линии длиннее двух метров — WS2811 на 12 В, и грубость цвета там никому не мешает.
Если лента досталась без маркировки, проверьте чипы до монтажа: подайте питание и зажгите один пиксель из скетча выше. Загорелась тройка — перед вами WS2811 со счётом по чипам; загорелся один диод из трёх — у вас редкий вариант с чипом на каждый диод, и счёт обычный по диодам. Три минуты с тестовым скетчем экономят вечер с паяльником на стремянке: на земле козырька чипы уже не посчитаешь, а подложку под силиконом и подавно. Заодно проверьте и порядок каналов — редкие партии просят BRG вместо GRB, и красный тестовый пиксель это покажет сразу.
Группировка вживую: симулятор
Переключите кнопку в режим WS2811 и посмотрите, как непрерывная радуга рассыпается на десять ступеней: каждые три диода горят одним цветом, и перелив превращается в лесенку. Это не дефект симуляции, а честная модель группировки — на настоящей 12-вольтовой ленте ступени ровно такие. Одиночный пиксель посреди группы в таком режиме зажечь невозможно в принципе: чип один на тройку, и цвет назначается ей целиком. Все трюки «подсветить каждый диод своим» на WS2811 не работают физически, а не потому, что библиотека не умеет.
И про два мира на одной плате: если у вас уже живёт WS2812B и вы добавляете 12-вольтовую строку — это два вызова addLeds и два буфера, механика разобрана в уроке про две ленты. Общая земля обязательна так же, как для одной ленты. Нюанс, который экономит вечер: общая яркость setBrightness у FastLED одна на всех контроллеров — если лентам нужен разный потолок, масштабируйте цвета в буфере перед show(), а не ищите вторую ручку яркости.
Проводку на 12 вольтах я веду обычным проводом 0,75 мм² без миссионерства: падение на нём при амперах с копейками — доли вольта, и до дальнего конца линии запас остаётся. Пять вольт на таком же проводе уже просят инъекций чаще метра — вся арифметика в уроке про инъекцию. Отсюда цена вопроса: пятиметровый козырёк на 5 В попросил бы две-три точки подачи с проводами туда-обратно, на 12 В хватило одной у начала. Если линия длиннее пяти метров, точки подачи на 12 В я ставлю каждые два-три метра и сплю спокойно.
И последнее, про владение. У WS2811 на 12 В есть цена, о которой карточки магазина молчат: ремонт. Перегоревший пиксель WS2812B выпаивается целиком — чип уехал вместе с диодом; на 12-вольтовой ленте сгоревший чип тащит за собой тройку, и вырезать надо блок из трёх, сохраняя цепочку данных. Паяльник с феном здесь работает быстрее пинцета. Но за пять лет на козырьке у меня сгорела ровно одна тройка, а на 5-вольтовой подсветке за то же время я перепаял три пикселя — так что в сумму владения 12 вольт у меня вписывается со знаком плюс.
| Параметр | WS2811 на 12 В | WS2812B на 5 В |
|---|---|---|
| Чип и пиксель | Чип снаружи, один на три диода | Чип внутри каждого диода |
| NUM_LEDS | Диоды / 3: 60 диодов/м = 20 пикселей/м | Диоды: 60 диодов/м = 60 пикселей/м |
| Точки подачи | Каждые 2-3 м: запас по просадке | Примерно каждый метр: дальний конец желтит |
| Ток метра белым | 60 диодов — около 3,6 А; 30 диодов — 1,8 А | 60 диодов — около 3,6 А |
- 1. Метр ленты WS2811, 60 диодов на метр. Сколько пикселей писать в NUM_LEDS?
- 2. Чем 12-вольтовая лента лучше 5-вольтовой на длинном заборе?
- 3. Лента светит цветом тройками, хвост строки не отвечает. Виновник?
- 4. Какой электролит ставить поперёк питания 12-вольтовой ленты?
- 5. Радуга по WS2811 на 60 диодах/м выглядит лесенкой, а по WS2812B — плавной. Почему?
- WS2811 — чип снаружи диода: один чип рулит тройкой; NUM_LEDS считают по чипам, не по диодам
- addLeds<WS2811, PIN, GRB>: протокол тот же 800 кГц, порядок каналов тот же GRB
- 12 В прощает длинные линии: точки подачи каждые 2-3 м против метра у 5 В; ток белым тот же — около 60 мА на диод
- Конденсатор у входа — на 16-25 В, не на 6,3
- Градиенты грубеют втрое: цвет живёт на тройке диодов — для мелкой радуги берите WS2812B
Частые вопросы по теме урока
- Метр ленты WS2811, 60 диодов на метр. Сколько пикселей писать в NUM_LEDS?
- Чип WS2811 один на тройку диодов: 60 диодов = 20 чипов = 20 пикселей. Счёт по диодам сдвигает цвета и теряет хвост. 20 — один чип обслуживает три диода
- Чем 12-вольтовая лента лучше 5-вольтовой на длинном заборе?
- Чип пережёвывает лишнее напряжение, линия проседает заметно позже: инъекции реже, провод тоньше. Ток белым тот же. Запас по напряжению: точки подачи каждые 2-3 метра вместо метра
- Лента светит цветом тройками, хвост строки не отвечает. Виновник?
- Каждый чип проглотил девять байт вместо трёх — расписание пикселей съехало. NUM_PIXELS = диоды / 3. В NUM_LEDS вписано число диодов вместо чипов
- Какой электролит ставить поперёк питания 12-вольтовой ленты?
- Пусковой бросок и 12 рабочих вольт добивают 6,3-вольтовый за сезон. Электролит 470-1000 мкФ на 16-25 В у входа. На 16-25 В: двенадцать рабочих вольт для 6,3-вольтового — на грани
- Радуга по WS2811 на 60 диодах/м выглядит лесенкой, а по WS2812B — плавной. Почему?
- 60 диодов на WS2811 — это 20 чипов и 20 ступеней цвета против 60 у WS2812B. На длинных линиях лесенка не видна. Цвет назначается группе из трёх диодов: ступеней цвета втрое меньше