TonUINO mit Arduino Pro Mini

Hallo liebe Leute!

Nochmals vielen Dank an die Macher für dieses tolle Forum!
Es bietet neben dem tollen Heimwerker-Projekt auch einen schönen Einstieg in die Welt der Elektronik.
Also, bevor meine Tochter einen tollen TonUINO bekommt, will der Papa ein bisschen basteln :wink:

Um meinen TonUINO noch „smarter“ zu gestalten hatte ich überlegt den Arduino Nano durch einen Arduino Pro Mini zu ersetzen. Ich habe die Vorteile eines noch kleineren Boards und ein Optimierungspotenzial beim Stromverbrauch gesehen.

Also habe ich mir einfach mal einen Pro Mini bestellt (5V - Variante). Als ich mir nun den TonUINO mit dem Pro Mini aufbaue fällt mir auf, dass dieser ja gar kein 3,3 V out besitzt und somit das RFID-Modul nicht mit Strom versorgen kann.
Wenn ich es richtig gelesen habe, ist es keine gute Idee es einfach an 5 V anzuschließen. Wenn ich nun aber einen Step-Down Converter dazu setze scheinen mir die Vorteile des Pro Mini verflogen.

Bevor ich den Pro Mini wieder zur Seite lege… hat hier vllt jemand eine Idee mit der ich das Problem einfach lösen könnte?

Ich plane den TonUINO mit einem LiFePO4 Akku zu betreiben. Könnte man das RIFD Modul vllt direkt an den Akku hängen, der soll ja eine Spannung von 3,65-3,2 V haben?

1 Like

Hallo @nilzfreeman43
Die einfachste und billigste Lösung wäre, in die Leitung zum 3,3V Anschluss des RFID readers eine rote LED und einen Widerstand zu schalten. Von +5 V her. Für den Widerstand musst du etwas rumprobieren. Ich würde mal mit 150 Ohm beginnen, die Spannung am Reader messen und dann den widerstand schrittweise verringern bis die Spannung mit 3,3 V passt . Ist nicht die eleganteste Lösung, aber sollte funktionieren. Eine andere Mögichkeit wäre einen Festspannungsregler 3,3 V zu verwenden. Die kosten auch nur ein paar Cent.
Zum Beispiel den hier.
e-bay Festspannungsregler 3,3 V

Hallo Thomas,
die Idee mit dem Festspannungsregler gefällt mir, hatte ich noch nicht entdeckt.
Kann ich diesen direkt hinter den Akku hängen (parallel zu einem 5V-Step-Up Wandler der das Board und den DFPlayer versorgt)? Je nach Ladestand des Akkus müsste der Festspannungsregler ja entweder die Spannung hoch oder runter regeln.

Nein, das geht leider nicht. Der Festspannungsregler kann nur runterregeln. Du musst den von der 5V seite her speisen. Lade dir das Datenblatt über Internet runter. Da ist meistens auch eine Beispielschaltung drauf, und auch welche Anschlüsse Eingang, Ausgang und Ground sind.

Habe mir so ein LF33CV Modul bestellt. Läuft nun hervorragend mit dem Pro Mini :+1:
Vielen Dank nochmal!
Wenn die restlichen Teile da sind versuche ich die Stromversorgung mit Akku und Pololu LV aufzubauen…

Liebe TonUINO Gemeinde,
bevor ich mit meinem Hilfegesuch starte hier ein kurzes Update zu meinem TonUINO Projekt mit einem Pro Mini:

Den Grundaufbau hatte ich an einer Steckplatine zum Laufen gebracht.
Nun habe ich diesen Aufbau auf eine Platine gelötet und direkt um folgende Bauteile erweitert:

  • LiFePO4 Akku mit TP5000 Laderegler
  • Pololu LV Switch
  • Mosfets (IRLML2502 N-Channel Mosfet 20V 4,2A 1,2) zur Unterdrückung des Einschaltgeräsches

    Nachdem Zusammenstecken läuft der Aufbau leider nicht wie erhofft.

