Catalex Serial MP3 Player для Arduino UNO: простое подключение и управление
Компоненты и материалы
| Компонент | Количество |
|---|---|
| Arduino UNO | 1 |
| Последовательный MP3-плеер Catalex (v1.0) | 1 |
| Музыкальные файлы (MP3/WAV) на microSD-карте | 1 |
Приложения и онлайн-сервисы
- Arduino IDE
О проекте
Как использовать Serial MP3 Player v1.0 от Catalex
Модуль управляется по последовательному интерфейсу. Ниже приведены основные шаги и полный рабочий код.
1. Подключение библиотек и пинов
#include <SoftwareSerial.h>
#define ARDUINO_RX 5 // подключается к TX модуля
#define ARDUINO_TX 6 // подключается к RX модуля
SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);
2. Команды протокола (из даташита)
// Формат команды: 0x7E FF 06 CMD 00 XX YY EF
// XX, YY — данные (старший и младший байты)
#define NEXT_SONG 0X01
#define PREV_SONG 0X02
#define CMD_PLAY_W_INDEX 0X03 // требует номер трека
#define VOLUME_UP_ONE 0X04
#define VOLUME_DOWN_ONE 0X05
#define CMD_SET_VOLUME 0X06 // громкость 0..30 (0x1E)
#define CMD_PLAY_WITHVOLUME 0X22 // XX=громкость, YY=трек
#define CMD_SEL_DEV 0X09 // выбор носителя
#define DEV_TF 0X02 // microSD-карта
#define SLEEP_MODE_START 0X0A
#define SLEEP_MODE_WAKEUP 0X0B
#define CMD_RESET 0X0C
#define CMD_PLAY 0X0D
#define CMD_PAUSE 0X0E
#define CMD_PLAY_WITHFOLDER 0X0F // папка \01\002xxx.mp3
#define STOP_PLAY 0X16
#define PLAY_FOLDER 0X17
#define SET_CYCLEPLAY 0X19
#define SET_DAC 0X17
3. Функция отправки команды
static int8_t Send_buf[8] = {0};
void sendCommand(int8_t command, int16_t dat) {
delay(20);
Send_buf[0] = 0x7E;
Send_buf[1] = 0xFF;
Send_buf[2] = 0x06;
Send_buf[3] = command;
Send_buf[4] = 0x00; // 0x00 — без обратной связи
Send_buf[5] = (int8_t)(dat >> 8);
Send_buf[6] = (int8_t)(dat);
Send_buf[7] = 0xEF;
for (uint8_t i = 0; i < 8; i++) {
mySerial.write(Send_buf[i]);
}
}
4. Инициализация в setup()
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(500); // ожидание инициализации чипа
sendCommand(CMD_SEL_DEV, DEV_TF); // выбрать TF-карту
delay(200);
}
5. Воспроизведение в loop()
void loop() {
// Воспроизвести трек 1 с громкостью 15 (0x0F)
sendCommand(CMD_PLAY_WITHVOLUME, 0x0F01);
delay(1000000); // пауза 1000 сек перед следующей командой
}
Загрузка музыки на SD-карту
Чип считывает файлы в алфавитном порядке. Для гарантированного порядка:
- Создайте папки
01,02… - Назовите файлы
001track.mp3,002track.mp3и т.д.
Тогда команда CMD_PLAY_WITHFOLDER или PLAY_FOLDER будет воспроизводить нужные треки.
Дополнительно: использование Hardware Serial
Для плат вроде STM32 можно использовать аппаратный UART вместо SoftwareSerial — принцип тот же.
Полный тестовый скетч
// Переработано Javier Muñoz 10/11/2016
#include <SoftwareSerial.h>
#define ARDUINO_RX 5
#define ARDUINO_TX 6
SoftwareSerial mySerial(ARDUINO_RX, ARDUINO_TX);
// ... (определения команд как выше) ...
static int8_t Send_buf[8] = {0};
void setup() {
Serial.begin(9600);
mySerial.begin(9600);
delay(500);
sendCommand(CMD_SEL_DEV, DEV_TF);
delay(200);
}
void loop() {
sendCommand(CMD_PLAY_WITHVOLUME, 0x0F01);
delay(1000000);
}
void sendCommand(int8_t command, int16_t dat) {
delay(20);
Send_buf[0] = 0x7E;
Send_buf[1] = 0xFF;
Send_buf[2] = 0x06;
Send_buf[3] = command;
Send_buf[4] = 0x00;
Send_buf[5] = (int8_t)(dat >> 8);
Send_buf[6] = (int8_t)(dat);
Send_buf[7] = 0xEF;
for (uint8_t i = 0; i < 8; i++) {
mySerial.write(Send_buf[i]);
Serial.print(Send_buf[i], HEX); // отладка в монитор порта
}
Serial.println();
}
Схема подключения
Питание модуля 3.2–5 В, потребление ~200 мА.
Производственный процесс
- Ройаль: слияние акустической традиции и автоматизированной точности
- Усилить сообщение о кризисе обслуживания: скачайте блюз и регги версии «Песни кризиса обслуживания»
- Интерактивная кукла «Игра в кальмара» на Arduino UNO: DIY-проект
- Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
- FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
- DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
- Создание пользовательских LED-часов с будильником — видно с 12 метров
- Find Me: Умный поисковик вещей на Arduino и Bluetooth
- Оптимизированные решения питания для проектов на Arduino
- Как воспроизводить аудио с Arduino UNO и DFPlayer Mini – Пошаговое руководство