Оглавление:

Стена из 500 светодиодов с ESP32: 16 шагов
Стена из 500 светодиодов с ESP32: 16 шагов

Видео: Стена из 500 светодиодов с ESP32: 16 шагов

Видео: Стена из 500 светодиодов с ESP32: 16 шагов
Видео: Программирование МК ESP32. Урок 3. Мигающий светодиод 2024, Июль
Anonim
Стена из 500 светодиодов с ESP32
Стена из 500 светодиодов с ESP32

Всем привет! К концу этого урока вы узнаете, как создать свою собственную светодиодную стену.

Это руководство основано на летней программе, предлагаемой в Sacred Heart University.

Повеселись!

Запасы

Расходные материалы, перечисленные ниже.

Шаг 1. Расходные материалы

Запасы
Запасы

Начнем с того, что соберем все необходимое для завершения нашей светодиодной стены:

(Ссылки созданы 10.07.2019)

Программное обеспечение Arduino IDE

Микроконтроллер ESP32

Светодиодный пиксельный свет

Источник питания

Шнур питания

Инструмент для зачистки проводов

Кабели-перемычки для макетных плат

Электропровод

Шаг 2: Выбор подходящего источника питания для вашей LedWall

Существует простой математический способ определить, какой источник питания лучше всего подходит для вас.

Мы используем степенной закон Ома: P = IxV (мощность = интенсивность x напряжение)

Напряжение определяется нашими светодиодами: в данном случае 5В.

Интенсивность зависит от оборудования, один светодиод потребляет 30 мА.

Следовательно, каждая полоска из 50 светодиодов потребляет 50 x 30 мА = 1250 мА = 1,25 А.

Таким образом, наша стена с 500 светодиодами потребляет в 10 раз больше (10 полос): 12,5 А.

Потребляемая мощность светодиодов составляет 5 В x 12,5 А = 62,5 Вт.

Конечно, помимо светодиодов вам нужно учитывать ESP и все остальные элементы вашей схемы.

У нас есть блок питания на 60А, у нас гораздо больше, чем нужно.

Шаг 3: шнур питания

Image
Image

Наш блок питания поставляется с разъемами для проводов. Нам нужно адаптировать шнур питания, чтобы подключить его к розетке на 110 В.

- Отрежьте гнездовой разъем на шнуре питания. Мы сохраним мужскую часть, иначе известную как NEMA 5-15P.

- Зачистите кабель, чтобы на всех проводах было видно около 3 мм меди.

Вот краткий видеоурок о том, как зачищать провода:

Шаг 4: Подключение источника питания

Подключение к ESP32S
Подключение к ESP32S

Теперь мы готовы подключить наш блок питания!

Всегда отключайте источник питания, когда с ним работаете.

Проводка

  • Черный провод (фаза) подключается к контакту L источника питания.
  • Белый провод (нейтральный) подключается к контакту N блока питания.
  • Зеленый провод подключается к контакту заземления блока питания.

(Если внутренние провода вашего шнура питания не того же цвета, что и наши, будьте осторожны и поищите схемы в Интернете.)

Тестирование

Вставьте шнур питания компьютера в любую розетку. На блоке питания должен загореться зеленый светодиод.

Шаг 5: Включение ESP32S

Глядя на свой ESP, рядом со всеми контактами должны быть ярлыки. Если они не помечены, вы можете найти «распиновку» своего индивидуального ESP в Интернете.

С помощью перемычки «папа-мама» или электрического провода соедините:

  • Контакт '5V' ESP32S к '+ V' блока питания (оранжевый на фото выше)
  • Контакт 'GND' ESP32S к разделу '-V' блока питания (черный на фото выше)

(На некоторых ESP вывод 5V помечен как VCC, они оба означают одно и то же.)

Обратите внимание, что у вашего ESP может быть другая `` распиновка '', чем та, которую мы используем. Таким образом, вы можете подключать свои провода в другом месте, чем на картинке выше. При условии, что вы подключаетесь к правильным контактам (5 В и GND), физическое расположение на плате не имеет значения.

Снова подключите блок питания, и если на вашем ESP есть светодиодный индикатор (большинство из них), он загорится, указывая на то, что на ESP подается питание. Поздравляю!

Шаг 6: Питание светодиодных лент

Питание светодиодных лент
Питание светодиодных лент

