IMA3/IMA4 2021/2023 P7 : Différence entre versions
Ligne 250 : | Ligne 250 : | ||
=<div class="mcwiki-header" style="border-radius: 20px; padding: 10px; font-weight: bold; color: #FCA983; text-align: center; font-size: 80%; background: #1B0168; vertical-align: top; width: 98%;">'''Vidéo promotionnelle'''</div>= | =<div class="mcwiki-header" style="border-radius: 20px; padding: 10px; font-weight: bold; color: #FCA983; text-align: center; font-size: 80%; background: #1B0168; vertical-align: top; width: 98%;">'''Vidéo promotionnelle'''</div>= | ||
− | + | https://youtu.be/_C7WsNQtxT8 | |
=<div class="mcwiki-header" style="border-radius: 20px; padding: 10px; font-weight: bold; color: #FCA983; text-align: center; font-size: 80%; background: #1B0168; vertical-align: top; width: 98%;">'''Gestion de projet'''</div>= | =<div class="mcwiki-header" style="border-radius: 20px; padding: 10px; font-weight: bold; color: #FCA983; text-align: center; font-size: 80%; background: #1B0168; vertical-align: top; width: 98%;">'''Gestion de projet'''</div>= |
Version actuelle datée du 20 mai 2023 à 20:54
Sommaire
Résumé
Bienvenue sur cette page qui résume notre projet d'élève ingénieur en systèmes embarqués. Notre but était de concevoir et modéliser un accordeur de guitare automatique. Ce dernier rendrait l'accordage d'une guitare 100% automatique, du grattage des cordes à la rotation des mécaniques. Ce projet a été réalisé par ROUILLE Quentin, GRONDIN Louis et BULTEL Laurine, élève de SE4-SA.
Présentation générale
Contexte
La guitare est l’un des instruments de musique les plus populaires depuis le XIIIe siècle. Elle accompagne de nombreux genres musicaux tel que le jazz, le blues, la pop, le rock, etc. Mais comme tout instrument, la guitare se désaccorde avec le temps… Cet accordage peut se faire à l’oreille pour ceux qui ont l’oreille absolue, au diapason, ou à l’aide d’un accordeur. En effet les accordeurs de guitare manuels et semi-automatiques existent déjà, mais présentent quelques problèmes : imaginez un artiste voulant accorder en vitesse sa guitare avant de monter sur scène. Le bruit de la foule qui l’acclame déjà empêche son accordeur d’entendre correctement les notes jouées et de l’aider à accorder son instrument. C’est pourquoi nous avons décidé de développer un accordeur de guitare 100% automatique : du traitement du signal sonore à la robotisation des gestes d’accordages.
Objectif
Notre objectif est donc de savoir gratter une corde, acquérir la fréquence qui en est émise à l'aide de notre capteur (microphone ou capteur de vibration), puis grâce à notre algorithme, si la fréquence émise est supérieure à la fréquence de référence, le moteur tourne d'un sens pour tourner la mécanique, si la fréquence est inférieure, le moteur tourne dans l'autre sens. Nous devons donc travailler sur l'acquisition de la fréquence et le traitement du signal, et sur la modélisation 3D pour le boîtier, le rail et la pince.
Description
Cahier des charges fonctionnels
Avant de se lancer dans la conception d’un projet, il convient de bien identifier et formuler ses objectifs. Cela nous aide à fixer les directions que nous devrons prendre par la suite. La bête à cornes est un outil permettant de bien formuler les besoins et objectifs du projet. Ce diagramme nous sert de guide pour l’analyse fonctionnelle du besoin.
Nous avons également analyser l'environnement du projet pour démontrer la faisabilité de ce dernier. Pour cela, nous avons utilisé la matrice SWOT.
Nous avons ensuite rédiger les fonctions que notre accordeur doit remplir
Première solution
D'un point de vue conception, notre objet serait donc séparé en 3 parties :
- un boîtier contenant un moteur et une pince, placé sur les mécaniques de la guitare afin de pouvoir les tourner et régler ainsi la tension des cordes et donc, la fréquence émise
- un support fixe et une tige, placé au dessus de la caisse de résonnance, permettant de gratter les cordes unes à unes.
- une partie centrale qui contiendrait l'alimentation et le microcontrôleur
Solutions matérielles
Voici la liste du matériel que nous avons utilisé afin de réaliser ce projet :
Matériel | Image | Lien |
---|---|---|
Motoréducteur | https://www.robotshop.com/eu/fr/pololu-motoreducteur-75-1-metal-25dx54l-mm-hp-6v.html | |
Microphone KY037 | https://www.az-delivery.de/fr/products/mikrofon-modul-gross | |
Microcontrôleur Arduino ATMega2560 | disponible directement dans le kit Arduino | |
Ecran LCD | https://www.az-delivery.de/fr/products/1-3zoll-i2c-oled-display |
Développement Technique
Son
- Acquisition du signal avec le microphone
Malgré l’inconvénient des bruits parasites qui peuvent gêner l’acquisition, le microphone reste la solution la plus simple et efficace pour notre projet. Sur celui que nous avons choisi, le KY03, un petit potentiomètre permet de régler la sensibilité. Nous avons fait de nombreux tests afin de déterminer le meilleur réglage possible. En effet, avec trop de sensibilité, le microphone captait plus les bruits environnants, mais avec trop peu, il ne captait pas suffisamment la note jouée à la guitare. Nous avons donc essayé de trouver un juste milieu.
Nous avons ensuite réfléchi à une question assez importante : où placer le microphone lorsque l’on gratte une corde de la guitare ? Après s’être renseignés, nous avons décidé de le placer à l’intérieur de la caisse de résonance, en le glissant dans la rosace de l’instrument. Cet endroit est idéal pour capturer le son car la cavité creuse permet d’amplifier le son produit par les cordes.
- Traitement du signal
Une fois la note acquise, il est nécessaire de terminer sa fréquence afin de la comparer à la fréquence de référence de la corde. Pour se faire, Après de multiples tests, nous avons décidé d’utiliser la bibliothèque Arduino “arduinoFFT”, de Enrique Condes. Cette bibliothèque contient une fonction s’appelant MajorPeak, qui nous donne directement la fréquence du pic maximal observé dans la FFT du signal perçu. Nous avons échantillonné avec 256 échantillons et une fréquence d’échantillonnage de 5000 Hz.
Alimentation
Un objectif très important pour nous était d'avoir un système complétement transportable, il n’était donc pas envisageable de devoir brancher notre système à une source d’énergie fixe. Après quelques recherches nous avons conclu que l’utilisation d’une pile 9V était le plus optimale pour l’alimentation d’une carte arduino qui accepte (via une source d’alimentation externe) des tensions comprises entre 7V et 12V. Au-delà et en deçà de ces tensions on risque dans un sens, une sous alimentation du processeur et dans l’autre une surtension au niveau du régulateur qui viendra tout simplement après la surchauffe couper l’alimentation de la carte.
En intégrant une pile, il fallait que le système puisse être mis en marche de façon simple, nous avons donc rajouté un interrupteur va-et-vient dans notre montage. Pour repasser à la corde 1, il suffit de redémarrer le système.
Au niveau de la motorisation, nous devions également utiliser cette source d'énergie externe afin d'alimenter le driver moteur. Nous avons tout simplement créé une dérivation juste après l’interrupteur. Un câble viendra donc alimenter la carte via son port Vin et l’autre ira directement vers l’entrée d’alimentation du driver, la masse étant quant à elle commune à l’ensemble du circuit. L’écran et le microphone, pour leur part, sont alimentés par les ports de sortie de la carte arduino.
En ajoutant notre propre source de tension il a fallu porter une attention particulière à la protection de la carte. Dans un souci de sécurité nous avons ajouté une diode au niveau du port Vin, cette diode aura pour effet de laisser passer le courant uniquement s’il est dans le bon sens. Avec cette protection il n’est donc plus possible d’endommager la carte si l’on branche la pile dans le mauvais sens. En toute logique, il aurait fallu ajouter un transformateur 9V vers 6V afin de ne pas suralimenter le moteur. Etant donné qu’il ne fonctionne pas de manière continue, ce problème est négligeable, nous avons donc gardé cette configuration.
Motorisation
Nous nous sommes ensuite dédié à la motorisation du projet, afin de tourner les mécaniques de la guitare. Après quelques recherches, nous avons appris qu'il fallait un couple d'environ 0,2 Nm pour pourvoir tourner les mécaniques. Finalement le moteur choisi possède un couple d’environ 1.3 Nm pour une vitesse de rotation de 130 tr/min à vide. En raison de son prix (35 €) et de son poids (100 g) il n’était pas envisageable de créer une structure pouvant accueillir 6 moteurs de la sorte que ce soit en termes de poids, d’encombrement ou de prix. C’est donc principalement pour cela que nous avons décidé d’accorder une corde à la fois. Afin de pouvoir commander ce moteur avec une tension d’alimentation supérieure à celle de l’arduino et dans les deux sens de rotation, nous avons dû utiliser un driver moteur qui n’est autre qu’un hacheur commandé qui permet de faire passer une tension directement au moteur tout en étant piloté par l’intermédiaire de l’arduino. Grâce à cela il nous est donc possible d’alimenter le moteur à la même tension que la pile, soit 9 V, mais aussi de faire tourner le moteur dans le sens horaire et antihoraire.
Le driver est donc d’une part alimenté par la batterie et connecté au moteur d’autre part. Les interrupteurs sont quant à eux connectés à la carte arduino au niveau de ses sorties analogiques, sur lesquels nous agirons à travers le programme afin de pouvoir tourner les mécaniques. Les masses sont encore une fois toutes communes entre elles. L’utilisation d’un driver permet de modifier la vitesse de rotation du moteur (en modifiant la valeur que l’on envoie sur les pins de sortie).
Algorithme
Le programme qui nous permet d’accorder les cordes a été réalisé en langage Arduino. Il nous permet de contrôler le moteur via son driver en fonction des informations obtenues par le microphone et le traitement du signal. Le code s’appuie sur l'organigramme ci-dessous.
Le fonctionnement est assez simple. Globalement le programme va comparer la fréquence reçue par le microphone à la fréquence de référence de la corde et en fonction du résultat, faire tourner le moteur dans le sens horaire ou anti-horaire.
De plus, nous avons mis en place une vitesse et un temps de fonctionnement variables, lorsque le moteur doit modifier la tension d’une corde, en fonction de l’écart entre la fréquence voulue et la fréquence mesurée. En effet, si la fréquence mesurée est loin de la fréquence voulue, le moteur aura une vitesse plus élevée et tournera pendant un temps plus long que si l’écart entre ces deux fréquences est faible. Cette méthode nous permet d’atteindre plus rapidement la fréquence voulue. Nous avons également décidé que les fréquences mesurées avec un écart supérieur à plus ou moins 100 Hz de la fréquence voulue ne serait pas prise en compte afin de réduire les erreurs d’acquisitions et donc de tendre ou détendre la corde pour rien.
Affichage
Dans un premier temps, nous avions décidé d’utiliser des Leds pour informer l’utilisateur de l’avancement de l’accordage en temps réel, mais après réflexion nous avons choisi de réaliser une interface à l’aide d’un écran pour que ce soit plus compréhensible. Nous affichons donc à chaque fois la corde qui est accordée et la fréquence voulue pour que l’utilisateur sache où placer le moteur. Puis nous avons créé une barre de progression afin que l'utilisateur connaisse en temps réel où en est l’accordage de la corde. La barre de progression suit la logique suivante :
De plus, nous informons l’utilisateur lorsqu’il doit changer de corde et lorsque l’acquisition est en cours.
Grâce à cet écran, nous n’avons plus besoin d’utiliser le moniteur série Arduino et donc nous pouvons utiliser notre accordeur directement sans ordinateur
Strcuture
- Impression 3D
Tout d'abord, nous avions besoin d'une pièce qui lie l'axe du moteur au mécanique. Pour cela nous avons utilisé la conception 3D, sur le logiciel OnShape, afin de réaliser la pièce. Les dimensions ont été choisies afin de s’adapter le mieux possible aux mécaniques de différentes guitares. La pièce permet d’un côté de s’emboiter sur l’axe du moteur et de l’autre d’entourer la mécanique. Une fois que les deux axes sont liés, lorsque le moteur tourne, la mécanique tourne avec lui. Nous les avons ensuite imprimer en 3D au Fabricarium de l'école.
Ensuite, il nous fallait une pièce qui vienne tenir le moteur. Pour cela nous avons désigné une pièce en 2 parties : une qui vient tenir le moteur (orange), et l'autre qui permet à l'utilisateur de tenir le produit facilement (bleu).
Pour une question de sécurité et de confort pour l'utilisateur, nous avons également conçu une petite pièce pour tenir le micro. Cette dernière est pensée comme une "pince" que l'on vient glisser sur la rosace de la guitare, avec le micro du côté intérieur.
- Découpe laser
Une fois que l'entièreté de notre système était fonctionnelle, il nous fallait maintenant un contenant pour venir accueillir tous les composants de notre accordeur. Pour cela nous avons réalisé une boîte en bois en 6 faces qui peuvent s’assembler. Nous avons utilisé la découpe laser du Fabricarium.
Une fois les 6 faces prêtes, il suffit de les assembler avec de la colle à bois. On obtient finalement le produit ci-dessous qui permet d'accueillir parfaitement l’alimentation, l’arduino, le microphone (partie amplificateur) et l’écran. A l'extérieur de la boîte on aura le moteur qui ira se placer au niveau des mécaniques et le microphone au niveau de la rosace de la guitare.
Résultats
Une fois les tests réalisés, nous pouvons maintenant faire un bilan et une analyse critique de notre système.
Le programme tourne très bien et passe de corde en corde. (Annexe 3), cependant en termes d’acquisition de fréquence, notre accordeur est fonctionnel mais pourrait être amélioré. En effet, l’acquisition est parfaite avec un générateur de fréquence, mais n’est pas précise avec la guitare, l’onde sonore qui se propage n’étant pas aussi pure que celle du générateur. Nous pensons qu’avec un microphone de meilleure qualité, nous pourrions palier à ce problème. Néanmoins, notre accordeur est quand même capable d’accorder une guitare. Nous avons également eu des difficultés avec la gestion de la motorisation pour que la corde de la guitare puisse être accordée. En effet, les rotations du moteur étant parfois trop grandes comparé à l’erreur, nous avions du mal à nous rapprocher de la fréquence exacte. Cependant avec les améliorations que nous avons faites sur le code pour que le moteur tourne proportionnellement à l’erreur, nous arrivons à atteindre la fréquence voulue.
Nous sommes également très satisfaits de l’affichage sur l’écran LCD, qui permet à l’utilisateur de suivre l’accordage de sa guitare en temps réel et en comprenant si la fréquence réelle est inférieure, ou supérieure à la fréquence de référence ou si il y a eu une mauvaise acquisition.
Nous avons donc répondu aux fonctions que nous avions rédigées dans notre cahier des charges actualisées, à savoir : lancement du programme, acquisition du son, traitement du signal, comparaison de la fréquence réelle et de la fréquence de référence, rotation des mécaniques et affichage pour l’utilisateur, le tout sur une seule corde. Nous sommes également contents d’avoir réussi à faire de notre système un produit peu encombrant et léger pour être facilement transportable, et également assez présentable esthétiquement pour un prototype.
Bien qu’il ne soit pas parfait, notre accordeur répond aux objectifs que nous nous étions fixés.
Nous considérons donc avoir atteint l’étape TRL4, cependant nous avons réfléchi à des améliorations que nous pourrions faire afin de continuer ce projet.
Voici également quelques vidéos montrant les résultats obtenus :
Perspectives d'évolution
- Dispositif pour gratter les cordes
Du à des contraintes temporelles, nous n'avons pas pu concevoir la partie qui permet de gratter automatiquement les cordes. Ainsi, l'accordeur serait véritablement 100% automatique. Afin de répondre à ce problème il aurait été possible d’ajouter un système qui viendrait se fixer au niveau des cordes de la guitare. Ce système aurait été muni d’un médiator et aurait effectué un mouvement de va-et-vient sur l’ensemble des 6 cordes, il faudrait que ce mouvement soit en adéquation avec le reste du code.
- Carte électronique
Une fois notre système 100% efficace et terminé, nous aurions conçu une carte électronique afin d’avoir un système beaucoup plus compact. Nous aurions pu faire contenir toute la partie basse du système dans une boîte beaucoup plus petite et pratique pour l’utilisateur, sans aucun câble et composant apparents, ou même dans le manche du support moteur. Pour s’y faire nous serions passé par un logiciel de dessin de schéma électrique et de conception de circuits imprimés tel que Kicad. Nous aurions ensuite fait imprimer notre carte au pôle EEI de Polytech Lille avant d’y souder nos composants.
Bilan
Nous sommes fiers de pouvoir affirmer que ce projet a été un succès. Nous avons atteint un résultat dont nous nous satisfaisons, avec une conception, une fabrication et des tests réalisés sur une période de 3 semestres.
D’un point de vue technique, nous avons acquis de nombreuses compétences au long des 3 semestres, tels que la rédaction d’un cahier des charges, le traitement du signal, la conception 3D, la fabrication (impression 3D, découpe laser), la gestion d’un moteur etc…
Ce projet nous aura également apporté des aptitudes humaines. En étant à tour de rôle chef de projet, nous avons pu chacun faire du management au sein de l’équipe. L’organisation et la communication ont été des facteurs clés dans la réussite de notre projet. Il était également très important pour nous de se mettre d’accord avant chaque prise de décisions. Malgré quelques moments de doutes et de stagnation, notamment durant le S7, nous avons toujours réussi à poser ensemble nos objectifs et à ré-assigner à chacun des tâches précises.
Nous garderons donc un très bon souvenir de ce projet SE.
Vidéo promotionnelle
Gestion de projet
Diagramme de Gantt
En termes de gestion du projet, nous avons réussi, au S8, à rattraper notre retard accumulé au cours du semestre 7. Nous avons suivi les objectifs et le planning que nous nous étions fixés à la fin du S7 sur notre diagramme de Gantt, à savoir spécifiquement : la simulation du fonctionnement de l’ensemble des composants, un traitement du signal efficace, la réalisation d’une maquette réelle, les tests en conditions réelles et les réajustements éventuels. Ce diagramme de Gantt a donc été un outil utile pour nous dans l'organisation de ce projet.
Chronologie des séances
Vous pouvez trouver ci-dessous la chronologie de notre avancement durant les semestres 6,7 et 8.
Semestre 6
1 mars
- Découverte du sujet
- Premières réflexions sur l'étude fonctionnelle
8 mars
- Etude de la concurrence et de l'existant
- Etude poussée de l'accordage d'une guitare
15 mars
- Réflexion sur comment gratter les cordes
- Etude de marché
- Diagramme de Gantt
22 mars
- Diagramme à bête de corne
- Début du cahier des charges fonctionnels fonction par fonction
29 mars
- Analyse des risques
- Rédaction de l'organigramme de l'architecture logicielle
5 avril
- Conclusion sur l'étude de marché
- Petite présentation à M. Lahkal
26 avril
- Analyse technique (diagramme pieuvre, liste du matériel)
- Passage au club Instru pour étudier une vraie guitare
3 mai
- Recherche sur l'acquisition du son
- Recherche sur la détection de corde précise
10 mai
- Rédaction du rapport
- Rédaction du pitch pour la vidéo de communication
Semestre 7
10 octobre
- Ajustement du diagramme de Gantt
21 octobre
- Finalisation de la liste d'équipements
- Renseignement sur les logiciels de conception
28 octobre
- Récupération du kit Arduino
- Simulation avec le capteur de vibration
18 novembre
- Modélisation 3D des 2 parties du systèmes sur SolidWorks
- Simulation du capteur de vibration sur le logiciel Tinkercad
21 novembre
- Travail de l'acquisition de fréquence avec le microphone KY037
25 novembre
- Travail de l'acquisition de fréquence avec le microphone KY037
28 novembre
- Réception de la commande du motoréducteur et des capteurs piézo
8 décembre
- Recherche d'un programme faisant l'autocorrélation et la densité spectrale de puissance du signal
15 décembre
- Manipulation d'un oscilloscope, un haut-parleur et du capteur de vibration afin de mieux comprendre le signal qu'on reçoit
- Début de rédaction du rapport du S7
Semestre 8
18 janvier
- Travail sur l'acquisition de fréquence
- Création d'un code avec la bibliothèqye "arduinoFFT"
- Tests avec un générateur de fréquence
25 janvier
- Simulation du branchement moteur sur TinkerCad
- Début de la modélisation de la structure de notre produit
- Premiers tests avec l'écran LCD disponible dans le kit Arduino
01 février
- Réalisation de plusieurs tests avec le moteur afin de mieux comprendre son fonctionnement
- Tests avec un autre moteur, plus petit, qui n'a pas besoin de driver
08 février
- Test du programme d'acquisition sur une vraie guitare
- Modification et amélioration du code Arduino en conséquence
15 février
- Création de la première version du boîtier en bois
- Premiers tests avec le nouvel écran LCD acheté, avec un potentiomètre pour tester la barre de progression
01 mars
- Changement de moteur car pas assez de couple pour tourner une mécanique
- Contrôle de la vitesse avec le nouveau moteur
08 mars
- Re-création du boîtier en bois avec nouvelles dimensions
- Impression 3D du support micro
- Modélisation 3D du support moteur
- Test du moteur avec alimentation externe
15 mars
- Tests pour faire fonctionner le moteur en pas à pas
- Re-création du boîtier en bois, version finale avec gravures et trous
- Impression 3D des dernières pièces pour le support moteur
- Assemblage du produit final
- Test réussi de l'accordage d'une corde sur une vraie guitare