РадиоКот :: Звонок с MMC/SD картой памяти.
Например TDA7294

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

Теги статьи: Дверной звонокДобавить тег

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

Автор: Олег Трифонов
Опубликовано 28.05.2009

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

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

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

Схема

Микроконтроллер 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 цифровой части, а второй его вывод - на землю).

Еще схема

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

Фото 1

В корпусе:

Для компиляции мелодий написана утилита 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.
Её исходники.
Примеры мелодий.

Вопросы, как всегда в Форум.




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

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

9 1 0

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