Diffuseur automatique de sons

Bonjour

Je voudrai faire une surprise à un ami et lui offrir un diffuseur automatique de sons (paroles et/ou musique).

Après énormément de temps à rechercher sur le net ce qui pourrait convenir, j'en suis arrivé à imaginer un montage avec un module arduino et un df player.

Le problème est que je n'y connais rien en microcontrôleur donc la programmation, c'est du chinois pour moi.

Aussi, je me permets de m'adresser à la communauté de ce forum pour demander si un membre pourrait réaliser la programmation qu'il faut pour mon projet :

  • Le système doit pouvoir diffuser les sons en permanence, tout le temps où il est alimenté.
  • Le son diffusé ne suit pas l’ordre d’enregistrement de la SD (lecture aléatoire).
  • Le temps entre chaque diffusion n’est pas fixe et dois être différent entre chaque diffusion (entre 1 et 5 minutes).

Merci pour votre aide

effectivement c'est deux composants reviennent souvent dans les projets de boite musical.
Tu peux d'ailleurs en trouvé dans la section réalisation et projets finis

A pars @jpbbricole, il y a peux d'utilisateur du forum qui programme les projets pour un autre utilisateur.
En générale on accompagne les demandeurs dans la réalisation de leur projet, enfin qu'il puisse être le plus autonome par la suite.

Donc si tu as l'envie d'apprendre à réaliser, nous seront surement un certain nombre à essayer de t'aider :slight_smile:

Tu ne sembles pas être demandeur de la partie électroniques/composant, tu as déjà testé et listé tous les composants, Arduino, DFPlayer, bouton/molette ou écran d'affichage, amplification si nécessaire, haut parleur, ... ?

Avant d'exposer ma demande, j'ai bien recherché et trouvé des boites à musiques mais avec leur programmation dédiée qui ne correspond pas à ce qu'il me faut.

Je comprends mais pour m'accompagner, il faudrait déjà que j'ai une base de travail mais n'ayant pas le temps pour apprendre, car j'ai plein d'autre travaux en cour, je ne peux commencer à apprendre et je remercie d'avance ce qui voudront bien m'aider.

