Go Down

Topic: Audio Adventskalender DFPlayer_mini (Read 760 times) previous topic - next topic

Dark5

Nov 15, 2018, 09:44 pm Last Edit: Nov 15, 2018, 10:09 pm by Dark5 Reason: add CODE TAGs
Hallo zusammen,

ich bin recht neu in der Welt der kleinen Arduinos und auch der grossen, ich habe bei Heise den Artikel gefunden "Statt Schokolade: Audio Adventskalender"

leider ist das Modul welches in dem Artikel aufgeführt ist nicht rechtzeitig lieferbar, nun gab es den Beitrag, der DFPlayer_mini wäre eine alternative, also diesen bestellt einen Nano dabei, und das genannte RTC, für die Advents Spielerei ausreichend.

Mein Problem besteht nun darin das ich a. keine Serielle Infos sauber ausgelesen bekomme, und auch keinen Mux aus dem Modul.

Wenn ich das RTC Manuel auslese, und abfrage funktioniert das, und ich bekomme Datum und Uhrzeit Quasie von meinem Rechner angezeigt. Die Abfrage im Sketch hat mir bereits die Info ausgegeben das der Tages Track gespielt wird, allerdings ohne das vom Modul etwas ausgegeben wird.

der Original Sketch sieht wie folgt aus:
Code: [Select]
#include <JQ6500_Serial.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include "RTClib.h"

JQ6500_Serial mp3(2,3); //create an mp3 object
RTC_DS1307 rtc;         //create an rtc object

void setup() {
 Serial.begin(57600);
 Serial.println("Audio Advent Calendar by Mischka");
 Serial.println("----");
 
 pinMode(4, INPUT);
 pinMode(13, OUTPUT);

// setup the mp3 module
 mp3.begin(9600);
 mp3.reset();
 delay(500);
 mp3.setVolume(22);
 mp3.setLoopMode(MP3_LOOP_NONE);

// setup rtc
 Wire.begin();
 rtc.begin();
 rtc.adjust(DateTime(__DATE__, __TIME__));
}

void loop() {
 
 DateTime now = rtc.now();
 
 if(mp3.getStatus() != MP3_STATUS_PLAYING) {
   if (now.day() < 25){
     if (now.month() == 12) {

       Serial.print("playing track Number: ");
       Serial.println(now.day());

       mp3.playFileNumberInFolderNumber(0, now.day());      
     }
     else{
       Serial.println("not an advent day");
       delay(100);
       exit(0);
     }
   }
 }
exit(0);  
}


nun meine abgewandelte Version, welche mich zum erzweifeln bringt sieht wie folgt aus:
Code: [Select]

#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include "RTClib.h"

SoftwareSerial mySoftwareSerial(2,3); // RX, TX
DFRobotDFPlayerMini mp3;
unsigned int numFiles; // Total number of files on media (autodetected in setup())
byte mediaType;        // Media type (autodetected in setup())
RTC_DS1307 rtc;         //create an rtc object

void setup() {
 Serial.begin(9600);
 Serial.println("Audio Advent Calendar");
 delay(500);
 
 pinMode(A4, INPUT);
 pinMode(A5, OUTPUT);
 
 mySoftwareSerial.begin(9600);
 Serial.begin(9600);
 mp3.reset();
 delay(500);
 mp3.volume(20);
 mp3.disableLoop();
 delay(500);
 Wire.begin();
 rtc.begin();
 rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}

void loop() {
 
 DateTime now = rtc.now();
 
 // if(mySoftwareSerial.read() != MP3_STATUS_PLAYING) {
   if (now.day() < 25){
     if (now.month() == 11) {

       Serial.print("playing track Number: ");
       Serial.println(now.day());

       mp3.play(now.day());             //, now.day());      
     }
     else{
       Serial.println("not an advent day");
       delay(100);
       exit(0);
     }
   }
 }
//end(0);  
//}

der Monat steht auf 11 zum Testen, aber wie gesagt ich bekomme Seriell weder die Info das es Tag X ist, noch bekomme ich einen mux aus dem Player entlockt, die Verdrahtung ist OK, wenn ich den Test Sketsch vom Playe hochlade, spielt dieser Track für Track ab.

vllt kann mir jemand einen Tip geben, dafür wäre ich sehr Dankbar.

Schönen Abend noch allseits.

HotSystems

Nimm mal nur SoftwareSerial ohne die Library "JQ6500".
Die JQ6500 kenne ich nicht, wird aber nicht gebraucht.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Danke für die Antwort, aber es geht mir um den zweiten Teil, mit dem DFPayer_Mini, der JQ6500 ist nicht im Einsatz, da dieser nur aus China, oder Hong Kong zu Bestellen ist, und die Lieferzeit somit bis mitte Dezember, oder gar Ende Januar fällt.

deswegen habe ich beide Sketsches rein kopiert, er hat sie aber am Stück geschrieben, daher ist der für mich relevante leider hinter den Original Sketsch gewandert.

Danke dennoch für die Antwort

HotSystems

Ach so.....warum sagst du das nicht gleich.

Was willst du denn von mp3 mit "now.day()" hören ?
Da musst du einen Titel aufrufen, den du in auf der SD-Karte  hast.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Richtig, wie der Titel schon sagt, es soll ein Adventskalender werden der an den 24 Tagen je einen Audio Track wiedergibt. Meine Nichte ist ein absoluter Hörspiel Junky, daher fand ich den Artikel so interessant, und habe mich an die Umsetzung begeben, die Technische Seite ist auch soweit erledigt, nur mit dem Sketsch hut es halt hinten und vorne nicht hin.

gedacht ist das ganze so, das der Aktuelle Tag abgefragt wird, z.b. 6.12. vom RTC, dann soll der Player Track 006 von der SD Karte wieder geben, wenn ich den Sketsch zum testen des DFP Laufen lasse, und dort Track 006 anwähle, wird dieser auch problemlos wieder gegeben.

Allerdings nicht im kompletten Adventskalender Sketsch, und da scheitern meine leider sehr minimalen Arduino kenntnisse am Verständnis, vllt denke ich auch einfach zu kompliziert, allerdings ist ja leider auch nicht mehr viel Zeit um es bis zum 1.12. fertig zu bekommen.

HotSystems

Deswegen musst du auch die Titel entsprechend wählen.
Mir ist aktuell nicht bekannt, das du den per Variable übergeben kannst.
Also immer nur "0012" für "zwölf oder so....
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Also im Original funktioniert das wohl sehr gut, da ich leider das passende MP3 Modul, den JQ6500-28P nicht rechtzeitig bekomme, habe ich mich für die sofort verfügbare Variante des DFP Mini entschieden, dazu steht in den Kommentaren muss nur ein wenig vom Sketch abgeändert werden, allerdings, bleibts bei mir leider komplett Stumm, und auch die Serielle Ausgabe tut nicht was sie soll, der Original Sketch, gibt mir den erkannten Tag an allerdings auch nur im Monitor, ob er den Richtgen Track anwählen würde kann ich mangels Modul nicht testen.

HotSystems

Das es mit dem originalen funktioniert, hilft dir jetzt nicht weiter.

Was zeigt denn der serielle Monitor an ?

Und was soll das "exit(0)" ?
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

HotSystems

#8
Nov 15, 2018, 11:23 pm Last Edit: Nov 15, 2018, 11:40 pm by HotSystems
Ich habe eben noch mal die Library und meinen Sketch angesehen, also das mit dem Datum aus einer Variablen sollte funktionieren.

Wenn du auch Probleme hast, das richtige auf dem seriellen Monitor anzusehen, muss es an deiner RTC liegen. Hier kann ich aktuell nichts sagen, da ich deine Library dazu nicht kenne und die DS1307 nicht die beste Wahl ist. Oder du hast die Geschwindigkeit nicht richtig eingestellt.

Vergleiche doch mal deinen Sketch (RTC) mit dem Beispiel-Sketch der RTC.

Auch musst du dein Setup aufräumen.

Das sollte so reichen:
Code: [Select]
void setup() {
 Serial.begin(9600);
 Serial.println("Audio Advent Calendar");
 delay(500);
  
 mySoftwareSerial.begin(9600);
 mp3.reset();
 delay(500);
 mp3.volume(20);
 mp3.disableLoop();
 delay(500);
 Wire.begin();
 rtc.begin();
}


Und das
Code: [Select]
mp3.outputDevice(DFPLAYER_DEVICE_SD);
vermisse ich.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Hallo nochmal,

war gestern leider ein wenig Stressig der Tag, und bin nun auch schon wieder im Büro.

Der Sketsch ist so wie vom Original, soweit abgeändert, soweit es mir selbst logisch erschien, anhand des Beispiels "PlaybyTrack"

Die Befehlszeilen sind soweit eingepflegt, meinen Seriellen Monitor habe ich auch von der Geschwindigkeit her angepasst, z.t. bekomme ich nur die Ausgabe "Aud" oder "Audio", dann wiederum "Audio Advents Kalender"

Ich hatte sogar schon die zusätzliche Ausgabe "Playing Track XX", allerdings ohne eine Akustische Ausgabe zu bekommen.

Wenn ich wie gesagt den PlaybyTrack Beispiel einen Beliebigen erstellten Track der 24 Stück anwähle, werden diese auch ohne Probleme abgespielt, selbst die Kurzzeit Schleife läuft ohne jegliche Probleme.

Er skipt durch die Tracks bis zum Ende.

Das Exit am Ende ist auch aus dem Original übernommen, Hintergrund des Projektes ist es ja, das in der Adventszeit, einmal am Tag ein Kästchen geöffnet wird, und dieses dann einen von 24 Tracks abspielen soll.

Die Umsetzung des Kästchens ist das kleinste übel und Problem gewesen, nur das der Original genannte MP3 Player leider noch auf dem Versandweg hängt, und das halt bis ende Dezember dauern kann bis dieser eintrifft, daher bin ich halt auf den DFPlayer Mini gestoßen, welcher im Prinzip das selbe kann, nur mit weniger Abmessung, und quasi 1 Tag später bei mir war.

Ich habe bisher halt nicht wirklich viel mit den Arduninos zu tuen gehabt, bin aber für neues auch offen. die angefügte Zeile, mit der Output Device hab ich heute morgen noch eingefügt, aber wird von der IDE angemeckert.

Wegen meiner wenigen Erfahrung mit den Arduinos bin ich ja hier aufgeschlagen, und hoffe das mir jemand weiter helfen kann. 

Die Player Lib heisst "DFRobotDFPlayerMini-1.0.3"
Die RTC Lib ist die "RTClib" welche eine DS1307.h enthält, das Time Modul wird wenn ich DateCalc ausführe auch erkannt, und er gibt mir mit anderen Beispielen auch die Korrekte Uhrzeit, mit 1-2 Minuten Abweichungen aus, daher finde ich den irgendwo eingebauten fehler nicht, weshalb es in Kombination aller Komponenten nicht funktioniert.

MfG


HotSystems

.....
Die Befehlszeilen sind soweit eingepflegt, meinen Seriellen Monitor habe ich auch von der Geschwindigkeit her angepasst, z.t. bekomme ich nur die Ausgabe "Aud" oder "Audio", dann wiederum "Audio Advents Kalender"
......
Dann stimmt etwas an deinem Aufbau nicht.
Hast du einen Widerstand 1 kOhm in der TX>RX-Leitung ?
Der DFPlayer arbeitet intern nur mit 3,3 Volt.

Und teste doch die Ausgabe einfach mal mit einer Zahl, statt mit der Variablen.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Ja der 1K ist drin, und mit dem Test Sketch des Players funktioniert die Audio Ausgabe, daher ja mein auf dem Schlauch stehen.

Die Ansteuerung, Pin Benennung usw sollte funktionieren, mit dem festen Track muss ich heute Abend ausprobieren, aber das würde mich noch nicht weiter bringen, da ich ja die Variable Track anwahl via Datums Abgleich benötige.

HotSystems

Ja der 1K ist drin, und mit dem Test Sketch des Players funktioniert die Audio Ausgabe, daher ja mein auf dem Schlauch stehen.

Die Ansteuerung, Pin Benennung usw sollte funktionieren, mit dem festen Track muss ich heute Abend ausprobieren, aber das würde mich noch nicht weiter bringen, da ich ja die Variable Track anwahl via Datums Abgleich benötige.
Wenn es mit dem festen Track funktioniert, was ich vermute, liegt es an der Formatierung des Variablen-Inhaltes. Den musst du dann zuvor so wandeln, dass dein Player das erkennen kann.
Dazu musst du erst genau sehen, wie ein Wert deiner RTC ausgegeben wird.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Dark5

Also laut Seriellem Monitor gibt er aus, Audio Advents Kalender ---- Playing Track Numer XX, so wie es sein soll, aber s gibt aktuell nur Stille, da er ja die 16 als Track Nummer auflistet, hat er ja mit dem Befehl now.day die korrekte Zahl für den benötigten Track.


HotSystems

Also laut Seriellem Monitor gibt er aus, Audio Advents Kalender ---- Playing Track Numer XX, so wie es sein soll, aber s gibt aktuell nur Stille, da er ja die 16 als Track Nummer auflistet, hat er ja mit dem Befehl now.day die korrekte Zahl für den benötigten Track.
Du kannst aber nicht erkennen, ob in der Ausgabe noch Steuerzeichen vorhanden sind, mit denen der DFPlayer nix anfangen kann. Daher ist nichts zu hören und du must den Test mit der "harten" Codierung machen.
Danach bleibt nur eine Wandlung des Formates.
Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. 8)

Go Up