Реклама

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

В этом проекте мы будем с нуля создавать защищенную от непогоды и активирующую движение матрицу 8 x 8 светодиодов, стоимостью менее 20 долларов Он предназначен для размещения в центре стандартного рождественского дверного венка, хотя его можно использовать в любом месте по всему дому. И так как он работает от батареи, в любом месте вдали от дома тоже!

Список деталей

Для этого проекта вам понадобится:

  • Arduino.
    • Я использовал Nano из-за его небольшого размера, но вы можете использовать практически любой Arduino-совместимый микроконтроллер Руководство по покупке Arduino: какую доску взять?Существует так много разных видов плат Arduino, что вы будете прощены за то, что запутались. Что вы должны купить для своего проекта? Позвольте нам помочь с этим руководством по покупке Arduino! Читать далее .
  • instagram viewer
  • 64 х красные светодиоды.
  • 8 х 220 Ом резисторов.
  • ИК-датчик движения.
    • Многие Arduino стартовые наборы Что входит в стартовый комплект Arduino? [MakeUseOf Объясняет]Ранее я представил оборудование Arduino с открытым исходным кодом здесь, в MakeUseOf, но вам понадобится нечто большее, чем просто Arduino, чтобы что-то из него построить и начать работу. Arduino "стартовые комплекты" ... Читать далее давай с этим. Я купил мультипак от Amazon за 10 долларов.
  • 1 часть макетная плата.
    • Один использованный здесь был 9 х 7 см, хотя вы можете использовать любой размер, который вы хотите.
  • Аккумулятор 7-12В.
    • Простой аккумулятор используется здесь по бюджетным причинам, но зарядное устройство мобильного банка Лучший Pokemon Go Power BanksPokemon Go выбивает батарею из телефона. Для того, чтобы выдавить немного сока из пойманного покемона из вашего телефона, нужна батарея питания. Но какая там лучшая батарея? Читать далее может длиться еще дольше.
  • Ассорти короткие кусочки проволоки.
  • Коробка Tupperware или подобный защищенный от непогоды корпус.
    • Убедитесь, что он будет достаточно большим, чтобы вместить все ваши компоненты внутри!
  • Рождественский венок.
    • Любой подойдет, просто убедитесь, что коробка корпуса будет помещаться внутри него.
  • Паяльник и припой.

Хотя это не является строго необходимым, так как вы можете припаять компоненты непосредственно к Nano, я также нашел небольшой макет, очень полезный при тестировании. Горячий клеевой пистолет также помогает собрать все детали вместе.

Рождественский венок светодиодные матрицы

Этот проект требует довольно много пайки, и как новичок может показаться пугающим. Лично я все еще новичок в пайке и нашел, что это не так сложно и отнимает много времени, как кажется. Если вы также плохо знакомы с пайкой, вот некоторые хорошие советы, чтобы помочь Узнайте, как паять, с помощью этих простых советов и проектовВас немного пугает мысль о раскаленном железе и расплавленном металле? Если вы хотите начать работать с электроникой, вам нужно научиться паять. Позвольте нам помочь. Читать далее .

Если вы действительно не заинтересованы в идее пайки, этот проект также возможен с Светодиодные ленты Проект выходного дня: создание гигантского светодиодного пиксельного дисплеяЯ люблю светодиодные пиксели: яркие, удобные в управлении, дешевые и универсальные. Сегодня мы превратим их в большой пиксельный дисплей, который можно повесить на стену. Читать далее или готовую светодиодную матрицу, которая может быть в вашем стартовом наборе. Некоторые корректировки кода будут необходимы, если вы решите пойти по этому пути.

Настройка Arduino

Начнем с принципиальной схемы Arduino и проводов, которые мы будем подключать к нашему ИК-датчику и светодиодной матрице.

фризирование венка

Внутри Матрицы

