Je suis étudiante aux beaux-arts, et pour l'un de mes projets, je travail sur une poupée qui doit être capable de jouer aléatoirement une des 7 chansons stockées sur une carte sd lorsque j’appuie sur son ventre (un bouton caché ici).
La solution du arduino me semble la plus accessible, cependant j'ai très peu de connaissance sur ce genre d'outils.
J'ai commencé à m'initier avec le kit " Le livre de projet arduino" (que j'ai terminé avec un assez bonne compréhension de mes actions).
Cependant maintenant je dois me lancer dans la conception de l’appareil et du code, et je me retrouve un peu perdue.
Quel arduino dois-je prendre? En fouillant un peu le forum j'ai entendu parlé d'un Shield, mais je ne sais pas exactement ce que c'est.
De quoi vais-je avoir réellement besoin ?
J'imagine que j'aurai besoin déjà: d'un lecteur de carte SD, d'une enceinte, d'un bouton pression et d'une pile, mais quoi d'autre ?
Pour ce qui est de l’écriture du code, je devine les grandes lignes grâce au kit que j'ai réalisé, mais je ne pense pas avoir trouvé toutes les infos pour réaliser ce projet.
J'ai la volonté d'apprendre, mais là je suis un peu perdue et votre aide pourrais vraiment me faire avancer.
Avec une alimentation par pile, je dirais que si montage doit rester alimenté longtemps, il faudra une grosse pile.
Lecteur de carte SD : pas la peine, un DFPLAYER fera le travail de restitution du son bien mieux qu'un ARDUINO. L'ARDUINO lui demandera simplement de jouer le Nième morceau.
Batterie, bouton, DFPLAYER, haut-parleur, un ARDUINO (un NANO ou PRO MINI, par exemple).
Le choix de la batterie et de l'ARDUINO dépend de l'autonomie attendue.
Un chiffre ?
Ce choix m'a l'air séduisant: DFPlayer Mini Mp3 Player - DFRobot Wiki donne un logiciel complet (deux, en fait: le second, une fois compris et simplifié, peut jouer aléatoirement une mélodie) et un schéma de câblage
Je suis étudiante aux beaux-arts, et pour l'un de mes projets, je travail sur une poupée* qui doit être capable de jouer aléatoirement une des 7 chansons stockées sur une carte sd lorsque j’appuie sur son ventre (un bouton caché ici).
La solution du arduino me semble la plus accessible, cependant j'ai très peu de connaissance sur ce genre d'outils.
J'ai commencé à m'initier avec le kit " Le livre de projet arduino" (que j'ai terminé avec un assez bonne compréhension de mes actions).
Bonjour
La solution proposée par Hbachetti est une des plus simple à mettre en oeuvre
un petit player mp3 SD à "peanuts" € capable de sortir directement sur un petit HP (son mono)
La vraie question est celle de l'autonomie demandée à la poupée ?
Mais déjà je pense qu'avec un petit arduino nano + un petit player avec un HP + un petit power bank des plus basique , tu dois déjà pouvoir faire des tests d’intégration dans la poupée pour un budget de moins de 10 €
Vu que cela fonctionnait, j'ai rajouté un bouton pressoir (le model suivant: https://www.gotronic.fr/art-module-bouton-poussoir-gravity-dfr0029w-27905.htm)
J'ai branché le fil rouge sur le 5V, le vil noir à la masse et le fil vers sur la broche D2 de mon arduino nano.
Puis j'ai essayé de faire un mix du code utilisé pour le DFPlayer et l'exercice 11 du livre qui utilisait la fonction aléatoire sur une "boule de cristal" (= écran lcd).
Cependant, lors de la verification, un message d'erreur apparait:
DFPLAYER_pression:28:5: error: 'relpy' was not declared in this scope
** relpy = random(6)**
** ^** exit status 1 'relpy' was not declared in this scope
Je vous transmet mon code:
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>
SoftwareSerial DFPlayerSerial( 10, 11 ); // RX, TX
const int switchPin = 2;
int switchState = 0;
int prevSwitchState = 0;
int reply;
void setup()
{
pinMode(switchPin,INPUT);
Serial.begin( 115200 );
Serial.print( "\n\nDFPlayer_Mini_Mp3\n" );
DFPlayerSerial.begin( 9600 );
mp3_set_serial( DFPlayerSerial );
mp3_set_device( 2 ); // Carte SD
mp3_set_volume( 20 ); // 0-30
}
void loop()
{
switchState = digitalRead(2);
if (switchState == HIGH) {
reply = random(6);
switch(reply){
case 0 :
mp3_play( 1 );
break;
case 1 :
mp3_play( 2 );
break;
case 2 :
mp3_play( 3 );
break;
case 3 :
mp3_play( 4 );
break;
case 4 :
mp3_play( 5 );
break;
case 5 :
mp3_play( 6 );
break;
case 6 :
mp3_play( 7 );
break;
}
}
_delay_ms( 3000 );
}
Si vous trouvez l'erreur, je veux bien de l'aide. Merci d'avance!
Du coup, j'ai corrigé.
Il manquait également un point-virgule au bout de cette ligne.
Mais il reste un souci au niveau du code en lui-même je suppose, car la LED du DFPlayer ne s'allume pas et rien ne se passe lorsque j'appuie sur le bouton.
Je n'ai pas de répertoire, les fichiers sont directement sur la carte SD.
Et ils sont nommés de la façon suivante:
0001 Aux yeux de tous.mp3
0002 Bout du bar.mp3
0003 Et.mp3
0004 Mon ptit roux.mp3
0005 Petite Moi.mp3
0006 Ritournelle.mp3
0007 Soirée d'accord.mp3
Il faudrait peut-être que je mette les fichiers dans un dossier nommé "MP3" comme c'est précisé sur le site où j'ai pris le code pour le DFPlayer? (Tests de modules DFPlayer – ouilogique.com)
Mais pourtant ce code marchait quand je l’exécutais, avant que je rajoute le bouton et l'aléatoire dedans.
Le dossier est-il obligatoire?
Par rapport au lien du forum que vous avez donné, j'ai essayé de changer les noms de fichiers en 001 au lieu de 0001. Puis de les placer dans un dossier nommé "mp3" mais ça ne change rien. Le DFPlayer n'a toujours pas sa LED d'allumer et rien ne se passe à la pression.
The order you copy the mp3 into micro SD card will affect the order mp3 played , which means play(1) function will play the first mp3 copied into micro SD card.
Les noms des fichiers sont sur 3 digits, et non pas 4 (mais d'autres caractères peuvent suivre).
Je pense que dans ton cas, comme tous les fichiers commencent par 000, le module ne trouve pas les fichiers 1, 2, 3, etc.
Le répertoire MP3 est peut-être une solution aussi.
Personnellement pour mon utilisation j'ai plusieurs répertoires et j'utilise la méthode playFolder.
Si,si, j'ai bien lu le topic hbachetti, ce qui m'a fait essayer de passer de "0001 Bout du bar.mp3" à "001 - Bout du bar.mp3". J'ai également tout mis dans un dossier "mp3".
J'ai essayé de changer la librairie qui parle au DFPlayer. Au lieu d'utiliser "DFPlayer-Mini-mp3" du site de Tests de modules DFPlayer – ouilogique.com j'ai été mettre la librairie "DFRobotDFPlayerMini.h" du site DFPlayer Mini Mp3 Player - DFRobot Wiki.
J'ai enfin repris le code simplifié que lesept me proposait.
Je me retrouve maintenant avec le code suivant:
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
const int switchPin = 2;
int morceau = 0;
int morceauPrecedent = 0;
void setup()
{
pinMode(switchPin,INPUT_PULLUP);
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);
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(20); //Set volume value. From 0 to 30
}
void loop()
{
if (!digitalRead(switchPin)) {
morceau = random(6) + 1;
while (morceau == morceauPrecedent) morceau = random(6) + 1;
morceauPrecedent = morceau;
myDFPlayer.play( morceau );
delay( 3000 );
}
}
Mainteannt, la LED du DFPlayer s'allume! Donc je suppose qu'il est bien alimenté. Mais il se ne passe toujours rien à la pression du bouton.
NatsuHinoiri:
Si,si, j'ai bien lu le topic hbachetti
Mainteannt, la LED du DFPlayer s'allume! Donc je suppose qu'il est bien alimenté. Mais il se ne passe toujours rien à la pression du bouton.
Bonjour
Reponse pragmatique
au moins dans un 1er temps
tu ne veux jouer qu'avec 8 morceaux ?
t'emm...e 8) pas
demarre sur une carte avec à la racine juste
1.mp3
2.mp3
...
8.mp3
Personnellement je reprendrais l'exemple de base de la librairie pour valider le câblage.
Cela permettrait d'éliminer les doutes : faux contacts, fil débranché, panne du DFPLAYER, etc.
Cela m'est déjà arrivé de cramer l'ampli de sortie suite à une fausse manip ...
hbachetti:
Personnellement je reprendrais l'exemple de base de la librairie pour valider le câblage.
Cela permettrait d'éliminer les doutes : faux contacts, fil débranché, panne du DFPLAYER, etc.
Cela m'est déjà arrivé de cramer l'ampli de sortie suite à une fausse manip ...
Oui
aussi henri
J'en ai un trés éclopé qui rend un son horrible sur HP pour avoir un des pin HP qui a rencontré un truc qu'il ne fallait pas 8)
"Y cause pas bien , mais y cause quand même" 8)
Pas de soucis sur les sorties L/R
Du coup, pour vérifier que mon HP n'était pas cramé, j'ai réessayé de téléverser le programme que j'avais essayé au début, le "Get Started" de DFRobot (copier/coller du code de ce site: DFPlayer Mini Mp3 Player - DFRobot Wiki)
Le haut parleur sort mes chansons sans soucis. Et change de morceau automatiquement au bout de 3sec.
J'ai donc voulu réessayer de téléverser mon programme que j'ai appellé "Pression". Le téléversement se fait sans problème. Mais l'arduino continue d'effectuer le programme "Get Started".