Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Catalex Serial MP3 Player для Arduino UNO: простое подключение и управление

Компоненты и материалы

КомпонентКоличество
Arduino UNO1
Последовательный MP3-плеер Catalex (v1.0)1
Музыкальные файлы (MP3/WAV) на microSD-карте1

Приложения и онлайн-сервисы

О проекте

Catalex Serial MP3 Player для Arduino UNO: простое подключение и управление

Как использовать 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-карту

Чип считывает файлы в алфавитном порядке. Для гарантированного порядка:

Тогда команда 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 мА.

Catalex Serial MP3 Player для Arduino UNO: простое подключение и управление

Производственный процесс

  1. Ройаль: слияние акустической традиции и автоматизированной точности
  2. Усилить сообщение о кризисе обслуживания: скачайте блюз и регги версии «Песни кризиса обслуживания»
  3. Интерактивная кукла «Игра в кальмара» на Arduino UNO: DIY-проект
  4. Сборка Bluetooth-робота-шпиона на Arduino с управлением с телефона
  5. FlickMote: жестовое IR-пульт для умного дома на Arduino 101 и ультразвуковом датчике
  6. DIY Arduino TV-B-Gone: универсальный пульт для выключения любого телевизора
  7. Создание пользовательских LED-часов с будильником — видно с 12 метров
  8. Find Me: Умный поисковик вещей на Arduino и Bluetooth
  9. Оптимизированные решения питания для проектов на Arduino
  10. Как воспроизводить аудио с Arduino UNO и DFPlayer Mini – Пошаговое руководство