Помогите разобраться с UART DFPlayer Mini 2.0

Тема в разделе "Arduino & Shields", создана пользователем Unruly, 27 ноя 2014.

  1. DrProg

    DrProg Вечный нерд

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

    Tomasina Сушитель лампочек Модератор

    Onkel, как модуль запитан и какая громкость? Потому как:
     
    Последнее редактирование: 5 дек 2015
  3. Onkel

    Onkel Гуру

    честно запитан, через отдельный степ даун.
     
  4. Да. тема не думает затухать.
    Вступил сегодня на те же грабли.

    Сделал ВСЕ как учили выше.
    использовал усилитель громкости родной даже (DFRobot 386AMP Module V2).
    (громкость на усилителе, есессно крутил во все стороны если что)
    Звук на 30 единиц (библиотека DFPlayer-Mini-mp3-master.zip)
    из динамика - еле слышно (ну прям совсем еле еле)
    питание 5В UNO. резисторы на 1КОм.
    использовал динамик 8Ом 05W и ПХ 05W (они рядом на фото) - результат тот же.
    пробовал отключать кабель от компа, запитывал от кроны 9В. но эффект.
    ...
    Так что будем покупать отдельный шилд с mp3 за бешанные бабки..но если и там такая же фигня ((((
    С уважением, Владимир.
     

    Вложения:

    • 1.jpg
      1.jpg
      Размер файла:
      1,5 МБ
      Просмотров:
      1.180
    Последнее редактирование: 17 дек 2015
  5. вот он:
    (1800 рэ в московской рознице, кстати)
    Посоветуете, или те же грабли, вид сбоку?
    (надо для робота, чтобы по сигналу от разных датчиков разный треп был)
    С уважением, ЯВВ.
     

    Вложения:

    • 2.jpg
      2.jpg
      Размер файла:
      112 КБ
      Просмотров:
      1.041
  6. вот так оно выглядит:
     

    Вложения:

    • 2.jpg
      2.jpg
      Размер файла:
      927,6 КБ
      Просмотров:
      1.113
  7. Onkel

    Onkel Гуру

    у меня он с динамиком 5 Ом не очень громко, но не еле слышно, слышно на полватта точно.
    Купите колонки с питанием от usb, подключите к 5 В питанию , к линии плейера и будем вам счастье. Я купил на днях колонки за 300 руб. Там и динамики уже есть...
     
  8. Купил-таки рекламированный выше девайс - плату VS1053 MP3 Shield,
    все работает без заморочек.
    ч.т.д.
    С уважением, Владимир.
     
  9. Nerosis

    Nerosis Нуб

    Доброго всем времени!
    Ребят, просвятите нуба, пожалуйста. Честно, сломал голову уже. Есть сабж, подключеный к ардуино, тестовые скетчи работают без проблем, а вот казалось бы простую задумку реализовать не получается...
    Смысл вот в чем... Имеем, скажем, 2 кнопки. Нажали одно и удерживаем, пока удерживаем проигрываеся файл 0001, отпустили получили тишину. Зажали и держим вторую, пока держим проигрывается 0002, отпустили получили тишину.
    меня хватило на:
    if(btn=HIGH)
    {
    mp3_play(1);
    }
    else if(btn=LOW)
    {
    mp3_stop();
    }
    Но проблема в том, что пока кнопка нажата, ардуино без остановки шлет mp3_play(1); и как итог получаем из динамика Ик-ик-ик-ик-ик-ик-ик-ик...
    Да и еще, проблема в том, что желательно это все сделать без delay(); чтоб не тормозить всю программу.
    Буду благодарен за помощь.
     
  10. imMan

    imMan Нерд

    Для начала if(btn=HIGH) уже неправильно, = и == разные вещи
     
  11. Nerosis

    Nerosis Нуб

    Набирал руками с телефона. Смысл написанного в целом понятен. Вопрос в другом...
     
  12. imMan

    imMan Нерд

    Может использовать while(btn==HIGH){} ?
     
  13. Nerosis

    Nerosis Нуб


    while(btn==HIGH)
    {
    mp3_play (1);
    }

    Так же получаем из динамика Ик-ик-ик-ик-ик-ик-ик-ик... потому как постоянно шлет mp3_play (1); и подвешивает выполнение программы полностью
     
  14. lerik2703

    lerik2703 Гик

    Вам по мимо текущего состояния кнопки ещё нужно добавить сохраненное значение ,как то так
    Код (C++):
      newStateButton = digitalRead(PinButton);
     if (StateButton != newStateButton) {
        if (newStateButton)
          mp3_play (1);
        else
          mp3_stop();

        StateButton = newStateButton;
      }
     
    соответственно если кнопка нажата digitalRead возвращает 1
     
  15. Nerosis

    Nerosis Нуб

    Вот спасибо, добрый человек!!!
    Вот это то, что нужно!!!
    Спасибо!
     
  16. jaip

    jaip Нуб

    Всем привет!
    Прошу помочь.
    Имеется ардуино, с подключенным плеером и следующим кодом:
    Код (C++):

    #define v A0



    byte play[] = {0x7E, 0xFF, 0x06, 0x03, 0x00, 0x00, 0xB6, 0xFE, 0x42, 0xEF};

    byte stat[] = {0x7E, 0xFF, 0x06, 0x43, 0x01, 0x00, 0x00, 0xFE, 0xB7, 0xEF};



    void setup() {

      Serial.begin(9600);
      while (!Serial);
     
      pinMode(v, OUTPUT);
      digitalWrite(v, LOW);
      delay(100);
      digitalWrite(v, HIGH);



      delay(3000);
      for (int i = 0; i < 10; i++) Serial.write(play[i]);


      delay(3000);
      for (int i = 0; i < 10; i++) Serial.write(stat[i]);

    }

    void loop() {
      if (Serial.available() > 0) Serial.write(Serial.read());

     

    }
     
    Плеер подключен к 0 и 1 контакту (питается через пин A0, сделано так для перезагрузки плеера вместе с перезагрузкой ардуинки). Воспроизведение успешно запускается.
    При поступлении команды на serial-вход ардуинка успешно перенаправляет её на выход. Я смотрю за работой через Hterm, при отправке правильных команд можно управлять воспроизведением (например при отправке 7E FF 06 01 00 00 00 FE FA EF - плеер переключается на следующий трек). Все выглядит так, что отправка команд на плеер работает без нареканий.
    Но! Я ни разу не смог получить ответа от плеера. Ни при отправке команды 43 (запрос громкости, в коде), ни при окончании воспроизведения файла, ни при отправке команд из Hterm.
    Подскажите, плз, в какую сторону копать?
     
  17. Onkel

    Onkel Гуру

    а ардуино не ёк? ВСе-таки большой ток давать нельзя через пины
    вот что непонятно
    а чем же тогда ардуина слушает и чем вы перенаправляете? У вас два uart'а?
     
  18. ostrov

    ostrov Гуру

    А зачем от него ответы получать? Громкость выставляется программно, соответственно она всегда известна, а для определения когда трек закончился удобнее всего использовать ногу BUSY.
     
  19. jaip

    jaip Нуб

    Сразу прошу прощения за то, что могу невнятно выражать мысли, ибо совсем нуб.

    У меня ардуино уно, с одним uart.
    Я имел ввиду эту строчку кода:
    f(Serial.available()>0) Serial.write(Serial.read());

    все, что приходит на rx сразу же отправляется на tx. T.е. я могу отправить команду с терминала компа и она сразу возвращается в терминал и на плеер (и это работает, т.е. трэки переключаются, громкость меняется и т.д.), и наоборот, если плеер что-то отправляет - я ожидаю увидеть это в терминале (также эта команда отправится обратно плееру, но думаю ему от этого хуже не станет) - этого не происходит, т.е. от плеера не видно никаких сообщений.

    По поводу питания - спасибо, учту (пока проблем не было).
     
  20. jaip

    jaip Нуб

    Попробовал использовать шафл, оказалось, что никакой он не случайный, поэтому пришла в голову следующая идея: запрашивать с плеера количество файлов и генерить случайный номер для запуска на ардуинке + не хочется занимать пин под BUSY. Ну и в конце концов - просто разобраться)