In diesem Beitrag möchte ich dir zeigen, wie du einen MP3-Player inkl. IR-Fernbedienung (Infrarot) am Arduino Nano programmierst.
Im Beitrag Arduino UNO Mini mit MP3 Shield habe ich dir bereits gezeigt, wie das MP3-Shield vom Typ MP3-TF-16P-V3 bzw. MH2024K-24SS am Arduino UNO Mini LE programmiert.
Benötigte Ressourcen für die Programmierung des MP3-Players mit IR-Fernbedienung
Für den Nachbau dieses Projektes benötigst du:
- einen Arduino Nano*,
- ein Mini-USB-Datenkabel*,
- ein MP3-Shield* vom Typ MP3-TF-16P-V3 / MH2024K-24SS,
- ein 1 kOhm Widerstand*,
- ein IR-Shield* inkl. Fernbedienung*,
- ein 400 Pin Breadboard*,
- diverse Breadboardkabel*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Es gibt mehrere Ausführungen von IR-Fernbedienungen auf ebay.de zu kaufen, in meinem Fall verwende ich eine, welche gleich die Funktionstasten Play, Pause, Vorwärts, Rückwärts, Stopp für ein Audioabspielgerät enthält.
Aufbau der Schaltung am Arduino Nano mit MP3-Player Shield und IR-Fernbedienung
Für dieses kleine Projekt verwende ich den Arduino Nano, dieser ist dem Arduino UNO vom Microchip gleich, jedoch deutlich kompakter und ohne zusätzliche, externe Stromversorgung über Jackadapter.
Von der Firma Cytron gibt es den Maker Nano welchen ich dir bereits im Beitrag Vorstellung des Maker Nano von Cytron vorgestellt habe, dieser hat statt einer Mini-USB eine Micro-USB Buchse sowie einen ATmega328P verbaut und somit etwas stärker als der übliche Arduino Nano.
Die Schaltung aus dem bereits genannten Beispiel zum MP3 Shield wird um das IR-Receivermodul erweitert, ansonsten sind die Pins geblieben.
Bauteil | Arduino Nano |
---|---|
MP3 Shield | |
VCC | 5V |
GND | GND |
TX | digitaler Pin D10 |
RX | digitaler Pin D11 über 1 kOhm Widerstand |
SPK1 | Lautsprecher + |
SPK2 | Lautsprecher – |
IR Receiver | |
+ | 5V |
– | GND |
S | digitaler Pin D5 |
Programmieren von einem MP3-Player mit IR-Fernbedienung am Arduino Nano
Benötigte Bibliotheken für dieses Projekt
Für dieses Projekt benötigst du:
Auslesen der IR-Fernbedienung
Wie man eine Infrarotfernbedienung am Arduino ausliest, habe ich dir bereits im Beitrag Arduino Lektion 20: IR Fernbedienung auslesen gezeigt. In meinem Fall haben sich folgende Signale ergeben:
Funktion | Wert |
---|---|
Rückwärts | 0x44 |
Vorwärts | 0x40 |
Play / Pause | 0x43 |
Lautstärke + | 0x15 |
Lautstärke – | 0x7 |
Diese Werte können natürlich von deinen abweichen und daher würde ich dir empfehlen deine Fernbedienung selber auszulesen.
#include <IRremote.h> void setup() { Serial.begin(9600); IrReceiver.begin(5, ENABLE_LED_FEEDBACK); } void loop(){ if (IrReceiver.decode()) { IrReceiver.printIRResultShort(&Serial); if (IrReceiver.decodedIRData.protocol == UNKNOWN) { IrReceiver.printIRResultRawFormatted(&Serial, true); } Serial.println(); IrReceiver.resume(); // Enable receiving of the next value } }
Steuern des MP3 Shields per IR-Fernbedienung
Nachdem wir nun die Funktionstasten zum Steuern des MP3 Moduls ausgelesen haben, können wir diese in ein Sketch integrieren.
Als Grundgerüst nutze ich das Beispiel “GetStartet” von DFRobot.
#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" #include <IRremote.h> // RX auf Pin D10 & TX auf D12 SoftwareSerial mySoftwareSerial(10, 12); DFRobotDFPlayerMini player; bool actionPlay = false; const int PREVIOUS = 0x44; const int NEXT = 0x40; const int PLAY_PAUSE = 0x43; const int VOLUME_UP = 0x15; const int VOLUME_DOWN = 0x7; void setup() { mySoftwareSerial.begin(9600); Serial.begin(115200); IrReceiver.begin(5, ENABLE_LED_FEEDBACK); delay(50); if (!player.begin(mySoftwareSerial)) { Serial.println("Fehler beim Aufbau der seriellen Verbindung!"); } else { Serial.println("Verbindung zum DFPlayer Mini hergestellt."); player.volume(10); } } void loop() { if (IrReceiver.decode()) { int command = IrReceiver.decodedIRData.command; switch (command) { case PREVIOUS: player.previous(); break; case NEXT: player.next(); break; case PLAY_PAUSE: actionPlay = !actionPlay; if (actionPlay) { player.pause(); } else { player.play(); } break; case VOLUME_UP: player.volumeUp(); break; case VOLUME_DOWN: player.volumeDown(); break; default: break; } IrReceiver.resume(); } }
Im nachfolgenden Beispiel zeige ich dir nun wie man mit der IR Fernbedienung das MP3 Shield steuern kann. Die Musik habe ich aus der YouTube Audiolibrary entnommen, wo du auch freie Musik findest.
Ausblick
Jetzt habe ich dir gezeigt, wie man einen einfachen MP3-Player programmieren kann, jetzt könnte man noch mit ein paar wenigen Bauteilen visuelle Effekte zum Takt der Musik erzeugen lassen oder die Lautstärke mit einer LED-Bar visualisieren.
Mein nächstes Projekt wird jetzt auf dieses aufbauen und ich werde dort speziell auf diese zusätzlichen Features eingehen.