Soundboard - Prototype

Bonjour à tous !

Dans le cadre d'un projet de soudboard. L'idée est d'avoir une boite avec 36 bouttons pour trigger 36 sons. La boite sera alimentée par un battery pack qui se rechargera en USB-C.
Mon seul soucis c'est que je tombe sur des informations contradictoire (du moins, que je n'arrive pas à process vu mon petit niveau en éléctronique):
Sur plusieurs posts on dit que c'est faisable avec un Arduino (Pro mini/Uno/Mega) et un module DFPlayer Mini MP3 Player et sur d'autres posts il est indiqué qu'un simple DFPlayer Mini MP3 Player ferait l'affaire.

Dans le deuxième cas, je ne comprends pas comment est-il possible d'adresser les différents sons sur les différents boutons sans avoir un controleur type Arduino.

Ma question est donc la suivante: Selon vous, quel moyen serait le plus efficient (en terme de cout et de compléxité) pour développer un dispositif pareil ?

Merci pour vos retours !

Bonjour chiara667

Seul le Mega a assez d'entrées pour traiter 36 boutons, les autres Arduino nécessitent des extensions de ports genre MCP23017

Je ne pense pas, sauf si tu ne veux faire que MP3 suivant ou MP3 précédent oui (Pin IO1 et IO2), mais le choix parmi 36, par boutons , sans Arduino, non.

Tu pourrais te passer d'Arduino avec une carte SV5W
image

Avec son mode

Permet de jouer jusqu'à 255 morceaux.


Tu pourrais mettre tes 36 boutons avec des diodes pour assurer le codage.

Cordialement
jpbbricole

1 Like

Merci pour le retour !

La SV5W m'a l'air d'être un bon compromis ! Comme dit, le but de la soundboard est de juste trigger un effet sonore à la fois et à souhait, et non que ça commence à jouer tous les effets sonores à la chaine (comme si c'était une playlist mp3), donc j'imagine que le " Key combination play" du I/O IM0 fait ça ?

Cordialement,
Chiara

Bonjour chiara667

Oui, à condition de faire une conversion en binaire des boutons, par exemple le bouton 12 doit mettre un 0 sur IO2 et IO3, le bouton 23, met un 0 sur IO0, IO1, IO2 et IO4.
Ca se fait avec des diodes, si tu n'a jamais fait, je peux te faire un schéma.

PS: je n'ai jamais fait mais j'ai le matériel pour essayer.

Cordialement
jpbbricole

1 Like

Oh c'est super gentil ! Je veux bien avoir un schéma oui ! Je regarde pour faire un tableau de conversion des boutons vers le binaire également !

Bonjour chiara667

Je vais faire un montage d'essai pour valider et je te fais le schéma.

A+
Cordialement
jpbbricole

1 Like

Top merci énormément !

D'ailleurs au passage voici un schéma de comment je vois le résultat final, je metterais également les liens des différents composants que je vais inclure, car je ne sais pas vraiment si tout est compatible ou si tout tiendra en terme de tension/ampérage

Bonsoir chiara667

Je t'ai fait un schéma afin que tu compresses la "mécanique" de câblage des boutons:

S'il te faut un schéma complet, c'est volontiers :wink:

Pour le fun, le montage d'essai:

A+
Bonne soirée
jpbbricole

1 Like

Merci énormément pour ce schéma c'est un peu plus clair !

