- PVSM.RU - https://www.pvsm.ru -
На Хабре уже много писали о самодельных электронных устройствах разного калибра. То, о чем хочу рассказать я, не стоит ставить в один ряд с “умным домом” или производством деревянных мышей. Наверняка, те, кто только начинает развлекаться с DIY и думают, с чего начинать, найдут для себя что-нибудь полезное. Я надеюсь, этот пост лишний раз убедит новичков в том, что в нашем деле годится любая, даже самая странная, на первый взгляд, идея.
Всё началось с того, что в один прекрасный день я решил жениться! Заявление, подготовка к празднику, все дела. Но вот задача: сделать оригинальные приглашения на свадьбу. Подписывать куски картона не хотелось. Душа просила хардкорного хэндмэйда, далёкого от традиционных свадебных шаблонов. И вот на моё “и вообще, можно электронные девайсы сделать” невеста сказала: “Круто! Давай!”
К тому моменту мой опыт сводился к спаиванию Фридуины из набора деталек и ритуальному миганию светодиодом. Я с ужасом прикинул, что руками предстоит собрать не один и не два, а 33 экземпляра, заранее попрощался с предстоящими летом — и понеслась…
Февраль. Свадьба в августе, но мне уже казалось, что я ничего не успею. Потому что, чёрт его знает, где и что пойдёт не так. Однако, постепенно стал вырисовываться план: слепить в один кусок LCD-экранчик, батарейку, кнопку и какой-нибудь контроллер, чтобы по нажатию кнопки устройство показывало на экране сообщение по строкам.
Жанр “Приглашение” тут же продиктовал свои доптребования. Важно было, чтобы батарейка не тратилась вся за один-два показа и чтобы сообщения на всех экземплярах были разные. Вдобавок (и об этом меня ежечасно умоляла невеста) хотелось, чтобы результат моих экспериментов выглядел как хоть и кустарный, но продукт. То есть не разваливался в руках и не растопыривал во все стороны петли проводов.
Подобрал в каталоге ближайшего магазинчика радиодеталей, взял сначала один на пробу. По характеристикам вышло следующее: LCD, текстовый, русские буквы, 1 строка в 16 символов, без подсветки. Называется WH1601A-NGG-CT (datasheet [1]), стоит сто с лишним рублей. Оказался волне удачный экранчик, позже закупил их целую коробку:
Контроллер подобрал из каталога Atmel (на сайте Atmel [2] давите MCU Selector). Atmel, потому что с ардуиной у меня уже был маленький опыт, а на easyelectronics есть отличный курс про AVR-контроллеры [3]. Искал такой,
Вышло ATTiny 2313A-PU [4] (Даташит [5]).
Экранчику нужно было питание 5В, поэтому после недолгих исследований решил использовать пару батареек CR2016, сложенных стопочкой в держателе для CR2032.
Как ни странно выяснилось, что мелочевку (резисторы, конденсаторы и пр.) оптимальнее покупать не в СПб, а заказывать из под Йошкар-Олы (магазинчик ekits.ru). Нашлось всё и по нормальным ценам.
Освоил экранчик: припаял к нему провода, поэкспериментировал из Ардуины, добился, чтобы он писал буковки по очереди с заданными паузами. Библиотеками не пользовался, хотел всё сам. Вот такой код [6] получился.
Все было готово к работе над прототипом.
Март-апрель. Долгий период написания прошивки на ассемблере (намеренно не на С, чтобы лучше прочувствовать архитектуру), рисования и разводки схемы. Показал невесте. “А давай”, — говорит она мне — “оно еще и лампочками мигать будет”. Пришлось в процессе встроить “еще и лампочки”: добавил две пары светодиодов и работу с прерываниями, разводка немного усложнилась. (Светодиоды заказывал все так же, из Йошкар-Олы). Схема в результате вышла такая:
Для начинающих, как я, пояснения к схеме:
Разводка для первого раза вышла непростая, так что вполне вероятно, что я нарушил какие-то каноны. Пришлось уживаться с кучей условий:
В результате обошёлся двумя перемычками, на схеме они синие:
Собрал всё на макетке, долго отлаживал, добился чтоб работало… Да, прошивал Ардуиной по схеме, разжёванной тут [7].Схема требует соединить ресет с питанием через резистор: я резистор подвесил прямо в провод.
И да, важно было, чтобы в каждом девайсе был персонализированный текст (приглашение же!). Текст хранился в прошивке в виде дампа (“.db 0xa2, 0xa3...”). Причём таблица кодировки у экранчика своя и с особенностями. Она, например, экономит и содержит только те буквы кириллицы, для которых нет аналога на латинице. Для удобной перекодировки сделал утилитку на java [8].
Долго ли, коротко ли к маю у меня был уже работающий девайс, но на макетке. Питание работало и от USB (через Ардуину и прошивательный проводок), и от батареек. Выглядело всё это вот так:
На видео я запускаю процесс, нажимая на плату — это потому что кнопку я по ошибке припаял с другой стороны. 8)
На финальной плате разъёма для программирования не делал. Просто вставлял очередную микросхему в кроватку на макетке, прошивал и впаивал в плату. Негибко, но экономит отверстия и компоненты. И время, конечно.
Шёл май. Я начал делать первый экземпляр. Расписывать ЛУТ и травление не буду, мануалы DiHALT`а [9] все читали. Расскажу только об отдельных особенностях и отличиях от мануала.
Получилось вот так. На видео, правда, пока без винтов.
Вот и всё. Устройства были готовы.
Оставалось дополнить девайс чем-то, что делало бы его еще более похожим на приглашение. С этой задачей прекрасно справилась невеста, придумавшая подвесить устройство на маленькой самодельной удочке (раз лампочками мигать, то почему бы и не на удочке).
Конечно, как и полагается, написали устройству инструкцию по эксплуатации (смотреть инструкцию) и упаковали в самодельные же расписанные коробочки. Когда все достаешь, выглядит вот так:
В общем, эффект достигнут! Гости в восторге, свадьба удалась, у нас — по плюс-много к опыту и желание продолжать эксперименты…
Автор: alexzzam
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/41081
Ссылки в тексте:
[1] datasheet: http://www.compel.ru/datapdf/winstar/pn/wh1601a-ngg-ct/56878553bcf27c5e3ac4e01a5190d299.pdf
[2] сайте Atmel: http://www.atmel.com
[3] курс про AVR-контроллеры: http://easyelectronics.ru/category/avr-uchebnyj-kurs
[4] ATTiny 2313A-PU: http://www.atmel.com/devices/ATTINY2313A.aspx
[5] Даташит: http://www.atmel.com/images/doc8246.pdf
[6] код: https://gist.github.com/alexzam/5352676
[7] тут: http://freeduino.ru/arduino/isp.html
[8] утилитку на java: https://github.com/alexzam/LCDMessageTranslator
[9] мануалы DiHALT`а: http://easyelectronics.ru/tag/lut
[10] Источник: http://habrahabr.ru/post/171633/
Нажмите здесь для печати.