DFPlayer Mini (или его аналог MP3-TF-16P) — популярный MP3-модуль для воспроизведения звука с microSD-карты. В этой статье рассмотрим:
- Схему подключения к Arduino Nano
- Базовые скетчи для воспроизведения треков
- Определение окончания трека
- Управление громкостью
- Выполнение действий после завершения воспроизведения
1. Подключение DFPlayer Mini к Arduino Nano
Необходимые компоненты
- Arduino Nano
- DFPlayer Mini (или MP3-TF-16P)
- microSD-карта (FAT32, с треками в формате .mp3 или .wav)
- Динамик (4–8 Ом) или наушники
- Резистор 1К (для защиты RX)
- Макетная плата и провода, либо соединение на прямую.
Схема подключения
DFPlayer Mini Arduino Nano
VCC 5V
GND GND
TX D2 (через резистор 1К)
RX D3
SPK1 / SPK2 Динамик
🔹 Важно:
- TX модуля подключается к D2 Arduino через резистор 1К (для защиты входа).
- RX модуля — к D3 (можно использовать другие пины, но нужно изменить скетч).
- Звуковой выход (SPK1/SPK2) подключается к динамику.
2. Установка библиотеки DFPlayer Mini
Для работы с модулем используем библиотеку DFRobotDFPlayerMini.
📌 Установка:
- В Arduino IDE: Скетч → Подключить библиотеку → Управлять библиотеками.
- Ввести "DFRobotDFPlayerMini" и установить.
3. Базовый скетч: воспроизведение треков
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySerial(2, 3); // RX, TX (D2, D3)
DFRobotDFPlayerMini myDFPlayer;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
if (!myDFPlayer.begin(mySerial)) {
Serial.println("DFPlayer не подключен!");
while (true);
}
Serial.println("DFPlayer готов!");
myDFPlayer.volume(15); // Громкость (0-30)
myDFPlayer.play(1); // Воспроизвести трек 1
}
void loop() {
// Ничего не делаем в цикле
}
🔹 Как это работает:
- myDFPlayer.begin() — инициализация модуля.
- myDFPlayer.volume(15) — установка громкости (0–30).
- myDFPlayer.play(1) — воспроизведение трека 0001.mp3 на карте.
📌 Формат файлов на microSD:
Copy
Download
/MP3/
├── 0001.mp3
├── 0002.mp3
└── ...
4. Как определить, что трек завершился?
DFPlayer Mini может отправлять сигнал о завершении трека.
Скетч с обработкой окончания трека
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySerial(2, 3);
DFRobotDFPlayerMini myDFPlayer;
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
if (!myDFPlayer.begin(mySerial)) {
Serial.println("Ошибка подключения DFPlayer!");
while (true);
}
myDFPlayer.volume(15);
myDFPlayer.play(1);
// Включаем обработчик завершения трека
myDFPlayer.enableLoop();
}
void loop() {
if (myDFPlayer.available()) {
// Читаем тип сообщения от DFPlayer
uint8_t type = myDFPlayer.readType();
if (type == DFPlayerPlayFinished) {
Serial.println("Трек завершен!");
// Здесь можно выполнить действие (например, включить следующий трек)
delay(1000);
myDFPlayer.next(); // Воспроизвести следующий трек
}
}
}
🔹 Что происходит:
- myDFPlayer.available() — проверяет, есть ли данные от модуля.
- DFPlayerPlayFinished — сигнал о завершении трека.
5. Управление громкостью
Громкость меняется командой myDFPlayer.volume(XX) (0–30).
Пример: плавное увеличение громкости
void setup() {
// ... (инициализация как в предыдущих примерах)
for (int vol = 0; vol <= 20; vol++) {
myDFPlayer.volume(vol);
delay(200);
}
myDFPlayer.play(1);
}
6. Выполнение действия после завершения трека
Допустим, после окончания мелодии нужно включить светодиод.
Скетч с управлением светодиодом
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
#define LED_PIN 13
SoftwareSerial mySerial(2, 3);
DFRobotDFPlayerMini myDFPlayer;
void setup() {
pinMode(LED_PIN, OUTPUT);
Serial.begin(9600);
mySerial.begin(9600);
if (!myDFPlayer.begin(mySerial)) {
Serial.println("DFPlayer не подключен!");
while (true);
}
myDFPlayer.volume(15);
myDFPlayer.play(1);
}
void loop() {
if (myDFPlayer.available()) {
uint8_t type = myDFPlayer.readType();
if (type == DFPlayerPlayFinished) {
Serial.println("Трек завершен! Включаем светодиод.");
digitalWrite(LED_PIN, HIGH); // Зажигаем светодиод
delay(2000);
digitalWrite(LED_PIN, LOW); // Гасим светодиод
}
}
}
Выводы
- DFPlayer Mini легко подключается к Arduino Nano через SoftwareSerial.
- Для воспроизведения треков используем myDFPlayer.play(N).
- Окончание трека определяется по DFPlayerPlayFinished.
- Громкость регулируется командой volume().
- После завершения трека можно выполнять любые действия (включение реле, светодиода и т. д.).
🚀 Дополнительные возможности:
- Воспроизведение треков в случайном порядке (myDFPlayer.randomAll()).
- Пауза (myDFPlayer.pause()), продолжение (myDFPlayer.start()).
- Воспроизведение треков из папок (myDFPlayer.playFolder(1, 2) — папка 1, трек 2).
Если модуль не работает, проверьте:
✅ Правильность подключения RX/TX
✅ Формат microSD (FAT32)
✅ Название файлов (0001.mp3, 0002.mp3...)
Удачных проектов! 🎵