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;
}
}
@Joshua Roehrig, 👍5
Обсуждение6 ответов
Слышимый вами "бип-бип" — это шум источника питания, вызванный SD-картой. Каждый раз, когда SD-карта читает, питание проваливается, а земля поднимается. Это потому, что эти платы имеют действительно ужасное заземление в своей конструкции. Когерентной заземляющей пластины нет, и аналоговые звуковые секции, и шумные цифровые секции имеют одну и ту же землю без изоляции или фильтрации между ними.
Чтобы уменьшить импеданс заземляющего слоя, вы должны соединить оба контакта GND вместе и сделать это с помощью короткого провода. Лучше было бы модифицировать саму плату и припаять провод прямо между двумя контактами заземления.
Есть также стратегически важные точки заземления, которые можно припаять непосредственно к одному из этих контактов заземления, например, к заземлению развязывающих конденсаторов SD-карты и контакту GND самой SD-карты (если ваши навыки пайки подходит - эти контакты имеют довольно мелкий шаг).
Вся проблема связана с попыткой уместить слишком много в слишком маленьком пространстве. Плата действительно должна была быть сделана в виде 4-слойной платы с (почти) сплошным заземлением и плоскостью питания, чтобы уменьшить импеданс питания. Улучшенная развязка и фильтрация на контакте питания SD-карты (например, PI-фильтр с двумя конденсаторами и ферритовым кольцом или два конденсатора и небольшой резистор) также были бы большим преимуществом.
Сегодня у меня были похожие проблемы. Иногда он нормально играл около 10 секунд, а потом начинался шум. Наконец-то уменьшил длину провода Rx и все заработало. Как длина провода связи может вызвать этот шум? Связи может и не быть, если вообще будут такие проблемы подумал я. Но общение происходит корректно, но после этого начинаются проблемы., @Rajesh
Спасибо за расследование.
Добавлю свои 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
Я обнаружил, что шум возникает из-за трех проблем:
- Забыли заземлить ОБА контакта GND на микросхеме DFPlayer.
- Забыл поставить резисторы 1k в линии Tx и Rx
- Колебания мощности
Питание — это большая проблема. Когда я запитал свой Arduino источником питания 9 В 2 А, все шумы исчезли. Переключение на питание USB (5 В) привело к тому, что шум вернулся.
У меня была такая же проблема. Решилось отдельным питанием DFPlayer. Я также заземлил обе стороны плеера, но одного этого было недостаточно.
Моя проблема & Решение: недавно я пытался управлять DFPlayer с помощью Arduino Pro Mini, но также столкнулся с громкими пульсирующими шумами во время воспроизведения (вместе с музыкальным файлом). Пульсацию можно было увидеть в прицел на одном из проводов динамика. Разгрузка динамика не помогла, использование разных блоков питания не помогло. Кроме того, что касается соединения двух контактов GND DFPlayer вместе, на моей плате в этом нет необходимости, поскольку они уже соединены вместе через металлическую оболочку разъема micro SD.
Тем не менее, я заметил, что когда я пытался перепрограммировать Mini (или даже когда я нажимал кнопку сброса), на короткий промежуток времени пульсация прекращалась и музыкальный файл проигрывался как надо. В моем случае проблема заключалась в линии передачи данных от Mini к контакту Rx на DFPlayer (не было соединения с контактом Tx). Я проверил это, запустив воспроизведение (с пульсирующим шумом), а затем отключив соединение Rx. Это остановило пульсацию, и музыкальный файл заиграл, как и ожидалось.
Программное решение состояло в том, чтобы принудительно перевести контакт передачи на Mini (я использую программный последовательный порт) в состояние LOW сразу после отправки команды Play. Теперь работает нормально.
Обновление: ранее я подключал последовательный выход Mini напрямую к контакту DFPlayer Rx без ограничительного резистора 1K. Теперь, когда резистор установлен, я больше не слышу пульсирующего шума во время воспроизведения, и больше нет необходимости тянуть линию управления к низкому уровню.
Спасибо, Боб. Я только что столкнулся с этой же проблемой, и добавление ограничительного резистора на 1 кОм в серии сработало!, @jared.g
У меня было множество сумасшедших мелких проблем, подобных этой, с dfplayer, и я перепробовал множество решений с очень противоречивыми результатами. Иногда такая техника, как дополнительное заземление или резистор на выводах tx/rx, работает волшебно, а затем при создании еще одной копии схемы проблема необъяснимым образом возвращается! Вот важная подсказка, которую я еще нигде не видел на форумах, поэтому я хотел добавить ее в микс. Хотя заявлено, что dfplayer работает от 3,3 В до 5 В, я обнаружил, что он намного лучше работает при 3,3 В! При напряжении 5 В возникают проблемы со странным шумом и стабильностью, которые исчезают при напряжении 3,3 В. Вы можете получить очень дешевые и эффективные стабилизаторы на 3,3 В, которые не нужно использовать. Попробуйте запустить его при более низком напряжении и посмотрите, исчезнут ли эти проблемы!
- Хочу создать Bluetooth audio control (увеличение/уменьшение громкости, воспроизведение, пауза и т.д.) для смартфона
- Как подключить ардуино к разъему для наушников?
- Подключить Arduino к телефонной линии?
- Генерация белого шума звуковой частоты с помощью Arduino Mini Pro
- Транзисторный усилитель для управления динамиком с использованием ШИМ Arduino
- Передавать аудио с Arduino на устройство по Wi-Fi
- Ардуино - Воспроизведение файлов WAV с помощью зуммера
- Сопряжение наушников TRRS с Arduino Uno
Комментарии не для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackexchange.com/rooms/73136/discussion-on-question-by-joshua-roehrig-dfplayer-noise-researched-tried-and)., @Majenko