Also beginne ich mit der Fehlersuche:
Es scheint ein Problem mit dem DFPlayer zu geben. Die Power LED auf dem Modul glimmt nur ganz schwach.
Mit einem Multimeter messe ich zwischen GND und VCC 4,95 Volt, das scheint OK zu sein.
Ich habe den Player durch ersetzt mit dem gleichen Resultat: DIe Power LED glimmt nur ganz schwach und er läuft nicht. Einen Bauteildefekt vermute ich daher nicht.
Die korrekten Verbindungen habe ich mehrmals kontrolliert.

Ich vermute, dass eine unsaubere Löt-Verbindung der Grund sein könnte, da meine (in diesem Projekt erlerneten) Lötfähigkeiten sicherlich nicht die besten sind. Doch wie kann ich diese finden? Mit meinem Leihenhaften Blick kann ich keine Fehler sehen. Vllt mit einem Multimeter? Die Spannungsversorgung scheint zu funktionieren.

Kann es sonst vllt an den Mosfets liegen? Muss ich hier evtl noch etwas im Programm anpassen, ich benutze den Standardcode DEV 2.1 von Thorsten.

Über Ideen zur Problemfindung freue ich mich.

Hier ein paar Fotos:


Mosfets oben:

Mosfets unten:

Mosfets schräg

Platine unbestückt oben:

Platine unten:

Beschreibt das den Zustand während der Player etwas abspielen soll oder den Grundzustand?

Da ist kein Support der Lautsprecherabschaltung über Mosfets enthalten. Entweder du baust die Änderungen aus dem Thema zu den Mosfets ein oder du nutzt einen Fork, der das unterstützt.

1 Like

Also hier möchte ich dir mal noch einen Hinweis geben. Einige Drahtbrücken, welche du da verlötet hast (z.B. oben rechts parallel diagonal), könnten verbunden sein, durch Lochkontakt an der Platine. Am Besten im rechten Winkel „verlegen“ oder wenigsten isolieren. Da können unerwünschte Verbindungen zustandekommen.

1 Like

Danke für den Link!
Im Grundzustand. Das scheint normal zu sein.

Die LED ging einmal an als ich mit dem Multimeter Verbindungen überbrückt habe, aber es war nichts zu hören. Konnte es auch nicht reproduzieren.

Wenn ich eine Karte anlernen möchte passiert nichts, kein Ton und die LED am Player bleibt aus.

Ich habe deine Antwort mal hier zu deinem Problem geschoben, da du hier ja dein Problem beschrieben hast.
Hörst du denn ein Fiepen beim Einschalten? Ohne eine Software, die die Lautsprecherabschaltung unterstützt, wirst du vermutlich keinen Ton bekommen.

Ich höre kein fiepen oder rauschen. Ich verwende die Standard Software von Thorsten dev 2.1

Okay, wenn ich gnd mit io1 überbrücken geht die LED an. Er möchte wohl was spielen.

Wahrscheinlich muss ich noch die mosfet richtig ansteuern.

P. S.: Danke für das verschieben, ist mir versehentlich in die falsche Rubrik gerutscht.

Ja Du kannst dafür zum Beispiel den Fork von marco-117 nehmen.
Selbst wenn du den Fork nicht nutzen willst, kannst du dir dank der defines leicht ansehen, an welchen Stellen das Ein-/Abschalten sinnvoll ist.

Okay, prima danke! Schaue ich mir morgen an.

Wenn ich die mosfets überbrücke und vorher gnd mit io1 überbrücke ertönt etwas aus dem Lautsprecher.

1 Like

Okay danke, ich werde es bei der nächsten Platine berücksichtigen.

Die Anpassung in der dev Version ist aber auch sehr gering (für den Fall, dass du nicht auf einen Fork wechseln möchtest).

