
Всё началось с того, что в один прекрасный день я решил жениться! Заявление, подготовка к празднику, все дела. Но вот задача: сделать оригинальные приглашения на свадьбу. Подписывать куски картона не хотелось. Душа просила хардкорного хэндмэйда, далёкого от традиционных свадебных шаблонов. И вот на моё “и вообще, можно электронные девайсы сделать” невеста сказала: “Круто! Давай!”
К тому моменту мой опыт сводился к спаиванию Фридуины из набора деталек и ритуальному миганию светодиодом. Я с ужасом прикинул, что руками предстоит собрать не один и не два, а 33 экземпляра, заранее попрощался с предстоящими летом — и понеслась…
Февраль. Свадьба в августе, но мне уже казалось, что я ничего не успею. Потому что, чёрт его знает, где и что пойдёт не так. Однако, постепенно стал вырисовываться план: слепить в один кусок LCD-экранчик, батарейку, кнопку и какой-нибудь контроллер, чтобы по нажатию кнопки устройство показывало на экране сообщение по строкам.
Жанр “Приглашение” тут же продиктовал свои доптребования. Важно было, чтобы батарейка не тратилась вся за один-два показа и чтобы сообщения на всех экземплярах были разные. Вдобавок (и об этом меня ежечасно умоляла невеста) хотелось, чтобы результат моих экспериментов выглядел как хоть и кустарный, но продукт. То есть не разваливался в руках и не растопыривал во все стороны петли проводов.
Экран
Подобрал в каталоге ближайшего магазинчика радиодеталей, взял сначала один на пробу. По характеристикам вышло следующее: LCD, текстовый, русские буквы, 1 строка в 16 символов, без подсветки. Называется WH1601A-NGG-CT (datasheet), стоит сто с лишним рублей. Оказался волне удачный экранчик, позже закупил их целую коробку:

