« I2L 2025 Groupe2 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Ligne 37 : Ligne 37 :


= Répartition du travail (étudiants) =
= Répartition du travail (étudiants) =
'''Jules''':
* Mise en place de la bibliothèque permettant le fonctionnement de l’écran LCD
* Analyse du signal sonore
* Conversion des fréquences en notes musicales
* Ajustement fin des paramètres (''fine-tuning'') et tests du projet fina
'''Clément''':
* Initialisation du projet, de l’environnement de travail collaboratif et du code source
* Création et mise en place de la bibliothèque permettant l’utilisation du microphone
* Développement de la boucle principale du programme et des différentes fonctionnalités.
* Tests du microcontrôleur en fonctionnement sur batterie
'''Jules & Clément:'''
* Installation et configuration de la bibliothèque LUFA pour la communication USB
* Développement du script Python permettant la réception et l’affichage des notes sur ordinateur


= Carte =
= Carte =
Ligne 70 : Ligne 92 :


= Extraits significatifs de code (étudiants) =
= Extraits significatifs de code (étudiants) =
== 1. Descripteurs USB (LUFA) ==
'''Fichier :'''
<code>guitar-tuner/src/usb/descriptors.c</code>
La bibliothèque '''LUFA''' est utilisée pour implémenter une communication USB personnalisée. Le périphérique est déclaré comme '''Vendor Specific''', ce qui permet d’envoyer librement des données (notes détectées) vers un ordinateur.
=== Descripteur du périphérique ===
Ce descripteur permet au système hôte d’identifier correctement le périphérique USB lors de l’énumération.
----
=== Configuration et endpoint USB ===
Un '''endpoint Bulk IN''' est utilisé pour envoyer les notes détectées vers le PC.
Les données sont ensuite récupérées côté ordinateur via un script Python.
----
== 2. Acquisition du signal microphone (ADC) ==
'''Fichier :'''
<code>guitar-tuner/src/audio/sound_analysis.c</code>
L’acquisition audio est réalisée à l’aide de l’ADC interne du microcontrôleur. Les échantillons sont centrés autour de zéro afin de faciliter l’analyse du signal.
=== Capture des échantillons audio ===
* '''ADC''' : lecture sur 10 bits
* '''Centrage du signal''' : soustraction de 512
* '''Fréquence d’échantillonnage''' contrôlée par un délai logiciel
----
== 3. Mesure du volume du signal ==
'''Fichier :'''
<code>guitar-tuner/src/audio/sound_analysis.c</code>
Le volume est évalué à l’aide de la valeur '''crête-à-crête''' du signal audio.
Cette valeur permet :
* d’afficher le niveau sonore
* d’ignorer les signaux trop faibles
----
== 4. Analyse du signal et détection de fréquence ==
'''Fichier :'''
<code>guitar-tuner/src/audio/sound_analysis.c</code>
La fréquence est détectée par '''autocorrélation temporelle''', méthode bien adaptée aux microcontrôleurs à mémoire limitée.
=== Suppression de la composante continue (DC) ===
Cette étape est '''essentielle''' pour éviter les erreurs de corrélation.
----
=== Autocorrélation avec bornes adaptées à la guitare ===
Les bornes de recherche sont limitées aux fréquences '''E2 à E5''', ce qui améliore la stabilité.
----
=== Interpolation parabolique (amélioration de la précision) ===
Cette interpolation permet une '''meilleure précision fréquentielle''' sans augmenter la taille des buffers.
----
== 5. Conversion fréquence → note musicale ==
'''Fichier :'''
<code>guitar-tuner/src/guitar/guitar_tuner.c</code>
La conversion repose sur la référence '''La4 = 440 Hz''' et une échelle logarithmique.
Cette méthode permet de détecter toutes les notes de la guitare '''sans table de correspondance fixe'''.
----
== 6. Affichage LCD ==
'''Fichier :'''
<code>guitar-tuner/src/display/lcd.c</code>
L’affichage utilise une '''bibliothèque développée par des étudiants de l’année précédente'''. Elle gère entièrement le protocole HD44780.
Exemple d’utilisation dans notre code :
Notre travail s’est concentré sur l’utilisation de cette bibliothèque, et non sur son implémentation interne.
----
== 7. Boucle principale du programme ==
'''Fichier :'''
<code>guitar-tuner/src/minimal.c</code>
La boucle principale :
* gère la communication USB
* lance l’acquisition audio
* déclenche l’analyse du signal
* met à jour l’affichage et les LEDs


= Rendus (étudiants) =
= Rendus (étudiants) =

Version du 2 janvier 2026 à 10:21

Proposition de système (étudiants)

Guitar Tuner est un projet dont l’objectif, comme son nom l’indique, est de faciliter l’accordage des cordes d’une guitare.

Son principe est simple : lorsqu’une corde est jouée, le microcontrôleur capte le son produit à l’aide d’un microphone, analyse sa fréquence, puis affiche sur l’écran la note correspondante.


Une fréquence étant une donnée continue, on affiche par défaut la note la plus proche de la fréquence mesurée.

Comme piste d’amélioration, on pourrait aller plus loin en proposant un affichage plus intuitif :

  • afficher la note au centre de l’écran lorsque la fréquence est correcte (ou très proche de la note visée) ;
  • déplacer la note légèrement vers la gauche si la fréquence est inférieure à la note attendue ;
  • déplacer la note vers la droite si la fréquence est supérieure.