Um den Lautsprecher „einzuschalten“ musst du nur den PIN, der vom Arduino zum Mosfet geht (in meinem Beispiel D6) auf HIGH schalten.

pinMode(6, OUTPUT); 
digitalWrite(6,HIGH);

Die zwei Zeilen fügst du einfach am Beginn der void setup() Funktion ein.
Zusätzlich kannst du in der Funktion void checkStandbyAtMillis() den Lautsprecher noch abschalten, bevor sich der Arduino ausschaltet. Das sorgt dann dafür, dass auch beim Ausschalten der Lautsprecher keinen Ton mehr von sich gibt.

digitalWrite(6,LOW);

Hallo Begbie,
Danke für die Codezeilen!
Diese sind für mich tatsächlich erstmal schneller eingefügt…und es kommt Musik aus der Box :smiley: die Mosfets scheinen zu funktionieren.
(Der Fork von marco-117 ist trotzdem hoch interessant und werde ihn mir anschauen sobald ich meine Hardware am Laufen habe)

Allerdings ist noch irgendetwas anderes im Argen. Wenn ich die dritte Codezeile in die entsprechenden Funktion setze gibt D6 direkt nach dem starten null Volt aus und es kommt wieder keine Musik aus der Box. Also habe ich diese ersmal wieder auskommentiert.

Ich denke ich muss den Pololu auch noch richtig in den Code einbinden, vllt hat es was damit zu tun. Muss ich diesen Butten (bei mir die Playtaste A0) eigentlich neben der On Verbindung am Pololu auch noch auf GND ziehen? Das habe ich nicht gemacht. Das Starten funktioniert schonmal.
Kann mir jemand Codezeilen schicken mit der ich den Pololu über D7 nach 2s über Druck Play (A0) wieder ausschalte?

Vielen Dank schonmal im vorraus!

Wo hast du denn die Zeile genau eingefügt?
Sie muss über diese Zeile:

 digitalWrite(shutdownPin, HIGH); 

Ich habe sie direkt ganz oben in der function eingefügt:

Das war der Fehler. Nun funktioniert es. Danke!

Dazu musst du ebenfalls ein

digitalWrite(6,LOW);
digitalWrite(shutdownPin, HIGH);

in der void loop() in die Verzweigung der "pauseButton.pressedFor(LONG_PRESS) einfügen.

 if (pauseButton.wasReleased()) {
      if (activeModifier != NULL)
        if (activeModifier->handlePause() == true)
          return;
      if (ignorePauseButton == false)
        if (isPlaying()) {
          mp3.pause();
          setstandbyTimer();
        }
        else if (knownCard) {
          mp3.start();
          disablestandbyTimer();
        }
      ignorePauseButton = false;
    } else if (pauseButton.pressedFor(LONG_PRESS) &&
               ignorePauseButton == false) {

Dort wird zunächst abgefragt, ob ein Modifier womöglich was verändert und dann der aktuell gespielte Titel ausgegeben. Wenn du sowieso immer möchtest, dass sich der Tonuino dann ausschaltet, kannst du die zwei Zeilen ja einfach mal direkt am Anfang dieses Zweiges setzten. Nachdem der Pololu dann eh alles ausschaltet, ist es egal was dann noch an Code käme.
(Sauberer wäre natürlich den Code dahinter zu entfernen oder die Funktionalität mit Hilfe eines Modifier zu implementieren).

Super, das hat geklappt! Vielen Dank! :smiley:

Um die Funktionalität der Hardware zu testen muss der Code ja nicht 100% sauber sein :wink:
Da meine Programierkenntnisse sehr basic sind sagt mir „Modifier“ auch gar nichts.
Beim ersten Versuch scheint auch so alles wie zuvor zu laufen :+1:

Als nächstes will ich einen NeoPixel LED Ring einbinden und mich dann um den Gehäusebau kümmern…zu guter Letzt will ich die verschiedenen Forks draufspielen und ausprobieren…