top of page

Говорящее время

Чуть помедленне кони

Чуть помедленнее....

Владимир Высоцкий

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

Время идет медленно, когда за ним следишь. Оно чувствует слежку. Но оно пользуется нашей рассеянностью. Возможно даже, что существуют два времени: то, за которым мы следим, и то, которое нас преобразует.(Камю)

Хотелось, чтобы время напоминало о том, как оно быстро проходит. Напоминало бы хрустальным перезвоном и поздравляло родных и близких, друзей с праздниками нормальным человеческим голосом,лучше женским,красивым и мелодичным. .

Когда я сделал свой календарь и прикрепил его на стене,на недоумённый вопрос жены - зачем я это сделал?

Я ответил - нужно следить за временем и когда за ним следишь оно идёт медленнее.

 

Структурная схема

На Рис.1 представлена  структурная схема календаря, состоящая из следующих модулей:

ATMega16 – в режиме передатчика, выдаёт управляющие сигналы на указанные модули. В режиме приёмника принимает сигналы от указанных модулей, производит их анализ и принимает решения с последующей выдачей управляющих воздействий.

Пример 1:

Для выдачи определённой мелодии контроллер формирует код управления или последовательность импульсов для «Контроллера исполнения мелодий»

Пример 2:

Переключатель «Звук вкл/выкл» задействован на 40-й ножке МК (См. Принципиальную схему).   ATMega16 анализирует положение переключателя «Звук вкл/выкл» и разрешает или запрещает исполнение мелодий.

 

DS1307 – электронный календарь до 210 года.  (Краткое описание приводится ниже)

 

WH1604A – символьный индикатор на 4-е 16-разрядные строки с отображением буквенно-цифровой информации.

 

DS18B20 – контроллер температуры имеющий в своём составе датчик температуры и  схему преобразования температуры в последовательный 12-разрядный код. При получении команды на измерение температуры, каждую секунду выдаёт информацию о температуре с точностью до сотых долей градуса в управляющий контроллер для дальнейшей визуализации на индикаторе.   

 

Контроллер исполнения мелодий на базе ATTiny2313 и  microSD полностью заимствован из статьи «Модуль SDC_Talking - озвучивание действий», автор: GetChiper, сайт http://www.getchip.net/posts/111-modul-sdc_talking-ozvuchivanie-dejjstvijj/ 

Общий алгоритм работы говорящего календаря

                                                                Рис.1

                                                                Рис.1

  1. Контроллера схемы управления на базе ATMega16

  2. Контроллера календаря на базе DS1307.

  3. Символьного индикатора  на базе WH1604A.

  4.  Контроллера температуры на базе DS18B20.

  5. Контроллера исполнения мелодий на базе ATTiny2313 и MicroSD на 512мБ  

  6. Схемы управления 10-ю внешними устройствами.

Описание работы указанных устройств читатель найдёт во всемирной сети. Укажу их основные свойства, используемые в данном проекте.

                                  Рис.2

                                  Рис.2

При включении питания идёт инициализация указанных модулей, включается задержка на 3 сек для инициализации флэш карты MikroSD. Запускается АЦП и согласно положению ползунка R1 выводится в 4-ю строку индикатора лексема режима. Т.к. АЦП запускается до нескольких сотен раз в секунду, выбор пользователем режима для него происходит мгновенно. Если режим находится в определённом диапазоне, на экран индикатора выводится соответствующая информация, происходят действия по корректировке этой информации при воздействии на кнопку корректировки.

                                  Рис.2

Передняя панель календаря

Представлена на Рис. 3. Состоит из следующих элементов:

