Код для поиска

Учебник по ESP32 12/55 — Проект 4 с RGB-лентой WS2812 с обучающим набором SunFounder ESP32 IoT

Учебник по ESP32 12/55 — Проект 4 с RGB-лентой WS2812 с обучающим набором SunFounder ESP32 IoT

В этом руководстве мы рассмотрим, как управлять светодиодной лентой WS2812 с помощью микроконтроллера ESP32. Этот проект позволяет создавать разнообразные цвета и управлять каждым светодиодом индивидуально, что дает увлекательный и наглядный способ изучения программирования и электроники. К концу этого руководства у вас будет полностью рабочая установка, которая сможет динамически менять цвета и узоры.

SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422

Используя микроконтроллер 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 µФ) на клеммах питания для сглаживания скачков напряжения.
  • Держите провода данных короткими, чтобы уменьшить ухудшение сигнала.
  • Следите за температурой светодиодов; обеспечьте надлежащий отвод тепла.
  • Соблюдайте правильную полярность при подключении питания и земли.
  • Используйте подтягивающий резистор на линии данных при использовании длинных лент.

Инструкции по подключению

ESP32-12-WS2812-wiring

Чтобы подключить светодиодную ленту 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 Свет вперед и назад

Изображения

ESP32-12-WS2812-wiring
ESP32-12-WS2812-wiring
ESP32-12-WS2812-schematic
ESP32-12-WS2812-schematic
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
811-ESP32 Tutorial 12/55- Arduino code for WS2812 RGB LED stripe using ESP32
Язык: C++
#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 миллисекунд
  }
}

Ресурсы и ссылки

Ресурсов пока нет.

Файлы📁

Нет доступных файлов.