Led Matrix на WS2812

Добрый день, хочу поделиться очередной самоделкой. На этот раз я решил написать инструкцию по изготовлению Led матрицы. Размер небольшой 10х10 диодов. Но по данной инструкции можно изготовить матрицы и больших размеров. Для красоты добавил заднюю подсветку. За основу взял адресные светодиоды WS2812 смонтированные на ленту по 60 диодов на метр. Управлять ими будем через Arduino Pro Mini. Вариантов использования матрицы очень много. Для примера я добавил датчик температуры и написал прошивку часов без RTC.

Нам понадобится:
— WS2812 лента со 120 светодиодами, 60 штук на метр
— Arduino Pro Mini 5V 16MHz
— Блок питания на 5V 1A
— Датчик температуры ds18b20
— Резистор 4.7 Ком 0.25 Вт
— ДСП толщиной 10 мм
— Матовый или «Молочный» пластик
— Плотный картон
— Изолента
— Соединительные провода
— Монтажная плата
— Кнопки
— Саморезы 19 мм
— Паяльник
— Припой, канифоль
— Двусторонний скотч
— USB-TTL
— Дрель или шуруповерт
— Электролобзик
— Сверла по дереву

Шаг 1 Подготовка диодов.
Берем плотный картон и «разлинеиваем» его, то есть, чертим горизонтальные линии с расстоянием между ними 16мм. Отсчитываем 100 диодов от нашей ленты. Эти 100 диодов режим на отрезки по 10 диодов. Оставшиеся 20 режем по одному диоды. Делать это надо аккуратно и строго по линиям разреза. Поясню: 10 отрезков по 10 диодов итого 100 нужны для матрицы, оставшиеся 20 на заднюю подсветку. Отрезки по 10 диодов наклеиваем на картон по линиям. Обратите внимание на направление управляющего сигнала для диодов! Управляющий сигнал должен подаваться в правильно направлении, для этого на ленте стрелочкой показано направление. Первую полоску клеим слева – направо, то есть IN (вход) на ленте должен быть слева, а OUT (справа). Таким образов IN (вход) первой полоски должен находится в верхнем левом углу! Следующую полосу клеим наоборот, справа – налево. Третью опять слева – направо. Итак, далее. При следовании по направлению управляющего сигнала, у нас должна получиться зигзагообразная линия, начиная с верхнего левого угла. Главное ничего не перепутать.

Между первой и второй полосой, ближе к началу проделывает отверстие для проводов. Припаиваем провода к первой полосе, желательно разноцветные, чтобы не перепутать. Пропускаем их через проделанное отверстие. Далее спаиваем наши полосы короткими проводами. + 5 от первой полости к +5 второй. GND к GND. От OUT первой полосы к IN второй полосы, от OUT второй полосы к IN третьей, и так далее. В итоге должно получиться следующее:

Шаг 2 Изготовление корпуса.
Корпус состоит из трех частей. Вначале надо вырезать рамку из ДСП толщиной 10 мм. Лучше всего резать электролобзиком, но в отсутствие его можно взять и ручной. Сторона внешнего квадрата равна 190 мм. Внутреннего – 170 мм. Для красоты углы лучше закруглить. Таким образом, должна получиться рамка размером 190 х 190 мм и толщиной стенки 10 мм. После резки зачищаем мелкой наждачной бумагой.

Переходим к изготовлению второй части. Прикладываем нашу рамку к листу ДСП и карандашом обводим по внешнему краю. Убираем рамку. Отступаем 30 мм с каждой стороны во внутрь квадрата и чертим внутренний квадрат. Должна получиться еще одна рамка размером 190 х 190, но при этом с толщиной стороны 30 мм. На расстоянии 5 мм от внешнего края этой рамки, и равном расстоянии друг от друга проделываем отверстия диаметром 3 мм. По 2 отверстия с каждой стороны. Они нужны для саморезов. Также надо определиться где будет верх, и в вернем левом углу внутреннего квадрата сделать прорезь для проводов.

С обратной стороны второй рамки, по периметру внутренней стороны надо прикрутить отрезки из того же ДСП толщиной 10 мм. В итоге должно выглядеть так:

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

Переходи к изготовления задней подсветки. Со стороны диодов, между предпоследней и последней полоской, ближе к левому краю необходимо просверлить отверстие для проводов. Припаиваем провода к концу последней полоски и продеваем эти провода в отверстие. Оставшиеся и разрезанный по одному 20 диодов необходимо приклеить на задней стороне, на равном расстоянии друг от друга. По 5 штук с каждой стороны. Направление управляющего сигнала – почасовой стрелки начиная с правого нижнего угла. Спаиваем их также как и матрицу. Выведенные провода от конца матрицы припаиваем к первому диоду. + 5 от первого диода к +5 второго. GND к GND. От OUT первого диода к IN второго, от OUT второго к IN третьего, и так далее.