Теперь, чтобы сделать нашу матрицу 8 х 8 светодиодов. Хорошая идея начать с создания одной строки и одного столбца матрицы, чтобы убедиться, что это именно то место, где вы хотите, на макетной плате.

тестирование, где поставить светодиоды

На фото выше все светодиоды расположены таким образом, чтобы аноды (более длинная положительная ножка) были направлены к верхней части платы. Это важно, так как мы будем создавать столбцы общих анодов, соединяя их вместе, и ряды общих катодов (более короткая отрицательная ветвь). Получение этого прямо сейчас избавит от головной боли позже!

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

сомнение

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

Пусть пайка начнется

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

протоэластик

Теперь один за другим согните катодную (короткую) ножку каждого светодиода влево, чтобы они все перекрывали друг друга. Проще всего начать с левой стороны и работать направо. Если вы используете большую часть прототипа, вы можете сначала припаять их к плате и соединить их вместе с помощью пэдов. Будьте осторожны, чтобы не присоединить катоды к каким-либо другим линиям на плате или к любым из анодов!

катодная складка припоя

Повторите этот процесс для всех восьми строк, и когда вы закончите, у вас должно получиться что-то вроде этого:

картина готовых рядов

Прыгающие аноды!

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

бен паяные аноды

Сделайте это для каждого ряда анодов и прикрепите резистор к каждому верхнему аноду. Вероятно, вам будет проще поместить резистор в следующее отверстие в плате и соединить контактные площадки с помощью припоя. Теперь у вас должно быть что-то вроде этого:

закончил пайку

Поздравляем! Матрица светодиодов завершена. Тщательно проверьте свою пайку на этом этапе, чтобы убедиться, что нет разрывов и что ни один из столбцов не касается строк. Не волнуйтесь, если это не выглядит красиво, нам просто нужно, чтобы это работало! Теперь вы можете проверить каждый светодиод по отдельности, подключив 5 В к любому из концов столбца и заземлить любой из концов ряда.

тестовая матрица

При условии, что все в порядке, подключите провода к каждому столбцу и каждому ряду и прикрепите их к Arduino, как показано на рисунке выше.

Давайте получим кодирование

Откройте Arduino IDE и выберите свою плату и порт. Если вы новичок в Arduino, проверьте это руководство по началу работы. Начало работы с Arduino: руководство для начинающихArduino - это платформа для создания прототипов электроники с открытым исходным кодом, основанная на гибком, простом в использовании аппаратном и программном обеспечении. Он предназначен для художников, дизайнеров, любителей и всех, кто заинтересован в создании интерактивных объектов или сред. Читать далее

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