Ainsi, plus la note affichée se rapproche du centre de l’écran, plus l’accord est précis.

Ce principe permettrait également d’accorder plusieurs cordes, et ce, dans différents accordages différent (standart, ré...).

Le circuit se compose des éléments suivants :

  • Un écran LCD pour afficher la note détectée.
  • Un microphone pour capter la fréquence produite par la corde.
  • Une interface USB assurant la communication avec un ordinateur.
  • Une LED d’alimentation indiquant que le microcontrôleur est sous tension.
  • Un bouton permettant d’activer l’enregistrement.
  • Une LED d'action indiquant que la fonction d’enregistrement est activée.

Contre-proposition (intervenant)

OK pour la proposition. Comme périphérique USB vous implanterez un périphérique spécifique à votre projet (classe USB "vendeur") permettant à un ordinateur de récupérer les fréquences detectées en temps réel et de les afficher.

Votre objet doit pouvoir être autonome et marcher sur batterie.

Proposition définitive (étudiants)

Répartition du travail (étudiants)

Jules:

  • Mise en place de la bibliothèque permettant le fonctionnement de l’écran LCD
  • Analyse du signal sonore
  • Conversion des fréquences en notes musicales
  • Ajustement fin des paramètres (fine-tuning) et tests du projet fina


Clément:

  • Initialisation du projet, de l’environnement de travail collaboratif et du code source
  • Création et mise en place de la bibliothèque permettant l’utilisation du microphone
  • Développement de la boucle principale du programme et des différentes fonctionnalités.
  • Tests du microcontrôleur en fonctionnement sur batterie


Jules & Clément:

  • Installation et configuration de la bibliothèque LUFA pour la communication USB
  • Développement du script Python permettant la réception et l’affichage des notes sur ordinateur

Carte

Schéma initial (étudiants)

Schéma de la carte

Carte routée (intervenant)

Vous utiliserez la carte avec batterie.

Composants (intervenant)

Il manque au 10 octobre 2025, un connecteur femelle 16 broches.

Carte réalisée (intervenant)

Photo de la carte

La carte est entiérement soudée à l'exception d'un connecteur 16 broches pour l'écran.

Au 15 octobre 2025 la carte est entiérement soudée.

Travaux (étudiants)

Nous avons réussi a faire fonctionner l'écran lcd, nous avons un micro qui semble fonctionner mais nous n'avons pas les bonnes fréquences en Hz


Extraits significatifs de code (étudiants)

1. Descripteurs USB (LUFA)

Fichier :

guitar-tuner/src/usb/descriptors.c

La bibliothèque LUFA est utilisée pour implémenter une communication USB personnalisée. Le périphérique est déclaré comme Vendor Specific, ce qui permet d’envoyer librement des données (notes détectées) vers un ordinateur.

Descripteur du périphérique

Ce descripteur permet au système hôte d’identifier correctement le périphérique USB lors de l’énumération.


Configuration et endpoint USB

Un endpoint Bulk IN est utilisé pour envoyer les notes détectées vers le PC.

Les données sont ensuite récupérées côté ordinateur via un script Python.


2. Acquisition du signal microphone (ADC)

Fichier :

guitar-tuner/src/audio/sound_analysis.c

L’acquisition audio est réalisée à l’aide de l’ADC interne du microcontrôleur. Les échantillons sont centrés autour de zéro afin de faciliter l’analyse du signal.

Capture des échantillons audio

  • ADC : lecture sur 10 bits
  • Centrage du signal : soustraction de 512
  • Fréquence d’échantillonnage contrôlée par un délai logiciel

3. Mesure du volume du signal

Fichier :

guitar-tuner/src/audio/sound_analysis.c

Le volume est évalué à l’aide de la valeur crête-à-crête du signal audio.

Cette valeur permet :

  • d’afficher le niveau sonore
  • d’ignorer les signaux trop faibles

4. Analyse du signal et détection de fréquence

Fichier :

guitar-tuner/src/audio/sound_analysis.c

La fréquence est détectée par autocorrélation temporelle, méthode bien adaptée aux microcontrôleurs à mémoire limitée.

Suppression de la composante continue (DC)

Cette étape est essentielle pour éviter les erreurs de corrélation.


Autocorrélation avec bornes adaptées à la guitare

Les bornes de recherche sont limitées aux fréquences E2 à E5, ce qui améliore la stabilité.


Interpolation parabolique (amélioration de la précision)

Cette interpolation permet une meilleure précision fréquentielle sans augmenter la taille des buffers.


5. Conversion fréquence → note musicale

Fichier :

guitar-tuner/src/guitar/guitar_tuner.c

La conversion repose sur la référence La4 = 440 Hz et une échelle logarithmique.

Cette méthode permet de détecter toutes les notes de la guitare sans table de correspondance fixe.


6. Affichage LCD

Fichier :

guitar-tuner/src/display/lcd.c

L’affichage utilise une bibliothèque développée par des étudiants de l’année précédente. Elle gère entièrement le protocole HD44780.

Exemple d’utilisation dans notre code :

Notre travail s’est concentré sur l’utilisation de cette bibliothèque, et non sur son implémentation interne.


7. Boucle principale du programme

Fichier :

guitar-tuner/src/minimal.c

La boucle principale :

  • gère la communication USB
  • lance l’acquisition audio
  • déclenche l’analyse du signal
  • met à jour l’affichage et les LEDs

Rendus (étudiants)

Projet KiCAD : Fichier:I2L-2025-Carte-G2-final.zip

Programmes :