Error Arduino uno R4 wifi + mp3-tf-16p + hw-139

Buenas días,

Soy nuevo en el mundo Arduino, he replicado el proyecto de una persona que lo explicaba en Youtube, pero no me funciona.

Es un timbre que vi para ponerlo en halloween para cuando toquen el timbre suene archivos mp3, pero al presionar el botón táctil no actúa.

Os adjunto esquema y el código a ver si alguien me puede ayudar.

Componentes:

  • Placa Arduino UNO R4 Wifi
  • Módulo mp3-tf-16p
  • Módulo TTP223B

Un saludo.

e0f432bdede98ba4afa5d8206e99c48b714269a6_2_690x452

El código es éste:

#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
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)) {  //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(20);  //Set volume value. From 0 to 30
  myDFPlayer.play(1);  //Play the first mp3
}

void loop()
{
  static unsigned long timer = millis();
  boolean timbre = digitalRead(4);

  if(timbre == true)
  {  
  if (millis() - timer > 7000) {
    timer = millis();
    myDFPlayer.next();  //Play next mp3 every 3 second.
  }
  }
}

Hi,
Mi sugerencia es de correr el ejemplo que viene en la libreria del player. Si te trabaja entonces el problema esta en el sensor del Módulo TTP223B. tambien puedes poner la variable
boolean timbre = 1 .despues que lea la senal digital del modulo TTP223B.`

void loop()
{
  static unsigned long timer = millis();
  boolean timbre = digitalRead(4);
 boolean timbre =1;
  if(timbre == true)
  • Primero comprueba que la SD este formateada en FAT-16 o FAT-32 y un máximo de 32GB, además los ficheros deben estar nombrados 0001.mp3, 0002.mp3, etc.
  • El código lo he probado y a su manera funciona .
  • Creo que te esta fallando la comunicación serial por esa resistencia de 1K, resistencia que todo tutorial repite y no es siempre valida.

Yo recomiendo el siguiente esquema de conexionado:

dfplayer

  • Las GND implicadas como ves unidas.
  • En lugar de una resistencia de 1K, un autentico divisor de tensión, con esos valores de resistencias la señal de 5V generada por el pin TX del arduino queda convertida en 3V3 justo lo que necesita el pin RX del Dfplayer
  • La línea TX-Dfplayer ---->RX-Arduino directa, los 3V3 que genera el Dfplayer son leídos como HIGH por el arduino sin problemas.
  • El diodo en Vcc: Aunque el dfplayer puede funcionar entre 3V2 y 5V, en su datasheet indica claramente un valor tipico de 4V2 . Luego 5V - 0,7(caída en el diodo) = 4V3, mas cercana al valor recomendado.

Y también conecto el pin BUSY del Dfplayer con un pin digital libre del arduino, según que caso podría simplificar la programación.

Hi,
gonpezzi la resistencia de 1K en el serial esta recomendada por el fabricante del mp3 en las especificacione del mp3. Yo tengo 8 mp3 player usando esa resistencia de 1K y hasta la fecha zero problemas. Si tu lees el voltaje con la resistencia instalada te lee 3.8 voltios. Solamente quiero traer la atension de que si es seguro usarla como lo sugiere el fabricante. Consejo yo siempre que uso un module que nunca he usado antes de empezar a programar corro el ejemplo que viene con la libreria. Esto te elimina las dudas ya que debe de trabajar sin problemas.

Si, pero eso no impide que uses un divisor de tensión o incluso un level shifter.

Hi,
Si, eso es correcto pero se economiza una resistencia.JaJA

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.