При нынешнем развитии микропроцессорной техники потенциально может существовать все, что душе угодно, но... Как назло - попадается либо не совсем то, что надо, либо что-то перенавороченное, где много лишнего. Логичный выход для тех, у кого есть свободное время - создать устройство самому.
Итак, прежде всего - подберем компоненты:
- дисплей для отображения времени
- пара кнопок для управления
- зуммер для привлечения внимания хозяйки
- корпус, в который все это поместится
- источник питания
Ну и конечно же, Arduino.
Наиболее хорошо для этой цели подходит Arduino Pro: основные разъемы не установлены, можно поставить ровно столько, сколько надо (а также именно то, что требуется - вилки или колодки, нужный разъем питания):
За неимением такого замечательного девайса, придется собирать на макетке. Как обычно - ATmega8-16PU, кварц 16 МГц + 2 конденсатора 22пФ, притянуть сброс через 10К к Vcc, схема птиания на L7805. Поскольку я постоянно собираю Arduino / Freeduino, все это у меня имеется в избыточном количестве.
С эстетической точки зрения, лучше устанавливать часовой дисплей с "двоеточием" по центру, которое мигает раз в секунду при отсчете времени. В минимальном варианте достаточно просто двух цифр с числом оставшихся минут. Поглядывать на таймер надо издалека, поэтому размер и яркость цифр имеют значение - лучше всего подойдет светодиодный дисплей. Удобно использовать индикатор, у которого одноименные выводы уже соединены - все равно мы будем отображать методом мультепликсирования. У меня был красный семисегментный CA56-21EWA (Kingbright), с общим анодом:
В качестве зуммера можно использовать пьезоизлучатель. Часто на материнских платах можно встретить такой вариант:
Это пятивольтовый KPX-G1205B (Kepo Electronics).
В него встроен генератор, позволяющий издавать звуковое колебание заданной частоты простой подачей разности потенциалов на его выводы. Очень удобно, да и ток всего 30 мА (напоминаю, что максимальный ток через выход ATmega - 40 мА). Если не закрывать отверстие, пищит достаточно громко - простой бесчеловечный эксперимент показал, что хозяйка слышит его сквозь какафонию из льющей из водопроводного крана воды и орущего телевизора, причем еще и из другой комнаты. Те, кому повезло меньше, могут использовать схему с транзистором ;)
Кнопки могут быть как тактовые, так и с креплением на корпус. Идеально подойдут влагозащищенные, но это влетит в копеечку. Я выбрал компромиссные SWT-9 с разноцветными колпачками:
Для включения питания идеально подходит классический тумблер MTS-102:
Среди корпусов для РЭА, которые я мог заказать у поставщиков, мне приглянулись черные пластиковые, на защелках. Брать размер 70 х 40 мм я побоялся (как потом выяснилось, абсолютно верно), но вот 90 х 56 мм уже выглядело для такой схемы вполне комфортно, тем более, что в высоту он 30 мм, а значит - дисплей с кнопками и контроллер можно разместить на двух разных платах, соединив их при помощи PLS/PBS:
Правда, придется изрядно поработать напильником, чтобы вытащить наружу кнопки и индикатор (разъем питания и тумблер легко размещаются сбоку, надо вырезать заранее заготовленные утоньшения для ввода кабеля).
Настало время рисовать схему в Eagle, но прежде подсчитаем, сколько потребуется портов ввода/вывода.
Семисегментная шина требует 7+1=8 выходов: восьмой в данном случае управляет двумя точками по центру. Один сигнал на каждое знакоместо: +4, итого уже 12. Один выход потребуется для пьезоизлучателя, два - для подключения кнопок. В сумме надо 15, а у Arduino всего 13 цифровых выходов, из которых категорически не хотелось бы занимать 0 и 1 - там UART, через которую заливается скетч.
На наше счастье, аналоговые выходы можно перепрограммировать в цифровые оператором DigitalMode. Аналоговый вход 0 будет соответствовать 14-му цифровому, а 5й - 19-му. АЦП нашей схеме не требуется, так что смело можно переводить все шесть выходов в цифровой режим.
Для начала соберем такую схему на мактной плате:
Продолжение следует...
К каким пинам подключен индикатор и кнопки именно на ардуино, а не на контроллере?
ОтветитьУдалитьЧтобы не повторяться - в третьей части, в самом конце ссылка на скетч для Arduino.
Удалить