Светящиеся Снежки, Или Украшаем Новый Год «Подручными Материалами»

Вдохновленный статьей про светодиоды на снегу , захотелось попробовать сделать что-то подобное дома.

В комментариях к той статье я разместил идеи и небольшую кучу фотографий.

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

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

Как это работает и как сделать нечто подобное – смотрите под катом.

P.S. «Готовность» материалов, скорее всего, распространяется на радиолюбителей.



Как это все началось

Для начала нам понадобится:
  • Прозрачный конус из-под бахил (можно приобрести в ближайшей поликлинике)
  • Держатель для батарейки CR2032 (они разные, нам нужен с зажимом сбоку)
  • RGB светодиод (я использовал планарный, размер 5050, диффузный)
  • Несколько резисторов (тоже планарных, 100 Ом - будем питать от 3В - батарейки)
  • Кусок стекловолокна с медной фольгой
  • Медный купорос или хлорное железо (или то, чем вы привыкли травить платы)


Светящиеся снежки, или Украшаем Новый год «подручными материалами»

Плата рисуется легко (даже не запускал принтер, достал маркер для рисования на компакт-дисках и быстро зарисовал, после чего сразу бросил в травильный раствор, сфотографировать не успел ).

Вот как выглядит чертеж платы:

Светящиеся снежки, или Украшаем Новый год «подручными материалами»

После травления плату следует вырезать по форме держателя батареи (проще всего это сделать, предварительно просверлив отверстия и вставив держатель сзади, затем обвести держатель маркером.

ВНИМАНИЕ! Полярность имеет значение! Следите за положением «ушка» держателя!) и припаяйте светодиод, резисторы и держатель.

Вот что из этого получается:

Светящиеся снежки, или Украшаем Новый год «подручными материалами»

Один резистор на плате намеренно не припаян, хотелось получить фиолетовое свечение, для этого нужно включить красный и синий каналы, отключив зеленый.

Так получится самый простой светильник.

Покрываем плату лаком (на самом деле это не обязательно, но так дорожки меньше потемнеют), вставляем батарейку, упаковываем в колбу и идем лепить снежки!

И тут Остап пострадал

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

Для этого я взял широко известный в узких кругах контроллер Atmel ATtiny45 (хотел ATtiny13, но неожиданно их не оказалось в коробке, разница только в объёме памяти.

Программа для этого света поместится в ATtiny13).

), нарисовал плату в Eagle и с помощью лазерно-утюжной технологии перенес полученный рисунок на фольгированную печатную плату.



Светящиеся снежки, или Украшаем Новый год «подручными материалами»

По сравнению с предыдущей версией на плате появился конденсатор для более стабильного питания и сам микроконтроллер.

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

Я даже не предусмотрел разъем для программирования; К пинам припаял провода (специально для этого каналы светодиодов были на пинах программирования, а RESET вынес на отдельную площадку).

Резисторы и конденсаторы на этой плате имеют размер 0805. Пока платы травились, я начал работать над программой.

В ATtiny45 аппаратный вывод ШИМ-сигнала поддерживается на выводах PB0, PB1 и некоторых других.

PB2 не было в этом списке.

Но плата уже нарисована и вытравлена, поэтому я решил сделать программный ШИМ с использованием второго таймера (Timer1).

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

Чип содержит ПЗУ (EEPROM).

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

После каждого включения будем увеличивать это значение на 1 и сохранять в ПЗУ.

Так, выдернув аккумулятор в разъеме, можно переключать режимы работы.

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

Весь код на C (для компилятора AVR-GCC)

   

#include <avr/io.h> #include <avr/eeprom.h> #include <util/delay.h> #include <avr/interrupt.h> #define r_pwm(pwm) OCR0A = pwm #define b_pwm(pwm) OCR0B = pwm #define g_pwm(pwm) OCR1A = pwm #define NUM_MODES 16 int main(void) { /* Init LED GPIO pins */ DDRB = 7; /* pins 0, 1, 2 */ /* Init PWM timers */ /* Timer0 is for R and G channels */ TCCR0A = (1<<COM0A1)|(1<<COM0B1)|(WGM01)|(WGM00); TCCR0B = (1<<CS00); /* divide by 1 */ /* Timer 1 is for B channel; enable interrupts */ TIMSK = (1<<OCIE1A)|(1<<TOIE1); TCCR1 = (1<<CS10); /* divide by 1 */ sei(); /* Get mode value from the EEPROM and update it */ uint8_t mode = eeprom_read_byte((uint8_t *) 1); mode++; if (mode >= NUM_MODES) mode = 0; eeprom_write_byte((uint8_t *) 1, mode); uint8_t i; while(1) { switch(mode >> 1) { case 0: r_pwm(255); break; case 1: g_pwm(255); break; case 2: b_pwm(255); break; case 3: r_pwm(255); g_pwm(255); break; case 4: g_pwm(255); b_pwm(255); break; case 5: r_pwm(255); b_pwm(255); break; case 6: r_pwm(255); g_pwm(255); b_pwm(255); break; case 7: for (i=0; i < 255; i++) { r_pwm(255-i); g_pwm(i); _delay_ms(20); } for (i=0; i < 255; i++) { g_pwm(255-i); b_pwm(i); _delay_ms(20); } for (i=0; i < 255; i++) { b_pwm(255-i); r_pwm(i); _delay_ms(20); } } } return 0; } ISR(TIM1_OVF_vect) { if (OCR1A != 0) PORTB |= (1<<2); } ISR(TIM1_COMPA_vect) { PORTB &= ~(1<<2); }

Электрическая схема и разводка печатной платы (из Eagle CAD)

Светящиеся снежки, или Украшаем Новый год «подручными материалами»



Светящиеся снежки, или Украшаем Новый год «подручными материалами»

Биты предохранителей можно посчитать Здесь , я посчитал, что 1 МГц мне будет достаточно для комфортного ШИМ и низкого энергопотребления.

В общем, фьюз-биты оказались стандартными для tiny45, поэтому менять их не нужно.

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

И вот результат (видео ничем не отличается от вставленного выше для привлечения внимания): Снежки совершенно не хотели образовываться, и все же я разогрела в руках горсть снега и все получилось!

В равной степени важно

Огромное спасибо товарищу за идею.

Кидар .

Все материалы по этому проекту я разместил в Дропбокс .

Когда будет время, подготовлю отдельный make-файл, а теперь после распаковки: make antares && make build, после чего загружаете файл images/antares.hex на чип удобным для вас способом.

Спасибо за внимание! УПД: Обновлены архивы с исходными файлами; Сейчас к печатной плате прилагается PDF-файл для самостоятельной печати, а в архиве с программой есть hex-файл с готовой прошивкой.

Теги: #Сделай сам или Сделай сам #RGB #light #attiny #attiny13 #snow #LED #ATtiny45 #светящийся снег

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.