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

Arduino Mp3-плеер Catalex

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

Arduino UNO
× 1
Серийный MP3-плеер от catalex
× 1
Хорошая фанковая музыка
× 1

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

IDE Arduino

Об этом проекте

Как использовать SERIAL MP3 PLAYER V1.0 от CATALEX:

  • Сначала загрузите библиотеки как обычно:
  #include   
  • Теперь мы выбираем, какие контакты Arduino будут подключены к mp3-плееру, и инициализируем последовательный протокол.
  #define ARDUINO_RX 5 // должен подключиться к TX модуля последовательного MP3-плеера #define ARDUINO_TX 6 // подключиться к RX модуля SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // инициализировать последовательный протокол, сообщить в myserial, контакты TX и RX  
  • Здесь я только что перевел на #define материал из таблицы:
  //////////////////////////////////////////// //////////////////////////////////////// // все команды, необходимые в таблице данных ( http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) static int8_t Send_buf [8] ={0}; // MP3-плеер не распознает приказы в строке 8 int // 0X7E FF 06 command 00 00 00 EF; (если команда =01 порядок следующей песни) #define NEXT_SONG 0X01 #define PREV_SONG 0X02 #define CMD_PLAY_W_INDEX 0X03 // ТРЕБУЮТСЯ ДАННЫЕ (номер песни) #define VOLUME_UP_ONE 0X04 #define VOLUME_ATA_DOWN_DOWN_DIN_VOLUME_V05 громкости от 0 до 30 (0x1E)) #define SET_DAC 0X17 #define CMD_PLAY_WITHVOLUME 0X22 // данные необходимы 0x7E 06 22 00 xx yy EF; (xx volume) (yy номер песни) #define CMD_SEL_DEV 0X09 // SELECT STORAGE УСТРОЙСТВО, НЕОБХОДИМЫ ДАННЫЕ #define DEV_TF 0X02 // ПРИВЕТ, IM НЕОБХОДИМЫЕ ДАННЫЕ #define SLEEP_MODE_START 0X0A #define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0CfDefine CMD_RESET 0X0Cf # RESET_CMD_RESET 0X0C // CHIPD RESET # ВОСПРОИЗВЕДЕНИЕ ПРИОСТАНОВЛЕНО #define CMD_PLAY_WITHFOLDER 0X0F // НЕОБХОДИМЫ ДАННЫЕ, 0x7E 06 0F 00 01 02 EF; (воспроизвести песню в каталоге \ 01 \ 002xxxxxx.mp3 #define STOP_PLAY 0X16 #define PLAY_FOLDER 0X17 // нужны данные 0x7E 00 01 XX EF; (воспроизвести папку 01) (значение xx нас не волнует) #define SET_CYCLEPLAY 0X19 // необходимы данные 00 start; 01 close #define SET_DAC 0X17 // данные необходимы 00 start DAC OUTPUT; 01 DAC no output ////////////////////////////// ////////////////////////////////////////////////// ////  
  • Микросхема MP3 не поддерживает заказы, сделанные из массива int [8] в этом формате.
  0x7E FF aa bb 00 xx yy EF  

Где:

  • первое и последнее int фиксируются значениями 0x7E и 0xEF
  • аа это номер версии, просто укажите 0x06;
  • bb это фактическая команда управления, указанная в предыдущем пункте.
  • xx это первый b int данных
  • гг является вторым целым числом данных

