ACCORDEUR DE GUITARE AUTOMATIQUE – PROJET PEIP2A

Bienvenue à toutes et tous sur le blog du projet d’accordeur de guitare Automatique !

Ce projet s’adresse à tous les passionnés de musique et plus particulièrement d’instruments à cordes ! En effet, les cordes de nos instruments ont une fâcheuse tendance à se détendre modifiant ainsi le son de nos instruments préférés (guitare, basse, ukulele, etc…). L’accordage est donc une compétence essentielle pour tout bon musicien.

Cependant, tout le monde n’a pas l’oreille absolue!

C’est ici que notre projet prend tout son sens. L’objectif est de rendre totalement automatique l’accordage d’une guitare. De la captation et l’analyse de fréquence jusqu’à l’action mécanique d’ajustement des cordes.

Premiers pas en terre inconnue…

Les prémices de notre projet ont surtout été une recherche d’informations sur le fonctionnement du système d’accordage d’une guitare classique et les éléments qui le compose.

Nous avons aussi commencé à prendre en main le logiciel de programmation Arduino (un logiciel qu’aucun d’entre nous ne savait utiliser auparavant). Car nous n’étions pas seuls dans cette épopée, notre fidèle Arduino UNO serait là pour assurer toute la partie commande électronique du projet.

Notre projet fait appel à de nombreuses compétences dans des domaines aussi variés que le traitement du signal, l’analyse et la conception de systèmes mécaniques ou encore l’analyse de données. Nous avions pu aborder brièvement certaines de ces notions en cours cependant les appliquer dans un projet concret est une autre paire de manches. Nous avons donc décidé de décomposer les tâches de notre projet afin d’avoir un plan d’attaque!

Partie analyse fréquentielle

La musique et tous les sons existants se traduisent physiquement par des fréquences. Dans notre projet il est donc important de comprendre que chaque cordes/notes est associée à une fréquence distincte.

https://2.bp.blogspot.com/-p5dtCeP6Q4w/WLF8Ncy9iTI/AAAAAAAAGJo/rmRC4Q4YClc8SqNgeJNxupM9PQCnddrtgCK4B/s1600/Guitar%2BStrings%2BFrequency%2BChart.JPG

Bien que fièrement armé de nos bagages théoriques acquis en cours de mathématiques du signal, la partie analyse fréquentielle ne fut pas de tout repos. Nous avons essuyé plusieurs échecs de codes et de techniques de traitement de signal les unes après les autres : Transformée de Fourier, Fast Fourier Transformé, Zero Crossing

Notre code final est principalement basé sur une technique d’Autocorrélation auquel nous avons ajouté de nombreux seuils et intervalles afin d’éviter les valeurs erronées que le programme pourrait capter par erreur. En effet, même avec un code de captation optimal, plusieurs éléments parasites peuvent fausser les résultats et les valeurs acquis par notre fidèle micro Amplificateur MAX 4466!

Partie Affichage et Architecture

Après avoir terminé la partie d’analyse fréquentielle, il fallait maintenant concevoir une architecture permettant à la machine de transmettre ses résultats avec l’utilisateur. Nous avons opté pour une interface simple d’affichage sur un LCD I2C 4*16.

Afin de compléter l’architecture de notre accordeur, nous avons ajouté 6 leds indiquant la corde que nous souhaitons accorder ainsi que 2 boutons pressoirs afin de sélectionner celle-ci. (A tout cet ensemble viennent s’ajouter 3 leds de différentes couleurs dont le but est de renseigner le niveau d’accordage (Trop accordé/OK/Pas assez accordé).

Partie mécanique

Après avoir accompli les premières étapes du projet, le prochain défi de notre périple fut donc la partie système mécanique/moteur ou comment faire tourner les chevilles de réglages de la guitare.

CAO support chevilles de réglages

Le premier défi a été de modifier le fonctionnement du moteur à notre disposition. En effet, notre servo motor était un moteur de position. En d’autres termes, le moteur ne pouvait pas tourner à 360° et devait retourner à sa position initiale afin d’effectuer un nouveau serrage/desserrage.

Miuzei Servo Rc 25kg Servomoteur Digital Standard 180 Metal Waterproof Compatible avec Arduino Pour Voiture Rc 1/10 1/8 1/12 Bras Robot Modelisme Voilier

Avec beaucoup de courage et un peu de soudure, nous avons réussi à contourner les restrictions de positionnement de notre servo motor liés à sa carte électronique.

Finalement, nous avons associé les programmes liés à la partie fréquentielle et la partie contrôle moteur grâce à une Arduino Motor Shield. Cette association demande un regard attentif sur la datasheet du motor shield afin d’éviter les conflits de broches liés aux pins utilisés par défauts par le motor shield.

Conclusion

Brouillon montage
Montage final

Ça y est, c’est la fin de notre voyage. L’accordeur est fonctionnel et prêt à accorder les cordes les plus coriaces! Il ne reste plus qu’à vous faire une petite démonstration de ses capacités.

Démo moteur accordeur automatique

Bien que fonctionnel, ce projet offre de nombreuses perspectives de progression et d’amélioration. Tout d’abord, la possibilité de proposer l’accordage d’autres instruments à cordes (ukulele, basse, violon, etc…). Des questions de fréquences et de puissance mécanique seront alors à prendre en compte. Nous pouvons aussi émettre la possibilité d’accorder toutes les cordes d’une guitare en les grattant toutes en même temps comme dans la vidéo suivante :

Nous offrons ces idées dans le cas où de nouveaux étudiants voudraient reprendre le flambeau en s’appuyant sur notre travail.

Merci d’avoir suivi notre aventure/blog !

Ackhavong Kesian

Arlot Tom

Le Callet Ewen

Système de stationnement automatique avec Arduino

Système de stationnement automatique

Bonjour à tous et bienvenue dans notre article.

Nous sommes Maxence, Victor et Margot, trois étudiants en 2ème année du cycle préparatoire intégré de Polytech Angers. Notre projet consiste à concevoir et mettre en place un système de stationnement basé sur Arduino (une maquette d’un parking automatisé). C’est à dire que la barrière s’ouvre et se ferme toute seule quand elle détecte une voiture. Les contraintes sur ce projet étaient de programmer avec Arduino, que le système doive permettre la gestion de stationnement: nombre des places inoccupées qui doivent être affiché sur un écran, la durée de stationnement (en heure) et le prix de stationnement pour chaque voiture garée dans le parking.​

Pourquoi avons nous choisie ce projet ?

Nous avons choisie ce projet car il permettait de toucher à tous les domaines : la conception, la programmation, la réalisation, l’impression 3D, etc. De plus, nous ne savions pas quelle spécialité choisir, donc travailler sur ce projet pouvait nous aider dans notre choix.

Étape de notre projet

  • Analyse fonctionnelle du système et de ses contraintes
  • Recherche de normes sur les vrais parkings
  • Recherche sur la maquette (pièces électroniques et planches)
  • Programmation sur Tinkercad
  • Devis
  • Fabrication pièces CAO
  • Construction maquette

Première phase: la recherche

Nous avons commencé notre projet par une phase de recherche, nous avons mis en commun nos idées sur le meilleur parking et ce que nous voulions faire. Tout d’abord nous avons fait un schéma fonctionnel pieuvre, que vous pouvez retrouver ci dessous. Grâce a cela nous avons eu une vision des contraintes : l’écologie, le prix, l’esthétique, etc.

schéma pieuvre

Ensuite nous avons fait un peu de recherche sur la construction d’un vrai parking, afin de respecter au mieux les normes est les dimensions.

La réflexion sur notre maquette

Après ces recherches, nous avons choisi à quoi notre maquette de parking allait ressembler. Nous voulions que le parking ait un étage, deux places handicapées ainsi que deux places électriques. Il y aura 23 places classiques avec une entrée et sortie différente. Les places libres seront indiqué grâce à deux écrans.

Nous avons fait plusieurs devis et commandes d’électronique et de bois pour la structure du parking.

Programmation sur Arduino

Au début nous avons utilisé le logiciel TINKERCAD avons d’avoir les composant. Ce logiciel est un simulateur Arduino avec les composant et la partie programmation. Cela nous a permis de commencé la programmation.

Ensuite nous avons programmé sur Arduino par l’intermédiaire d’une carte Arduino méga.

Conception support 3D

Nous avons principalement utilisé le logiciel SOLIDWORKS, c’est un logiciel de CAO très utilisé à Polytech. Nous y avons construit tout nos panneaux de signalisation ainsi que la barrière et un boitier pour couvrir les câbles et y mettre l’entrée et la sortie. Le point positif avec l’impression 3D est que l’on pouvait vraiment créer les pièces que nous voulions avec les mesures désirées.

le boitier d’entrée/sortie

Conception de la maquette

Une fois toutes nos planches reçues, nous avons commencé la construction de la maquette.

La première étape était de tracer toutes les places et passages sur les planches au crayon de bois. Cela nous a permis de voir comment rendait le parking et de faire quelque changement comme agrandir l’espace pour les barrières. Nous avons fait cela sur les deux planches.

première image de la maquette

Ensuite nous avons dimensionné et coupé les poteaux permettant de surélever le parking et de créer l’étage.

Après nous avons installé les capteurs et écrans (toutes l’électronique). Nous avons décidé de faire passer tous les fils sous la maquette pour que le rendu soit plus propre. Donc il a fallu faire plusieurs trous pour faire passer les capteurs.

En parallèle, nous avons imprimé les panneaux 3D ainsi que les barrières de protection et les barrières d’ouverture. Nous avons aussi créé des cartes de différentes couleurs avec des planches de bois et des stickers que nous avons conçu. Ces cartes vont permettre d’être reconnues par les capteurs couleur à l’entrée et à la sortie du parking, cela permet de simuler les cartes d’abonnement d’un parking réel.

Pour finir, nous avons tout fixer : les piliers sur l’étage, panneaux, barrière et toute la partie électronique, ainsi que repasser au crayon Posca tous les marquages. Notre maquette est prête ! Maintenant c’est le moment de tester. Nous vous avons mis ci-dessous une vidéo du fonctionnement complète de la maquette.

vidéo du fonctionnement du capteur couleur

Merci à vous !!!

Conception et optimisation d’un robot DiWheel

Robot DiWheel 2021

Robot DiWheel 2021

Bonjour à toutes et à tous
Nous sommes heureux de vous présenter notre projet, le robot DiWheel. Notre robot se base sur une structure de LEGO, mais beaucoup de travail technique a été nécessaire pour mener ce passionnant projet à bien.
Si cela vous intéresse, n’hésitez pas, et cliquez sur ce lien pour en savoir plus !
-> Lire l’article complet <-

Conception et optimisation d’un Robot DiWheel

Prototype d’un robot DiWheel

Robot DiWheel 2021

Robot DiWheel 2021


Bienvenue chers visiteurs !

    Étudiant à Polytech Angers nous avons eu, Adrien Soubrane et Corentin Amoruso, la chance de travailler sur l’un des projets proposés au cours de notre dernier semestre. Notre choix s’est porté sur l’étude du robot DiWheel !

    Un DiWheel est un véhicule avec deux grandes roues latérales. Il a été inventé en 1880 mais n’a pas conquis le grand public, ce qui l’a fait disparaitre.
    En effet, les balancements sont le principal défaut de ce moyen de transport.

    L’objectif a été de concevoir un prototype de A à Z à l’aide du kit LEGO Mindstorm EV3 mais aussi d’étudier la stabilité de ce dernier.
    Ce travail est une partie très importante car il permet de modéliser le robot, à la manière d’une maquette, avant de pouvoir le répliquer à échelle humaine.
    C’est donc un projet sur la durée, et nous espérons sincèrement qu’un grand modèle verra le jour à Polytech Agers, grâce (en partie) à nos travaux.
    Le contrôle du robot doit se faire en Bluetooth, dans notre cas avec une application smartphone.

    Ce projet est très complet : nous avons dû, d’ans l’ordre, concevoir le robot, le contrôler, illustrer son comportement via des capteurs, modéliser mathématiquement le système, et mettre en place une loi de commande, pour réguler les oscillations.

  1. Pour commencer, la conception :
    La première phase du travail, probablement la plus créative, est celle de la construction du robot ! Nous utilisons Studio 2.0 pour visualiser notre système.
    Avant toute chose, nous avons cherché un logiciel nous permettant de modéliser les pièces LEGO. Après quelques recherches, nous nous sommes tournés vers Studio 2.0.
  2. Exemple de modélisation sous Studio 2.0

    Exemple de modélisation sous Studio 2.0

    Nous devons réduire au maximum les oscillations, et nous devons y penser dès la création de la structure.
    Nous avons donc choisi de placer la brique EV3 non pas au niveau de l’axe des roues mais en dessous. Cela permet d’abaisser le centre de gravité, en le plaçant sous l’axe des roues.

    Pour la conception des roues, le choix de l’imprimante 3D était intéressant, mais trop contraignant, surtout avec le confinement. Nous avons donc décidé d’utiliser des quarts de roues LEGO. Nous n’avions plus qu’à trouver un moyen de les fixer à l’EV3.

    Arc de roue dentée

    Arc de roue dentée


    Roue du robot

    Roue du robot



    Pour que le Diwheel avance sans soucis, il fallait trouver la meilleure configuration possible avec les différents engrenages et pièces LEGO à notre disposition. L’important était avant tout de réussir à transmettre le plus d’énergie possible des moteurs vers les roues. Pour cela, nous devions réfléchir à comment réduire au maximum les frottements pour permettre aux roues et aux engrenages de tourner le plus librement possible. Moins les frottements sont importants, meilleur sera le rendement.

    Mécanisme côté gauche

    Mécanisme côté gauche

  3. Après, le contrôle du robot :

    L’étape suivante du projet a été de trouver une nouvelle manière de contrôler le DiWheel. En effet, ce dernier ne dispose que d’un seul moyen pour cela : appuyer directement sur les boutons de la brique EV3. C’est pourquoi nous voulions trouver un moyen plus amusant et pratique pour faire avancer notre robot. C’est de cette réflexion qu’ont découlées les idées de contrôler le DiWheel à l’aide d’une manette et d’une application.

  4. A la manière d’un Mario Kart, nous voulions pouvoir maîtriser notre robot à l’aide d’une Wiimote et du gyroscope intégré.
    Pour cela, nous voulions nous servir de la communication Bluetooth commune à l’EV3 et à la manette. Il fallait donc trouver un moyen de programmer la Wiimote afin de communiquer avec la brique EV3. La solution la plus simple est d’utiliser GlovePIE. C’est un logiciel dédié pour la Wiimote permettant de l’utiliser avec n’importe quel périphérique.
    Malheureusement, compte tenu des conditions de travail (confinement, matériel, problème de Bluetooth…) nous n’avons pas pu connecter les deux périphériques ensembles. Néanmoins la solution reste viable si BlueSoleil ou un autre pilote fonctionne sur l’ordinateur utilisé pour la manipulation.
    Une autre solution existe : modifier le système d’exploitation de la brique pour utiliser un programme disponible sur internet. Mais cette dernière nous semblait trop risquée, nous ne voulions pas endommager l’EV3.

    Manette WiiMote Source: https://nintendo-museum.fr/wii-wheel/

    Manette WiiMote
    Source: https://nintendo-museum.fr/wii-wheel/

    Cependant, grâce à RemotEV3, une application android, nous pouvons commander le robot via bluetooth.
    Le robot peut ainsi être dirigé dans toutes les directions et tous les sens.
    La connexion étant plus simple avec un smartphone, nous n’avons eu aucun souci de fonctionnement.

  5. Ensuite, la modélisation du système :

    Elle se déroule en trois parties : l’étude du système, la représentation d’état et l’expérimentation.

    L’étude du système consiste à déterminer l’ensemble des constantes, des forces et des vitesses appliquées au robot afin de déterminer un modèle théorique. Il servira pour déterminer une représentation d’état contenant les variables que nous voulons changer. C’est pourquoi il ne faut pas perdre de vue notre but : réduire les balancements.
    Notre choix s’est donc porté sur le modèle Lagrangien nous permettant d’obtenir les formules de l’accélération angulaire des roues et du corps. En effet, en atténuant les variations d’accélération, le robot deviendra plus stable.
    Après simplification nous avons obtenus les formules respectives de l’accélération du corps et celle des roues :

  6. Équations de Lagrange

    Équations de Lagrange

    Une fois que nous avons obtenu nos formules, on s’est intéressé à la représentation d’état. Grâce à cette loi de commande on peut comprendre de manière théorique comment évoluent nos variables.
    Une représentation d’état est composée d’une entrée X, d’une sortie Y et de différentes matrices (A, B, C et D) montrant l’évolution du système.
    A l’aide de Scilab, nous avons confirmé théoriquement l’instabilité du système. En effet, après avoir reproduit virtuellement le système à l’aide de la représentation d’état, nous avons simulé et obtenu la courbe correspondant à l’angle du corps par rapport à l’axe y. Cette dernière forme une sinusoïde caractéristique d’une instabilité (ici des balancements). Certes les valeurs et le comportement obtenu sont cohérents, néanmoins pour pouvoir les utiliser il faut vérifier expérimentalement si cela concorde avec la réalité.

    courbe modélisation (sinusoïdale)

    courbe modélisation (sinusoïdale)

    Avec le logiciel (Windows) LEGO Mindstorm EV3 et grâce aux capteurs gyroscopiques et l’accéléromètre fournis dans le kit, nous avons pu prendre quelques mesures. En comparant les valeurs obtenues avec les capteurs et celles de la simulation, nous avons pu confirmer que notre modèle est utilisable pour la commande du système.

    Courbe gyroscope (robot instable)

    Courbe gyroscope (robot instable)


    positionnement des capteurs

    positionnement des capteurs

    Enfin, commander le système :

  7. Une fois la commandabilité du système étant assurée par le critère de Kalman, il ne suffisait plus qu’à trouver comment influencer le système.
    Nous avons donc décidé d’utiliser une commande par retour d’état pour asservir le système. Cette méthode se base sur l’utilisation d’un gain correcteur afin de modifier en temps réel la sortie.
    Le but est ainsi d’obtenir, par le capteur gyroscopique, non plus une courbe sinusoïdale mais une courbe de système de premier ordre. Elle est reconnaissable via deux phases : une transition (la valeur de la sortie varie) et une stabilisation (la sortie atteint une valeur limite).
    Après simulation sur Scilab ou Matlab et si les résultats sont concluants, on peut implémenter cette loi de commande sur l’EV3. Certes le robot ira moins vite, mais il est devenu beaucoup plus stable.
  8. Exemple de simulation sous Scilab

    Exemple de simulation sous Scilab

    Bilan :

    Ce projet a été pour nous une occasion de nous amuser et de travailler plus en profondeur sur des notions complexes. Il nous a permis de développer nos compétences dans différents domaines (Physique, mathématique, automatisme, conception…).
    Nous avons aussi appris à travailler en équipe, en autonomie et à surmonter les difficultés à l’aide de nos connaissances, et grâce à nos recherches.
    Même si le projet n’a pas abouti au niveau de la commande par retour d’état, nous sommes fiers d’avoir obtenu un DiWheel fonctionnel et commandable via smartphone.

    Ressources :

    Le projet touchant à sa fin, il nous tenait à cœur de pouvoir vous donner la possibilité de continuer ce dernier. En effet, si vous disposez vous aussi du kit LEGO Mindstorm EV3 et que vous souhaitez reproduire et améliorer notre robot, nous mettons à votre disposition l’ensemble des étapes de construction :
    Compte rendu et instructions de montage

    Ce drive contient également notre compte rendu de projet, que nous vous incitons vivement à consulter si vous souhaitez reproduire un robot du même style.

    Pour plus de question, n’hésitez pas à nous contacter via nos adresses mail respectives :

    • corentin.amoruso@gmail.com
    • adsoub@gmail.com

    Merci pour votre lecture ! A très vite !
    Corentin & Adrien