Рис.3

  1. Индикатора WH1604A на 4-е 16-и разрядных символьных поля.

  2. Индикаторов воспроизведения мелодии при наступлении каждого часа. Каждая мелодия состоит из 3-х частей, непрерывно следующих  друг за другом. Первая часть имитирует фрагмент боя кремлёвских курантов, вторая – фрагмент одной из популярных песен, третья – объявляет наступление часа, например «Десять часов утра». При воспроизведении мелодии «Индикаторы воспроизведения мелодии» перемигиваются.

  3. Адаптера для MicroSD с флэш картой на 512 мБ.

  4. Тумблера «Блокировка звука». Когда включена блокировка звука календарь не озвучивает текущее время, кроме встроенного  дверного звонка. При нажатии кнопки на внешней стороне двери, включается мелодия «Лай собаки» на 10 секунд.

  5. При первом включении календаря его необходимо откорректировать, т.е. установить правильные показания года, месяца, числа, дня недели, часа и т.д. Это выполняет кнопка «Корректировка календаря». Последовательно нажимая кнопку можно увеличить/уменьшить на единицу параметр, указанный в нижней строке символьного индикатора. Например, если в 4-ой строке стоит «МИН+», то при одиночном нажатии на кнопку «Корректировка» показания минут изменяться на 1 в сторону увеличения. Управление режимом выполняет «Переменный резистор определяющий режим» (См. Рис.2).

  6. Для управления фоновой яркостью символьного индикатора служит «Регулятор подсветки символьного индикатора» (См. Рис.2).

  7. Светодиод «Индикатор импульсов управления», который мигает столько раз, сколько необходимо для выбора мелодии, если не включена блокировка звука. Например, для вывода 18-ой мелодии, которая отвечает за «Воспроизведение 11часов утра», схема управления выдаёт 18 импульсов на «Индикатор импульсов управления», которые идут в «Модуль SDC_Talking - озвучивание действий».        

Информация выводимая на символьный индикатор

  1. Отображение в 1÷3 строке следующей календарной информации:

    1. Текущий год, месяц, число, день недели.

    2. Текущее время – часы, минуты, секунды.

  2. Отображение в 4-ой строке  текущего режима:

    1. «Нуль» – начало отсчёта режимов

    2. «МИН+» – корректировка часов календаря – добавление минут.

    3. «МИН–» – корректировка часов  календаря – уменьшение минут.

    4. «ЧАС+» – корректировка часов  календаря – добавление часов.

    5. «ЧАС–» – корректировка часов календаря  – уменьшение часов.

    6. «ДЕНЬ+» – корректировка часов  календаря – добавление дня недели

    7. «ДЕНЬ–» – корректировка часов календаря  – уменьшение дня недели

    8. «ЧИС+» – корректировка часов  календаря – добавление числа месяца

    9. «ЧИС–» – корректировка часов   календаря – уменьшение числа месяца

    10. «ГОД+» – корректировка часов   – добавление года

    11. «ГОД–» –  корректировка часов   – уменьшение года

    12. «БУДМ+» – корректировка будильника минут   – добавление будильника минут

    13. «БУДМ–» –  корректировка будильника минут   – уменьшение будильника минут

    14.  «БУДЧ+» – корректировка будильника часов   – добавление будильника часов

    15.  «БУДЧ–» – корректировка будильника часов   – добавление будильника часов

    16. «АКАД» – академический час 45 минут с перерывом 15 минут

    17.  «ТЕМП» –вывод каждую секунду температуры с точностью 0.01 градуса

    18. «КОНЕЦ» – конечный параметр вывода режима

