На Хабре уже много писали о самодельных электронных устройствах разного калибра. То, о чем хочу рассказать я, не стоит ставить в один ряд с “умным домом” или производством деревянных мышей. Наверняка, те, кто только начинает развлекаться с DIY и думают, с чего начинать, найдут для себя что-нибудь полезное. Я надеюсь, этот пост лишний раз убедит новичков в том, что в нашем деле годится любая, даже самая странная, на первый взгляд, идея.
Всё началось с того, что в один прекрасный день я решил жениться! Заявление, подготовка к празднику, все дела. Но вот задача: сделать оригинальные приглашения на свадьбу. Подписывать куски картона не хотелось. Душа просила хардкорного хэндмэйда, далёкого от традиционных свадебных шаблонов. И вот на моё “и вообще, можно электронные девайсы сделать” невеста сказала: “Круто! Давай!”
К тому моменту мой опыт сводился к спаиванию Фридуины из набора деталек и ритуальному миганию светодиодом. Я с ужасом прикинул, что руками предстоит собрать не один и не два, а 33 экземпляра, заранее попрощался с предстоящими летом — и понеслась…
Февраль. Свадьба в августе, но мне уже казалось, что я ничего не успею. Потому что, чёрт его знает, где и что пойдёт не так. Однако, постепенно стал вырисовываться план: слепить в один кусок LCD-экранчик, батарейку, кнопку и какой-нибудь контроллер, чтобы по нажатию кнопки устройство показывало на экране сообщение по строкам.
Жанр “Приглашение” тут же продиктовал свои доптребования. Важно было, чтобы батарейка не тратилась вся за один-два показа и чтобы сообщения на всех экземплярах были разные. Вдобавок (и об этом меня ежечасно умоляла невеста) хотелось, чтобы результат моих экспериментов выглядел как хоть и кустарный, но продукт. То есть не разваливался в руках и не растопыривал во все стороны петли проводов.
Подобрал в каталоге ближайшего магазинчика радиодеталей, взял сначала один на пробу. По характеристикам вышло следующее: LCD, текстовый, русские буквы, 1 строка в 16 символов, без подсветки. Называется WH1601A-NGG-CT (datasheet), стоит сто с лишним рублей. Оказался волне удачный экранчик, позже закупил их целую коробку:
Контроллер подобрал из каталога Atmel (на сайте Atmel давите MCU Selector). Atmel, потому что с ардуиной у меня уже был маленький опыт, а на easyelectronics есть отличный курс про AVR-контроллеры. Искал такой,
Вышло ATTiny 2313A-PU (Даташит).
Экранчику нужно было питание 5В, поэтому после недолгих исследований решил использовать пару батареек CR2016, сложенных стопочкой в держателе для CR2032.
Как ни странно выяснилось, что мелочевку (резисторы, конденсаторы и пр.) оптимальнее покупать не в СПб, а заказывать из под Йошкар-Олы (магазинчик ekits.ru). Нашлось всё и по нормальным ценам.
Освоил экранчик: припаял к нему провода, поэкспериментировал из Ардуины, добился, чтобы он писал буковки по очереди с заданными паузами. Библиотеками не пользовался, хотел всё сам. Вот такой код получился.
Все было готово к работе над прототипом.
Март-апрель. Долгий период написания прошивки на ассемблере (намеренно не на С, чтобы лучше прочувствовать архитектуру), рисования и разводки схемы. Показал невесте. “А давай”, — говорит она мне — “оно еще и лампочками мигать будет”. Пришлось в процессе встроить “еще и лампочки”: добавил две пары светодиодов и работу с прерываниями, разводка немного усложнилась. (Светодиоды заказывал все так же, из Йошкар-Олы). Схема в результате вышла такая:
Для начинающих, как я, пояснения к схеме:
А вот такая прошивка.
Разводка для первого раза вышла непростая, так что вполне вероятно, что я нарушил какие-то каноны. Пришлось уживаться с кучей условий:
В результате обошёлся двумя перемычками, на схеме они синие:
Собрал всё на макетке, долго отлаживал, добился чтоб работало… Да, прошивал Ардуиной по схеме, разжёванной тут.Схема требует соединить ресет с питанием через резистор: я резистор подвесил прямо в провод.
И да, важно было, чтобы в каждом девайсе был персонализированный текст (приглашение же!). Текст хранился в прошивке в виде дампа (“.db 0xa2, 0xa3...”). Причём таблица кодировки у экранчика своя и с особенностями. Она, например, экономит и содержит только те буквы кириллицы, для которых нет аналога на латинице. Для удобной перекодировки сделал утилитку на java.
Долго ли, коротко ли к маю у меня был уже работающий девайс, но на макетке. Питание работало и от USB (через Ардуину и прошивательный проводок), и от батареек. Выглядело всё это вот так:
На видео я запускаю процесс, нажимая на плату — это потому что кнопку я по ошибке припаял с другой стороны. 8)
На финальной плате разъёма для программирования не делал. Просто вставлял очередную микросхему в кроватку на макетке, прошивал и впаивал в плату. Негибко, но экономит отверстия и компоненты. И время, конечно.
Шёл май. Я начал делать первый экземпляр. Расписывать ЛУТ и травление не буду, мануалы DiHALT`а все читали. Расскажу только об отдельных особенностях и отличиях от мануала.
Получилось вот так. На видео, правда, пока без винтов.
Вот и всё. Устройства были готовы.
Оставалось дополнить девайс чем-то, что делало бы его еще более похожим на приглашение. С этой задачей прекрасно справилась невеста, придумавшая подвесить устройство на маленькой самодельной удочке (раз лампочками мигать, то почему бы и не на удочке).
Конечно, как и полагается, написали устройству инструкцию по эксплуатации и упаковали в самодельные же расписанные коробочки. Когда все достаешь, выглядит вот так:
В общем, эффект достигнут! Гости в восторге, свадьба удалась, у нас — по плюс-много к опыту и желание продолжать эксперименты…
Итак, идея
Всё началось с того, что в один прекрасный день я решил жениться! Заявление, подготовка к празднику, все дела. Но вот задача: сделать оригинальные приглашения на свадьбу. Подписывать куски картона не хотелось. Душа просила хардкорного хэндмэйда, далёкого от традиционных свадебных шаблонов. И вот на моё “и вообще, можно электронные девайсы сделать” невеста сказала: “Круто! Давай!”
К тому моменту мой опыт сводился к спаиванию Фридуины из набора деталек и ритуальному миганию светодиодом. Я с ужасом прикинул, что руками предстоит собрать не один и не два, а 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мм по металлу (меньше в том супермаркете не было) и дрелью, настоящей, полноразмерной. Рука оказалась достаточно тверда, чтобы не поломать сверло и не смазать отверстие. А шуруповёрт оказался, хоть и легче, но слишком медленный. Кстати, совершенно верна рекомендация о том, что надо беречься пыли! Она очень мелкая, белая и почти не видна, если не ссыпать кучкой. Но если окажется в воздухе, горло дерёт страшно.
- Сначала лудил, а потом сверлил, хотя все везде рекомендуют наоборот. Но так же проще! Ободок отверстия становится толще и в начале сверления дополнительно поправляет прицел.
- Делал партиями — так быстрее. То есть, десяток плат проходят первую стадию, потом вторую и т.д. Получается меньше переключений контекста, меньше перекладываний инструмента и, соответственно, быстрее работа. Стадии такие:
- Отрезать кусок платы и пошкурить
- Пригладить бумажку с рисунком и отмыть её
- Протравить плату
- Залудить дорожки
- Насверлить отверстий
- Припаять всё кроме контроллера
- Вставить контроллер в макетку и прошить
- Впаять контроллер
- Соединить с экранчиком винтами
Получилось вот так. На видео, правда, пока без винтов.
Вот и всё. Устройства были готовы.
Последние штрихи
Оставалось дополнить девайс чем-то, что делало бы его еще более похожим на приглашение. С этой задачей прекрасно справилась невеста, придумавшая подвесить устройство на маленькой самодельной удочке (раз лампочками мигать, то почему бы и не на удочке).
Конечно, как и полагается, написали устройству инструкцию по эксплуатации и упаковали в самодельные же расписанные коробочки. Когда все достаешь, выглядит вот так:
А инструкция, которая видна на фотографии, вот так
В общем, эффект достигнут! Гости в восторге, свадьба удалась, у нас — по плюс-много к опыту и желание продолжать эксперименты…