Использование электрических проводов:

- Подключите красный провод светодиодной ленты к V + на источнике питания.

- Подключите синий провод светодиодной ленты к V- на источнике питания.

Шаг 7: Подключение ESP32 к светодиодным полосам

Наш ESP32 указывает драйверу WS2811, подключенному к каждому светодиоду, требуемый цвет и яркость. Для этого нашему ESP32 нужен кабель «данных» к полосам.

Светодиодные ленты поставляются с 3-х проводным разъемом:

- Красный: питание - Синий: нейтральный - Белый: данные

Давайте подключим полосу кабеля с белыми светодиодами к цифровому контакту на ESP. Запомните выбранный PIN-код, так как нам нужно будет выбрать его в коде позже. Мы подключили наш к контакту 13.

Шаг 8: Подготовка компьютера: драйвер C2102

Теперь, когда наше оборудование подключено, мы хотим загрузить наш первый код для его тестирования. По умолчанию Windows или MacO не могут взаимодействовать с нашим ESP32. Для этого нам нужно загрузить «драйвер» для микросхемы связи ESP USB: C2102.

Этот драйвер необходимо скачать и установить:

- Windows 10: https://www.silabs.com/documents/public/software/C…- Windows 7/8 / 8.1: https://www.silabs.com/documents/public/software/C…- Mac:

(Ссылки по состоянию на 10.07.2019)

Шаг 9: Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 1

Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 1
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 1
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 1
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 1

Прежде чем мы сможем использовать наш ESP32 с программным обеспечением Arduino, нам нужно убедиться, что он распознается. По умолчанию программное обеспечение Arduino не может компилировать код для нашего ESP32, давайте исправим это:

Шаг 1. Добавление досок в менеджер

1 - Щелкните в Arduino опцию File >> Preferences.

2- В поле «Дополнительные URL-адреса диспетчера плат» скопируйте следующую ссылку:

Шаг 10: Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 2

Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 2
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 2
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 2
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 2

Теперь, когда программное обеспечение Arduino "знает" больше плат, давайте установим нашу поддержку ESP32.

Шаг 2: Установка поддержки ESP32

1 - В верхнем меню выберите: Инструменты >> Доска >> Диспетчер плат.

2 - Появится окно. Используйте поле поиска, расположенное в правом верхнем углу, чтобы найти «ESP32».

3 - Найдите кофе эспрессифа. Установите его. (См. Изображение)

Шаг 11: Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 3

Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 3
Программное обеспечение Arduino - Добавление поддержки ESP32 - Шаг 3

Теперь, когда программное обеспечение Arduino может взаимодействовать с нашим ESP32, давайте подключим его к компьютеру и убедимся, что все работает.

1 - Убедимся, что мы работаем на платформе ESP32:

Нажмите Инструменты >> Плата >> Модуль разработчика ESP32.

1- Давайте убедимся, что программное обеспечение Arduino знает, как общаться с нашим ESP:

Щелкните Инструменты >> Порт и выберите тот, который появляется после подключения этого кабеля.

Важный:

Если у вас возникли проблемы с загрузкой кода в ESP, сначала проверьте эти два меню. Если порт не отмечен галочкой, программное обеспечение Arduino не будет связываться с ним.

Шаг 12: Добавление библиотек в IDE Arduino

Добавление библиотек в IDE Arduino
Добавление библиотек в IDE Arduino

Теперь мы собираемся добавить библиотеку, которая позволит нам протестировать нашу светодиодную стену!

1- Щелкните Инструменты >> Управление библиотеками.

2- В правом верхнем углу найдите NeoPixelBus. Найдите "NeoPixelBus by Makuna", установите его (см. Изображение)

Возможные другие интересные библиотеки: (Не требуется для этого руководства)

- NeoMatrix

- FastLed

- Артнет

- GFX

Шаг 13: Первый код: тест Strand

Наш первый код - это пример из библиотеки.

Вы можете скопировать / вставить приведенный ниже код или щелкнуть:

Файл >> Примеры >> Adafruit NeoPixelBus >> Strandtest

Не забудьте изменить свой LED_PIN на тот, который вы использовали для физического подключения светодиодов. В этом руководстве мы использовали 13.

Также не забудьте настроить размер пряди с помощью переменной LED_COUNT.

// Базовая ежедневная программа тестирования светодиодной ленты.