Расшифровка режимов календаря

  1. Режим «Нуль» – отображается в 4-ой строке индикатора. В 1-ой, 2-ой, 3-й строках индикатора отображается текущее состояния календаря – год, месяц, число, день недели, часы, минуты, секунды. При этом  блокируется кнопка корректировки указанных параметров. Разрешено звучание мелодий при отсутствии блокировки звука.

  2. «МИН+» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания минут увеличиваются на 1 минуту. Изменения  показаний минут привязано к моменту отпускания кнопки. Пример: пусть время равно 10ч. 23мин. 56сек. При нажатии/отпускании кнопки  на индикатор выводится  10ч. 24мин. 00сек. Т.е. при корректировке «МИН+» дополнительно обнуляются секунды.  

  3. «МИН–» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания минут уменьшаются на 1 минуту. Изменения  показаний минут привязано к моменту отпускания кнопки. Пример: пусть время равно 10ч. 23мин. 56сек. При нажатии/отпускании кнопки  на индикатор выводится  10ч. 22мин. 00сек. Т.е. при корректировке «МИН–» дополнительно обнуляются секунды.

  4. «ЧАС+» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания часов увеличиваются на 1 час. Изменения  показаний часов привязано к моменту отпускания кнопки. Пример: пусть время равно 10ч. 23мин. 56сек. При нажатии/отпускании кнопки  на индикатор выводится  11ч. 23мин. 00сек. Т.е. при корректировке «ЧАС+» дополнительно обнуляются  секунды. 

  5. «ЧАС–» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания минут уменьшаются на 1 час. Изменения  показаний часов привязано к моменту отпускания кнопки. Пример: пусть время равно 10ч. 23мин. 56сек. При нажатии/отпускании кнопки  на индикатор выводится  9ч. 23мин. 00сек. Т.е. при корректировке «ЧАС–» дополнительно обнуляются секунды.

  6. «ДЕНЬ+» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания дня недели увеличивается на 1 день. Изменения  показаний дня привязано к моменту отпускания кнопки. Пример: пусть день недели СРЕДА. При нажатии/отпускании кнопки  на индикатор выводится ЧЕТВЕРГ. 

  7. «ДЕНЬ–» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания дня недели уменьшается на 1 день. Изменения  показаний дня привязано к моменту отпускания кнопки. Пример: пусть день недели СРЕДА. При нажатии/отпускании кнопки  на индикатор выводится ВТОРНИК. 

  8. «ЧИСЛО+» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания числа месяца увеличивается на 1. Изменения  показаний дня привязано к моменту отпускания кнопки. Пример: пусть число равно 23. При нажатии/отпускании кнопки  на индикатор выводится 24. При достижении числа равного 31, последующее нажатии/отпускании кнопки устанавливается число равное 1.

  9. «ЧИСЛО–» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания числа месяца уменьшаются на 1. Изменения  показаний дня привязано к моменту отпускания кнопки. Пример: пусть число равно 23. При нажатии/отпускании кнопки  на индикатор выводится 22.

  10. «ГОД+» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания года увеличиваются на 1. Изменения  показаний дня привязано к моменту отпускания кнопки. Пример: пусть год 2015. При нажатии/отпускании кнопки  на индикатор выводится 2016.

  11. «ГОД–» – отображается в 4-ой строке индикатора. При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания года уменьшается на 1. Изменения  показаний дня привязано к моменту отпускания кнопки. Пример: пусть год 2015. При нажатии/отпускании кнопки  на индикатор выводится 2014.

  12. «БУДМ+» – отображается в 4-ой строке индикатора. При этом на индикатор выводится следующая информация:                                                                                  первая строка пустая, во второй строке лексема БУД, в третьей  строке ранее установленное время будильника, например 8 час 2 мин, в четвёртой собственно режим    «БУДМ+».  При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания минут будильника минут увеличиваются на 1.

  13. «БУДМ–» – отображается в 4-ой строке индикатора. При этом на индикатор выводится следующая информация:                                                                                  первая строка пустая,  во второй строке лексема БУД, в третьей  строке ранее установленное время будильника, например 8 час 2 мин, в четвёртой собственно режим    «БУДМ–«.  При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания будильника минут уменьшаются 1.

  14. «БУДЧ+» – отображается в 4-ой строке индикатора. При этом на индикатор выводится следующая информация:                                                                                  первая строка пустая, во второй строке лексема БУД, в третьей  строке ранее установленное время будильника, например 8 час 2 мин, в четвёртой собственно режим    «БУДЧ+».  При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания будильника часов увеличиваются на 1.

  15. «БУДЧ–» отображается в 4-ой строке индикатора. При этом на индикатор выводится следующая информация:                                                                                  первая строка пустая, во второй строке лексема БУД, в третьей  строке ранее установленное время будильника, например 8 час 2 мин,      в четвёртой собственно режим    «БУДЧ–«.  При одиночном нажатии и отпускании кнопки «Корректировка календаря» показания будильника часов уменьшается на 1.

  16. «АКАД» – отображается в 4-ой строке индикатора. В остальных строках присутствует обычный календарь. Данный режим позволяет контролировать время обычного академического часа. При включении данного режима проигрывается мелодия начала урока. Через 45 минут звучит мелодия на перемену, а через 15 минут снова на урок. Это происходит до тех пор, пока пользователь не переменит режим работы календаря. При этом режим «АКАД» обнуляется для следующего запуска. 

  17. «ТЕМП» –вывод каждую секунду температуры с точностью 0.01 градуса в 4-ой строке календаря. Датчик на основе DS18B20 устанавливается в точке измерения температуры, дома или на улице. При установке на улице необходимо предусмотреть защиту от влаги.     

  18. «КОНЕЦ» – конечный параметр вывода режима, отображается в 4-ой строке индикатора. В 1-ой, 2-ой, 3-й строках индикатора отображается текущее состояния календаря – год, месяц, число, день недели, часы, минуты, секунды. При этом  блокируется кнопка корректировки указанных параметров. Разрешено звучание записанных мелодий при отсутствии блокировки звука.