const int row [8] = {2,3,4,5,6,7,8,9}; const int col [8] = {10,11,12,14,15,16,17,18}; int pirPin = 19; int pirState = LOW; int val = 0; bool pirTrigger = false; const int pirLockTime = 12000; int pirCountdown = pirLockTime; int пиксели [8] [8]; const int refreshSpeed ​​= 500; int countDown = refreshSpeed; int currentCharIndex = 0; typedef bool CHAR_MAP_NAME [8] [8]; const CHAR_MAP_NAME blank = {{0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, }; const CHAR_MAP_NAME threedownthreein = {{0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, }; const int noOfFrames = 5; const CHAR_MAP_NAME * charMap [noOfFrames] = { & пусто, & threedownthreein, & пусто, & пусто, & threedownthreein. }; void setup () {for (int i = 0; i <8; i ++) {pinMode (row [i], OUTPUT); pinMode (col [i], OUTPUT); // датчик движения pinMode (pirPin, INPUT); digitalWrite (col [i], LOW); } } void screenSetup () {const CHAR_MAP_NAME * thisMap = charMap [currentCharIndex]; для (int x = 0; х <8; x ++) {for (int y = 0; у <8; y ++) {bool on = (* thisMap) [x] [y]; if (on) {пиксели [x] [y] = ВЫСОКАЯ; } else {пиксели [x] [y] = LOW; }}} currentCharIndex ++; if (currentCharIndex> = noOfFrames) {currentCharIndex = 0; }} void refreshScreen () {for (int currentRow = 0; currentRow <8; currentRow ++) {digitalWrite (row [currentRow], LOW); for (int currentCol = 0; currentCol <8; currentCol ++) {int thisPixel = пикселей [currentRow] [currentCol]; digitalWrite (col [currentCol], thisPixel); if (thisPixel == HIGH) {digitalWrite (col [currentCol], LOW); }} digitalWrite (row [currentRow], HIGH); }} void loop () {val = digitalRead (pirPin); if (val == HIGH) {pirTrigger = true; } else if (val == LOW && pirCountdown <= 0) {pirTrigger = false; pirCountdown = pirLockTime; } if (pirTrigger == true && pirCountdown> 0) {refreshScreen (); countDown--; pirCountdown--; if (countDown <= 0) {countDown = refreshSpeed; screenSetup (); } } }

Важные части для понимания:

refreshSpeed переменная. Эта переменная определяет, как время между обновлениями экрана. Чем больше число, тем дольше ждать.

Const CHAR_MAP_NAMEs. Здесь вы размещаете каждую карту персонажей (или фрейм, если вам проще думать о них таким образом), которую вы хотите отобразить.

noOfFrames переменная. Это определяет, сколько кадров отображается за один полный просмотр. Обратите внимание, что оно может отличаться от количества карт персонажей. Например, если вы хотите отобразить «A CAT», вам нужно определить только четыре отдельных кадра: пустое, , С и T.

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

Процесс добавления каждого кадра на светодиодный дисплей может быть немного утомительным, поэтому мы создали эта таблица чтобы было немного проще создавать текст и изображения для вашей светодиодной матрицы (сделайте копию Google Sheet, чтобы вы могли ее редактировать).

Используя электронную таблицу, вы можете скопировать свои творения прямо в код.

Сделай это смелым стихии

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

Я использовал круглую коробку Tupperware диаметром 15 см и глубиной 6 см, которая идеально подходила для моих компонентов. Вырежьте окно в крышке немного больше, чем ваша светодиодная матрица, и прикрепите к нему прозрачную пластиковую пленку, не оставляя места для попадания жидкости. Прочный пластик из какой-то упаковки подойдет лучше всего, но это было все, что у меня было. Вы также можете прикрепить несколько креплений для платы, хотя обе работы можно легко выполнить с помощью прочной водонепроницаемой ленты.

погодостойкий

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

вырезать отверстие

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

клей пир

Очистите любую ленту или клей, которые могут помешать правильному закрытию коробки, и добавьте все свои компоненты в коробку вместе с аккумулятором. Здесь использовался простой батарейный блок АА, подключенный непосредственно к выводу VCC Nano. Несколько маленьких кусочков пробки были добавлены снаружи корпуса, чтобы помочь повесить сборку в центре венка.

И мы сделали

После того, как коробка запечатана, повесьте ее с рождественским венком и дождитесь реакции ваших посетителей на ваш высокотехнологичный персональный прием за $ 20! Вы могли бы даже сделать еще один шаг и создать потрясающий DIY украшения 3D-печатные рождественские украшения для идеальных праздниковПочему бы не сэкономить немного денег на Рождество и 3D-печатью праздничных украшений для вашего дома? Читать далее в другом месте вокруг дома тоже!

готовая светодиодная матрица рождественский венок сделай сам

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

Вы строите что-нибудь, чтобы придать своему рождеству самодеятельность? Планируете ли вы рождественские подарки DIY тематические в этом году? Дайте нам знать в комментариях ниже!

Ян Бакли - независимый журналист, музыкант, исполнитель и продюсер, живущий в Берлине, Германия. Когда он не пишет или не играет на сцене, он возится с электроникой или кодом «сделай сам» в надежде стать сумасшедшим ученым.