Звонок с MMC/SD картой памяти.

Рассказать в:

Автор - Олег Трифонов.

В Сети водится большое множество разных схем дверных звонков на микроконтроллерах, но просмотрев их, не смог найти для себя ничего подходящего. Хотелось бы, чтобы звонок мог воспроизводить много мелодий, как простых, так и полифонических или просто аудиофрагменты, а так же любые их комбинации и чтобы набор мелодий можно было легко менять не отключая звонка. Самым простым решением для воспроизведения голоса и полифонии является проигрывание содержимого wav-файла через ЦАП или ШИМ-модулятор. Первый вариант проще в реализации (благо, выводов у меги8 для 8-битного ЦАПа хватает), и не требует последующей фильтрации сигнала. 
Поскольку wav-файлы занимают много места, для их хранения нужен достаточно емкий носитель. Но с бурным развитием индустрии флеш-памяти и флеш карт этот вопрос решается сам собою. Для хранения мелодий удобно использовать карты памяти mmc и sd/sdhc, т.к. эти карты поддерживают режим низкоскоростного доступа (для наших целей его будет более, чем достаточно) совместимый и шиной isp, что сильно упрощает программную реализацию. Еще один большой плюс использования карт памяти - их всегда можно перезаписать на компьютере. 

Вообщем, вопрос остается только в представлении данных на карте: можно хранить мелодии в виде файлов стандартной файловой системы (например fat16), а можно придумать свой двоичный формат. В первом случае для записи мелодий будет достаточно только компьютера с картридером, но при этом сильно усложняется написание управляющей программы для звонка - библиотеки, реализующие работу с fat16 существуют уже готовые, но они требуют ощутимо много памяти - потребуется МК с минимум 16КБ flash-а и 1..2КБ ram. Во втором случае разработка звонка значительно упрощается, но для записи мелодий на компьютере пришлось бы разрабатывать специальный драйвер, для поддержания нестандартной "файловой системы", иначе, операционная система просто не распознала бы карту (последнее относится только к windows, в *nix-системах запись "сырых" даных на накопитель никаких проблем не вызывает). 

Но существует еще третий, компромиссный вариант: на карте памяти создается один большой файл, в начале которого записывается некая сигнатура, после которой помещаются собственно "сырые" данные. Управляющая программа просто находит эту сигнатуру, вместо того, чтобы анализировать fat и собирать файл "по кусочкам", и может считывать нужные данные просто пропустив блоки mbr и fat. Тогда для замены мелодий достаточно перезаписать один файл, созданный специальным компилятором. Этот вариант и был реализован. 
Схема цифровой части получившегося звонка показана на рисунке.

Звонок с mmc/sd картой памяти.

Микроконтроллер atmega8 включен по типовой схеме, к его порту d подключен ЦАП на резисторах r3 .. r10, r11 .. r17, с выхода которого (на схеме audio out) сигнал поступает на усилитель. Карта памяти вставляется в разъем x1 и питается через стабилизатор ic2. Вывод pc5 МК подключен к джамперу, который используется загрузчиком кода прошивки. Выводы pc0.. pc4 остались незадействованы, поэтому, подключил к ним светодиоды (анодами к МК и катодами на землю), мигающие в зависимости от проигрываемой ноты или амплитуды аудиофрагмента. К выводу pb0 подключается кнопка "застопоривания" смены мелодий: если она не нажата, мелодии будут проигрываться одна за другой, по списку, если нажата - будет зациклена последняя проигрываемая мелодия. Вывод pb1 управляет реле, которая самоблокирует кнопку звонка. В схеме использован кварц на 11059200Гц, в случае использования другого резонатора, надо изменить значение f_cpuв файле config.h. 

Схема аналоговой части состоит из усилителя на основе tda2003, включенной по типовой схеме и стабилизаторе 5В. Транзистр t1 управляет реле, подключаемой к выводам r1.1, r1.2, вход x1 подключается к выходу pb1 МК. Вход inp подключается через переменный резистор (10 КОм) - регулятор громкости к выходу ЦАП (вертушек резистора подключается к выходу audio out цифровой части, а второй его вывод - на землю).

Звонок с mmc/sd картой памяти.

Схемы и разводка печатных плат прилагаются (eagle). Надо заметить, что на плате аналоговой части микросхемы устанавливаются на общий радиатор, который одновременно соединяет их земли. Это позволило развести одностороннюю плату без перемычек. 
В качестве корпуса я использовал бокс для двух выключателей-автоматов. Слот для mmc-карты был вырезан из разъема для картриджа от игровой приставки, Кнопку звонка я вывел на лицевую панель (она идет в параллель той кнопке, что находится в подъеде) для того, чтобы можно было выбирать мелодию циклическим переключением. Так же для удобства добавил кнопку, отключающую звук. Вместо 5 светодиодов, как нарисовано на схеме, подключил только 4 - разных цветов. 
Внешний вид того, что получилось. 
Внутренности:

Звонок с mmc/sd картой памяти.

В корпусе:

Звонок с mmc/sd картой памяти.