Реализация режимов календаря

                                                                Рис.4

На Рис.4 изображена структурная схема для вывода информации по режиму на символьный индикатор. Пользователь устанавливает нужный режим путём изменения положения ползунка R1 и отслеживанию показаний режима по индикатору. Аналоговая информация снимаемая с ползунка резистора R1, запитанного от напряжения 5В измеряется АЦП и обрабатывается «Процедурой обработки показаний АЦП». Весь диапазон от 0 до 5 вольт равномерно разбит на 19 поддиапазонов по 153,158 мВ, что соответствует величине шага  в цифровом десятичном эквиваленте примерно 54, в двоичном 110110. АЦП автоматически запускается, и по окончанию измерения выставляет флаг прерывания, по которому формируется выдача информацию в 4-ю строку символьного индикатора.

Например, в нижнем положении резистора R1 АЦП МК отрабатывает напряжение равное нулю (в цифровом эквиваленте 0) и выводит в 4-ю строку индикатора лексему «НУЛЬ». В верхнем положении резистора R1 АЦП МК отрабатывает напряжение равное +5В (в цифровом эквиваленте 1024) и выводит в 4-ю строку индикатора лексему «КОНЕЦ». В соответствии с Табл.1 отрабатывается реакция пользователя.

На Рис.5 приведён алгоритм работы блока корректировки согласно Табл.1.

                                                                                Табл.1

Когда АЦП захватывает определённый режим, процедура анализа всегда выводит для пользователя в 4-ю строку индикатора спецификацию режима и производит анализ кнопки корректировки.

Как видно из рисунка информация выводится, если параметр находится в определённом диапазоне. На границах диапазонов вывод становится неустойчивым, что легко устраняется небольшим поворотом бегунка резистора R1 в ту или иную сторону (См. Рис.4). Если Regim=0, то никакой реакции на кнопку корректировки не происходит и происходит выход из программы анализа. Если Regim=1 и нажата кнопка корректировки то выполняется задержка, обнуляется экран индикатора, анализируется вход на котором сидит кнопка корректировки. Если кнопка отпущена, то увеличивается на 1 «МИН+»и сбрасывается секунды в 0. Далее изменённая минута и все остальные данные записываются в регистры календаря DS1307. Аналогичные действия происходят при другом значении режима.

