Воспроизведение музыки и звуков через плеер.

TRY
Offline
Зарегистрирован: 07.05.2013

   Собсственно в чем вопрос, в силу дороговизны различных music shield-ов, решил использовать в качестве вывода музыки простенький плеер http://www.ebay.com/itm/Mini-Fashoin-Clip-Metal-USB-MP3-Music-Media-Play.... По сути, необходимо просто в нужный момент вызывать нажатие кнопок паузы/воспроизведения, вперед, назад. Нажимать физически какой-нибудь сервой это не вариант, хотелось бы подсоединяться на прямую, и управлять кнопками программно, возможно ли это? Хотелось бы выслушать ваши предложения. 

   В догонку, хотел бы спросить насчет выхода звука. В плеере он идет через наушники, можно ли как-нибудь увеличить их звук, или хотя бы одного из динамиков, что бы мелодия была слышна вне одетых наушников? 

Snubist
Offline
Зарегистрирован: 18.02.2013

Почему нет, погугли, где то уже встречал подобную тему.

По поводу звука, есть колонки для ноутов, у них питание от усб, то бишь пять вольт.

TRY
Offline
Зарегистрирован: 07.05.2013

   На самом деле я долго и упорно искал. Нашел совет парня, впаять вместо кнопок оптопары. Сам с ними не работал, но принцип их работы приблезительно понятен. Знаю что бывают разные оптопары, какие бы вы посоветовали для конкретного случая? И как вариант, возможно ли самому с минимальными затратами сделать такие?

   А насчет звука, мне необходимо колонки/динамики для разъема 3.5, как в плеере. Т.к. именно с него и собираюсь воспроизводить все музыкальное дело. Потому интересуюсь возможностью искуственно увеличить громкость наушников. Но вообще, если usb выход колонок можно без напряга заменить на штекер 3.5, то я готов попробывать.

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Много ли файлов проигрывать собираешься?

десятки?

Сотни?

TRY
Offline
Зарегистрирован: 07.05.2013

   Около 10-15. Но разве это принципиально? Понятно что с этим способом легко запариться, но впринципе цели пока позваляют.

   К слову, по наводке людей в гугл вопросах ответах, решил замутить это дело на транзисторах. При подаче питания на базу он будет замыкаться и давать нужный эффект. Единственно что, боюсь испортить плеер при замене кнопок, они там крайне компактно уложены и запаяны, даже сверху чем заклеены. Сегодня уже днем постараюсь скинуть изображения "внутренностей", может что посоветуете.

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011
TRY
Offline
Зарегистрирован: 07.05.2013

Благодарствую, может у вас найдутся пара ссылок на туториалы? Видео на ютубе мало информативны, не совсем понятно каким образом происходит вывод звука, и как управлять этим модулем с ардуины.

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Вот мы с тобой туториал и напишем - я тоже такой модуль заказал для системы голосового оповещения. К нему заказал усилитель трехватный на два канала и пару динамиков - буду експерементировать.

Пока, приложу мануал.

http://yadi.sk/d/iFWmfGUX4kMrW

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

На 12 странице предложеного мануала все расписано - ИМХО то что нужно.

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

А пока ищу чем согласовать 3.3 вольта плеера с 5 вольтами меги.

проще всего поставить что-то типа SN74LVC1T45, но какой же он маленький для прототипирования -)

Ладно sot 23 на проводки паял - и этот припаяю -)

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011
Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Я, кстати запустил модули на которые ссылку давал выше.

7 проводов, и оказалось не каждая карточка катит.

Есть замуты и с конвертацией файла - но у меня все получилось. использовал либу из этой темы немного поправив задержку.

http://youtu.be/lv_ZVD8ahcc

PS: ТТС движек - акапелла (Алена) - на суть текста не обращайте внимания - тестовый прогон.

#include <Wtv020sd16p.h>

int resetPin = 2;  // The pin number of the reset pin.
int clockPin = 3;  // The pin number of the clock pin.
int dataPin = 4;  // The pin number of the data pin.
int busyPin = 5;  // The pin number of the busy pin.