Контроллер
Контроллер подобрал из каталога Atmel (на сайте Atmel давите MCU Selector). Atmel, потому что с ардуиной у меня уже был маленький опыт, а на easyelectronics есть отличный курс про AVR-контроллеры. Искал такой,
- чтобы ног хватало, но было как можно меньше
- чтобы DIP-корпус (SMD я ещё не паял и не хотел рисковать),
- чтобы энергопотребление могло быть маленьким
- и чтобы в ближайшем магазине было в наличии.
Вышло ATTiny 2313A-PU (Даташит).
Батарейка
Экранчику нужно было питание 5В, поэтому после недолгих исследований решил использовать пару батареек CR2016, сложенных стопочкой в держателе для CR2032.
Всякое другое
Как ни странно выяснилось, что мелочевку (резисторы, конденсаторы и пр.) оптимальнее покупать не в СПб, а заказывать из под Йошкар-Олы (магазинчик ekits.ru). Нашлось всё и по нормальным ценам.
Освоил экранчик: припаял к нему провода, поэкспериментировал из Ардуины, добился, чтобы он писал буковки по очереди с заданными паузами. Библиотеками не пользовался, хотел всё сам. Вот такой код получился.
Все было готово к работе над прототипом.
Март-апрель. Долгий период написания прошивки на ассемблере (намеренно не на С, чтобы лучше прочувствовать архитектуру), рисования и разводки схемы. Показал невесте. “А давай”, — говорит она мне — “оно еще и лампочками мигать будет”. Пришлось в процессе встроить “еще и лампочки”: добавил две пары светодиодов и работу с прерываниями, разводка немного усложнилась. (Светодиоды заказывал все так же, из Йошкар-Олы). Схема в результате вышла такая:
Для начинающих, как я, пояснения к схеме:
Посередине контроллер, справа экранчик. Семь проводов от контроллера к экранчику это три управляющих и четырёхбитная шина данных. Всё по даташиту. Питается экранчик не напрямую, а с ножки PD2 (контакт V-LCD), это оттого, что большую часть времени девайс не работает, контроллер уходит в sleep, и на питание экранчика батарейку тоже не тратит. Ещё там есть VO-LCD, который подаётся на контакт VO экранчика. Согласно даташиту туда надо подавать некоторое напряжение больше нуля, но меньше VCC, этим напряжением регулируется контраст экранчика. Даташит предлагает пихать туда реостат и регулировать на ходу. Но не в каждую же плату реостат пихать! Так что подобрал напряжение экспериментально и соорудил делитель напряжения, чтоб его получить. Это вот конструкция из двух резисторов внизу. Ещё внизу нарисовано, что питание изначально берётся с батарейки и что в питание вставлен конденсатор для защиты, например, от дребезга при вставлении свежих батареек. Ну, собственно и всё. Ещё там есть кнопка ресета и четыре светодиода, включённые попарно.
Разводка для первого раза вышла непростая, так что вполне вероятно, что я нарушил какие-то каноны. Пришлось уживаться с кучей условий:
- Плата по размерам должна была быть чуть больше экранчика, чтобы удобно было жать на кнопку старта.
- Коннектор и крепёжные дырки — соответствовать коннектору и дыркам на плате экранчика. (Дырки я потом соединил винтами).
- Светодиоды (по дизайнерской задумке) — непременно смотреть в разные стороны.
В результате обошёлся двумя перемычками, на схеме они синие:
Собрал всё на макетке, долго отлаживал, добился чтоб работало… Да, прошивал Ардуиной по схеме, разжёванной тут.Схема требует соединить ресет с питанием через резистор: я резистор подвесил прямо в провод.
И да, важно было, чтобы в каждом девайсе был персонализированный текст (приглашение же!). Текст хранился в прошивке в виде дампа (“.db 0xa2, 0xa3...”). Причём таблица кодировки у экранчика своя и с особенностями. Она, например, экономит и содержит только те буквы кириллицы, для которых нет аналога на латинице. Для удобной перекодировки сделал утилитку на java.
Долго ли, коротко ли к маю у меня был уже работающий девайс, но на макетке. Питание работало и от USB (через Ардуину и прошивательный проводок), и от батареек. Выглядело всё это вот так:
На видео я запускаю процесс, нажимая на плату — это потому что кнопку я по ошибке припаял с другой стороны. 8)
На финальной плате разъёма для программирования не делал. Просто вставлял очередную микросхему в кроватку на макетке, прошивал и впаивал в плату. Негибко, но экономит отверстия и компоненты. И время, конечно.
Шёл май. Я начал делать первый экземпляр. Расписывать ЛУТ и травление не буду, мануалы DiHALT`а все читали. Расскажу только об отдельных особенностях и отличиях от мануала.
- Травил в смеси медного купороса и поваренной соли. Это менее едко и ингредиенты лежат в ближайшем строительном супермаркете.
- Сверлил сверлом в 1мм по металлу (меньше в том супермаркете не было) и дрелью, настоящей, полноразмерной. Рука оказалась достаточно тверда, чтобы не поломать сверло и не смазать отверстие. А шуруповёрт оказался, хоть и легче, но слишком медленный. Кстати, совершенно верна рекомендация о том, что надо беречься пыли! Она очень мелкая, белая и почти не видна, если не ссыпать кучкой. Но если окажется в воздухе, горло дерёт страшно.
- Сначала лудил, а потом сверлил, хотя все везде рекомендуют наоборот. Но так же проще! Ободок отверстия становится толще и в начале сверления дополнительно поправляет прицел.
- Делал партиями — так быстрее. То есть, десяток плат проходят первую стадию, потом вторую и т.д. Получается меньше переключений контекста, меньше перекладываний инструмента и, соответственно, быстрее работа. Стадии такие:
- Отрезать кусок платы и пошкурить
- Пригладить бумажку с рисунком и отмыть её
- Протравить плату
- Залудить дорожки
- Насверлить отверстий
- Припаять всё кроме контроллера
- Вставить контроллер в макетку и прошить
- Впаять контроллер
- Соединить с экранчиком винтами
Получилось вот так. На видео, правда, пока без винтов.
Вот и всё. Устройства были готовы.
Оставалось дополнить девайс чем-то, что делало бы его еще более похожим на приглашение. С этой задачей прекрасно справилась невеста, придумавшая подвесить устройство на маленькой самодельной удочке (раз лампочками мигать, то почему бы и не на удочке).
Конечно, как и полагается, написали устройству инструкцию по эксплуатации (смотреть инструкцию) и упаковали в самодельные же расписанные коробочки. Когда все достаешь, выглядит вот так:

В общем, эффект достигнут! Гости в восторге, свадьба удалась, у нас — по плюс-много к опыту и желание продолжать эксперименты…
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends: 'You Say What You Like, Because They Like What You Say' - http://www.medialens.org/index.php/alerts/alert-archive/alerts-2013/731-you-say-what-you-like-because-they-like-what-you-say.html
Комментариев нет:
Отправить комментарий