Как подключить ленту WS2812B к ESP32
Блок 5 В 4 А, 74AHCT125 и 330 Ом на DIN.
Схема подключения
Открыть в конструктореСборка по шагам
18 шагов- 18 проводов по порядку: земля, питание, сигналы, детали.Нажмите на провод на схеме или строку таблицы, чтобы открыть его шаг.Стрелки ← → листают шаги.
- Шаг 1: минус блока питания на GND платы
- Шаг 2: GND ленты на минус блока питания
- Шаг 3: GND микросхемы на минус блока питания
- Шаг 4: 1OE на GND микросхемы
- Шаг 5: 2OE на GND микросхемы
- Шаг 6: 2A на GND микросхемы
- Шаг 7: 4OE на GND микросхемы
- Шаг 8: плюс блока питания на VIN платыПитание 5 В.
- Шаг 9: +5V ленты на плюс блока питания5 В, лента берёт до 3600 мА, вывод даёт около 4000 мА.
- Шаг 10: VCC микросхемы на плюс блока питания5 В, микросхема берёт до 2 мА, вывод даёт около 4000 мА.
- Шаг 11: 1A микросхемы на D18 платы
- Шаг 12: 3A на 3OE микросхемы
- Шаг 13: 4A на 4OE микросхемы
- Шаг 14: 3OE на 4OE микросхемы
- Шаг 15: плюс конденсатора на плюс блока питанияКонденсатор 1 000 мкФ ставьте у ленты: плюс к питанию, минус к GND, минус отмечен полосой на корпусе.
- Шаг 16: минус конденсатора на минус блока питанияКонденсатор 1 000 мкФ ставьте у ленты: плюс к питанию, минус к GND, минус отмечен полосой на корпусе.
- Шаг 17: вывод 1 резистора 330 Ом на 1Y микросхемыРезистор 330 Ом ставьте ближе к DIN ленты.
- Шаг 18: вывод 2 резистора 330 Ом на DIN лентыРезистор 330 Ом ставьте ближе к DIN ленты.
- Готово: 18 проводов на месте.Сверьте с таблицей соединений ниже.
Соединения
| Шаг | Откуда | Куда | Цвет |
|---|---|---|---|
| 1 | ESP32 DOIT GND | Блок 5 В 4 А − | чёрный |
| 2 | Блок 5 В 4 А − | WS2812B GND | чёрный |
| 3 | Блок 5 В 4 А − | 74AHCT125 GND | чёрный |
| 4 | 74AHCT125 1OE | 74AHCT125 GND | чёрный |
| 5 | 74AHCT125 2OE | 74AHCT125 GND | чёрный |
| 6 | 74AHCT125 2A | 74AHCT125 GND | чёрный |
| 7 | 74AHCT125 4OE | 74AHCT125 GND | чёрный |
| 8 | ESP32 DOIT VIN | Блок 5 В 4 А + | красный |
| 9 | Блок 5 В 4 А + | WS2812B +5V | красный |
| 10 | Блок 5 В 4 А + | 74AHCT125 VCC | красный |
| 11 | ESP32 DOIT D18 | 74AHCT125 1A | белый |
| 12 | 74AHCT125 3A | 74AHCT125 3OE | белый |
| 13 | 74AHCT125 4A | 74AHCT125 4OE | белый |
| 14 | 74AHCT125 3OE | 74AHCT125 4OE | белый |
| 15 | Блок 5 В 4 А + | Электролит 1 000 мкФ 10 В + | красный |
| 16 | Блок 5 В 4 А − | Электролит 1 000 мкФ 10 В − | чёрный |
| 17 | 74AHCT125 1Y | Резистор 330 Ом 1 | белый |
| 18 | Резистор 330 Ом 2 | WS2812B DIN | белый |
Детали
- ESP32 DOIT DevKit V1, 30 пинов× 1
- Блок питания 5 В 4 А (штекер 5,5×2,1, переходник на клеммы)× 1
- Лента WS2812B 5 В, 60 LED/м (один отрезок)× 1
- Буфер 74AHCT125 (DIP-14), преобразователь уровня 3,3 → 5 В× 1
- Резистор выводной 0,25 Вт (металлоплёночный, 1 %), 330 Ом× 1
- Конденсатор электролитический (полярный, минус полосой), 1 000 мкФ 10 В× 1
- Провода18 шт.
Проверка питания и проводов
- Проверка схемы, та же, что в конструкторе, не нашла ошибок: напряжения выводов совпадают, земля общая, шины подключены целиком.
- WS2812B берёт до 3600 мА (обычно около 1200) с вывода + Блок 5 В 4 А, вывод даёт около 4000 мА: блок 5 В 4 А (Mean Well GST25E05: 20 Вт).
- 74AHCT125 берёт до 2 мА (обычно около 1) с вывода + Блок 5 В 4 А, вывод даёт около 4000 мА: блок 5 В 4 А (Mean Well GST25E05: 20 Вт).
Ток всей схемы и сколько она проработает от аккумулятора: расчёт питания. Где что втыкать: схема на макетке.
Пример кода
Arduino IDE, Adafruit NeoPixel 1.12.
#include <Adafruit_NeoPixel.h>
const int PIN = 18; // GPIO18 через 74AHCT125 и 330 Ом на DIN
const int COUNT = 60; // светодиодов на ленте
Adafruit_NeoPixel strip(COUNT, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
// 80 из 255: на белом лента берёт около 1,1 А вместо 3,6 А
strip.setBrightness(80);
strip.show();
}
void loop() {
static uint16_t hue = 0;
strip.rainbow(hue);
strip.show();
hue += 256;
delay(20);
}
Распиновки деталей
Как подключено
Лента WS2812B на 60 светодиодов питается от блока 5 В 4 А. На белом цвете полной яркости один светодиод берёт до 60 мА (руководство Adafruit по NeoPixel), метр ленты до 3,6 А. Вывод VIN платы ESP32 DevKit при питании от USB даёт около 300 мА, поэтому плюс ленты идёт от блока, и VIN платы питается от того же блока. Минус блока соединён с GND ленты и GND ESP32: без общего минуса лента не принимает данные.
При питании 5 В лента WS2812B считает единицей сигнал от 0,7 × 5 = 3,5 В (даташит Worldsemi), а GPIO ESP32 выдаёт 3,3 В. Чтобы лента надёжно принимала данные, между GPIO18 и лентой стоит буфер 74AHCT125 с питанием 5 В. Его вход считает единицей уже 2 В, выход 1Y выдаёт 5 В и идёт на DIN через резистор 330 Ом у начала ленты. Вывод 1OE соединён с землёй, он включает выход. Неиспользуемые входы 2A, 3A, 4A и выводы 2OE, 3OE, 4OE тоже на земле, так требует даташит TI.
Электролит 1000 мкФ на 10 В стоит между плюсом и минусом у начала ленты. Adafruit советует ставить 500-1000 мкФ, чтобы бросок тока при включении блока не повредил первые светодиоды. Минус конденсатора отмечен полосой на корпусе.
Примеры
- В скетче яркость 80 из 255. На белом лента берёт около 3,6 А × 80 / 255 = 1,1 А.
Частые ошибки
- DIN подключают к GPIO ESP32 без буфера. С частью лент это работает, но по даташиту 3,3 В ниже порога 3,5 В, и первые светодиоды могут получать неверные данные. Конструктор ставит на такой провод замечание.
- Ленту питают от вывода 5V или VIN платы. Через этот вывод идёт ток USB, а 60 светодиодов на белом берут до 3,6 А. Конструктор ставит ошибку по току.
- Берут 74HC125 без буквы T. При питании 5 В он считает единицей сигнал примерно от 3,5 В и 3,3 В от ESP32 надёжно не принимает. Подходят 74AHCT125, 74HCT125 и 74HCT245.
- Провод данных идёт на DO в конце отрезка. Данные проходят по ленте только по стрелке, вход DIN у начала.
Частые вопросы
- Можно ли обойтись без 74AHCT125?
- С коротким проводом лента часто работает и от 3,3 В, но даташит Worldsemi такой уровень не обещает. Другой способ: питать первый светодиод через диод 1N4007. Тогда у него около 4,3 В на питании и порог единицы около 3 В, а его выход DO даёт около 4,3 В, этого хватает следующим светодиодам.
- Сколько светодиодов потянет блок 5 В 4 А?
- На полной белой яркости 4 А / 60 мА = 66 светодиодов. С яркостью 80 из 255, как в примере, ток в 3 раза меньше. Для длинной ленты блок и сечение провода считает калькулятор блока питания ленты.
- Можно ли прошивать ESP32 по USB, пока лента подключена к блоку?
- Да. На плате DOIT между разъёмом USB и выводом VIN стоит диод, и 5 В блока в компьютер не уходят.
- Какой GPIO брать для ленты?
- GPIO с выходом, кроме strapping-пинов 0, 2, 5, 12 и 15 и пинов flash 6-11. GPIO34-39 работают только на вход и для ленты не годятся. В коде номер меняется в строке PIN.