/*
Create an instance of the Wtv020sd16p class.
 1st parameter: Reset pin number.
 2nd parameter: Clock pin number.
 3rd parameter: Data pin number.
 4th parameter: Busy pin number.
 */
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

void setup() {
  //Initializes the module.
  wtv020sd16p.reset();



}

void loop() {
  //Plays synchronously an audio file. Busy pin is used for this method.
  delay(250);
  // Громкость 1-7 ставим на 5
  wtv020sd16p.sendCommand(0xFFF4);
  delay(250);
  wtv020sd16p.playVoice(11);
  delay(10);
  wtv020sd16p.playVoice(12);
  delay(100);
  wtv020sd16p.playVoice(13);
  delay(10);
  wtv020sd16p.playVoice(14);
  delay(10);
  wtv020sd16p.playVoice(15);
  delay(10);
  wtv020sd16p.sendCommand(0xFFF6);
  delay(1000);
}

Пробовал как будет звучать если использовать модуль как речевой информатор - паузы , конечно, заметны но не смертельны.

Инструкция wtv020sd16p.sendCommand с коробки работать не будет - надо в файле Wtv020sd16p.h убрать "private" а в фале *.cpp поправить задержку опытным путем - у меня 40

Gagarin74
Offline
Зарегистрирован: 24.08.2013

Вопрос на засыпку -на МЕГЕ работает ? mp3 -поддерживает ?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

MP3 не держит, работает на любой ардуине.

Gagarin74
Offline
Зарегистрирован: 24.08.2013

а как его температуру заставить проговаривать ?

по ссылки ниже продавец утверждает что это возможно http://geek.kg/mp3module/

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

дома валяется такой плеер . гляну как там подключается. если не ошибаюсь там все на землю замыкается. проблем не должно быть

karduno
Offline
Зарегистрирован: 31.01.2014

Уважаемый Nixoid!Сделал все так, как описано в 11 посте. В указанных файлах сделал исправления.Все равно не "игоает". Даже не получается проиграть файл при подаче питания. Как вы думаете это кривизна рук или модуля? Можно воспользоваться вашим проектом полностью (математикой)?

 

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Эм?

Математикой - вот рабочий пример - имена файлов правильно писал, я помню там еще замуты с конвертированием.

Поискать точно работающие файлы?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Еще не каждая карта катит - я использую на 128, и 512 мб - благо у меня их пучек был - сколько не пробовал большие размеры - не "игоает"

karduno
Offline
Зарегистрирован: 31.01.2014

Nixoid!

Спасибо за столь быстрый ответ.

-не "игоает" - читать "играет"

Под "математикой" я имел ввиду файлики .cpp и .h и сам скетч, т.е. те файлы, которые работают у вас. SD карточки я применял 512 мб и 1г. В ручном режиме все работает.

Я хотел еще поинтересоваться. А сам модуль может быть "кривым", те не предназначен для управления контроллером?

Если не затруднит, скиньте работающие файлы.

Спасибо.

 

 

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Нет, модули все управляються контроллером.

Сейчас поищу.

воспроизведение ad4 файлов

/*
 Example: Control a WTV020-SD-16P module to play voices from an Arduino board.
 Created by Diego J. Arevalo, August 6th, 2012.
 Released into the public domain.
 */

#include <Wtv020sd16p.h>

int resetPin = 2;  // The pin number of the reset pin.
int clockPin = 3;  // The pin number of the clock pin.
int dataPin = 4;  // The pin number of the data pin.
int busyPin = 5;  // The pin number of the busy pin.

/*
Create an instance of the Wtv020sd16p class.
 1st parameter: Reset pin number.
 2nd parameter: Clock pin number.
 3rd parameter: Data pin number.
 4th parameter: Busy pin number.
 */
Wtv020sd16p wtv020sd16p(resetPin,clockPin,dataPin,busyPin);