Нашу Arduino Pro Mini размещаем внутри задней рамки, сзади матрицы. Для питания надо использовать стабилизированный блок питания на 5 Вольт. С силой тока не меньше 1 Ампера. Диоды достаточно прожорливы и если вы планируете включать их все сразу и на долго, блок питания нужен помощнее, я рекомендую на 1.5 – 2 ампера. Соединяем все это вместе от +5 блока питания к +5 Arduino и +5 WS2812. -5 блока питания с GND Arduino и GND WS2812. Управляющий провод от IN WS2812 подключаем к «pin 6» Arduino.

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

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

Шаг 3 Подключение датчика температуры.
Просто часы это не интересно, поэтому добавим к ним датчик температуры. Для измерения температуры будем использовать интегральный датчик DS18B20. Он обладает высокой точностью измерения, погрешность не более 0,5 °C. Уже с завода датчик откалиброван и какой-либо дополнительной настройки не требуется. Широкий диапазон измерения температуры -55 … + 125 °C. Можно использовать в любых помещениях. Если на улице, то надо позаботиться о защите от влаги. Есть два режима работы: с внешним источником питания и «паразитного питания». Я рекомендую использовать с внешним питанием.

На одну линию связи может быть включено несколько датчиков. Но для нас достаточно и одного. +5 берем от блока питания. GND к -5. Провод от контакта «DQ» ds18b20 к «pin 9» Arduino. Не забудьте поставить подтягивающий резистор, между «DQ» и +5, на 4.7 КОм. На мой взгляд, удобнее всего это сделать на самом датчике. Выводим его в верхний правый угол:

Шаг 4 Подготовка платы с кнопками.
В данном случае мы используем матрицу как часы. Установку времени можно проводить с помощью последовательного порта, подключив Arduino к компьютеру. Это не всегда удобно. Поэтому изготовим плату с тремя кнопками, для установки времени. Кроме этого матрицу можно использовать и других целях, стоит только записать другой скетч. Тогда и кнопки можно использовать по другому назначению.

Подключаем их следующим образом: общий для всех трех кнопок провод подключаем к «GND» Arduino. Первую кнопку, она служит для входа в режим установки времени и переключения по времени и дате, подключаем к «Pin 2». Вторая, кнопка увеличения значения, — к «Pin 3», а третья, кнопка уменьшения значения, — к «Pin 4». Крепим кнопки на двусторонний скотч сзади матрицы:

Шаг 5 Прошивка.
Как я уже говорил матрицу можно применять в разных целях. Я на данный момент написал скетч только для часов. В последующем выложу и другие скетчи. Для написания и заливки использую Arduino IDE 1.8.5. Управлять матрицей можно несколькими способами. Управлять каждым диодом по-отдельности или как единой матрицей. В своем скетче я использую первый вариант. Для этого понадобится библиотека от Adafruit под названием NeoPixel-master:

adafruit_neopixel-master.rar

[27.83 Kb] (скачиваний: 99)

Для работы с диодами как с матрицей библиотеки Adafruit_NeoMatrix-master и Adafruit-GFX-Library-master:

matrix_libraries.rar

[282.01 Kb] (скачиваний: 103)

Для датчика температуры нужна библиотека OneWire.

onewire.rar

[16.75 Kb] (скачиваний: 85)

Для редактирования и заливки скетча надо вначале установить Arduino IDE с официального сайта Arduino.cc, а затем все эти библиотеки. Необходимо распаковать эти архивы и поместить распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE. Так же есть возможность установить библиотеки прямо в среде Arduino IDE. Не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В верху выпадающего списка выберите пункт «Добавить .Zip библиотеку». В появившемся диалоговом окне выберете библиотеку, которую вы хотите добавить. После всех манипуляций необходимо перезагрузить Arduino IDE.

Датчик температуры имеет уникальный адрес для каждого устройства — 64-разрядный код. Искать этот код ресурсоемкая задача. Поэтому необходимо вначале подключить датчик к Arduino, залить в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты — Монитор порта. Arduino должна найти ваш датчик и написать его адрес. Копируем или просто записываем адрес вашего датчика. Открываем скетч Ard_Tic_Tak_WS2812_Matrix_10x10_Serial_Knopki_Term, ищем строку:

byte addr[8]={0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97};//адрес моего датчика

Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика.

Данный часы не используют модуль RTC. Поэтому если они спешат или отстаю следует поменять значение в строке:

if (micros() — prevmicros >494000) { // поменять на другое для корректировки было 500000

Определить это число нужно опытным путем. Если ваши часы спешат следует увеличить это число, если отстаю – уменьшить.

Заливаем скетч.

ard_tic_tak_ws2812_matrix_10x10_serial_knopki_term.rar

[5.45 Kb] (скачиваний: 163)

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

Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.

Источник: usamodelkina.ru