цифровая электроника
вычислительная техника
встраиваемые системы

 

Музыкальный проигрыватель на Arduino своими руками

Автор: Mike(admin) от 2-11-2017, 19:55

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


Музыкальный проигрыватель на Arduino своими руками

Проект, представленный здесь, представляет собой простую систему музыкального плеера на базе платы Arduino Uno и модуля SD-карты. Поскольку все мы знаем, что Arduino может иметь дело только с цифровым сигналом или прямоугольные сигналом (меандром), то, если мы хотим работать с синусоидальной волной, мы должны использовать дополнительную схему обработки.


Звуковой сигнал является синусоидальной волной, поэтому мы использовали выход ШИМ и операционный усилитель для организации аудиовыхода. Чтобы генерировать чистый звуковой сигнал (синусоида), мы должны задействовать некоторый дополнительный компонент (в данном случае усилитель), потому что выход Arduino – это ШИМ (сигнал прямоугольной формы с возможностью изменения скважности), а не синусоидальная волна.


Схема музыкального проигрывателя на базе Arduino показана на рисунке, приведенном ниже. Среди других важных элементов присутствуют SD-карта, модуль SD-карты, операционный усилитель (LM386) и несколько других компонентов, такие как резисторы, конденсаторы и т.п. Плата Arduino Uno считывает и обрабатывает аудиофайл с SD-карты и производит звуковой сигнал через вывод ШИМ (контакт 9). Таким образом, в этом проекте, мы использовали только цифровые контакты.


Музыкальный проигрыватель на Arduino своими руками. Схема подключения

Аудиофайл сначала преобразуется в формат .wav, потому что Arduino не может напрямую обрабатывать файл MP3. Чтобы воспроизводить MP3-файл, мы должны использовать MP3-шилд. Для хранения аудиофайла (звукового файла .wav) мы использовали SD-карту. SD-карта не может быть напрямую связана с Arduino Uno, поэтому мы использовали модуль SD-карты. Четыре вывода SD-карты CS, MOSI, MISO и SCK SD-карты подключаются к цифровым выводам 4, 11, 12 и 13 платы Arduino Uno соответственно, как показано на электрической схеме.


Аудиовыход берется с цифровой линии 9 платы Arduino и очень слаб, поэтому без последующей обработки он не слышен. В результате мы должны усилить выходной сигнал. Для усиления мы использовали LM386, который представляет собой низковольтный аккумуляторный усилитель мощности, предназначенный для применения, где основной проблемой является низкая мощность. Коэффициент усиления данной топологии усилителя равен 200. Для портативности и простоты использования мы запитали этот усилитель от 5 В, что подается напрямую с Arduino. Данное напряжение также отвечает за громкость. Например, если вы хотите увеличить громкость, вам нужно увеличить напряжение питания, и если вы хотите уменьшить громкость, вам необходимо уменьшить напряжение питания. Для лучшего звучания рекомендуется 8-омный динамик.


Код (скетч) для работы музыкального проигрывателя на основе Arduino представлен ниже.



#include "SD.h" // библиотека для работы с SD-картой
#include "TMRpcm.h" // библиотека для работы со звуком
#include "SPI.h" // библиотека SPI для работы с SD-картой
#define SD_ChipSelectPin 4 
TMRpcm music; 
int song_number=0;
boolean debounce1=true;
boolean debounce2=true;
boolean play_pause;
void setup(){
music.speakerPin = 9; // выходная линия ШИМ платы Arduino
Serial.begin(9600);
if (!SD.begin(SD_ChipSelectPin)) {
Serial.println("SD fail");
return;
}
pinMode(2, INPUT_PULLUP); // для переключателя треков
pinMode(3, INPUT_PULLUP); // для переключателя воспроизведения и остановки
pinMode(3, INPUT_PULLUP); // для переключателя перемотки вперед
music.setVolume(5);    //   от 0 до 7. Установка уровня громкости
music.quality(1);        //  1 для 2x передескритезации, 0 for для нормального режима
}
void loop()
{ 
  
  if (digitalRead(2)==LOW  && debounce1 == true) // кнопка 1 нажата
  {
  song_number++;
  if (song_number==5)
  {song_number=1;}
  debounce1=false;
  Serial.println("KEY PRESSED");
  Serial.print("song_number=");
  Serial.println(song_number);
  if (song_number ==1)
  {music.play("1.wav",10);} // играть песню 1 с 10-й секунды
  if (song_number ==2)
  {music.play("2.wav",33);} // играть песню 2 с 33-й секунды
  if (song_number ==3)
  {music.play("3.wav");} // играть песню 3 с начала
  if (song_number ==4)
  {music.play("4.wav",25);} // играть песню 4 с 25-й секунды
  if (digitalRead(3)==LOW  && debounce2 == true) // кнопка 2 нажата
  {
  music.pause();  Serial.println("PLAY / PAUSE");
  debounce2=false;
  }
  if (digitalRead(2)==HIGH) // устранение дребезга
  debounce1=true;
  if (digitalRead(3)==HIGH) // устранение дребезга
  debounce2=true;
}



© digitrode.ru


Теги: Arduino




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

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