Киберприглашение на свадьбу или о том, как эффектно разрушить шаблоны

:

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

Всё началось с того, что в один прекрасный день я решил жениться! Заявление, подготовка к празднику, все дела. Но вот задача: сделать оригинальные приглашения на свадьбу. Подписывать куски картона не хотелось. Душа просила хардкорного хэндмэйда, далёкого от традиционных свадебных шаблонов. И вот на моё “и вообще, можно электронные девайсы сделать” невеста сказала: “Круто! Давай!”


К тому моменту мой опыт сводился к спаиванию Фридуины из набора деталек и ритуальному миганию светодиодом. Я с ужасом прикинул, что руками предстоит собрать не один и не два, а 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мм по металлу (меньше в том супермаркете не было) и дрелью, настоящей, полноразмерной. Рука оказалась достаточно тверда, чтобы не поломать сверло и не смазать отверстие. А шуруповёрт оказался, хоть и легче, но слишком медленный. Кстати, совершенно верна рекомендация о том, что надо беречься пыли! Она очень мелкая, белая и почти не видна, если не ссыпать кучкой. Но если окажется в воздухе, горло дерёт страшно.
  • Сначала лудил, а потом сверлил, хотя все везде рекомендуют наоборот. Но так же проще! Ободок отверстия становится толще и в начале сверления дополнительно поправляет прицел.
  • Делал партиями — так быстрее. То есть, десяток плат проходят первую стадию, потом вторую и т.д. Получается меньше переключений контекста, меньше перекладываний инструмента и, соответственно, быстрее работа. Стадии такие:
    1. Отрезать кусок платы и пошкурить
    2. Пригладить бумажку с рисунком и отмыть её
    3. Протравить плату
    4. Залудить дорожки
    5. Насверлить отверстий
    6. Припаять всё кроме контроллера
    7. Вставить контроллер в макетку и прошить
    8. Впаять контроллер
    9. Соединить с экранчиком винтами

Получилось вот так. На видео, правда, пока без винтов.

Вот и всё. Устройства были готовы.


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

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

В общем, эффект достигнут! Гости в восторге, свадьба удалась, у нас — по плюс-много к опыту и желание продолжать эксперименты…