РадиоКот :: Часы + секундомер + будильник «МЕРКУРИЙ-401А». Начало.
Например TDA7294

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Теги статьи: ЧасыБудильникСекундомерДобавить тег

Часы + секундомер + будильник «МЕРКУРИЙ-401А». Начало.

Автор: vitalyadm
Опубликовано 04.07.2017
Создано при помощи КотоРед.

Приветствую дорогие друзья!


Прежде чем перейти непосредственно к описанию, внесу некую ясность и обращу ваше внимание, на то, что данная статья является неким прологом к последующим статья, но и собственно устройствам, которые также будут относиться к типу «часы», но с очень интересными и красивыми «фишечками». Проще говоря, хоть и описанное ниже устройство является вполне законченной конструкцией, по сути, оно послужило началом (основой) для разработки следующих конструкций. Ладно, не буду, томить, «поехали»….

Не так много времени назад, для реализации одной задачи, мне потребовалось сделать девайс, который бы выводил в ком текущее время, но при этом, девайс должен был соответствовать нескольким, обязательным требованиям:
1. Быть простым, разумеется
2. Выдавать всегда ТОЧНОЕ время, с погрешностью не более секунды
3. Не использовать никаких внешних коммуникаций (платных)

Вступление

Именно поэтому, не долго думая, опорным источником времени был выбран модуль GPS. Почему не Wi-Fi, Ethernet, GSM – (см. пункт 3). Устройство было собрано, результаты работы показали, что модуль GPS в качестве источника времени годится на все 100, даже при условии использования его в помещении. Да, координаты выдать не всегда может, но они и не нужны, ведь из всей строки интересовали только 6 символов с информацией о текущем времени по часовому поясу «0». Идея мне дюже понравилась (хоть она давно не нова, ничего нового в ней нет) так и «родились» часы «МЕРКУРИЙ 401-А». Кстати о названии, здесь просто немного юмора, «МЕРКУРИЙ» потому как он где? Правильно, если отбросить всякую там заумную нудятину про галактики и высокие материи, то в космосе, где и GPS спутники))). 401 – просто порядковый номер придуманных и собранных девайсов. И так, с вступлением разобрались, «подведём черту» - дальше пойдёт речь о устройстве, которое является часами, с функциями будильника и секундомера, источником текущего времени является GPS приёмник.

Экономическая часть

Первым делом, прежде чем приступать к техническому описанию- посчитаем денежку, которая была потрачена на изготовление конечного устройства.
Признаюсь, хотелось сделать устройство в маленьком форм-факторе ну и конечно же красивым, поэтому махнул рукой и заказал платы в Китае, к слову, цена вопроса всего 9,99$ за 10 штук двусторонних, качественных плат + доставка (что- то там в районе 5$), ценник не очень высокий, можно и раскошелиться. Поэтому, я посчитаю без учёта платы, в виду того, что как её изготавливать и прочее- зависит только от собственных возможностей и средств.
GPS модуль «NEO-6M» – 650р. Я взял дорогой (ссылка), зря, надо было брать дешёвый, вот такой.

МК ATmega8– 110р
Индикатор CC56-12SRWA – 170р.
Мелочёвка (стабилизатор, резисторы, конденсаторы, кварц, кнопки, пищалка, транзисторы, диоды) - всё вместе порядка 150р.
Итого: ~1100р. Хотя промахнулся с модулем, мог бы сэкономить почти 400р.

Техническая часть.
Немного про модули.

Классический NEO-6M. Сам модуль стандартный, отличаются они только лишь «китайским» исполнением, я приведу свой вариант.

 

 

Модуль хороший, маленький, сделан добротно. Питание 3.3 – 5 вольт, совместим с 5- ти вольтовым UART’ом. Т.е. никаких дополнительных развязок между модулем и МК делать не надо.
Но именно в данной конструкции я допустил ошибку, что выбрал его, т.к. антенна оказалась между двумя «землями» и скорость поиска спутников у него упала в разы, пришлось подключать выносную антенну и тогда всё встало на свои места. Поэтому, лучше (и проще и дешевле) использовать вот такой модуль:

Семи сегментный, 4- х разрядный светодиодный индикатор с динамической индикацией. Остановился на «CC56-12SRWA» с общим катодом

На самом деле подойдёт любой, главное с динамической индикацией. Все остальные компоненты абсолютно стандартные, по ним ничего говорить не буду.

Схема.

 

Как видно по схеме, пункт «1» (конструкция должна быть простой) выполнен успешно. Схема содержит минимальное колл- во элементов, модуль припаян по «бутербродному» принципу к плате с помощью 5 штырей. Что- либо ещё пояснять по схеме - смысла особого не имеет, да и нечего. Потому переходим к программной части устройства.

Алгоритм работы.