И это фактическая функция, которая строит массив. Нам просто нужно выбрать один из #defined команды и введите значение данных.

  void sendCommand (команда int8_t, int16_t dat) {задержка (20); Send_buf [0] =0x7e; // начальный байт Send_buf [1] =0xff; // версия Send_buf [2] =0x06; // количество байтов команды без начального и конечного байтов Send_buf [3] =command; // Send_buf [4] =0x00; // 0x00 =нет обратной связи, 0x01 =Feedback Send_buf [5] =(int8_t) (dat>> 8); // datah Send_buf [6] =(int8_t) (dat); // данные Send_buf [7] =0xef; // конечный байт for (uint8_t i =0; i <8; i ++) // {mySerial.write (Send_buf [i]); }}  

В функции настройки нам нужно выбрать подходящее устройство для TF и ​​дать ему время на установление (магия асинхронного процесса):

  void setup () {mySerial.begin (9600); // Запускаем последовательный порт для нашего последовательного монитора! delay (500); // Ожидаем завершения инициализации чипа sendCommand (CMD_SEL_DEV, DEV_TF); // выбираем задержку TF-карты (200); // ждем 200 мс}  

В цикле я просто проиграл песню с пометкой 001:

  void loop () {sendCommand (CMD_PLAY_WITHVOLUME, 0X0F01); // проигрываем первую песню с задержкой класса 15 (1000000); // программа каждые 100 секунд будет отправлять опцию воспроизведения на чип catalex}  

Как загрузить песни на SD-карту:

Как говорится в даташите на очень плохом английском:

Микросхема Mp3 считывает .mp3 или .wav в алфавитном порядке, поэтому если мы создадим папки с именами 01, 02. И песни с именем 001xxxxx.mp3 , 002xxxx.mp3 . Мы можем быть уверены в том, какую песню / папку мы используем.

Здесь у вас есть бесплатная звуковая библиотека.

С ДНЕМ!

ДОПОЛНИТЕЛЬНО:
тот же код, но с использованием аппаратного последовательного порта (мне пришлось для моей платы STM32)

Код

  • ТЕСТИРОВАНИЕ устройства.
ТЕСТИРОВАНИЕ устройства Arduino
инициализировать и воспроизвести одну песню с объемом 30
 // код, измененный Хавьером Муньосом 10/11/2016, спросите меня по адресу [email protected]#include  #define ARDUINO_RX 5 // должен подключиться к TX Модуль последовательного MP3-плеера # define ARDUINO_TX 6 // подключаемся к RX модуля SoftwareSerial mySerial (ARDUINO_RX, ARDUINO_TX); // инициализируем последовательный протокол, сообщаем myserial, какие контакты являются TX и RX /////////// ////////////////////////////////////////////////// ///////////////////////// все команды, необходимые в даташите (http://geekmatic.in.ua/pdf/Catalex_MP3_board.pdf) статические int8_t Send_buf [8] ={0}; // MP3-плеер не распознает заказы в строке 8 int // 0X7E FF 06 command 00 00 00 EF; (if command =01 следующий порядок песни) #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 // ТРЕБУЮТСЯ ДАННЫЕ (количество от 0X до определения объема от 0 до 17) define СМ D_PLAY_WITHVOLUME 0X22 // данные необходимы 0x7E 06 22 00 xx yy EF; (xx volume) (yy number of song) #define CMD_SEL_DEV 0X09 // ВЫБРАТЬ УСТРОЙСТВО ХРАНИЛИЩА, ТРЕБУЮТСЯ ДАННЫЕ #define DEV_TF 0X02 // HELLO, IM THE DATA REQUIRED #define SLEEP_MODE_START 0X0A # define SLEEP_MODE_WAKEUP 0X0B #define CMD_RESET 0X0C // CHIP RESET #define CMD_PLAY 0X0D // RESUME PLAYBACK #defin CMD_PAUSE 0X0E // PLAYBACK IS_OLD 0_EXE 0_WED_WAYBACK IS_OLD_DATA 0_CM07; (воспроизвести песню в каталоге \ 01 \ 002xxxxxx.mp3 # define STOP_PLAY 0X16 #define PLAY_FOLDER 0X17 // данные необходимы 0x7E 06 17 00 01 XX EF; (воспроизвести 01 папку) (значение xx нам все равно) #define SET_CYCLEPLAY 0X19 // данные нужны 00 start; 01 close # define SET_DAC 0X17 // данные необходимы 00 start DAC OUTPUT; 01 DAC no output ////////////////////////////// ////////////////////////////////////////////////// //// void setup () {Serial.begin (9600); // Запускаем наши последовательные coms для последовательного монитора в нашем pcmySerial.begin (9600); // запускаем наши Serial coms для MP3delay (500); // ждем инициализация чипа завершена sendCommand (CMD_SEL_DEV, DEV_TF); // выбираем задержку TF-карты (200); // ждем 200 мс} void loop () {sendCommand (CMD_PLAY_WITHVOLUME, 0X0F01); // проигрываем первую песню с объемом 15 classdelay (1000000); // программа будет отправлять параметр воспроизведения каждые 100 секунд на чип catalex} 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 =нет обратной связи, 0x01 =Feedback Send_buf [5] =(int8_t) (dat>> 8); // datah Send_buf [6] =(int8_t) (dat); // данные Send_buf [7] =0xef; // конечный байт for (uint8_t i =0; i <8; i ++) // {mySerial.write (Send_buf [i]); // отправляем бит в последовательный mp3 Serial.print (Send_buf [i], HEX); / / отправить бит на монитор последовательного порта на ПК} Serial.println ();} 

Схема

В даташите видно, что напряжение питания может варьироваться от 3,2 до 5 В.
с потреблением 200мА

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

  1. Игрок на фортепиано
  2. Вставьте эти служебные песни на свой MP3-плеер
  3. Сборка Squid Games Doll с использованием Arduino UNO
  4. Arduino Spybot
  5. FlickMote
  6. Самодельный телевизор B-Gone
  7. Основные часы
  8. Найди меня
  9. Arduino Power
  10. Воспроизведение звука в Arduino