Учебник по ESP32 12/55 — Проект 4 с RGB-лентой WS2812 с обучающим набором SunFounder ESP32 IoT
В этом руководстве мы рассмотрим, как управлять светодиодной лентой WS2812 с помощью микроконтроллера ESP32. Этот проект позволяет создавать разнообразные цвета и управлять каждым светодиодом индивидуально, что дает увлекательный и наглядный способ изучения программирования и электроники. К концу этого руководства у вас будет полностью рабочая установка, которая сможет динамически менять цвета и узоры.
Используя микроконтроллер ESP32 от SunFounder, который имеет встроенные возможности Wi-Fi и Bluetooth, мы можем легко подключить и управлять светодиодной лентой WS2812 RGB. Гибкость этой светодиодной ленты позволяет применять ее в творческих проектах, будь то декоративное освещение или образовательные проекты. Для лучшего понимания шагов вы можете обратиться к видео (в видео на 00:00).
Объяснение аппаратного обеспечения
Основными компонентами этого проекта являются микроконтроллер ESP32 и светодиодная лента WS2812. ESP32 — это мощный микроконтроллер, который может выполнять задачи, аналогичные Arduino, но с дополнительными возможностями подключения. Он имеет богатый набор функций, которые позволяют подключаться к облаку, обеспечивая удаленное управление и регистрацию данных.
Светодиодная лента WS2812 состоит из индивидуально адресуемых RGB-светодиодов, что означает, что каждым светодиодом можно управлять для отображения разных цветов. Лента работает по однопроводному протоколу, что позволяет соединять несколько светодиодов последовательно без потери качества сигнала. Каждый светодиод содержит встроенный драйвер, который принимает входной сигнал и усиливает его для следующего светодиода в цепочке.
Данные из технического описания
| Производитель | Worldsemi |
|---|---|
| Номер детали | WS2812 |
| Логическое/IO напряжение | 3,5–5,3 В |
| Напряжение питания | 5 В |
| Выходной ток (на канал) | макс. 20 мА |
| Пиковый ток (на канал) | макс. 60 мА |
| Рекомендуемая частота ШИМ | 400 Гц |
| Пороги входной логики | 0,3 x VDD до 0,7 x VDD |
| Падение напряжения / RDS(on) / насыщение | макс. 0,5 В |
| Тепловые пределы | от -25 до 80 °C |
| Корпус | 5050 |
| Примечания / варианты | Можно соединять последовательно для более длинных лент |
- Обеспечьте правильное питание (5 В), чтобы избежать повреждения светодиодов.
- Используйте конденсатор (100 µФ) на клеммах питания для сглаживания скачков напряжения.
- Держите провода данных короткими, чтобы уменьшить ухудшение сигнала.
- Следите за температурой светодиодов; обеспечьте надлежащий отвод тепла.
- Соблюдайте правильную полярность при подключении питания и земли.
- Используйте подтягивающий резистор на линии данных при использовании длинных лент.
Инструкции по подключению

Чтобы подключить светодиодную ленту WS2812 к ESP32, начните с подключения источника питания. Провод +5 В от светодиодной ленты следует подключить к контакту 5V на ESP32, а провод земли (GND) — к одному из контактов GND на ESP32.
Затем подключите провод входа данных от светодиодной ленты к контакту 14 на ESP32. Убедитесь, что соединения надежны, чтобы обеспечить правильную передачу данных. Если вы используете несколько лент или большие расстояния, рассмотрите возможность использования преобразователя уровня для обеспечения целостности сигнала. Эта установка позволит вам управлять светодиодной лентой непосредственно с ESP32.
Примеры кода и пояснения
В коде используется библиотека Adafruit NeoPixel для управления светодиодной лентой WS2812. Он начинается с инициализации светодиодной ленты и установки начального цвета в черный. Ключевые идентификаторы в коде включают LED_PIN, который определяет контакт, подключенный к линии данных светодиодной ленты, и NUM_LEDS, который указывает количество светодиодов в ленте.
#include // Подключение библиотеки Adafruit NeoPixel
#define LED_PIN 14 // Светодиодная лента NeoPixel
#define NUM_LEDS 8 // Количество светодиодов
В функции setup лента инициализируется с помощью strip.begin(), а начальный цвет устанавливается в черный с помощью strip.show(). Это подготавливает ленту к изменениям цвета при запуске программы.
void setup() {
strip.begin(); // Инициализация ленты NeoPixel
strip.show(); // Установка начального цвета в черный
}
Основной цикл программы состоит из двух циклов for. Первый цикл включает каждый светодиод по одному, устанавливая его цвет и обновляя ленту. Второй цикл выключает каждый светодиод таким же образом. Это создает простую, но эффективную световую анимацию.
void loop() {
// Включение светодиодов по одному
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Установка цвета i-го светодиода в красный
strip.show(); // Обновление светодиодной ленты с новыми цветами
delay(100); // Ожидание 100 миллисекунд
}
// Выключение светодиодов по одному
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Установка цвета i-го светодиода в черный (выключение)
strip.show(); // Обновление светодиодной ленты с новыми цветами
delay(100); // Ожидание 100 миллисекунд
}
}
Смотрите полную загрузку кода ниже статьи для получения более подробной информации о реализации различных цветовых эффектов и анимаций.
Демонстрация / Что ожидать
После завершения подключения и загрузки кода вы должны увидеть, как светодиоды на ленте загораются один за другим в заданном цвете, а затем гаснут в той же последовательности. Это создает эффект «бегущего огня». Если светодиоды не загораются, как ожидалось, перепроверьте соединения и убедитесь, что питание достаточное. Также проверьте, что в коде указан правильный пин (на видео на 12:30).
Таймкоды видео
- 00:00 Начало
- 1:40 Введение в светодиод WS2812
- 7:25 Страница документации проекта
- 9:16 Объяснение RGB-цвета
- 13:16 Объяснение подключения
- 13:48 Объяснение кода Arduino-1
- 19:03 Выбор платы ESP32 и порта в Arduino IDE
- 20:45 Демонстрация кода-1
- 22:00 Управление отдельным светодиодом
- 24:16 Бегущий светодиод
- 25:41 Свет вперед и назад
#include <Adafruit_NeoPixel.h> // Включите библиотеку Adafruit NeoPixel
#define LED_PIN 14 // Лента LED NeoPixel
#define NUM_LEDS 8 // Количество светодиодов
// Создайте экземпляр класса Adafruit_NeoPixel
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin(); // Инициализируйте ленту NeoPixel
strip.show(); // Установите начальный цвет на черный.
}
void loop() {
// Включайте светодиоды один за другим
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 100, 45, 0); // Установите цвет i-го светодиода на красный.
strip.show(); // Обновите светодиодную ленту новыми цветами.
delay(100); // Подождите 100 миллисекунд
}
// Выключайте светодиоды по одному.
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, 0, 0, 0); // Установите цвет i-го светодиода на черный (выключите его)
strip.show(); // Обновите светодиодную ленту новыми цветами.
delay(100); // Подождите 100 миллисекунд
}
}
Common Course Links
Common Course Files
Вещи, которые могут вам понадобиться
-
Амазонка
-
eBay
-
АлиЭкспрессКупите светодиодную ленту WS2812 на AliExpress-2s.click.aliexpress.com
-
АлиЭкспрессКупите светодиодную ленту WS2812 на AliExpress.s.click.aliexpress.com
-
БанггудПриобретите светодиодную ленту WS2812 на Banggoodbanggood.com
Ресурсы и ссылки
Ресурсов пока нет.
Файлы📁
Нет доступных файлов.