Режимы АКАД и ТЕМП не связаны с корректировкой регистров календаря.

Режим АКАД

Алгоритм академического часа показан на Рис.6.

При захвате режима «АКАД» программно организуются два счётчика на 45 и 15 минут. Счётчики циклически включаются/выключаются со звуковым сопровождением согласно указанного алгоритма. При выходе из режима «АКАД», данный режим выключается, счётчики сбрасываются в 0.   

                                      Рис.6

Режим 18  «ТЕМП». Вывод температуры.

 

Использована библиотечная функция  temp_18b20() для одного прибора DS18B20.

Для вывода температуры с точностью до 0.01 градуса, возврат указанной функции с типа INT заменён на FLOAT.

 

Модуль воспроизведения мелодии

 

На Рис.7 -  алгоритм воспроизведения мелодии.

После подачи питания следует задержка на 3 сек для инициализации плеера на ATTiny2313 и флэш карты MicroSD. После отработки режима АЦП анализируется состояние тумблера «Блокировка звука». Если звук запрещён анализируется режим и выполняется его отработка. Кнопка дверного звонка работает при любом режиме. При её нажатии/отпускании выполняется мелодия «Лай собаки» продолжительностью не менее 10 секунд. Если звук разрешён, то анализируется текущее время Т. Если Т больше 0 часов но меньше 8 часов утра, то звук также не воспроизводится. Звук воспроизводится от 8-и утра до 24 часов (нуля часов) ночи.      

Для корректной работы устройства звуковые файлы, расположенные на SD карте должны соответствовать определенным требованиям:
формат файла должен быть — несжатым WAV.
Параметры файла следующие:
Битрейт – частота дискретизации (Frequency) — 32000 Гц;
Количество каналов (Channels) — 1 (mono);
Размерность (Sample size) — 8 бит.

                                      Рис.7

Файл должен быть назван особым образом. Для того чтобы устройство знало какой файл первый, второй, третий и т.д. первый символ имени файла должен быть заглавной буквой латинского алфавита (остальная часть названия, как и расширение файла игнорируется).
Например, корректными будут следующие названия файлов:
А_Лай_собаки.wav – первый трек
B-Это второй трек.wav – второй трек
С Warning! Error!.wav – третий трек

В нашем случае используемые имена файлов приведены для каталога 1 и 2 на Рис.8 (каталог 1)  и на Рис.9(каталог 2).

Технология приведения к указанному формату следующая:

  1. Запись на ноутбуке голосового файла в формате wma с помощью сервисной программы Windows Sound Recorder.

  2. Сохранение файла на диске, например с именем «А_Бой часов. wma».

  3. Произносим и записываем остальные файлы в каталоги 1 и 2 , присваивая  соответствующие имена с латинскими заглавными буквами.

  4. После записи всех файлов, приводим их к указанному формату WAV с помощью программы Audio Transcoder.

  5. Подбираем популярные песни, используя Интернет. Итак, для записи мелодии каждого часа имеется три составляющих: «Бой кремлёвских курантов», популярная песня из Инета, файл произносимого часа.

  6. Открываем сайт http://audio-joiner.com/ru/   для объединения и редактирования подготовленных файлов, а именно:

    1. Загружаем первый трек «Бой_часов».

    2.  Загружаем второй трек, например «Помосковные вечера»,выбираем фрагмент с временем звучания порядка 30 сек.

    3.  Загружаем третий  трек, например «S_11 часов_утра».

    4. Соединяем все треки вместе, получаем файл с каким-то именем, например QQ23.

    5. Изменяем имя файла на   «S_11 часов_утра».

    6. Всё это делаем с остальными файлами. Получаем то, что изображено на Рис 8 и 9.

                   Рис.9

                   Рис.8