Voici la liste des élèments que je vais intégrer au circuit:

  • Boutons momentary push (3A 250V AC)
  • Power switch (Pour celui-ci je ne sais pas si je dois prendre le 3-6V ou le 12-24V)
  • PCB (7cm*9cm)
  • Module SV5W
  • Module de charge USB-C (5V - 1A)
  • Support pour piles rechargeables (4x AA - 6V)
  • Indicateur de charge (en 6V)
  • Module d'Amplificateur (afin de pouvoir avoir deux speakers 3-5W)
  • Speakers ((3W - 4 Ω)

Ainsi que le lien regroupant leurs fiches produit:
https://www.linkslist.app/UUOWN84

Du coup avec ces composants, tu penses que c'est jouable ou il faudrait que j'en change ? J'ai vu que tu avais rajouté des résistances, je dois aussi en mettre j'imagine ? Lesquelles choisir cependant ?
Hâte de voir le schéma complet avec tous les composants du dessus en tout cas !
Enorme merci !

Cordialement,
Chiara

Bonjour chiara667

Les boutons que tu as choisis se maintiennent une fois pressées et se libèrent une fois repressés, c'est bien ce que tu veux?
image

Pour le reste, Je ne saurais te répondre, ce n'est pas trop ma partie :woozy_face:

Ce ne sont pas des résistances mais des diodes:


Des 1N914 devraient faire l'affaire.

Il faut être conscient qu'avec ce système à diodes, il est possible de presser plus d'un bouton à la fois. Il n'y a pas de danger, mais le MP3 joué n'est pas forcément celui désiré, voire il ne se passe rien du fait que la combinaison de ces touches donne un numéro de Mp3 supérieur à ceux enregistrés sur la carte SD.

Cordialement
jpbbricole

Bonjour chiara667

Voilà le schéma de la matrice à diodes:

Il y en a 80 à souder :woozy_face:
Je ne sais pas si un circuit intégré peut remplacer tout ça, mais, pour moi, la solution la plus simple, si tu as suffisamment de place, est l'Arduino Mega et un petit bout de programme, se serait le plus simple à câbler, tu as 32 fils venant de tes boutons qui arrivent sur le connecteur en bout du Mega
image

et 6 fils, qui partent vers le SV5SW (IO0 à IO5)
image

Je te laisse le choix, je peux te faire le programme, si nécessaire.

Le schéma de la matrice à diodes:
Soundboard32boutonsDiodes.pdf (89.6 KB)

Cordialement
jpbbricole

1 Like

Bonjour !
Alors merci pour ce super retour !
Concernant l'Arduino, je suis pas forcément contre MAIS il existe des alternatives moins chères sur Aliexpress genre celui-là : MEGA2560 MEGA 2560 R3 ATmega2560-16AU. En théorie ça devrait fonctionner de la même manière étant donné que c'est un controlleur, non ?

Dans ce cas là, si tu as une idée de code à proposer, je t'avoue que je n'y suis pas forcément contre !

Merci encore pour ton immense travail, ça me fait avancer rapidement !

Bonjour chiara667

Oui, le Mega est la solution la plus simple, pas de diodes à souder, ENORME gain de temps, juste un petit bout de programme que je te ferais très volontiers.
Je te ferais, également, le schéma du câblage.

A+
Cordialement
jpbbricole

Bonjour chiara667

Voilà le schéma de la version Arduino Mega:


SoundboardMega32boutons.pdf (78.9 KB)

et la liste des câbles:
ARDFR_chiara667_soundboardMega_Brochages.pdf (94.8 KB)

Le programme (toute première version !)

/*
    Name:       chiara667_Soundboard.ino
    Created:	31.05.2023
    Author:     jpbbricole/chiara667
				https://forum.arduino.cc/t/soundboard-prototype/1130052

	Commande de 32 MP3 via 32 boutons et un module DY-SV5W
	https://grobotronics.com/images/companies/1/datasheets/DY-SV5W%20Voice%20Playback%20ModuleDatasheet.pdf?1559812879320
*/

//------------------------------------- Pour UNO
//const int sv5wIOpin[] = {A0, A1, A2, A3};
//const int btnMp3Pin[] = {2, 3, 4, 5, 6, 7, 8, 9};

//------------------------------------- Pour MEGA
const int btnMp3Pin[] = {22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,      // Pin des boutons
                         38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};    
const int btnMp3Nombre = sizeof(btnMp3Pin) / sizeof(btnMp3Pin[0]);     // Nombre de boutons
const int btnMp3EtatOn = LOW;     // Etat lu du bouton quand pressé

const int sv5wIOpin[] = {4, 5, 6, 7, 8, 9, 10, 11};     // Pin des commandes IO0 à IO7 vers SV5W
const int sv5wIOnombre = sizeof(sv5wIOpin) / sizeof(sv5wIOpin[0]);     // Nombre de boutons
const int sv5wIOetatOn = LOW;     // Etat de la sortie IO quand activée
const unsigned long sv5wIOetatOnPulse = 1000;     // Durée de l'impulsion de commande

int mp3selectionnee = 0; 
   
void setup()
{
	Serial.begin(115200);

	//--------------------------------- Initialisation des entrées des boutons
	for (int b = 0; b < btnMp3Nombre; b ++)
	{
		pinMode(btnMp3Pin[b], INPUT_PULLUP);     // Donc actif à LOW
	}

	//--------------------------------- Initialisation des sorties de commandes vers le module SV5W
	for (int i = 0; i < sv5wIOnombre; i ++)
	{
		pinMode(sv5wIOpin[i], OUTPUT);
		digitalWrite(sv5wIOpin[i], !sv5wIOetatOn);     // Mettre la sortie à OFF
	}
}

void loop()
{
	mp3selectionnee = btnMp3Lecture();
	if (mp3selectionnee > 0)
	{
		sv5WIOcommande(mp3selectionnee);
		delay(sv5wIOetatOnPulse);
		sv5WIOcommande(0);     // Tout les IOn OFF
	}
}

/*/
	Lecture des boutons MP3 seul le premier bouton pressé est pris en compte
	retourne 0 si aucun bouton est pressé
*/
int btnMp3Lecture()
{
	for (int b = 0; b < btnMp3Nombre; b ++)
	{
		if (digitalRead(btnMp3Pin[b]) == btnMp3EtatOn)     // Si bouton pressé
		{
			return b + 1;     // On retourne le numéro du bouton presse de 1 à btnMp3Nombre
		}
	}
	return 0;
}

/*/
	Commande du module MP3 SV5W sur ses ports IO0 à IO7
	Transformation décimale en binaire du numéro du MP3
	Si mp3Num est 0 tout les IOn sont mis OFF
*/
void sv5WIOcommande(int mp3Num)
{
	for (int b = 0; b < sv5wIOnombre; b ++)     // On lit les bits de mp3Num
	{
		if (bitRead(mp3Num, b) == 1)
		{
			digitalWrite(sv5wIOpin[b], sv5wIOetatOn);     // Mettre la sortie à IOb à ON
		} 
		else
		{
			digitalWrite(sv5wIOpin[b], !sv5wIOetatOn);     // Mettre la sortie à IOb à OFF
		}
	}
}

C'est testé "en vrai" sur un Arduino Uno.

A ta disposition pour toutes questions.

Cordialement
jpbbricole

1 Like

Bonjour !

Merci pour ton retour, ça m'aide énormement !

J'ai enfin commandé les composants:

  • Clone Arduino 2560 CH340
  • Module SV5W
  • Module de recharge USB-C
  • Boitier Batterie 8xAA
  • Module de régulation de tension
  • Module Amplificateur

Je devrais recevoir ça dans deux semaines.
Maintenant concernant le circuit, j'avais quelques questions pour éviter des surtensions et surtout éviter que tout me pète au visage. J'ai déssiné ce circuit, tu penses que c'est viable ?

Tu en penses quoi ?

Merci encore pour ton aide si précieuse !

Cdlt,
Chiara

Bonjour chiara667

J'aurai fait plus simple, pour ce qui est de l'alimentation, un powerbank tel que celui-ci:
image
ce powerbank a un commutateur qui permet de supprimerla surveillance de la consomation et donc ne déclanche pas si elle est trop faible.
J'ai mis ces accus

Pour alimenter l'ampli, un élévateur de tension:
image

Pour ce qui est des boutons, de quel type sont-ils, avais tu vu ma remarque du post #11?

A+
Cordialement
jpbbricole

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.