Comme j'ai certaines bases en électricité/électronique, oui, je sais ce qu'il me faut :slight_smile: Une alimentation 220/5V, un ampli BF stéréo 5W minimum, 2 haut parleurs, un arduino et un DF player pro (je préfére pouvoir télécharger les sons via un port usb plutôt que changer une car SD°

oui, bien sûre, mais cela donne une bonne idée des problèmes que l'on peut rencontrer et des solutions matérielles ou logiciel utilisées.
Ma remarque est donc plus dans le cas ou aurais envie d'apprendre à faire.

Oui c'est bien ce que je t'ai indiquer, tout ceci est dans le cas ou tu ais l'envie/le temps d'apprendre.
C'était pour que tu es l'information, tu en fait ce que tu veux et tu n'a pas a te justifier.
J'espère que tu pourras trouver une personne qui peu prendre du temps sur ses projets personnel pour t'aider.

Ok, comme tu ne l'avais pas précisé, c'est important à savoir, pour les personnes qui essayerons de t'aider.

J'ai bien vu ce projet de chansons aléatoires https://forum.arduino.cc/t/diffusion-de-chansons-aleatoires/582266 mais je suis incapable d'étudier ce qu'il faudrait pour transformer cette programmation afin d'obtenir ce que je veux.
Donc peut être utiliser cette programmation comme base de travail ?????

En attendant, merci à toi terwal pour m'avoir orienté.

J'ai plus pensé à ce projet là

Mais je n'ai pas regardé en détail, ce qu'il fallait changer ou pas.

Après il faut laisser un peu de temps pour voir qui peut t'aider dans ce projet.
Car comme je te l'ai indiqué, il y a peu de membre qui développe des projets pour les autres, il faut donc des fois un peu de temps, pour que ceux-ci se manifestent.

C’est moi qui ai fait le développement de la boîte à musique nature.

Des que c’est alimenté cela lance de façon aléatoire un chanson.
Nota : au début de l’application l’arduino verifie le nombre de chanson qu’il y a.

Pour l’aspect vraiment aléatoire j’utilise un NE555 qui me sert d’oscillateur.

Il y a potentiomètre pour régler le volume
Et un potentiomètre pour régler la durée.

Quand on change la durée (30->45 minutes) le dfplayer indique la durée.

J’ai pas très bien compris le temps de 1 à 5 minutes de votre projet

Bonjour debutantparis

Une source "d'inspiration", quand on a pas le temps, c'est l'IA, ChatGPT, j'y ai transmis ta question et je te donne sa réponse.
Je n'ai pas testée la solution proposée, mais ça peut être une excellente base de travail, je n'y ai pas trouvé d'incohérences.
Je peux toujours t'aider pour la suite :wink:
L'IA, dans ce cas, ChatGPT, sont des outils actuels qui peuvent être de grand service, à ne pas négliger :wink:

A+
Cordialement
jpbbricole

J'ai aussi vu ce projet mais si j'ai bien compris, le réglage du temps avec le potentiomètre sert à régler la durée du morceau qui passe. Pour ce que j'envisage de faire, c'est le temps entre chaque morceau qui doit être variable aléatoirement et donc géré automatiquement par le microcontrôleur.

Bonsoir bogiose3
Déjà merci pour votre intervention.

C'est déjà ce qu'il me faut :wink:

Pour le volume, comme je vais monter un ampli BF, le volume se réglera avec le potentiomètre de celui-ci.
Par contre, dans mon cas, comme la durée entre chaque morceau de musique doit être aléatoire, c'est le microcontrôleur qui doit gérer.

Et bien entre chaque morceau de musique, la durée ou il n'y a aucun son doit être par exemple de 1 minutes puis 3 minutes pour la suivante puis 2 pour la suivante........

Bonsoir jpbricole
Merci pour ton intervention.

Oulala, tu me parles d'IA mais c'est encore un domaine que je ne connais pas et à mon age, 67ans, j'avoue ne pas avoir le courage de me lancer la dedans :wink:
De ce fait, il m'est impossible de juger la solution que l'IA t'a proposée.

Je retiens donc ta proposition d'aide et je t'en remercie.

Bonjour debutantparis

Je m'y suis mis à 75 ans et trouve ça fantastique :wink:

J'ai testé cette solution et, à part une erreur soit:
int randomDelay = random(60000, 300000); // Délai aléatoire entre 1 et 5 minutes (60000 ms et 300000 ms)
au lieu de
unsigned long randomDelay = random(60000, 300000); // Délai aléatoire entre 1 et 5 minutes (60000 ms et 300000 ms)
c'est quasiment du "clef en main"

Je te sert ça dans la soirée.

A+
Cordialement
jpbbricole

Et bien chapeau bas, bravo

Il n'y a pas d'urgence

Quel arduino et DF player me conseillerais tu car il y a en a des dizaines, à tous les prix et je ne tiens pas à être embêté avec de la "chinoiserie" à 2 balles :wink:

Bonsoir debutantparis

Ca dépend de quelle puissance il te faut, s'il faut un ampli externe.

L'exemple que je te transmet est basé sur le très connu DFPLAYER Mini
image
qui se connecte ainsi:
image
Le programme est quasiment celui de ChatGPT à quelques variantes prêt:
La vitesse entre 2 morceaux est accélérée afin de mieux voir le fonctionnement du programme:
int randomDelay = random(60000, 300000); // Délai aléatoire entre 1 et 5 minutes (60000 ms et 300000 ms)
vers
unsigned long randomDelay = random(4000, 10000); // Délai aléatoire entre 4 et 10 secondes

J'ai ajouté des commandes afin que tu voies fonctionner le programme dans la console à 9600.

DFPlayer Mini en ligne.
Nombre de pistes: 10
Piste 9
	Pause 5 secondes.
Piste 8
	Pause 7 secondes.
Piste 6
	Pause 6 secondes.
Piste 4
	Pause 5 secondes.
Piste 5
	Pause 9 secondes.

Je te mets un zip contenant 10 fichiers MP3 à mettre sur la carte SD:
Sons MP3.zip (86.2 KB)

Le programme:

#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
//SoftwareSerial mySoftwareSerial(8, 10); // RX, TX   // jpbbricole
DFRobotDFPlayerMini myDFPlayer;
int numberOfTracks; // Nombre de fichiers
void setup() {
	mySoftwareSerial.begin(9600);
	Serial.begin(9600);
	
	if (!myDFPlayer.begin(mySoftwareSerial)) {  // Commence la communication avec le DFPlayer
		Serial.println(F("Impossible de démarrer le DFPlayer Mini."));
		while(true);
	}
	numberOfTracks = myDFPlayer.readFileCounts(); // Compte le nombre total de pistes
	if (numberOfTracks == -1) {
		Serial.println(F("Erreur lors de la lecture du nombre de fichiers."));
		return;
	}

	Serial.println(F("DFPlayer Mini en ligne."));
	Serial.println("Nombre de pistes: " + String(numberOfTracks));
	
	myDFPlayer.volume(20);  // Réglez le volume (de 0 à 30)

	randomSeed(analogRead(0));  // Pour "brasser" les nombres aléatoires
}

void loop() {
	int randomTrack = random(1, numberOfTracks + 1); // Sélectionne une piste aléatoire
	Serial.println("Piste " + String(randomTrack));

	myDFPlayer.play(randomTrack); // Joue la piste

	unsigned long randomDelay = random(4000, 10000); // Délai aléatoire entre 1 et 5 minutes (60000 ms et 300000 ms)

	Serial.println("\tPause " + String(randomDelay / 1000) + " secondes.");

	delay(randomDelay); // Pause avant la lecture suivante
}

Il y a plus "cossu" comme carte comme la DY-SV5W
image
et la DY-SV8F,sans carte SD avec MP3 en mémoire interne (8Mb flash)
image
Si tes sons prennent moins de 8Mb, ils peuvent y être chargés via l'USB.
Ces 2 cartes ont un jack pour attaquer directement un ampli.

Je vais voir avec ChatGPT pour faire un programme avec cette carte DY-SV8F.

A+
Bonne soirée.
jpbbricole

Encore merci pour toutes ces infos jpbricole : :+1:t2:

Pour la DF Player, je vais finalement prendre DY-SV5W car ce sera plus simple de changer une carte SD que de relier le projet à un pc.

Donc, ne t’embête pas avec l'autre.

Par contre, pour la carte Arduino, je pense prendre celle-ci :

Qu'en penses tu?

Bonne soirée à toi aussi

Cordialement

Bonsoir debutantparis

Que du bon :wink:
Je vais regarder pour adapter le programme.

Bonne et belle soirée.
jpbbricole

Top merci :+1:t2:

Alors je commande

Je peux essayer cette configuration, demain, attends que je te confirme :wink:

Oups, trop tard, l'arduino est commandé :grinning:

Non, il ne te parles pas vraiment d'IA, il te parle d'utiliser un outil, auquel tu poses des questions et qui te réponds.
Donc un outil 10 fois plus simple à utiliser d'un forum, tu ouvres chatGPT dans ton navigateur, tu écris ta question dans le champs de saisie et il t'écrit sa réponse.

Par contre comme tu es débutant, tu sera incapables d'apprécié la justesse de sa réponse et encore moins de modifier le programme proposé pour l'adapter exactement à ton besoin :slight_smile:
Mais @jpbbricole n'arrive pas à intégrer qu'un débutant ne peut pas utiliser cet outils de la même façon que lui qui est un expert confirmé d'Arduino :slight_smile: