Как воспроизвести аудиофайлы в формате wav я уже рассказывал в уроке: Arduino SD карта. Воспроизводим звуки и музыку в wav формате. Данный способ подходит, когда нужно воспроизвести файлы не очень высокого качества, например, уведомления, оповещение и пр. Если же надо воспроизводить файлы в формате mp3, нам поможет модуль DFPlayer Mini.
MP3-плеер DFPlayer Mini позволяет воспроизводить аудиофайлы, записанные на карту памяти формата microSD. С помощью этого плеера можно управлять музыкой: приостановка и возобновление воспроизведения аудиофайла. А также можно установить громкость из 30-ти уровней громкости и одни из 6-ти режимов эквалайзера.
DFPlayer отлично подходит для Arduino проектов, в которых нужно воспроизводить уведомления или оповещения, а также для музыкального сопровождения с автоповтором выбранного трека, воспроизведением всех треков, или случайное воспроизведение треков.
Характеристики DFPlayer MP3 mini:
Для реализации самого простого плеера не нужно подключать DFPlayer к Arduino. Достаточно подключить несколько кнопок вот по такой схеме.
Но у нас уроки про Arduino, поэтому рассмотрим простой пример подключения MP3-плеер к Arduino, который подключается по аппаратному или программному UART порту (пины RX и TX) Ардуино.
Код с выводом отладочной информацией будет вот таким. Данный код взят с сайта библиотеки DFRobotDFPlayerMini. Также нам понадобится библиотека для работы спрограммным UART портом SoftwareSerial.Скачать библиотеки можно внизу статьи, в разделе материалы для скачивания.
Для воспроизведения аудиофайла необходимо поместить на карту памяти microSD один трек. Файлы рекомендуется помещать в папку mp3 и называть порядковыми номерами вот в таком формате 0001.mp3. Мой опыт показывает, что можно скидывать файлы с любым названием и помещать в корень флешки, но воспроизводиться файлы будут в том порядке, в каком их загрузилина карту памяти. При пакетной загрузке одни файлы загружаются быстрее, а другие медленнее, из-за чего воспроизведение треков идет в хаотичном порядке.
Давайте сделаем полноценный MP3-плеера на Arduino. Для этого нам понадобится:
Все компоненты нашего будущего MP3-плеера на DFPlayer соединяем по схеме.
Загрузим файлы с треками на карту памяти microSD, я использую 3 трека с YouTube, чтобы можно было воспроизводить музыку в видеоролике и не получить бан. Архив с треками можно скачать внизу статьи, в разделе материалы для скачивания.
Код для MP3-плеера на DFPlayer Mini и Arduino с возможностью выбора трека и изменением громкости будет вот такой.
#include "DFRobotDFPlayerMini.h" // библиотека для эмуляции Serial порта #include <SoftwareSerial.h> // создаём объект mySoftwareSerial и передаём номера управляющих пинов RX и TX // RX - цифровой вывод 10, необходимо соединить с выводом TX дисплея // TX - цифровой вывод 11, необходимо соединить с выводом RX дисплея SoftwareSerial mySoftwareSerial(10, 11); // RX, TX для плеера DFPlayer Mini DFRobotDFPlayerMini myDFPlayer; int buttonNext = 2; // кнопка следующий трек int buttonPause = 3; // кнопка пауза/ пуск int buttonPrevious = 4; // кнопка предыдущий трек int buttonVolumeUp = 5; // кнопка увеличение громкости int buttonVolumeDown = 6; // кнопка уменьшение громкости boolean isPlaying = false; // статус воспроизведения/пауза void setup() { pinMode(buttonPause, INPUT_PULLUP); pinMode(buttonNext, INPUT_PULLUP); pinMode(buttonPrevious, INPUT_PULLUP); pinMode(buttonVolumeUp, INPUT_PULLUP); pinMode(buttonVolumeDown, INPUT_PULLUP); mySoftwareSerial.begin(9600); Serial.begin(9600); delay(1000); Serial.println(); Serial.println("DFPlayer Mini Demo"); Serial.println("Initializing DFPlayer..."); if (!myDFPlayer.begin(mySoftwareSerial)) { Serial.println("Unable to begin:"); Serial.println("1.Please recheck the connection!"); Serial.println("2.Please insert the SD card!"); while (true); } Serial.println(F("DFPlayer Mini online.")); myDFPlayer.setTimeOut(300); //----Set volume---- myDFPlayer.volume(15); //Set volume value (0~30). //----Set different EQ---- myDFPlayer.EQ(DFPLAYER_EQ_NORMAL); myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD); myDFPlayer.play(1); //Воспроизведение первого mp3 isPlaying = true; // воспроизводим Serial.println("Playing.."); //----Читать информацию---- Serial.println(myDFPlayer.readState()); //читать состояние mp3 Serial.println(myDFPlayer.readVolume()); //Текущая громкость Serial.println(myDFPlayer.readEQ()); // читаем настройку эквалайзера Serial.println(myDFPlayer.readFileCounts()); // читать все файлы на SD-карте Serial.println(myDFPlayer.readCurrentFileNumber()); // текущий номер файла воспроизведения } void loop() { if (digitalRead(buttonPause) == LOW) { if (isPlaying) { // если было воспроизведение трека myDFPlayer.pause(); // пауза isPlaying = false; // пауза Serial.println("Paused.."); } else { // иначе isPlaying = true; // воспроизводим myDFPlayer.start(); //запускаем mp3 с паузы } delay(500); } if (digitalRead(buttonNext) == LOW) { if (isPlaying) { myDFPlayer.next(); //Next Song Serial.println("Next Song.."); } delay(500); } if (digitalRead(buttonPrevious) == LOW) { if (isPlaying) { myDFPlayer.previous(); //Previous Song Serial.println("Previous Song.."); } delay(500); } if (digitalRead(buttonVolumeUp) == LOW) { if (isPlaying) { myDFPlayer.volumeUp(); //Volume Up Serial.println("Volume Up.."); } delay(500); } if (digitalRead(buttonVolumeDown) == LOW) { if (isPlaying) { myDFPlayer.volumeDown(); //Volume Down Serial.println("Volume Down.."); } delay(500); } }
У платы Arduino NANO всего один аппаратный Serial Port, поэтому будем использовать программный порт. Для этого нужно установить и подключить библиотеку SoftwareSerial.h.
Чтоб проверить, подключен или нет DFPlayer используется условие:
Данные строки кода
Включают первый трек. И выводят в монитор порта информацию об этом.
Строки ниже выводят в монитор порта полезную информацию о статусе работы.
Первая строчка выводит статус: цифра с кодом.
Вторая строчка выводить уровень текущей громкости от 0 до 30
Третья выводит настройки эквалайзера, также в цифровом значении.
Четвертая выводит, сколько треков найдено на карте памяти.
Последняя стока выводит, какой трек воспроизводится сейчас.
В мониторе порта это будет выглядеть вот так:
В основном цикле loop выводим условия проверки нажатия той или иной кнопки. И выполняем нужную команду.
if (digitalRead(buttonNext) == LOW) { if (isPlaying) { myDFPlayer.next(); //Next Song Serial.println("Next Song.."); } delay(500); }
Это одно условие для примера, остальные устроены аналогично, их рассматривать не будем. Список команд для работы с DFPlayer Mini myDFPlayer.next(); // Воспроизвести следующий mp3
myDFPlayer.previous(); // Воспроизвести предыдущий mp3 myDFPlayer.play(1); //Воспроизведение первого mp3 myDFPlayer.loop(1); //зациклить первый mp3 myDFPlayer.pause(); //приостановить mp3 myDFPlayer.start(); //запускаем mp3 с паузы myDFPlayer.playFolder(15, 4); //воспроизводить определенный mp3 в SD: /15/004.mp3; Имя папки (1 ~ 99); myDFPlayer.enableLoopAll(); //зациклить все mp3 файлы. myDFPlayer.disableLoopAll(); //остановить цикл всех mp3 файлов. myDFPlayer.playMp3Folder(4); //воспроизводить конкретный mp3 в SD: /MP3/0004.mp3; Имя файла (0 ~ 65535) myDFPlayer.advertise(3); //рекламируем конкретный mp3 в SD: /ADVERT/0003.mp3; Имя файла (0 ~ 65535 myDFPlayer.playLargeFolder(2, 999); //воспроизводить конкретный mp3 в SD: /02/004.mp3; Имя папки (1 ~ 10); Имя файла (1 ~ 1000) myDFPlayer.loopFolder(5); //зациклить все mp3 файлы в папке SD: / 05. myDFPlayer.randomAll(); //Произвольное воспроизведение всех mp3. myDFPlayer.enableLoop(); //включить цикл. myDFPlayer.disableLoop(); //отключить цикл
Как видите, не так много кода и алгоритм работы достаточно несложный. Планирую реализовать пару проектов с использованием модуля DFPlayer Mini и Arduino, ESP8266, ESP32 для публикации на сайте. Благо, опыт работы с этим модулем и данными платформами есть.
Пишите ваши предложения и пожелания в комментариях. Чем больше будет откликов, тем чаше будут выходить проекты и уроки на сайте.
Не забывайте подписываться на канал Youtube и вступайте в группы в Вконтакте и Facebook.
Всем Пока-Пока.
И до встречи в следующем уроке.
Понравилась статья? Поделитесь ею с друзьями:
Файлы для скачивания
![]() |
MP3-плеер на DFPlayer Mini и Arduino.ino | 4 Kb | 2595 | Скачать |
![]() |
DFRobotDFPlayerMini.zip | 763 Kb | 2997 | Скачать |
![]() |
SoftwareSerial.zip | 11 Kb | 2489 | Скачать |
![]() |
mp3.zip | 19890 Kb | 2697 | Скачать |
Вернуться в раздел: Уроки Arduino: Подключение датчиков и модулей к Arduino Дата публикации 28 февраля , 2020
Читайте также
Здравствуйте. Может кто подсказать как сделать несколько функций на 1 кнопку в данном проекте? Например я хочу на 1 кнопку при обычном клике играть следующую мелодию, а при зажатии кнопки повышать громкость
на основе статьи сделал мелкому игрушку. заказчик доволен.
Комментарии
Войдите или Зарегистрируйтесь И Вы сможете общаться на форуме и оставлять комментарии без капчи.