Для компиляции мелодий написана утилита melodyflasher. Перед первой записью надо иннициализировать карту памяти - отформатировать ее и создать файл данных, занимающий все доступное место. Это делается следующей командой:

mf i -d <имя диска карты памяти>

Программа позволяет формировать мелодии из нотных фрагментов, записываемых в формате мелодий для телефонов motorola t720. Для прослушивания и редактирования мелодий удобно использовать программу melody player for motorola, в этой программе есть большая база разных мелодий. Аудиофрагменты надо преобразовать в формат wav, обязательно нежатый и монофонический. После подготовки всех фрагментов создается файл списка (в прилагаемом примере - melodies.lst). В каждой строке этого файла описывается одна мелодия, которая может состоять из любого числа .mel-фрагментов (нотная запись) и .wav-фрагментов, имена файлов этих фрагментов просто записываются в одну строку через запятую (см. прилагаемый пример). Стоит заметить, что если один и тот же файл фрагмента используется в мелодиях несколько раз, то в скомпилированный файл файл данных он будет включен единожды, без дублирования, т.е., файлы получаются достаточно компактные. Компиляции мелодий и их запись на карту производится следующей командой:

mf u -d <имя диска карты памяти> -f <имя файла списка мелодий>

Для работы с mmc/sd использована библиотека Роладна Ригеля (roland riegel), которая была несколько модифицирована. Прошивка и все исходники прилагаются.

Файлы:
Печатные платы в формате eagle.
Прошивка МК с исходниками.
Утилита melodyflasher.
Её исходники.
Примеры мелодий.



Раздел: [Устройства на микроконтроллерах]

Сохрани статью в:

Оставь свой комментарий или вопрос:


Наше сообщество в VK, а ты с нами? Присоединяйся!!!
Тясячи схем в категориях:
-> Прочее
-> Измерительная техника
-> Приборы
-> Схемыэлектрооборудования
-> Источники питания (прочие полезные конструкции)
-> Теоретические материалы
-> Справочные материалы
-> Устройства на микроконтроллерах
-> Зарядные устройства (для батареек)
-> Зарядные устройства (для авто)
-> Преобразователи напряжения (инверторы)
-> Все для кулера (Вентилятора)
-> Радиомикрофоны, жучки
-> Металоискатели
-> Регуляторы мощности
-> Охрана (Сигнализация)
-> Управление освещением
-> Таймеры (влажность, давление)
-> Трансиверы и радиостанции
-> Конструкции для дома
-> Конструкции простой сложности
-> Конкурс на лучшую конструкцию на микроконтроллерах
-> Конструкции средней сложности
-> Стабилизаторы
-> Усилители мощности низкой частоты (на транзисторах)
-> Блоки питания (импульсные)
-> Усилители мощности высокой частоты
-> Приспособления для пайки и конструирования плат
-> Термометры
-> Борт. сеть
-> Измерительные приборы (тахометр, вольтметр итд)
-> Железо
-> Паяльники ипаяльные станции
-> Радиопередатчики
-> Вспомогательные устройства
-> Телевизионная техника
-> Регуляторы тембра, громкости
-> Блоки питания (лабораторные)
-> Усилители мощности низкой частоты (на микросхемах)
-> Другие устройства для усилителей
-> Cветовое оформление новогодней ёлки или праздничного зала
-> Глушилки
-> Телефонные жуки
-> Инфракрасная техника
-> Медицинская техника
-> Телефония
-> Для животного мира
-> Конструируем усилители
-> Антенны и усилители к ним
-> Звонки
-> Электронные игрушки
-> Усилители мощности низкой частоты (ламповые)
-> Управление двигателями (питание от однофазной сети)
-> Программаторы микроконтроллеров
-> Сверлилки
-> Изучаем микроконтроллеры
-> Радиоприемники
-> Сигнализации
-> Сотовая связь
-> USB-устройства
-> Блоки питания (трансформаторные)
-> Радиостанции простые в изготовлении
-> Источники питания (для усилителей)
-> Прочеее
-> защита от короткого замыкания (электронные предохранители)
-> Зарядные устройства (для радиостанций)
-> Мигалки
-> Cварочное оборудование
-> Кодовые электронные замки
-> Блоки питания (бестрансформаторные)
-> Часы
-> Управление поворотниками
-> Зажигание
-> Управление водой (насосы для скважин или колодцев, полив растений)
-> Моделирование
-> Блоки управления стеклоочистителями
-> Предварительные усилители
-> Защита от перегрузки и перегрева
-> Динамики
-> Ремонт бытовой техники
-> Дистанционное управление компьютером
-> Акустические микрофоны и преобразователи
-> Спутниковое ТВ
-> Gsm антенны, примочки, усилители, ретрансляторы.
-> Пищалки
-> Роботы
-> Ретрансляторы
-> Паяльники и паяльные станции
-> Звуковые сигнализаторы
-> Рули и джойстики
-> Схемы электрооборудования
-> Все для "кулера" (Вентилятора)
-> Работа с BGA микросхемами
-> Фильтры
-> Сабвуферы
Рейтинг@Mail.ru