Кроме мелодии каждого часа, производим озвучивание поздравлений с днём рождения друзей и родственников, праздников 8 марта, 23 февраля, подъём на утреннюю зарядку, начало и конец академического часа, дверного звонка  и т.д.

Озвучивание указанного материала производилось по технологии:

  1. Запись на ноутбуке голосового файла в формате wma с помощью сервисной программы Windows Sound Recorder.

  2. Сохранение файла на диске, например с именем «Y_ПоздМише. wma».

  3. После записи всех файлов, приводим их к указанному формату WAV с помощью программы Audio Transcoder.

  4. Переписываем подготовленные файлы на флэш карту.

Схемотехника отдельных модулей календаря

Формирование звука

                   Рис.10

Состоит из следующих элементов:

  1. Вилки питания ~220/5В

  2. MicroSD 512 мБ совместо с адаптером (карман куда вставляется флэш карта)

  3. Контроллера звука на МК ATTiny2313 с внешней обвязкой из элементов:

    1. Блокировочных конденсаторах по питанию С1 и С2

    2. Светодиодах HL1 и HL2

    3. Резистора R4 =10к на входе RESET МК

    4. Развязывающего конденсатора С4=470 мкФ по постоянной составляющей для выхода звукового сигнала

    5. Колонки громкоговорителей

    6. Усилителя импульсного сигнала START и светодиода для визуализации работы музыкального комплекса

  4. Контроллера управления  на МК ATMega16 с внешней обвязкой из элементов:

    1. Кнопки дверного звонка с интегрирующей  цепочкой из Rвнеш.1=2.7к и конденсатора С5=10 мкФ

    2. Тумблера Т1 вкл/выкл звука с подсветкой на светодиоде HL3

Назначение контактов ATMega16:

  1. PA0 – вход МК, анализ статуса тумблера вкл/выкл звука

  2. PD6 – DIR выход МК, выбор каталога 1(PD6=1) или 2 (PD6=0)

  3. PD5 – START выход МК,  синроимпульс(ы) определяющие начало выбора файла из каталога, либо номер выбираемого файла

  4. PD4  – 1-й разряд кода для выбора мелодии, активен если равен 0

  5. PD3  – 2-й разряд кода для выбора мелодии, активен если равен 0

  6. PD2  – 3-й разряд кода для выбора мелодии, активен если равен 0

  7. PD1  – 4-й разряд кода для выбора мелодии, активен если равен 0

  8. PB7 – PWT выход МК, определяет бесконечный повтор мелодии при PWT=0

  9.  PB6 – STS вход МК, анализ состояния звукового выхода музыкального контроллера

  10.  PB4 - вход МК,  анализ состояния кнопки дверного звонка

 

Назначение контактов ATTiny2313:

  1. Сигналы для управления MicroSD:

    1. PB7 – SCLK выход МК, синхронизация

    2. PB4 – СS выход МК, выбор или активация карты

    3. PB5 – D0 выход МК, выдача управляющих кодов для карты

    4. PB6 – DI вход МК, приём информации из карты

  2. PB3 –  звуковой выход МК

  3. PB3 –  PWT вход МК

  4. PB0 – STS выход МК

  5. PA1 – DIR вход МК

  6. PA0 – START выход МК

  7. PD5, PD4, PD3, PD2 – входы МК для кодов выбора мелодии

 

Как это работает.

 

При включении питания идёт программная задержка на 3 сек для инициализации MicroSD. При постоянном опросе текущего времени, выдаваемого DS1307, идёт процесс сравнения  с зашитыми в программу временными уставками. При совпадении, выставляется код мелодии  соответствующий текущему времени на входы МК ATTiny2313, формируется импульс START запускающий мелодию соответствующую выявленному часу.

Управление идёт в отрицательной логике, так самый младший код 0 представлен в двоичном виде 1111, самый старший 15 соответствует 0000.

