DFPlayer Noise: исследован, испытан и бип бип бип бип

Потратил целый день на исследования и попытки решить проблему шума DFPlayer. Усилитель работает как положено, так что это не проблема. Я снял видео, чтобы помочь вам лучше понять воспроизводимый звук: https://www.youtube. com/watch?v=uK2kkR0XjFs&feature=youtu.be

Это используемый усилитель/динамик: https://sites.google.com/site/wayneholder/chiptunes

Усилитель с динамиком работает должным образом при использовании другого аналогичного mp3-плеера, например, с компьютера или, возможно, телефона.

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

Здесь я сделал все как один источник питания. Бип-бэп-бэп-бэп...

Я думаю, что исчерпал свои исследования и предпринял следующие попытки:

> -Electrolytic Capacitor at the power terminals
> -Electrolytic Capacitor parallel with ceramic capacitor from negative terminal to VCC in DFPlayer
> -Diode from positive terminal to VCC in DFPlayer
> -Battery Power source; USB power source; Power Supply power source; 5V USB plug regulator power source
> -1k Resistor from TX RX; Rx Tx
> -1-10k resistor from Rx Tx
> -1k between channel to GND
> -Separate power source for each the Arduino, amp, and DFPlayer
> -Tried multiple DFPlayers

Обратите внимание, что усилитель/динамик работает хорошо. Файлы одинаковые и на компе и на сд карте.

Вот мой код:

#include <DFRobotDFPlayerMini.h>

/***************************************************
DFPlayer - A Mini MP3 Player For Arduino
 <https://www.dfrobot.com/index.php?route=product/product&product_id=1121>

 ***************************************************
 This example shows the basic function of library for DFPlayer.

 Created 2016-12-07
 By [Angelo qiao]([email protected])

 GNU Lesser General Public License.
 See <http://www.gnu.org/licenses/> для деталей.
 All above must be included in any redistribution
 ****************************************************/

/***********Notice and Trouble shooting***************
 1.Connection and Diagram can be found here
 <https://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299#Connection_Diagram>
 2.This code is tested on Arduino Uno, Leonardo, Mega boards.
 ****************************************************/

#include <Arduino.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
int counter = 0;
SoftwareSerial mySoftwareSerial(10, 11); // прием, передача
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup()
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Используйте softwareSerial для связи с mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while(true);
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.volume(15);  //Установить значение громкости. От 0 до 30
  delay(1000);
myDFPlayer.enableDAC();  // Включить встроенный ЦАП
}

void loop()
{
  static unsigned long timer = millis();
  if(millis() - timer > 1000 && counter == 0)
  {
   myDFPlayer.play(1);
   Serial.println(F("Music Started"));
   delay(1000);
   Serial.println(F("1 second later..."));
   delay(6000);
   Serial.println(F("7 seconds later..."));
   delay(1000);
   counter =1;
  }


delay(7000);

  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read()); // Распечатать подробное сообщение от DFPlayer для обработки различных ошибок и состояний.
  }
}

void printDetail(uint8_t type, int value){
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}

, 👍5

Обсуждение

Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackexchange.com/rooms/73136/discussion-on-question-by-joshua-roehrig-dfplayer-noise-researched-tried-and)., @Majenko


6 ответов


2

Слышимый вами "бип-бип" — это шум источника питания, вызванный SD-картой. Каждый раз, когда SD-карта читает, питание проваливается, а земля поднимается. Это потому, что эти платы имеют действительно ужасное заземление в своей конструкции. Когерентной заземляющей пластины нет, и аналоговые звуковые секции, и шумные цифровые секции имеют одну и ту же землю без изоляции или фильтрации между ними.

Чтобы уменьшить импеданс заземляющего слоя, вы должны соединить оба контакта GND вместе и сделать это с помощью короткого провода. Лучше было бы модифицировать саму плату и припаять провод прямо между двумя контактами заземления.

Есть также стратегически важные точки заземления, которые можно припаять непосредственно к одному из этих контактов заземления, например, к заземлению развязывающих конденсаторов SD-карты и контакту GND самой SD-карты (если ваши навыки пайки подходит - эти контакты имеют довольно мелкий шаг).

Вся проблема связана с попыткой уместить слишком много в слишком маленьком пространстве. Плата действительно должна была быть сделана в виде 4-слойной платы с (почти) сплошным заземлением и плоскостью питания, чтобы уменьшить импеданс питания. Улучшенная развязка и фильтрация на контакте питания SD-карты (например, PI-фильтр с двумя конденсаторами и ферритовым кольцом или два конденсатора и небольшой резистор) также были бы большим преимуществом.

,

Сегодня у меня были похожие проблемы. Иногда он нормально играл около 10 секунд, а потом начинался шум. Наконец-то уменьшил длину провода Rx и все заработало. Как длина провода связи может вызвать этот шум? Связи может и не быть, если вообще будут такие проблемы подумал я. Но общение происходит корректно, но после этого начинаются проблемы., @Rajesh


2

Спасибо за расследование.

Добавлю свои 2 цента :

Я также столкнулся со случайными отключениями и странными шумами. Я использовал класс Servo в сочетании с DFPlayer на плате Arduino UNO. Оказывается, класс Servo использует таймеры, связанные с контактами 9 и 10. При подключении сервопривода сигналы будут выводиться на эти порты. Так что не подключайте DFPlayer или что-то еще к этим портам. Вероятно, из-за того, что класс Servo отправлял всевозможные данные через последовательное соединение в DFPlayer, модуль останавливал воспроизведение и начинал издавать много случайного шума до конца воспроизведения mp3.

Другие вещи, с которыми я столкнулся и которые могут помочь другим людям: DFPlayer требует MP3 определенной длины. MP3 всего 1-2 секунды не воспроизводятся. +5 секунд вроде нормально. Любая причудливая кодировка MP3 также препятствует воспроизведению MP3. Светодиод загорится, но звука не будет.

В зависимости от библиотеки, используемой для DFPlayer, имена файлов и папок имеют значение. MP3-файлы должны находиться в папке MP3 и называться 0001.mp3, 0002.mp3

Согласно одному из многочисленных технических описаний, для DFPlayer требуется уровень 3,3 В для портов RX и TX, независимо от рабочего напряжения. Так что поставьте туда эти 1K резисторы. Это не повредит модулю.

Двигатели и сервоприводы вызывают много шума в источнике питания, если вы подключаете плату к USB-порту 5 В. Даже небольшие моторы могут генерировать всплески +2А при включении.

Сигналы от других кабелей и устройств также могут мешать последовательному соединению, поэтому в идеале используйте экранированные провода для кабелей TX/RX.

Согласно спецификациям SD-карт некоторых производителей, энергопотребление SD-карты может достигать 100 мА. Сам модуль может производить выходную мощность 3 Вт, что также составляет до 600 мА при 5 В. И добавьте что-то вроде 150 мА для встроенного микроконтроллера. Таким образом, даже у стандартного USB-порта 5 В при 500 мА в некоторых случаях не хватит мощности для управления только Arduino и DFPlayer.

Кто-то обратил внимание на щелчки и шлепки при паузе или включении/выключении: http://work-now-dammit.blogspot. com/2016/08/dfplayer-mp3-module-power-onoff-clicks.html Удалите резистор 0 Ом рядом с 8002 amp. Подключите контакт 1 усилителя 8002 к контакту BUSY (16) модуля.

,

это так полезно! Спасибо, @myhd


1

Я обнаружил, что шум возникает из-за трех проблем:

  • Забыли заземлить ОБА контакта GND на микросхеме DFPlayer.
  • Забыл поставить резисторы 1k в линии Tx и Rx
  • Колебания мощности

Питание — это большая проблема. Когда я запитал свой Arduino источником питания 9 В 2 А, все шумы исчезли. Переключение на питание USB (5 В) привело к тому, что шум вернулся.

,

0

У меня была такая же проблема. Решилось отдельным питанием DFPlayer. Я также заземлил обе стороны плеера, но одного этого было недостаточно.

,

1

Моя проблема & Решение: недавно я пытался управлять DFPlayer с помощью Arduino Pro Mini, но также столкнулся с громкими пульсирующими шумами во время воспроизведения (вместе с музыкальным файлом). Пульсацию можно было увидеть в прицел на одном из проводов динамика. Разгрузка динамика не помогла, использование разных блоков питания не помогло. Кроме того, что касается соединения двух контактов GND DFPlayer вместе, на моей плате в этом нет необходимости, поскольку они уже соединены вместе через металлическую оболочку разъема micro SD.

Тем не менее, я заметил, что когда я пытался перепрограммировать Mini (или даже когда я нажимал кнопку сброса), на короткий промежуток времени пульсация прекращалась и музыкальный файл проигрывался как надо. В моем случае проблема заключалась в линии передачи данных от Mini к контакту Rx на DFPlayer (не было соединения с контактом Tx). Я проверил это, запустив воспроизведение (с пульсирующим шумом), а затем отключив соединение Rx. Это остановило пульсацию, и музыкальный файл заиграл, как и ожидалось.

Программное решение состояло в том, чтобы принудительно перевести контакт передачи на Mini (я использую программный последовательный порт) в состояние LOW сразу после отправки команды Play. Теперь работает нормально.

Обновление: ранее я подключал последовательный выход Mini напрямую к контакту DFPlayer Rx без ограничительного резистора 1K. Теперь, когда резистор установлен, я больше не слышу пульсирующего шума во время воспроизведения, и больше нет необходимости тянуть линию управления к низкому уровню.

,

Спасибо, Боб. Я только что столкнулся с этой же проблемой, и добавление ограничительного резистора на 1 кОм в серии сработало!, @jared.g


0

У меня было множество сумасшедших мелких проблем, подобных этой, с dfplayer, и я перепробовал множество решений с очень противоречивыми результатами. Иногда такая техника, как дополнительное заземление или резистор на выводах tx/rx, работает волшебно, а затем при создании еще одной копии схемы проблема необъяснимым образом возвращается! Вот важная подсказка, которую я еще нигде не видел на форумах, поэтому я хотел добавить ее в микс. Хотя заявлено, что dfplayer работает от 3,3 В до 5 В, я обнаружил, что он намного лучше работает при 3,3 В! При напряжении 5 В возникают проблемы со странным шумом и стабильностью, которые исчезают при напряжении 3,3 В. Вы можете получить очень дешевые и эффективные стабилизаторы на 3,3 В, которые не нужно использовать. Попробуйте запустить его при более низком напряжении и посмотрите, исчезнут ли эти проблемы!

,