Contenus de la page
Introduction
L’objectif de notre projet est de construire une marble machine.
Notre intérêt commun pour la musique nous a inspiré à concevoir un objet sonore lors de notre cours de Makers. Nous avons exploré diverses machines produisant du son et la marble machine de Martin Molin du groupe Wintergatan nous a particulièrement captivés. Toutefois, cette machine est très complexe et trop grande pour être réalisée dans le cadre de notre cours. Par conséquent, nous avons décidé de créer une version réduite de la marble machine en combinant des éléments mécaniques et électroniques. Notre objectif est de préserver le principe des billes produisant du son, mais nous ajouterons également une composante informatique qui nous permettra de programmer différents morceaux en utilisant des fichiers MIDI. Vous trouverez ci-dessous notre avancement dans le projet ainsi que les instructions pour le réaliser vous-même.
1. Trouver une idée et planifier l’exécution
Objectifs principaux
- Créer un système de remontée des billes
- Créer un système de répartition des billes dans plusieurs chemins afin de pouvoir les libérer une par une dans le chemin qui correspond à la note que l’on veut jouer
- Créer un système de lancement des billes sur l’instrument
- Créer un ensemble de touches à base de tubes dont la profondeur sera modifiable avec des moteurs programmables afin d’avoir une gamme complète
- Développer un programme informatique qui contrôle les moteurs à partir d’un fichier midi donné en entrée
Nous avons partagé la machine en trois parties avec les buts et les problèmes potentielles:
- Le bassin de réception des billes et l’ascenseur pour les billes
- Buts: Récupérer les billes et les fournir à l’ascenseur, fournir les billes récupérées à l’ascenseur et au distributeur
- Défis: Récupérer toutes les billes sans en perdre aucune, fournir les billes rapidement à l’ascenseur et au distributeur
- La partie qui distribue et émet les billes pour jouer un son
- Buts: Répartir les billes dans plusieurs modules contrôlables qui pourront lâcher les billes sur la partie sonore inférieure.
- Défis: Réussir à répartir équitablement les billes dans chaque canal, trouver un système qui permet de faire tomber une et une seule bille au moment voulu
- La partie qui fait un son si les billes tomber dessus
- Buts:
- Défis:
Nous avons décidé de séparer le projet en ces trois grand axes pour que chaque membre du groupe puisse se concentrer sur une partie en profondeur. La suite du projet sera alors décrite partie par partie, du début à la fin.
2. Distributeur de bille (Asia)
Modélisation
La modélisation a été la partie la plus chronophage dans la construction du distributeur de billes. Il s’agissait de trouver un système facilement contrôlable, assez fiable pour qu’il puisse distribuer une seule bille à la fois, et assez précis pour qu’il puisse faire tomber la bille au bon endroit.
Ma première idée était de modéliser le distributeur sous forme de tube; une trappe serait installée sur l’extrémité inférieure, et s’ouvrirait pour laisser sortir les billes. J’ai très vite abandonné cette idée car cela me paraissait trop compliqué d’arriver à la précision nécessaire à laisser sortir une seule bille à la fois, et à ne pas bloquer le système en refermant la trappe sur une bille.
J’ai alors pensé le problème dans l’autre sens: au lieu de faire tomber les billes vers le bas, pourquoi ne pas les pousser vers le haut? Cette idée a été la base de la modélisation du module. Un autre prérequis très important était également de pouvoir stocker plusieurs billes en « file d’attente » dans chaque module pour être sûr de ne jamais arriver à cours de bille.
J’ai alors modélisé sur le logiciel Onshape un module permettant de pousser une bille vers le haut. L’électro-aimant situé dans la partie basse sera actionné afin de charger une bille (i.e. le piston descend et permet à une bille de glisser dessus) puis relâché afin de faire glisser la bille sur la paroi grâce à une faible inclinaison, jusqu’à atteindre un trou à peine plus large que la bille et faire tomber la bille dans celui-ci. Le modèle général n’a pas changé au long de tous mes tests; j’ai du faire plusieurs essais afin de rectifier des erreurs de mesure mais la forme générale a toujours été la même.
Afin de lier ces modules entre eux et de répartir les billes équitablement, il a fallu créer un système plus global permettant de stocker des billes en amont. J’ai cherché de l’inspiration dans les nombreuses vidéos YouTube qui existent sur des marble machines, une première idée était de faire une planche inclinée séparée en différents chemins qui mèneraient chacun à un des modules de distribution, mais j’avais peur que les billes ne soient pas distribuées équitablement dans chaque chemin et que certaines se bloquent et empêchent alors le passage de toute bille dans le système. C’est alors que je suis tombée sur cette vidéo qui m’a donné l’idée que j’ai retenue pour notre projet:
On peut y voir (vers 3:00) un système de barrette à trous inclinée sur les quelles glissent les billes. Les trous vont alors jouer un double rôle: lorsque le module correspondant est plein, la bille ressortira tout juste assez pour qu’une autre bille puisse rouler dessus et continuer son chemin. Lorsque le module est vide ou pas entièrement plein, la bille qui roulera sur la barrette tombera dans le trou et sera dans la file d’attente de ce module. Si aucun des trous n’est libre, la bille termine son chemin dans le bac de récupération et retourne dans le système avec les autres. Ainsi, le système est constamment saturé en billes et chaque espace libéré est comblé très rapidement. Cela implique qu’il nous faut un grand nombre de billes qui circulent en continu sur le circuit afin de pouvoir combler chaque espace vide le plus vite possible.
J’ai donc modélisé une simple barrette similaire à celle de la vidéo, avec un espacement entre les trous cohérent avec le module de réception des billes jouant de la musique, et sur la quelle les billes pourront glisser grâce à une inclinaison et à un rebord intégré.
Réalisation
Voici tout le matériel que j’ai utilisé pour ce projet:
- Bois MDF 3mm
- 8 électro-aimants
- Une carte Arduino Uno
- 8 résistances, 8 diodes, 8 transistors NPN
Les modules et la barrette ont été réalisés en bois avec la découpe laser. Chaque élément électronique a été soudé selon un circuit autour du transistor qui fait office d’interrupteur. Les 8 circuits sont placés en parallèle et alimentés avec un générateur avec une tension de 25V. Le circuit électronique est basé sur ce principe:
Les problèmes principaux ont été l’alignement des modules avec les tubes en dessous ainsi que trouver le bon angle pour que les billes puissent rouler sur la barrette assez vite pour passer au dessus des trous déjà remplis et pas trop vite pour ne pas passer au dessus d’un trou vide sans tomber dedans.
3. L’ascenseur à billes (Minh)
Modélisation
Pour l’ascenseur des billes j’ai trouvé de l’inspiration dans les vidéos suivantes. Le type de l’ascenseur avec une spirale était le plus facile et plus fiable à faire avec les moyens disponibles au fablab. C’était nécessaire de faire une spirale et un boite pour guider les billes.
Réalisation
Pour l’ascenseur j’ai construit une spirale et une boite sur Onshape (vois ci-dessous). La spirale était imprimée avec l’imprimante 3D et pour la boite j’ai découpé avec la découpeuse laser des pièces de bois MDF 3mm pour l’assembler. En assemblant j’ai ajouté un moteur dessus la spirale pour la propulser. Dans la vidéo dessus vous pouvez voir la fonctionnement de l’ascenseur.
Tubes à profondeur modulable (Nicolas)
Concept
L’idée est de produire du son en faisant tomber des billes sur l’extrémité d’un tube. Le choc fait vibrer le tube qui produit un son; la profondeur du tube module la fréquence produite par le tube en vibration. Nous voulons donc pouvoir modifier la profondeur des tubes; de cette manière on peut configurer chaque de manière à ce qu’il produire soit sa note naturelle, soit le demi ton au dessus ou en dessous (bémol ou dièse respectivement). Comme le tube sera bouché à ses deux extrémités, il faut faire un trou vers le haut du tube, comme pour une flûte, pour faire sonner l’objet. Ci-dessous, nous fournissons un tableau des mensurations correspondantes à certaines notes.
Pour moduler la profondeur des tubes, nous mettons en place le système suivant; un palet vient obstruer l’extrémité inférieure du tube. Ce palet est mis en mouvement dans l’intérieur du tube grâce à une crémaillère dont le mouvement est contrôlé via un engrenage, lui même mis en rotation grâce à un moteur pas à pas. Nous faisons le choix du moteur pas à pas car il nous permet une grande précision; celle-ci est nécessaire à en voir les écarts de profondeur de tube correspondant à deux demi-tons voisins.
Cependant, les positions d’un moteur pas à pas ne sont pas commandables; on peut seulement commander au moteur de faire un certain nombre de tours. Nous mettons donc en place la solution suivante : en fin de course de la crémaillère (à son position la plus basse), nous plaçons un bouton poussoir. Celui-ci, lorsqu’actionné par la crémaillère, permettra de savoir que la position la plus basse a été atteinte.
Modélisations
Nous modélisons dans un premier temps le support des tubes :
Tous les modèles sont disponibles ici. Nous prenons en compte que les moteurs utilisés sont des 28BYJ-48.
Matériel et code (un tube)
Matériel
- Un moteur pas à pas 28BYJ-48
- Une arduino avec au moins 3 pins PWM
- Un contrôleur ULN2003
- Un petit interrupteur poussoir
- Les modèles découpés à la laser
- Une alimentation externe
Mise en oeuvre
Le contrôle de la profondeur d’un tube se fait avec le code disponible sur ce repo. Le code présenté possède deux classes majeures: la classe NoteController
et la classe Instrument
. La classe NoteController
est une interface pour le contrôle d’un tube. On lui assigne une note et les différentes profondeurs correspondant à ses altérations (bémol, naturel, dièse). La classe Instrument
est un wrapper qui permet de contrôler un ensemble de NoteController
. Il suffit de sélectionner une gamme sur l’instrument et la classe se charge d’envoyer les changements au(x) NoteController
correspondant(s).
Pour le montage, il faut coller les pièces de manière à obtenir le maintien suivant:
En terme de branchement, il faut brancher le motor sur le contrôleur ULN2003 et brancher le contrôleur de la manière suivante:
- PIN 1 sur PIN digital normal de l’arduino
- PIN 2, 3 et 4 sur PIN PWM de l’arduino
On branche également le bouton poussoir sur une pin de l’arduino et on vient le placer dans le petit trou sous le support prévu à son effet (en fin de course de la crémaillère). Le montage final est le suivant:
L’arduino se contrôle par Serial. Au démarrage, la crémaillère descend jusqu’à actionner le bouton pour trouver la position « zéro » (position la plus basse):
Puis, à ce moment, on peut contrôler le moteur. Serial attend deux entrées:
- un entier entre 0 et 2 correspondant à l’altération souhaité : 0 pour bémol, 1 pour naturel et 2 pour dièse;
- un entier entre 0 et 8 pour le nombre d’altération souhaité (à savoir que le fonctionnement sera le même que pour une page de solfège avec les bémols dans l’ordre Si Mi La Ré Sol Do Fa et les dièses dans l’ordre inverse)
On peut voir ci-dessous des changements de positions de la crémaillère:
Matériel et code (ensemble de tubes)
Modèles
Dans un premier temps, nous designons un bassin dans lequel nous plaçons nos maintiens de tubes. Ce bassin permettra de récupérer les billes une fois ces dernières tombées sur l’instrument. Les modèles sont disponibles sur onshape.
Mise en oeuvre théorique
Par manque de temps, la mise en oeuvre finale n’a pas été accomplie. Cependant, elle peut être réalisée avec les éléments présentés précédemment; il faut simplement prendre quelques précautions au niveau du montage arduino. En effet, pour contrôler un stepper, il faut 4 pins dont trois pins pwm. Une arduino n’est donc pas suffisante. Il est possible de faire un montage avec des arduino en cascades et de les faire communiquer par protocole I2C. Notammant avec la libraire Wire de arduino, les échanges sont relativement simples à écrire. Ainsi, on attribut à chaque arduino nécéssaire le contrôle de certains tubes correspondants à certaines notes.
Links
https://www.professional-audio.de/wp-content/uploads/2018/04/Wintergatan-PA-013.jpg