Разберём, как происходит запуск мелодии соответствующий 12 часам дня. При совпадении уставки зашитой в программе и текущего времени выставляется код в двоичном виде 1111 на входах 1 2 4 8 МК ATTiny2313. Далее формируется импульc  START длительностью 500 мС и по его окончании начинает выдаваться мелодия соответствующая указанному времени. Как было сообщено ранее, она состоит из 3-х частей: боя кремлёвских курантов, фрагмента популярной песни и объявления «12 часов дня».

Для объявления «7 часов вечера» используется код 1000, для «11 часов ночи» 0100. 

Необходимо отметить, что запуск на выполняемую мелодию идёт при опросе 32 отметок времени зашитых в программе, и сравнении их с текущими временными координатами. Поэтому точного совпадения уставки до 0 секунд может не произойти. Поэтому, даётся временной коридор до 10 секунд. Т.е. если текущее время равно 12ч 00мин и сек<10 следующей минуты,  идёт надёжный захват мелодии.

Выдача кода на исполнение мелодии сопровождается дополнительно:

  1. Командой «Выбор каталога»

  2. Командой «Очистка регистров команд ATMega16»

  3. Командой «Отсутствие повтора мелодии»

Как было указано в статье автора контроллера звука GetChiper, число команд мелодий в каждом каталоге равно числу букв латинского алфавита.

На самом деле их меньше. 4-мя битами может осуществляться вызов только 15-и мелодий. Остальные 11 вызывается   последовательной генерацией импульса START. К примеру, для  вызова мелодии «S_Владимир» необходимо сгенерировать 19 импульсов START.

Как было установлено, некоторые параллельные коды не работают, а именно код 13 и 15,  при необходимости их можно заменить последовательными кодами.   

Формирование   времени и даты

Показано на Рис.11.

                   Рис.11

Часы реального времени с последовательным интерфейсом DS1307 – это малопотребляющие полные двоично-десятичные часы-календарь, включающие 56 байтов энергонезависимой статической ОЗУ. Адреса и данные передаются последовательно по двухпроводной двунаправленной шине. Часы- календарь отсчитывают секунды, минуты, часы, день, дату, месяц и год. Последняя дата месяца автоматически корректируется для месяцев с количеством дней меньше 31, включая коррекцию високосного года. Часы работают как в 24-часовом, так и в 12-часовом режимах с индикатором AM/PM. DS1307 имеет встроенную схему наблюдения за питанием, которая обнаруживает перебои питания и автоматически переключается на питание от батареи.

SCL (Serial Clock Input - вход последовательных синхроимпульсов) – используется для синхронизации данных по последовательному интерфейсу. SDA (Serial Data Input/Output - вход/выход последовательных данных) – вывод входа/выхода для двухпроводного последовательного интерфейса. Вывод SDA – с открытым стоком и требует внешнего подтягивающего резистора. SQW/OUT (Square Wave/Output Driver - сигнал с прямоугольными импульсами) – когда включен, т.е. бит SQWE установлен в 1, вывод SQW/OUT выдаёт прямоугольные импульсы с одной из четырёх частот (1 Гц, 4 кГц, 8 кГц, 32 кГц). Вывод SQW/OUT – с открытым стоком и требует внешнего подтягивающего резистора. SQW/OUT будет работать как при питании от Vcc, так и при питании от VBAT.

Для корректировки данных календаря служит кнопка  S1.

Символьный индикатор

См.Рис.12

                   Рис.12

Для экономии ножек ATMega16  был использован регистр последовательной записи данных RG1 K561ИР6. Данные для записи вешаются на его вход 10 (DATA)  и путём подачи 8-и синхроимпульсов на вход 15 (SN) проталкиваются на его 8 выходов DB0÷DB7. Далее с помощью управляющих сигналов ATMega16, RS и E производится запись во внутренние регистры WH1604A для индикации полученной информации. Для контрастности выводимых данных используется переменный резистор R7, для подсветки экрана 2 резистора R6 и R6.1(См.Рис.12).