# include # ifdef _AVR_ #include // Требуется для Adafruit Trinket 16 МГц #endif // Какой вывод на Arduino подключен к NeoPixels? #define LED_PIN 13 // Сколько NeoPixels подключено к Arduino? #define LED_COUNT 500 // Объявление нашего объекта полосы NeoPixel: полосы Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); // Аргумент 1 = количество пикселей в полосе NeoPixel // Аргумент 2 = номер вывода Arduino (большинство из них действительны) // Аргумент 3 = флаги типа пикселя, при необходимости сложите вместе: // NEO_KHZ800 800 кГц битовый поток (большинство продуктов NeoPixel с Светодиоды WS2812) // NEO_KHZ400 400 кГц (классические пиксели FLORA v1 (не v2), драйверы WS2811) // Пиксели NEO_GRB подключены для потока битов GRB (большинство продуктов NeoPixel) // Пиксели NEO_RGB подключены для потока битов RGB (пиксели FLORA v1, а не v2) // Пиксели NEO_RGBW подключены для битового потока RGBW (продукты NeoPixel RGBW) // функция setup () - запускается один раз при запуске -------------------- ------------ void setup () {// Эти строки специально предназначены для поддержки Adafruit Trinket 5V 16 MHz. // Любая другая плата, вы можете удалить эту часть (но это не повредит): #if defined (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // КОНЕЦ кода, специфичного для брелка. strip.begin (); // ИНИЦИАЛИЗИРУЕМ объект полосы NeoPixel (ОБЯЗАТЕЛЬНО) strip.show (); // Выключаем все пиксели как можно скорее strip.setBrightness (50); // Устанавливаем ЯРКОСТЬ примерно на 1/5 (макс = 255)} // функция loop () - выполняется многократно, пока включена плата --------------- void loop () {// Заливка по длине полосы разными цветами… colorWipe (strip. Color (255, 0, 0), 50); // Красный colorWipe (strip. Color (0, 255, 0), 50); // Зеленый colorWipe (strip. Color (0, 0, 255), 50); // Синий // Создаем театральный эффект в разных цветах… TheaterChase (strip. Color (127, 127, 127), 50); // Белый, половинная яркость TheaterChase (strip. Color (127, 0, 0), 50); // Красный, половина яркости TheaterChase (strip. Color (0, 0, 127), 50); // Голубая радуга половинной яркости (10); // Плавный цикл радуги по всей полосе TheaterChaseRainbow (50); // Вариант TheaterChase с улучшенной радугой} // Некоторые наши собственные функции для создания анимационных эффектов ----------------- // Заполняем пиксели полосы один за другим цветом. Полоса НЕ очищается // сначала; все, что там, будет покрыто пикселем за пикселем. Передайте цвет // (как единое «упакованное» 32-битное значение, которое вы можете получить, вызвав // strip. Color (красный, зеленый, синий), как показано в функции loop () выше), // и время задержки (в миллисекундах) между пикселями. void colorWipe (uint32_t color, int wait) {for (int i = 0; i strip.setPixelColor (i, color); // Установить цвет пикселя (в ОЗУ) strip.show (); // Обновить полосу для соответствия задержке (wait); // Пауза на мгновение}} // Погоня за огнями в стиле театрального шатра. Передайте цвет (32-битное значение, // а-ля strip. Color (r, g, b), как указано выше), и время задержки (в мс) // между кадрами void TheaterChase (uint32_t color, int wait) {for (int a = 0; a <10; a ++) {// Повторить 10 раз… for (int b = 0; b <3; b ++) {// 'b' считает от 0 до 2… strip.clear (); // Установить все пиксели в ОЗУ на 0 (выкл.) // 'c' считает от 'b' до конца полоса с шагом 3… for (int c = b; c strip.setPixelColor (c, color); // Установить пиксель 'c' в значение 'color'} strip.show (); // Обновить полосу с задержкой нового содержимого (wait); // Пауза на мгновение}}} // Цикл радуги по всей полосе. Время задержки (в мс) между кадрами. void rainbow (int wait) {// Оттенок первого пикселя проходит 5 полных циклов через цветовой круг. // Цветовой круг имеет диапазон 65536, но это Хорошо, если мы перевернемся, // просто посчитаем от 0 до 5 * 65536. Добавление 256 к firstPixelHue каждый раз // означает, что мы сделаем 5 * 65536/256 = 1280 проходов через этот внешний цикл: for (long firstPixelHue = 0; firstPixelHue <5 * 65536; firstPixelHue + = 256) {for (int i = 0; I // Смещение оттенка пикселя на величину, чтобы сделать один полный оборот // цветового круга (диапазон 65536) по длине полосы // (шаги strip.numPixels ()): int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels ()); // strip. ColorHSV () может принимать 1 или 3 аргумента: оттенок (от 0 до 65535) или // необязательно добавить насыщенность и значение (яркость) (каждый от 0 до 255). // Здесь мы используем только вариант оттенка с одним аргументом. Результат // передается через strip.gamma32 () для обеспечения «более точных» цветов // перед присвоением каждому пикселю: strip.setPixelColor (i, strip.gamma32 (strip. ColorHSV (pixelHue)));} strip.show (); // Обновление полосы с новым содержимым delay (wait); // Пауза на мгновение}} // Шатер театра с улучшенной радугой. Время задержки передачи (в мс) между кадрами void theatreChaseRainbow (int wait) {i nt firstPixelHue = 0; // Первый пиксель начинается с красного (оттенок 0) for (int a = 0; a <30; a ++) {// Повторить 30 раз… for (int b = 0; b RGB strip.setPixelColor (c, color); / / Установить для пикселя 'c' значение 'color'} strip.show (); // Обновить полосу новым содержимым delay (wait); // Сделать паузу на мгновение firstPixelHue + = 65536/90; // Один цикл цветового круга более 90 кадров}}}

Шаг 14: Пример кода SHU

Image
Image

Наш код включает все светодиоды один за другим, чтобы убедиться, что они работают:

// В этом примере будет циклически отображаться 500 пикселей красным цветом

#includeconst uint16_t PixelCount = 500; // в этом примере предполагается, что 4 пикселя, уменьшение размера приведет к сбою const uint8_t PixelPin = 13; // убедитесь, что установлен правильный вывод, игнорируется для Esp8266

#define colorSaturation 128 // трехэлементные пиксели в разном порядке и скорости

Полоса NeoPixelBus (PixelCount, PixelPin);

// Полоса NeoPixelBus (PixelCount, PixelPin); RgbColor красный (0, colorSaturation, 0); RgbColor зеленый (colorSaturation, 0, 0); RgbColor blue (0, 0, colorSaturation); RgbColor белый (colorSaturation); RgbColor черный (0); HslColor hslRed (красный); HslColor hslGreen (зеленый); HslColor hslBlue (синий); HslColor hslWhite (белый); HslColor hslBlack (черный); void setup () {Serial.begin (115200) while (! Serial); // ждем последовательного присоединения Serial.println (); Serial.println («Инициализация…»); Serial.flush (); // это сбрасывает все неопиксели в отключенное состояние. Начать (); strip. Show (); Serial.println (); Serial.println («Выполняется…»); } void loop () {задержка (100); Serial.println («Цвета R, G, B, W…»); for (int i = 0; i <= 499; i ++) {// устанавливаем цвета, // если они не совпадают по порядку, вам нужно использовать функцию NeoGrbFeature strip. SetPixelColor (i, red); strip. Show (); задержка (100); strip. SetPixelColor (i, hslRed); strip. Show (); задержка (100); }}

Шаг 15: загрузка кода в ESP32

Важный:

Чтобы иметь возможность загружать код на любой микроконтроллер, он должен находиться в режиме программирования. В большинстве случаев это делается автоматически, и все, что вам нужно сделать, это нажать кнопку «Загрузить» в программном обеспечении.

Наш ESP32 требует, чтобы вы удерживали кнопку программирования во время отправки кода. Вам также необходимо сбросить его после загрузки кода, нажав один раз кнопку сброса.

Кнопка программирования ESP32 расположена слева, кнопка сброса - справа. Если у вас есть другой микроконтроллер, обратитесь к руководству пользователя.

Шаг 16: цитаты

Это руководство было создано с помощью следующих руководств:

randomnerdtutorials.com/installing-the-esp…

Используется для установки ESP32 в Arduino IDE.

Авторы:

Натаниэль Бароне, Габриэль Кастро

Редактор:

Седрик Блеймлинг

Рекомендуемые: