Этот электронный дверной звонок, по сути, представляет собой небольшой проигрыватель на базе ATmega328P для воспроизведения WAV файлов. Когда гость нажимает кнопку звонка, устройство активируется и воспроизводит короткий файл WAV, используя встроенный модуль PWM.
Эта особенность позволяет вам настроить звук дверного звонка точно так же, как мелодию звонка на мобильном телефоне. Более того, вы можете загрузить в устройство любой понравившийся вам звук.
Файл WAV хранится во встроенной флэш-памяти микроконтроллера: внешняя память не требуется. Чтобы свести количество компонентов к минимуму, в схеме не применен фильтр низких частот, который обычно требуется на выходе ШИМ микроконтроллера AVR. Вместо этого громкоговоритель подключен через электролитический конденсатор и подстроечный резистор.
Обратите внимание, на то, что нецелесообразно подавать ШИМ сигнал непосредственно на усилитель или активные динамикам без надлежащего фильтра низких частот, поскольку это может привести к искажениям.
При подаче питания устройство немедленно воспроизводит сохраненный звук дверного звонка, и после этого микроконтроллер AVR переходит в режим ожидания с пониженным энергопотреблением. Нажатие кнопки звонка заставляет микроконтроллер выйти из режима ожидания и снова воспроизвести WAV файл.
Файл WAV должен иметь следующие характеристики: формат RIFF WAVE, 8 бит на выборку, моно и частота дискретизации 8 кГц. ATmega328P имеет в общей сложности 32 Кбайт флеш-памяти, из которых 1 Кбайт зарезервирован для прошивки. Остаток составляет 31 744 байта для WAV-файла, что достаточно для аудиофайла длиной почти четыре секунды.
Прошивка занимает диапазон адресов от 0x0000 до 0x03FF, а данные WAV начинаются с 0x0400. Если аудиофайл недоступен в формате PCM WAV, описанном выше, для его преобразования можно использовать бесплатный инструмент Audacity или ему подобный.
Инструмент hex2bin используется для преобразования файла WAV в HEX файл, пригодный для программирования в ATmega328P. Инструмент принимает двоичный файл в формате WAV, изменяет его на HEX файл формата Intel и вставляет результат в HEX файл, содержащий код AVR.
Таким образом, на выходе получаем один HEX файл, содержащий информацию о прошивке и файле WAV, который необходимо запрограммировать в ATmega328P. Весь процесс преобразования может быть запущен с помощью файла convert.bat.
Прошивка микроконтроллера определяет длину WAV-файла по информации из его заголовка и использует ее для воспроизведения содержимого файла. Готовый HEX файл под названием «tuergong.hex», содержащий как прошивку, так и файл WAV, издающий звук «динг-дон» находится в архиве, который можно скачать по ссылке в конце статьи.
Этот HEX файл можно запрограммировать непосредственно в ATmega328P. HEX файл «code.hex» в каталоге «firmware / default» содержит только прошивку, без встроенного файла WAV. Это место для начала, если вы хотите включить свой собственный файл WAV, объединив его с этим HEX файлом с помощью пакетного сценария, упомянутого выше.
Код для ATmega328P написан в AVR Studio с использованием бесплатного компилятора WinAVR C. Полный проект, включая HEX файл, можно найти в каталоге «firmware» в архиве. Фьюзы микроконтроллера должны быть запрограммированы следующим образом:
- LOW: 0xE2
- HIGH: 0xD9
- EXTENDED: 0xFF
Скачать файл проекта (331,0 KiB, скачано: 240)