Измерение температуры

См.Рис.13

                   Рис.13

Шина данных датчика подключается к порту PА3, а также подключаем к плюсу питания через резистор R5 номиналом 2,7 кОм, поскольку выходной транзистор датчика имеет открытый сток.

  1. Последовательность действий при работе с одним датчиком будет такая:
    послать сигнал обнуления линии (480...960 мкc);

  2. принять импульс присутствия или заполнить время паузой (60...240 мкc);
    послать команду пропуска идентификации 0xCC;

  3. послать команду начала преобразования 0x44;

  4. пауза не менее 500 мкc для завершения процесса преобразования;

  5. обнулить линию;
    послать команду пропуска идентификации 0xCC;

  6. послать команду считывания блокнота 0xBE;

  7. принять 9 байт;

  8. выделить и проанализировать бит десятых долей градуса с установленной точностью, в нашем примере это 0,0625;

  9. проанализировать бит знака;

  10. если знак отрицательный, то перевести значение температуры в дополнительный код;

  11. делаем преобразование целой и дробной части значения температуры и выводим на дисплей.

Программирование используемых микроконтроллеров

Для программирования «музыкального» контроллера ATTiny2313 используем готовую прошивку SDC_Talking.hex, автор  GetChiper,для программирования ATMega16 используется прошивка автора, получаемая путём компиляции текста программы в двоичный код в среде CVAVR.Прошивка во флэш память микроконтроллеров осуществлялась в среде AVR Studio 4.

Программируем с помощью любого программатора, использующего последовательный периферийный интерфейс SPI. Я использовал популярный STK500. На Рис.14 показана схема программирования кристалла ATMega16.

При программировании использовалась сервисная программа STK500 AVR Studio 4, при написании и отладки программы была использована программа CVAVR.

                   Рис.14

Работа с внешними устройствами.

              Рисунок 15

 

Под внешними устройствами в данной схеме подразумеваются ВСЕ неиспользуемые линии ATMega16 выведенные на внешний разъём (См.Рис15).

На момент написания статьи была задействована только одна линия – дверной звонок. Остальные 12 зарезервированы для будущих разработок.

Общая принципиальная схема календаря.

                                        Рисунок 16

 

Квадратиками цвета морской волны обозначены штырьковые разъёмы с обозначением номера разъёма, например SH10, красными числами через запятую, например 24,80, обозначены координаты элементов X,Y на печатной плате.  Батарея с координатами 13,10 не устанавливалась, не хватило места на плате, что не ухудшило характеристик календаря. При пропадании питания и при дальнейшем включении устанавливались параметры последней настройки. Далее, кнопкой корректировки устанавливалось время и дата.  

Печатная плата

Показана на рис.17.

Компоненты обозначены тонкими жёлтыми линиями, широкими зелёными обозначены линии проводников печатной платы с обратной стороны платы, в месте расположения медного слоя. Так как плата односторонняя, тонкими синими линиями обозначены проводники печатной платы с лицевой стороны, выполнены тонкими медными проводниками. Тонкими зелёными линиями обозначены связи с внешним разъёмом устройств, тонким изолированным проводом  МГТФ. Обозначения элементов нанесены красным цветом. Плата рисовалась с помощью программы Sprint-LayOut 5.0,  и экспортировалась в предварительные форматы для фрезерного станка СНС-3. Далее с помощью программы CNC_Converter_v1.72.exe транслировалась в символьные файлы фрезерования и сверловки для ЧПУ.

                   Рис.17

Дизайн панели календаря

                                     Рисунок 18

Использована лесная тема «Красный гриб и брусника». На Рис.18 показана передняя панель календаря. Можно видеть разъём, идущий на звуковые колонки, три провода на датчик температуры, адаптер microSD, цифро-буквенный индикатор, кнопки, тумблера, переменные резисторы и светодиоды. 

bottom of page