Hola
estoy utilizando un módulo DF Player Mini al que quería controlar el encendido y apagado a través de un Arduino Uno.
Quería hacer algo parecido a lo que he visto en la guía de esta página web: Power saving techniques for microprocessors, en la sección de "Powering off external devices". Es decir, utilizar un pin digital (por ejemplo el 8), definiéndolo como OUTPUT y estado HIGH conectado al pin de Vcc del módulo DF para alimentarlo, y estado LOW cuando quiera apagarlo.
Sin embargo, cuando lo hago se genera mucho ruido en el altavoz y es incapaz de reproducir ninguna pista (o si lo hace queda oculto por el ruido). He probado conectando la resistencia de 220 ohm (entre el Vcc del DF y el pin 8 del arduino) y el condensador de 0.1 uF (entre el Vcc del DF y GND), pero no hay ninguna mejora.
El código que estoy utilizando es el siguiente:
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
int Control_DF = 8;
int serial1 = 10;
int serial2 = 11;
SoftwareSerial mySoftwareSerial(serial1, serial2); // RX, TX.
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
void setup() {
digitalWrite(Control_DF, HIGH);
pinMode(Control_DF, OUTPUT);
mySoftwareSerial.begin(9600);
Serial.println();
Serial.println(F("DFRobot DFPlayer Mini Demo"));
Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use softwareSerial to communicate with 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){
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(25);
myDFPlayer.play(1);
}
void loop() {
}
El mismo montaje, componentes y script, pero cambiando la conexión del pin 8 al pin +5V del Arduino con el Vcc del módulo DF y todo funciona perfectamente (sin ruidos en el altavoz y reproduce la pista de audio correctamente).
Creía que al ser las mismas tensiones y corrientes de trabajo no es necesario un transistor MOSFET para hacer esto, pero parece que de la forma que lo estoy planteando me estoy equivocando en algún punto. ¿Alguien puede ayudarme con esta duda?
Mi objetivo es poder apagar o dejar en modo de bajo consumo el DF Player cuando no lo necesite, así que si existe otra manera de hacerlo también me vale. He probado el comando de sleep(); de las librerías DFRobotDFPlayerMini.h y DFPlayerMini_Fast.h, pero aunque lo inhabilitan la corriente no baja de los 20 mA, por lo que sigue consumiendo energía en estado inactivo.
Gracias por vuestro soporte.