void setup() {
  //Initializes the module.
  wtv020sd16p.reset();
delay (1000);
pinMode(13, OUTPUT);
}

void loop() {
//Plays synchronously an audio file. Busy pin is used for this method.
  //wtv020sd16p.playVoice(1);
  //Plays asynchronously an audio file.
  wtv020sd16p.playVoice(1);
  //Plays audio file number 1 during 2 seconds.
 digitalWrite(13, HIGH);
  delay(1000);
digitalWrite(13, LOW);
 wtv020sd16p.playVoice(2);
 delay(1000);
  wtv020sd16p.playVoice(3);
  delay(1000);
  wtv020sd16p.playVoice(4);
  delay(1000);
  wtv020sd16p.playVoice(0);
  delay(1000);
  //Pauses audio file number 1 during 2 seconds.  
 // wtv020sd16p.pauseVoice();
 // delay(5000);
  //Resumes audio file number 1 during 2 seconds.
  //wtv020sd16p.pauseVoice();
  //delay(5000);  
  //Stops current audio file playing.
 // wtv020sd16p.stopVoice();
  //Plays synchronously an audio file. Busy pin is used for this method.  
 // wtv020sd16p.asyncPlayVoice(2);
 // delay(2000);   
  //Mutes audio file number 2 during 2 seconds.
 // wtv020sd16p.mute();
 // delay(2000);
  //Unmutes audio file number 2 during 2 seconds.
 // wtv020sd16p.unmute();
  //delay(2000);    
  //Stops current audio file playing.
  //wtv020sd16p.stopVoice();
}
/*
 Wtv020sd16p.cpp - Library to control a WTV020-SD-16P module to play voices from an Arduino board.
 Created by Diego J. Arevalo, August 6th, 2012.
 Released into the public domain.
 */

#include "Arduino.h"
#include "Wtv020sd16p.h"

const unsigned int PLAY_PAUSE = 0xFFFE;
const unsigned int STOP = 0xFFFF;
const unsigned int VOLUME_MIN = 0xFFF0;
const unsigned int VOLUME_MAX = 0xFFF7;

Wtv020sd16p::Wtv020sd16p(int resetPin,int clockPin,int dataPin,int busyPin)
{
  _resetPin=resetPin;
  _clockPin=clockPin;
  _dataPin=dataPin;
  _busyPin=busyPin;
  _busyPinState=HIGH;
  pinMode(_resetPin, OUTPUT);
  pinMode(_clockPin, OUTPUT);
  pinMode(_dataPin, OUTPUT);
  pinMode(_busyPin, INPUT);
}

void Wtv020sd16p::reset(){
  digitalWrite(_clockPin, LOW);
  digitalWrite(_resetPin, HIGH);
  //Reset pulse.
  digitalWrite(_resetPin, LOW);
  delay(5);
  digitalWrite(_resetPin, HIGH);
  //Reset idle to start bit. 
  digitalWrite(_clockPin, HIGH);
  delay(300);
}

void Wtv020sd16p::playVoice(int voiceNumber){  
  sendCommand(voiceNumber);
  _busyPinState=digitalRead(_busyPin);
  while(_busyPinState==HIGH){
    _busyPinState=digitalRead(_busyPin);
  }
}

void Wtv020sd16p::asyncPlayVoice(int voiceNumber){
  sendCommand(voiceNumber);
}

void Wtv020sd16p::stopVoice(){
  sendCommand(STOP);
}

void Wtv020sd16p::pauseVoice(){
  sendCommand(PLAY_PAUSE);
}

void Wtv020sd16p::mute(){
  sendCommand(VOLUME_MIN);
}

void Wtv020sd16p::unmute(){
  sendCommand(VOLUME_MAX);
}

void Wtv020sd16p::sendCommand(unsigned int command) {
  //Start bit Low level pulse.
  digitalWrite(_clockPin, LOW);
  delay(2);
  for (unsigned int mask = 0x8000; mask > 0; mask >>= 1) {
    //Clock low level pulse.
    digitalWrite(_clockPin, LOW);
    delayMicroseconds(50);
    //Write data setup.
    if (command & mask) {
      digitalWrite(_dataPin, HIGH);
    }
    else {
      digitalWrite(_dataPin, LOW);
    }
    //Write data hold.
    delayMicroseconds(50);
    //Clock high level pulse.
    digitalWrite(_clockPin, HIGH);
    delayMicroseconds(100);
    if (mask>0x0001){
      //Stop bit high level pulse.
      delay(2);      
    }
  }
  //Busy active high from last data bit latch.
  delay(40);
}
/*
 Wtv020sd16p.h - Library to control a WTV020-SD-16P module to play voices from an Arduino board.
 Created by Diego J. Arevalo, August 6th, 2012.
 Released into the public domain.
 */

#ifndef Wtv020sd16p_h
#define Wtv020sd16p_h

class Wtv020sd16p
{
public:
  Wtv020sd16p(int resetPin,int clockPin,int dataPin,int busyPin);
  void reset();
  void playVoice(int voiceNumber);
  void asyncPlayVoice(int voiceNumber);
  void stopVoice();
  void pauseVoice();
  void mute();
  void unmute();  void sendCommand(unsigned int command);
  int _resetPin;
  int _clockPin;
  int _dataPin;
  int _busyPin;
  int _busyPinState;
};

#endif

Вот то что есть - проект уже давно запущен и работает.

karduno
Offline
Зарегистрирован: 31.01.2014

Огромное спасибо!

Результаты отпишу  ближе к вечеру.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

DUE имеет встроеный ЦАП... читаеш файло с карты и пихаеш на пин. к пину подключаеш усилитель и динамик и вперед на мины.. работает на ура..

karduno
Offline
Зарегистрирован: 31.01.2014

Уважаемый Nixoid!

Вы не поверите. У меня НИ чего НЕ получилось.

Каждые 4 сек мыргает светодиод, а звука нет.

А так хотелось "речевой информатор"  сделать.

Спасибо!

 

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

А линии точно правильно подсоеденены - у меня тоже головняк был - неправильно пины подтыкал.

И на карточке в моем примере должны быть файлы с расширением ad4 и именами 000, 001, 002, 003, 004

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Скажи мыло - пришлю файло.

karduno
Offline
Зарегистрирован: 31.01.2014

Спасибо за заботу!

raqus@rambler.ru

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

ушло

karduno
Offline
Зарегистрирован: 31.01.2014

Nixoid!

Нет, не получилось. Ваши файлики у меня даже в ручном режиме не играют.

В названия файлов по мануалу должно быть три нолика те 0001.ad.

Да, у меня arduino mini 5v, может по уровням не совпадает?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

я на нано запускал только питание 3.3 вольта, входы напрямую.

посмотри видео внимательно - входы совпадают у нас?

про имя файла мог уже и подзабыть -)

karduno
Offline
Зарегистрирован: 31.01.2014

Nixoid

Поправил имена файликов(добавил ноль) - тетя заговорила.

В очередной раз проверяю соединения

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

матом не ругаеться? 

а то у меня и такое было -)

karduno
Offline
Зарегистрирован: 31.01.2014

Проверил соединения.

Ардуины у нас разные, поэтому относительно видео не могу сказать соответствие.

Динамик у меня подключен на 4 и 5 пины. Если на 2 через усилитель, вся система затыкается.

И после прошивки voice светодиод у меня мерцает, а на видео видны четкие паузы.

Вероятно проблема в олном из двух или ардуино или сам wtv020.

Продолжаю заниматься слабоумием.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

karduno пишет:

Продолжаю заниматься слабоумием.

ну это как раз понятно про слабоумие.. ибо этот плеер + какая нибуть мега2560 по цене практически DUE. так почему сразу не взять DUE  и не парится?

karduno
Offline
Зарегистрирован: 31.01.2014

Puhlyaviy!

Ваш комментарий очень важен для меня, хотя вряд ли поможет.

Потому что у меня уже есть mini  и wtv020. Вашим советом я не воспользуюсь.

Клапауций
Offline
Зарегистрирован: 10.02.2013

Puhlyaviy пишет:

ну это как раз понятно про слабоумие.. ибо этот плеер + какая нибуть мега2560 по цене практически DUE. так почему сразу не взять DUE  и не парится?

вчера мелкие, но по три?(с)

*откручиваю счётчик континиума пространства-времени, стираю глупые поступки, недорого.

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Мини и нано совместимы полность, я прототипирую на нано и шью ничего не меняя в мини.

даже не меняя название платы - они у меня все на 5 вольт и на 328 меге.

на видео можно разобрать в какие пины воткнуты - втыкай так же и у себя.

номера пинов я тоже не меняю - так как они все сходяться на 328 меге.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

karduno пишет:

Потому что у меня уже есть mini  и wtv020. Вашим советом я не воспользуюсь.

огласите тогда весь проект... это будет датчик на открытие двери? типа поздоровался и послал ?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Проект - воспроизведение музыки и звуков через плеер, что и записано в названии темы.

Тема "Флуд и другие глупые вопросы" а также "а купите DUE и не парьтесь" находяться в другом месте, возможно даже на другом форуме.

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

С громкостью поэкспериментируй. может в ноль стоит.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Nixoid пишет:

Проект - воспроизведение музыки и звуков через плеер, что и записано в названии темы.

так и в чем проблема то? раскрываю тему. покупаете плеер, записываете в него музыку. одеваете наушники, и слушаете.. причем тут форум про ардуино?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Точно, спасибо - ты мне глаза открыл.

karduno
Offline
Зарегистрирован: 31.01.2014

Nixoid!

Совершенно согласен, что ардуины одинаковые, но у меня супер-китайчатина, я даже в инете не нашел на нее описание. Возможно, накосячина нумерация пинов. Потыкаю тестером и во вторник обещали дать UNO поиграть. Посмотрю, сравню. При любом раскладе отпишу.

Спасибо за участие.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Nixoid пишет:

Точно, спасибо - ты мне глаза открыл.

я просто пытаюсь понять смысл конструкции по воспроизведению звука на мини... зачем?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

У меня управление голосом на мини.

Слушает и отвечает - и всё это за цену одной DUE.. или даже MEGA

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Nixoid пишет:

У меня управление голосом на мини.

Слушает и отвечает - и всё это за цену одной DUE.. или даже MEGA

звучит громко.. но пока я вижу только плеер.. микрофона и распознавания не вижу..

и чем оно управляет?

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Но и тут темя про плееры, а не про голосовое управление и управление нагрузками, не так ли?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Nixoid пишет:

Но и тут темя про плееры, а не про голосовое управление и управление нагрузками, не так ли?

тут форум про ардуино, а не про плееры :) плееры вон китайцы клепают пачками какие хочеш. ардуино и рядом не стояло... а в теме попытка из железного феликса сделать грамафон...

karduno
Offline
Зарегистрирован: 31.01.2014

Господа!

Не надо так возбуждаться! Каждый имеет право на свое мнение, даже и ошибочное. Давайте жить дружно!

Nixoid
Nixoid аватар
Offline
Зарегистрирован: 16.09.2011

Что не так?

Плеер спецом заточеный для управления с Ардуино.

Управляем ардуино, звук храним на встроенной карте.

Да та же DUE твой любимая - сохранит 512 файлов?

Насколько удобно будет проигрывать музло?

А тут - одна команда...

А боремся мы с железом капризным..

renoshnik
Offline
Зарегистрирован: 11.04.2013

экономим на плеере ....

http://maxoffsky.com/maxoffsky-blog/how-to-play-wav-audio-files-with-arduino-uno-and-microsd-card/

нормально "дуина" воспроизводит и БЕЗ плеера ...

https://www.youtube.com/watch?v=cCTzxiwZyXYhttps://www.youtube.com/watch?v=cCTzxiwZyXY