Делаем аудио плеер на Ардуино для проигрывания WAV-файлов

Простой и забавный проект для Ардуино, благодаря которому мы сможем за 10-15 минут сделать аудио плеер, который воспроизводит файлы формата .wav. Он состоит из динамика, простого транзистора, действующего в качестве усилителя и адаптера micro-SD-карты на которой мы разместим наши файлы WAV.

Что нам понадобится и где купить

Список деталей небольшой и собрать его не трудно. Также для удобства мы привели ссылки на товары на сайте АлиЭкспресс. Если у вас нет таких деталей - лучше сразу сделать один большой заказ, сумма заказа получится минимальной.

Кол-во Деталь
1 Arduino Uno (другие платы Ардуино тоже подойдут кроме Duo
1 Адаптер Micro-SD карт (читать и записывать)
1 8 Ом динамик
1 Micro-SD карта
1 Макетная плата
1 BC 546b NPN-транзистор
1 7K резистор
Провода-перемычки папа-папа

На данный момент мы рекомендуем заказывать всё на известном сайте АлиЭкспресс. При тщательном выборе поставщика именно там вы получите качественный и недорогой товар. Большинство российских Интернет-магазинов ставят цены зачастую в разы выше. В ближайшее время мы сделаем очень подробное описание процесса заказа на сайте АлиЭкспресс, а пока можно ознакомиться с нашей мини-инструкцией.

Программное обеспечение

Также нам для проекта пригодится некоторое программное обеспечение на нашем компьютере и некоторые библиотеки.

Как работает аудиоплеер?

Ардуино в приведенной ниже схеме загружает файлы .wav с карты micro-SD. Затем он генерирует сигнал и выводит его через динамик, подключенный к цифровому выходу 9. Это позволяет динамику создавать звуки и воспроизводить музыку. В этом уроке вы можете запрограммировать аудиоплеер Ардуино так, чтобы он играл ваш любимую песню или мелодию.

Файлы .wav, используемые в этой схеме, имеют небольшое ограничение при воспроизведении звука. Поскольку в качестве усилителя используется транзистор, он не может читать сложные .wav-файлы. Поэтому файлы .wav должны быть преобразованы, чтобы иметь следующие размеры:

Сэмплов в секунду (Гц): 16000 (16 КГц)
Канал: Моно
Бит на сэмпл: 8

Преобразование файлов в формат .wav для вашего аудиоплеера Arduino

Вам не нужно устанавливать какое-либо программное обеспечение для преобразования песен в файлы .wav. Для работы вам нужен самый простой онлайн-конвертер, например, этот.

Небольшая инструкция для того, чтобы сделать песни совместимыми с аудиоплеером на Ардуино:

  1. Загрузите музыкальный файл или введите ссылку на песню или аудиофайл, который нужно преобразовать. Вы даже можете выбрать файлы из Dropbox или Google Диска.
  2. В дополнительных настройках измените разрешение бит на 8 бит.
  3. Измените частоту дискретизации до 16000 Гц.
  4. Измените аудиоканалы на моно.
  5. Нажмите «Показать дополнительные параметры» ("Show advanced options").
  6. Установите формат PCM как 8-битный - PCM unsigned 8-bit.
  7. Нажмите «Преобразовать» (Convert), и файлы будут преобразованы!

Форматирование Micro-SD карты

Загрузите инструмент SD Formatter, ссылку мы давали выше.

Запустите инструмент как администратор. Выберите нужный диск для форматирования. Назовите свою карту, заполнив поле метки тома и нажмите кнопку «Форматировать».

Добавьте ранее сконвертированные WAV-файлы на карту и сохраните их с простыми именами, такими как, например, "81.wav".

Схема соединения аудиоплеера

Наша схема выглядит так:

  • MOSI - контакт 11 на Arduino Uno
  • MISO - контакт 12 на Arduino Uno
  • CLK-контакт 13 на Arduino Uno
  • CS - зависит от экрана или модуля SD-карты.

Пин 4 используется для согласованности с кодом Ардуино ниже.

Код для устройства

Скетч для нашей платы:

#include "SD.h"
#define SD_ChipSelectPin 4
#include "TMRpcm.h"
#include "SPI.h"

TMRpcm tmrpcm;

void setup(){
tmrpcm.speakerPin = 9;
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}

tmrpcm.setVolume(6);
tmrpcm.play("rain.wav");
}

void loop(){  }

В целом, на этом всё. Осталось просто подключить питание, и ваш аудиоплеер Arduino будет успешно воспроизводить вашу любимую песню.

18 апреля 2018 в 15:03 | Обновлено 5 июля 2020 в 03:09 (редакция)
Опубликовано:
Уроки, ,

9 комментариев

  1. Timur
    4 июля 2020 в 11:07

    Не ПЕЧАТНАЯ ПЛАТА, а МАКЕТНАЯ ПЛАТА!!!

    Ответить
    1. Сергей
      4 июля 2020 в 12:27

      Если кто-то захочет, то сможет сделать конечный проект и на печатной.

      Ответить
      1. Timur
        4 июля 2020 в 15:41

        Но всё же, вы предлагаете только вариант с макетной платой, поэтому измените печатную плату на макетную, в таблице пожалуйста. Многие могут понять это не правильно!

        Ответить
        1. Сергей
          5 июля 2020 в 03:11

          Спасибо! Поменяли

          Ответить
  2. Timur
    4 июля 2020 в 15:43

    У меня на модуле есть только контакт sck, а clk нет. И да, куда подключать контакт CS?

    Ответить
    1. Timur
      4 июля 2020 в 17:25

      Сам понял sck это clk, а CS в четвёртый(указано в программе). Для лучшего звучания в строке tmrpcm.setVolume(6); заменяем 6 на 3. На прямую в наушники работает отлично!

      Ответить
    2. Timur
      4 июля 2020 в 17:27

      Да, кстати в программе надо заменить rain.wav на своё название файла

      Ответить
  3. Петр
    14 февраля 2021 в 21:07

    Спасибо автору за статью. Я начинающий ардуинщик. На основе приведенного скетча и рекомендаций проиграл с micro SD несколько отдельных wav-файлов. Но попытка проиграть подряд несколько файлов не получилась. Транслятор не видит ошибки, но проиграть подряд несколько файлов не получается. В чем причина?! Помогите разобраться. Заранее благодарю.

    Ответить
  4. Вячеслав
    29 марта 2021 в 15:10

    Подскажите, будет вариант с бюджетным усилителем, а не с транзистором? И какие принципиальные отличия будут при работе с усилителем?

    Ответить

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

Ваш E-mail не будет никому виден. Обязательные поля отмечены *