MP3-TF-16P работает только при подключении к последовательному монитору

Собираю проект с Arduino Nano и компонентом в теме, который, насколько я понимаю, можно уподобить DFPlayerMini (не уверен, что это одно и то же или это просто дешевая подделка).

Следуя одному из миллионов руководств в сети, мне удалось заставить его работать, я могу правильно воспроизводить аудиофайлы с SD-карты, но странно то, что это работает только тогда, когда я подключен к Arduino. с открытым последовательным монитором в моей IDE: в тот момент, когда я закрываю IDE и подключаю все через Vin или любым другим способом, включая питание USB от ПК, он ничего не делает.

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

И код, запускающий все это, выглядит следующим образом

main.cpp

#include <Arduino.h>
#include <modules/Sound.h>

#define BTN 3
#define TX 10
#define RX 11

Sound sound(TX, RX);

void setup() {
  Serial.begin(9600);
  Serial.println("Init");
  pinMode(BTN, INPUT);
  
  if (!sound.init()) {
    Serial.println("Nope");
  }

  sound.playInitSound();
}

void loop() {
  // несвязанные вещи
}

модули/Sound.h

#include <Arduino.h>
#include <DFRobotDFPlayerMini.h>
#ifndef __SOUND__
#define __SOUND__

#define SOUND_POWER_UP   1
#define SOUND_POWER_DOWN 2

class Sound {
    public:
        Sound(uint8_t txPin, uint8_t rxPin);
        boolean init();
        void playInitSound();
    protected:
        DFRobotDFPlayerMini soundboard;
        uint8_t txPin;
        uint8_t rxPin;
};

#endif

модули/Sound.cpp

#include <Arduino.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
#include "modules/Sound.h"

Sound::Sound(uint8_t txPin, uint8_t rxPin) {
    this->txPin = txPin;
    this->rxPin = rxPin;
}

boolean Sound::init() {
    SoftwareSerial mySerial(txPin, rxPin);
    mySerial.begin(9600);
    boolean working = soundboard.begin(mySerial);
    if (working) {
        soundboard.volume(10);
    }
    return working;
}

void Sound::playInitSound() {
    soundboard.play(SOUND_POWER_UP);
}

Как я уже сказал, все работает, пока я подключен к последовательному монитору из IDE (если это имеет значение, я использую PlatformIO в VSCode в Linux).

Я также попытался использовать часть if (!sound.init()), чтобы светодиод arduino циклически мигал в случае сбоя, и он действительно начинает мигать.

Есть мысли? Я могу как-нибудь добавить дополнительную информацию, чтобы помочь в устранении неполадок?

ОБНОВЛЕНИЕ:

Я попытался удалить все случаи использования Serial, но это не помогло

Я начал думать, что, возможно, это была неисправная Arduino, поэтому я переключился на другой контроллер, и этот ведет себя немного иначе: звуковой модуль инициализируется (я не вижу мигающего светодиода, который означал бы отказ), но нет звука воспроизводится.

Основное различие между двумя контроллерами заключается в том, что "неисправный" у одного новый загрузчик, у частично работающего старый загрузчик. Не уверен, что это имеет хоть какой-то смысл.

Обновление 2:

Arduino со старым загрузчиком работает просто отлично, непонятно почему

, 👍0

Обсуждение

@jsotola К сожалению, это не помогает. Я удалил все, что связано с последовательным интерфейсом, и он все еще не работает, если он не подключен к последовательному монитору. Однако ситуация немного меняется при смене контроллера. Я обновляю пост, чтобы отразить эти последние выводы., @Luca

эта часть сбивает с толку ... «в тот момент, когда я закрываю IDE и подключаю все через Vin или любым другим способом, включая питание USB от ПК, он ничего не делает» .... происходит ли сбой, просто закрывая программа IDE? ... это питание от Вин вызывает сбой?, @jsotola

@jsotola, как бы я его ни заряжал, будь то через Vin или через USB, возникает проблема. Я начинаю думать, что это плата неисправна, потому что другая, которая у меня есть, работает нормально., @Luca

У меня такая же проблема. Вы нашли способ заставить его работать?, @user86864

@ user86864, к сожалению, нет. Я убежден, что плата неисправна. Любая другая плата работает. Я предлагаю приобрести новую плату, может быть, дешевую, и попробовать ее., @Luca