compteur site compteur pour site  
Le DF PLAYER





PRÉAMBULE
Le DF Player peut s'interfacer facilement à une platine arduino ce qui permet ensuite de le commander par la liaison série.

Dans le cas d'un branchement à une platine Arduino deux cas peuvent se produire :
• Soit la platine ne possède qu'un seul port série (Arduino Uno), dans ce cas le port série est utilisé pour la programmation du microcontrôleur et pour l'envoi de message au moniteur série, ce qui a pour effet de rendre inutilisable le port série pour la commande du DF Player. A cause de cela il vaut mieux utiliser l'émulation d'un port série (bibliothèque SoftwareSerial) pour éviter des conflits,
• Soit la platine possède plusieurs ports série (Arduino méga) et dans ce cas on peut utiliser un autre port série que celui utilisé pour la programmation et l'envoi de message au moniteur série et il n'est pas nécessaire d'émuler un autre port série.

Le très grand avantage d'utiliser le port série pour la commande du DF Player est qu'il ne nécessite que deux fils pour accéder à toutes les commandes.

RACCORDEMENT à un ARDUINO UNO
Pour libérer la voie série de l'arduino Uno, il est nécessaire d'émuler une autre voie série.

Pour cela on utilise la bibliothèque SoftwareSerial avec les commandes suivantes :
1). Déclaration de la bibliothèque par les commandes : 
• #include <SoftwareSerial.h>,
SoftwareSerial mySerial (8, 9); // RX broche 8, TX broche 9 par exemple


2). Dans le setup :
• mySerial.begin (9600); //Vitesse de transmission
• delay (1500); //Temps d'initialisation du DF Player

3). Commande série :
mySerial.write (0x7E); //SART BYTE 
mySerial.write (0xFF); //VER
mySerial.write (0x06); //LENGTH
mySerial.write (0x06); //CMD : 0x06 = Volume 
mySerial.write (0x00); //Feedback : Aucun Feedback
 
mySerial.write (0x00); //Param_MSB 
mySerial.write (0x0A); //Param_LSB volume = 10/30 

mySerial.write (0xFE); //Check_MSB
mySerial.write (0xEB); //Check_LSB
 
mySerial.write (0xEF); //Fin de byte


raccordement à un arduino uno
Raccordement à un Arduino Uno

Nota :
Apparemment la bibliothèque Software.Serial n'accepte pas les commandes incorporant 0x00, il faut donc passer par une variable : Exemple : int feedback = 0; et remplacer 0x00 par feedback.

• Les valeurs de chaque paramètre peuvent être remplacées par une variable,
• Les commandes série peuvent être incorporé dans le setup ( ) ou dans le loop ( ).
RACCORDEMENT à un ARDUINO MÉGA
Avec l'Arduino Méga il n'est pas nécessaire d'émuler une voie série puisqu'il en possède 4 :
• Rx0, Tx0 : Utilisé pour la programmation du microcontrôleur et pour l'envoi de message au moniteur série,
• Rx1, Tx1 : Libre,
• Rx2, Tx2 : Libre,
• Rx3, Tx3 : Libre.

L'utilisateur pourra utiliser une de ces trois voies série.

Si le DF Player est alimenté à une tension de 3,3 volts, il faut intercaler sur les liaisons série une résistance de 1 KΩ pour protéger le DF Player.

raccordement a un arduino mega
Raccordement à un Arduino Méga

PROGRAMMATION SÉRIE
Maintenant que le choix et le raccordement de l'arduino sont réalisés il faut envoyer les commandes série pour la commande du DF Player.

Rappel du protocole pour la commande du DF Player.

principe du protocole serie
Principe du protocole série

Le protocole du DF Player est décomposé en 10 commandes distinctes.
Il faut donc envoyer en série les 10 paramètres en fonction de la commande que l'on souhaite faire exécuter par le DF Player.

Cela est réalisé par la commande :
Serial.write ( );

Si l'on prend un arduino méga et en utilisant la voie Série 1 on utilise la commande :
Serial1.write ( );

Exemple :
Envoi d'une commande réglant le volume sur 10 :

commande serie pour le reglage du volume sur 10
Commande série pour le réglage du volume sur 10
1). Dans le setup :
Serial1.begin (9600); //Vitesse de transmission
• delay (1500); //Temps d'initialisation du DF Player

2). Commande série :
Serial1.write (0x7E); //SART BYTE 
Serial1.write (0xFF); //VER
Serial1.write (0x06); //LENGTH
Serial1.write (0x06); //CMD : 0x06 = Volume 
Serial1.write (0x00); //Feedback : Aucun Feedback
 
Serial1.write (0x00); //Param_MSB 
Serial1.write (0x0A); //Param_LSB volume = 10/30 

Serial1.write (0xFE); //Check_MSB
Serial1.write (0xEB); //Check_LSB
 
Serial1.write (0xEF); //Fin de byte

• Les valeurs de chaque paramètre peuvent être remplacées par une variable,
• Les commandes série peuvent être incorporées dans le setup ( ) ou dans le loop ( ).