Аудиоплеер на Arduino

Соберем аудиоплеер. Что нам для этого понадобится? Во-первых, нам нужен «мозг», который будет все контролировать. В качестве такого мозга возьмем Arduino. Во-вторых, нам нужно будет откуда-то считывать данные. В качестве такого носителя данных возьмем компактные мини SD-карты. И, конечно же, динамики для воспроизведения звука. Ещё запрограммируем пульт для дистанционного управления.

Сначала разберемся как подключить SD карту к Arduino. Есть специальные SD Card Shield, в которых выведены все контакты. Но такие шилды стоят денег, а я думаю у каждого где-нибудь завалялся адаптер для подключения мини SD-карты в разъем для полноразмерной SD-карты. Они, как правило, идут в комплекте. Распиновка у них следующая

 

Как видим, SD-карты работают от напряжения 3.3 вольта, а у Arduino высокий логический уровень это 5 вольт. По-хорошему, надо бы использовать тут делители напряжения или стабилизаторы. Хорошая статья есть на сайте Паяльник. Но потому что у меня не оказалось под рукой ни стабилизаторов, ни резисторов нужных номиналов, то на свой страх и риск я напрямую припаял провода к этим выводам.

Две земли соединил между собой, чтобы подключать лишь одну из них. Вывод MISO соединяем с 12 пином, CLK — с 13, MOSI — с 11 и CS — c 4 пинами.

Воспроизводить звук на Arduino будем при помощи библиотеки TMRpcm. Особенностью этой библиотеки является то, что она может воспроизводить лишь файлы в 8 битном 8-32 кГц WAV-формате. К сожалению, программно Arduino не сможет быстро раскодировать MP3 поток, поэтому для воспроизведения MP3 файлов надо купить отдельный шилд с декодером. В 8 битных WAV-файлах амплитуда колебания кодируется 8 битами, которые легко считать в 8 битные регистры Arduino для последующей отправки уже на пины. Лучше всего конвертировать файлы в этот формат у меня получилось с помощью утилиты Wav Sample Rate Converter.

Усилитель 2-хканальный, а библиотека может выводить лишь моно звук. Потому нам понадобится немного изменить аудио провод: припаяем лишь землю и один любой канал. В принципе, два канала можно соединить в одном, но я оставил один нетронутым на случай, если потом понадобится задействовать его тоже.

Землю (черный провод) воткнем в GND, а канал (белый провод) — в 9 пин.

Звук можно напрямую или через резистор подавать на плюс динамика, а можно сделать простейший усилитель на одном транзисторе. Но для более качественного звучания нам понадобится усилитель получше. Возьмем колонку на усилителе TDA2822M из вот этой статьи. Пока что у нас получается следующая картина

Далее разберемся с пультом дистанционного управления. У меня завалялся какой-то пульт от китайской mp3 магнитолы. Я буду использовать его, а вы можете взять любой пульт от телевизора, потому что мы будем использовать библиотеку IRremote, которая поддерживает практически все форматы кодирования. В качестве ИК приемника я возьму VS 1838В. Вот его распиновка

Левая ножка будет подключена ко 2 пину Arduino, средняя к GND, а правая к 5 вольтам. Хорошую статью про то как подключать ИК -приемник тоже можно найти на сайте Паяльник.

С железом разобрались, теперь разберемся с управлением. Что нам нужно от пульта? Нужны функции воспроизведения, паузы, регулировки звука и выбора песни. Можно подключить ещё монитор, выводить на него список файлов, выбирать нужный с помощью стрелочек «вверх-вниз» на пульте, но пока сделаем проще. Сделаем так, чтобы при нажатии кнопки «следующий» у нас играл следующий по списку файл, а при нажатии на кнопку «предыдущий» мы начинали проигрывание с первого файла. Нам потребуется узнать у какой кнопки какой код. После загрузки скетча «player.ino» при нажатии на кнопку вы сможете увидеть ее код в консоли. После этого надо будет поправить файл «Buttons.h» с вашими кодами

И вот он — конечный результат


Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.