Основной принцип работы приведён в графическом виде.

 

Теперь немного разъяснений в литературном виде.
После запуска часов МК включает GPS модуль и ждёт прихода необходимой строки для извлечения текущего времени. МК «интересует» строка с заголовком $GPRMC, все остальные строки игнорируются. Если ни один спутник не найден, то строка будет иметь вид: «$GPRMC,,V,,,,,,,,,,N*53», как только хотя бы один спутник будет доступен, строка приобретёт вид «$GPRMC,122641.00,V,,,,,,,270617,,,N*7A», где «122641.00» и есть то, что надо т.е. время по часовому поясу «0». Для более полноценной синхронизации такая строка ожидается 5 раз и после того как 5 раз в подряд придёт строка с содержанием времени - МК преобразует полученное время в счётчик секунд. После первичной синхронизации выполняется переход в «рабочий» режим. Последующие синхронизации выполняются по такому же принципу с промежутком 1 час между удачными извлечениями времени из строки, полученной от модуля. С той небольшой разницей, что синхронизации выполняются, скажем так, в фоновом режиме, т.е. работа часов не прекращается и не останавливается.
В рабочем режиме выполняются следующие действия:
Постоянное отображение текущего времени
Слежение за будильником
Слежение за кнопками
Кнопки:
Предусмотрено 3 кнопки, каждая из кнопок выполняет ту или иную функцию, функции изменяются в зависимости от текущего режима или меню.
Кнопка «UTC»
При нахождении в рабочий режиме - корректировка часового пояса. После нажатия данной кнопки на дисплее отображается «U---», что означает переход в меню выбора часового пояса. После отпускания кнопки на дисплее отобразится «U 3 » (по умолчанию), изменение часового пояса по нажатию кнопки «UTC», при этом значение увеличивается на 1, при достижении 12, значение сбрасывается в -12. Соответственно возможные границы часового пояса -12….+12.
При нахождении в меню установка будильника – включает или выключает будильник. При включенном будильнике на дисплее отображается время на которое установлен будильник в формате «часы.минуты», при выключенном будильнике отображается «--. --»

Кнопка «Секундомер».
При нахождении в рабочем режиме – переход часов в режим секундомера. После нажатия данной кнопки на дисплее отобразиться «С-.--», после отпускания будет осуществлён переход в режим секундомера. Максимально допустимое значение 23:59:57. Если счётчик секундомера будет больше чем 23 часа, 59 минут и 57 секунд, то будет осуществлён автоматический выход из режима секундомер. До 1 часа в 1 и 2 разряде отображаются минуты секундомера, в 3 и 4 разряде отображаются секунды. После часа работы секундомера, 1 и 2 разряд – часы, 3 и 4 разряд минуты. Выход из режима «секундомер» осуществляется нажатием любой из трёх кнопок.
При нахождении в меню установки будильника – увеличивает значение «минут» на 1, при достижении 60, происходит сброс минут на значение 0.

Кнопка «Будильник»
При нахождении в рабочем режиме - переход в меню установки будильника. После нажатия данной кнопки на дисплее отобразиться «А-. --», после отпускания, в зависимости от состояния включён или выключен будильник отобразиться или время на которое он установлен или прочерки. Если будильник включён, то при нажатии кнопки «Будильник» значение «часы» увеличивается на 1, при достижении значения 24 осуществляется сброс на 0.
Выход из меню «установка будильника» и меню «часовой пояс» осуществляется автоматически, после 5 секунд с момента последнего нажатия на любую из кнопок. При нажатии кнопок - счётчик автовыхода обнуляется.
Все установленные значения хранятся в энергонезависимой EERPOM памяти.
Функция «Будильник»
Если будильник выключен (в меню «установка будильника отображаются «--.--») – звуковой сигнал никогда не подаётся. Если включён, то звуковой сигнал подаётся 1 раз в сутки при условии «текущее время (часы:минуты) = будильник (часы:минуты)». Если в момент подачи звукового сигнала будет нажата любая из трёх кнопок, то будильник будет отложен до следующего дня (подача звукового сигнала прекратиться).
Подробное описание всех алгоритмов и функций можно посмотреть в исходниках прошивки. Я постарался написать комментарий к каждой строке, даже там где это в принципе и не надо было, но так понятней.
И на последок. Фотографии часов в сборе.

 

Вот собственно и всё. Продолжение, я надеюсь, не заставит себя долго ждать. А выйдет оно как только получу новые платы из Китая. Так или иначе, они уже заказаны. Так что до новых встреч. Ну и добро пожаловать на форум.

Файлы к проекту.

Ссылка на ветку форума.

 


Файлы:
Файлы проекта


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

38 3 4
6 0 0

Эти статьи вам тоже могут пригодиться: