Pull to refresh

Новый Год, гирлянда, arduino

Reading time 3 min
Views 81K
Начал изучать тему умных домов, пришел к Arduino и возникла необходимость потренироваться на кошках. А тут как раз Новый Год наступает… Дело ясное, будем делать десятиканальную гирлянду. С паяльником с детских цветомузыкальных времен, в принципе, дружен, но последние 20 лет занимался все больше программированием.

В основном, комплектующие покупались на ebay. Некоторые, в местном радиомагазине, но в магазине они в 2-3 раза дороже. Китайцы рулят.

Начал с рисования схемы и трассировки платы. Посмотрел несколько программ, остановился на CadSoft Eagle. Если разобраться с управлением, все что надо делает. Автотрассировка проявила себя никак — совершенно нелогичное размещение деталей и бесчисленные переходы между слоями. В итоге нарисовал схему в Eagle Schematic, трассировку делал вручную в Eagle Board — все детали уже были соединены линиями, оставалось только разместить куда надо и нарисовать дорожки. После небольшей практики все достаточно удобно.

Изучил как сейчас травят платы, метод принтера — утюга не впечатлил вообще.
Купил в магазине текстолит с позитивным фоторезистом, напечатал плату на пленке (без инверсии), наложил пленку на текстолит, проэкспонировал две с половиной минуты в солярии, проявил в 1,5% растворе гидроксида натрия(NaOH) и протравил в 30% растворе хлорного железа (FeCl3).

Результат — сказка! Все очень четкое, мелкие буквы остались на своих местах. Далее лудим, паяем.



Как уже писалось на Хабре, чтоб программировать Arduino Pro Mini без танцев с бубном, надо покупать правильный USB to TTL UART модуль с пином DTR.

Логика программы: одна ветка гирлянды(24 диода) — один бит, т.е. состояние десяти веток задается десятью битами числа (0 — все выключено, 2^10-1 — все включено).
Есть некоторое количество шаблонов переключения. При подаче питания программа начинает перебирать шаблоны в случайном порядке.

— При коротком нажатии кнопки происходит переключение на полностю случайное включение каждой ветви.
— Среднее нажатие кнопки меняет в цикле кратность задержки, т.е. базовая задержка 500мс умножается на 1-3.
— Длинное нажатие кнопки переводит девайс в сервисный режим. Сначала загораются все ветви, потом при коротком нажатии кнопки последовательно загорается каждая.

Долго тупил в стандартную функцию возведения в степень pow() — возвращала совсем не то, что ожидалось. Пока не открыл документацию и не обнаружил, что в pow() аргументы float, результат double, а непонятки возникают при приведении в int. В итоге пришлось пользоваться самописной рекурсивной int power(int, int).

Потом наступил адский ад — распайка 240 диодов. И у каждого, заметьте, две ноги. Всего получается 480. Определенно, не самое эффективно проведенное время жизни. Еще наступил на грабли с термопистолетом. Он отлично усаживает термоусадку, но при этом жилы витой пары сплавляюся в единое целое. Выглядит без повреждений, но все провода закорочены. Одну ветку полностью переделывал.

В итоге получилось замечательная гирлянда:



Всех с наступающим Новым Годом, счастья и здоровья!

Список использованных деталей:
1. Arduino Pro Mini, 5V, 16M
2. Резисторы R1-R10 — 220 кОм, все остальные, в том числе и токоорганичивающие на LEDы, 220 Ом
3. N-канальный полевой транзистор Q1-Q10 — IRFZ44N. В принципе, ток в LED цепях течет небольшей, транзисторы или сборку можно взять и менее мощные. На 20V питания и цепи из 24 LED, ток порядка 20 мА
4. Блок питания от ноутбука Dell. Выдает +20V
5. Линейный стабилизатор напряжения 5V для питания Arduino — ST78S05. Сильно греется, пришлось ставить на радиатор.
6. Конденсаторы к стабилизатору 220u/35V, 47u/16V
7. 240х LED 5мм + 11х LED 3мм для индикации
8. Кнопка
9. 10м UTP кабеля, который был разрезан и на его жилы паялись диоды.

Исходники в архиве:
— схема EAGLE v7.2.0 *.sch файл
— экспорт схемы *.png
— плата для печати на пленку *.pdf
— processing *.ino исходник для Arduino IDE
Tags:
Hubs:
+30
Comments 43
Comments Comments 43

Articles