Binome2020-9 : Différence entre versions
(→Séance du 08/02) |
(→CONCLUSION) |
||
(169 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 4 : | Ligne 4 : | ||
− | + | Bienvenue sur le wiki de Laurine et Hortense, le but de ce bureau d'étude est de réaliser une clé USB personnalisée. Pour cela nous procéderons en plusieurs étapes : | |
− | + | *nous créerons un circuit électronique ou PCB à l'aide d'un logiciel ; | |
− | + | *nous souderons des composants électroniques ; | |
− | + | *nous programmerons le microcontrôleur pour gérer la communication USB et pour accéder à la mémoire ; | |
− | + | *nous fabriquerons un boîtier. | |
− | |||
− | |||
− | |||
− | |||
− | + | Pour notre clé USB, nous avons eu l'idée suivante : notre clé USB émettra des sons (voir parlera) lorsqu'on la branche et qu'on l'éjecte. Pour cela, il faudra installer un haut-parleur et un amplificateur à l'intérieur de la clé. | |
+ | Si nous voulons faire "parler" notre clé (ex : "Bonjour" et "Au revoir"), il faudra enregistrer notre voix au préalable puis la stocker dans la mémoire de la clé. Il ne restera plus beaucoup d'espace pour d'autres données, mais ce n'est pas grave. | ||
+ | = <div class="mcwiki-header" style="border-radius: 4px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #b6a7d6; vertical-align: top; width: 100%;"> '''PROJET INTERMEDIAIRE''' </div> = | ||
+ | =='''Idée et matériel''' == | ||
+ | Avant de nous lancer dans la réalisation de notre clé USB, nous allons réaliser un premier projet. Celui-ci reprendra la particularité de notre clé USB. Nous allons réalisé une carte qui produit une note lorsqu'on appuie sur un interrupteur. | ||
+ | '''Matériel''' | ||
+ | <br> | ||
+ | *microcontrôleur : ATTINY84 | ||
+ | *amplificateur : LM386 | ||
+ | == '''Janvier''' == | ||
+ | '''Séance du 18/01''' | ||
+ | <br> | ||
+ | Nous avons réfléchi à la particularité que pourrait avoir notre clé USB personnalisée, et donc par extension à notre projet intermédiaire. Nous partons donc sur un circuit haut-parleur/amplificateur. | ||
− | + | '''Séance du 21/01 ''' | |
− | + | <br> | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
A l'aide du logiciel Fritzing, nous avons réalisé la schématique du circuit haut-parleur amplificateur qui fera la particularité de notre clé USB. Nous allons utiliser un amplificateur LM386, et un microcontrôleur ATMEGA8U2. | A l'aide du logiciel Fritzing, nous avons réalisé la schématique du circuit haut-parleur amplificateur qui fera la particularité de notre clé USB. Nous allons utiliser un amplificateur LM386, et un microcontrôleur ATMEGA8U2. | ||
− | + | '''Séance du 25/01''' | |
− | + | <br> | |
− | |||
− | |||
− | |||
− | |||
Aujourd'hui nous avons changé la schématique de notre circuit sous les conseils de notre professeur. Nous avons changé le microcontrôleur par un ATTINY84 car il est plus simple à souder et qu'il est à notre disposition, et nous avons rajouté des composants, en trouvant un circuit qui correspondait plus à nos attentes | Aujourd'hui nous avons changé la schématique de notre circuit sous les conseils de notre professeur. Nous avons changé le microcontrôleur par un ATTINY84 car il est plus simple à souder et qu'il est à notre disposition, et nous avons rajouté des composants, en trouvant un circuit qui correspondait plus à nos attentes | ||
− | + | '''Séance du 28/01''' | |
− | + | <br> | |
− | |||
− | |||
Aujourd'hui, nous avons une nouvelle fois changé de micro-contrôleur sur notre schématique pour des raisons de représentations. Nous avons aussi simplifié le schéma en remplaçant notre haut-parleur par des connecteurs électriques. | Aujourd'hui, nous avons une nouvelle fois changé de micro-contrôleur sur notre schématique pour des raisons de représentations. Nous avons aussi simplifié le schéma en remplaçant notre haut-parleur par des connecteurs électriques. | ||
Après avoir réarranger le schématique, nous avons mis au point notre PCB | Après avoir réarranger le schématique, nous avons mis au point notre PCB | ||
− | ==''' | + | =='''Février'''== |
− | Aujourd'hui nous avons établi la version finale de la schématique et du PCB. Nous avons envoyé le PCB au service électronique de Polytech afin de recevoir | + | '''Séance du 1/02''' |
+ | <br> | ||
+ | Aujourd'hui nous avons établi la version finale de la schématique et du PCB. Nous avons envoyé le PCB au service électronique de Polytech afin de recevoir notre carte pour la prochaine fois. | ||
Nous avons également commencé à nous renseigner pour le code de notre circuit haut-parleur. | Nous avons également commencé à nous renseigner pour le code de notre circuit haut-parleur. | ||
− | [[Fichier:Circuit_hp_version_finale_pcb.jpg|thumb|left| | + | [[Fichier:Circuit_hp_version_finale_pcb.jpg|thumb|left|300px| version finale PCB du circuit haut-parleur/ amplificateur]] |
− | |||
[[Fichier:Circuit_hp_v2_schem.jpg|thumb|right|600px|version finale schématique du circuit haut-parleur/ amplificateur]] | [[Fichier:Circuit_hp_v2_schem.jpg|thumb|right|600px|version finale schématique du circuit haut-parleur/ amplificateur]] | ||
+ | <br style="clear: both;" /> | ||
+ | Notre fichier Fritzing avec schématique et PCB (à renommer en .fzz): | ||
+ | [[Fichier:Circuit_hp.zip]] | ||
+ | '''Séance du 04/02''' | ||
+ | <br> | ||
+ | Aujourd'hui nous avons été cherché notre circuit imprimé. Après avoir rassemblé tous les composants qui nous était nécessaires, nous avons commencé la soudure. Nous n'avions jamais soudé auparavant, donc nous n'avons soudé que le microcontrôleur lors de cette séance. | ||
+ | [[Fichier: Pcb a vide.jpg|thumb|left|200px|Notre circuit à vide]] | ||
+ | <br style="clear: both;" /> | ||
+ | |||
+ | '''Séance du 08/02''' | ||
+ | <br> | ||
+ | Aujourd'hui nous avons continué à souder les composants sur notre carte. Il ne nous en reste plus que deux à souder. | ||
+ | '''Séance du 11/02''' | ||
+ | <br> | ||
+ | Aujourd’hui, en soudant le potentiomètre et le haut-parleur, nous avons enfin terminé notre carte. | ||
+ | Voici la carte : | ||
+ | [[Fichier:Carte_de_face-min.jpg|200px|thumb|left|Notre carte de face]] | ||
+ | [[Fichier:Carte_de_dos-min.jpg|200px|thumb|right|Notre carte de dos]] | ||
+ | <br style="clear: both;" /> | ||
+ | Nous avons également établi la première version de notre code Arduino. Notre but est que l'haut-parleur émette un son à chaque fois que l'on appuie sur le bouton. | ||
+ | [[Fichier: Code.png|thumb|left|300px|Première version de notre code]] | ||
+ | <br style="clear: both;" /> | ||
+ | Nous nous sommes aidé des exemples suivants : | ||
+ | [https://create.arduino.cc/example/builtin/02.Digital%5CButton/Button/preview] | ||
+ | et | ||
+ | [https://www.arduino.cc/en/Tutorial/BuiltInExamples/toneMelody]. | ||
+ | '''Séance du 15/02''' | ||
+ | <br> | ||
+ | Aujourd'hui nous avons transféré notre programme sur notre carte à l'aide de l'Arduino. Malheureusement, le transfert a bien marché mais nous n'avons pas de résultat sur la carte : aucun son ne sort lorsqu'on appuie sur l'interrupteur. En attendant la prochaine séance pour corriger ce problème, nous avons commencé à travailler sur la schématique de la clé USB. | ||
+ | '''Séance du 18/02 ''' | ||
+ | <br> | ||
+ | Aujourd'hui, nous avons réglé notre problème de code. En effet nous nous étions trompées sur le numéro des pin liés à l'interrupteur et à l'haut-parleur. Nous avons également rajouté une condition dans le code, pour que la note dure aussi longtemps que l'utilisateur laisse son doigt appuyé sur le bouton. | ||
+ | Nous avons donc fini notre projet intermédiaire! | ||
+ | [[Fichier:Code_pi_finale.jpg|thumb|right|300px|version finale de notre code pour le projet intermédiaire]] | ||
+ | [[Fichier:Carte_reliee_arduino.jpg|400px|thumb|left|Notre carte reliée à l'arduino et à l'ordinateur afin de transférer le code]] | ||
+ | <br style="clear: both;" /> | ||
+ | Voici une vidéo démonstration de notre projet intermédiaire : | ||
+ | <br> [[Media:Video_demo_projet.mp4]] | ||
+ | == '''Mars''' == | ||
+ | '''Séance du 11/03''' | ||
+ | [[Fichier:2e_carte_intermediaire-min.jpg|thumb|right|200px|2e carte de projet intermédiaire regroupant les projets de plusieurs groupes]] | ||
+ | Aujourd'hui, en quête d'améliorer notre carte intermédiaire, nous avons recrée cette dernière en soudant nos composants (avec de nouvelles valeurs) sur une carte déjà préparée et imprimée par notre professeur. Nous y avons placé un potentiomètre plus petit. Nous espérons avoir de meilleur résultat avec cette carte : un son plus fort sortant de l'haut-parleur. Notre projet correspond au coin inférieur droit de la carte. | ||
+ | (Nous avons aussi avancé sur notre principal projet, la clé USB, voir ici [https://peip-ima.plil.fr/mediawiki/index.php/Binome2020-9#Mars_2]) | ||
+ | <br style="clear: both;" /> | ||
+ | '''Séance du 15/03''' | ||
+ | Aujourd'hui, nous avons transféré le programme sur la nouvelle carte. Nous avons apporté quelques modifications à notre ancien programme afin que le haut-parleur joue 5 notes d'intervalle 100 Hz à la suite. Le bruit sortant du haut-parleur est nettement plus fort que sur notre première carte. Nous en concluons donc que les modifications de quelques valeurs de composants dans notre circuits ont été bénéfiques. Nous sommes satisfaites de cette nouvelle carte intermédiare. | ||
+ | Vidéo de démonstration : [[Media:demo_v2.mp4]] | ||
+ | [[Fichier:Code_arduino.png|thumb|left|200px|version modifiee de notre cote pour la 2e carte intermédiaire]] | ||
+ | [[Fichier: Code_3_notes.png|thumb|right|200px|autre version du code, qui joue 3 notes]] | ||
+ | <br style="clear: both;" /> | ||
+ | = <div class="mcwiki-header" style="border-radius: 4px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #b6a7d6; vertical-align: top; width: 100%;"> '''CLE USB''' </div> = | ||
+ | =='''Idée et matériel''' == | ||
+ | Nous allons maintenant nous lancer dans la réalisation de notre clé USB. | ||
+ | <br>Celle-ci reprendra en quelques sortes la fonctionnalité de notre projet intermédiaire. Quand la clé sera introduite/ éjectée, l'haut-parleur sur cette dernière produira un son/ une mélodie. Si nous avons du temps, nous voudrions essayer de faire la clé "parler" : le code consistera alors à jouer un fichier que nous aurons enregistré au préalable. | ||
+ | '''Matériel''' | ||
+ | <br> | ||
+ | *microcontrôleur : ATMEGA8U2 | ||
+ | *amplificateur : LM386 | ||
+ | *haut-parleur | ||
+ | =='''Mars'''== | ||
+ | '''Séance du 08/03''' | ||
+ | Aujourd'hui nous commençons la clé USB. Nous avons quasiment terminé le schématic et le PCB de la carte finale. Il nous reste à modifier peut-être les valeurs de certains de nos composants (capa et résistances) pour espérer produire un son plus fort. En effet, sur notre projet intermédiaire, le son qui sort de l'haut-parleur est faible. Nous pensons qu'en nous renseignant plus sur le LM386 (notre amplificateur), nous pourrions améliorer ce défaut. | ||
+ | Référence pour les valeurs : [https://www.ti.com/lit/ds/symlink/lm386.pdf?ts=1615128479108&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FLM386%253FkeyMatch%253DLM386%2526tisearch%253DSearch-EN-everything%2526usecase%253DGPN] (p10) | ||
+ | '''Séance du 11/03''' | ||
+ | Aujourd'hui nous avons changé les valeurs de certains composants. | ||
+ | Nous avons aussi 'relancé' notre projet intermédiaire avec nos nouvelles valeurs et un autre potentiomètre pour voir si on peut obtenir un son plus fort. Voir ici : [https://peip-ima.plil.fr/mediawiki/index.php/Binome2020-9#Mars] | ||
+ | '''Séance du 15/03''' | ||
+ | Aujourd'hui nous avons fini la version finale de notre PCB pour la clé USB. Elle est prête à être commandée. | ||
+ | Version finale : [[Fichier:Version_finale_cle.zip]] | ||
+ | Nous avons surtout travaillé sur notre projet intermédiaire version 2. | ||
+ | [[Fichier:Schem cle.jpg|thumb|left|500px|schématique final de la clé USB]] | ||
+ | [[Fichier:Pcb cle.jpg|thumb|right|500px|PCB final de la clé USB ]] | ||
+ | <br style="clear: both;" /> | ||
+ | Version "corrigée" de notre clef : [[Fichier:2020_9_Version_finale_cle.zip]]. Les deux cartes ont été commandées le 16 mars. | ||
+ | '''Séance du 18/03''' | ||
+ | Aujourd'hui, en attendant de recevoir les cartes pour poursuivre la réalisation de la clé, nous avons commencé à nous pencher sur le code de la mémoire. Nous avons découvert et essayé de comprendre les fichiers.c et .h mis à notre disposition. Nous avons apporté les modifications nécessaires au fichier Lib/DataflashManager.c (ajouts de fonctions, de structures conditionnelles, dans les "insert here") | ||
+ | '''Séance du 25/03''' | ||
+ | Aujourd'hui, nous avons continué la programmation de la mémoire à l'aide de notre professeur, nous avons pu plus comprendre le fonctionnement du code de la clé, avec différentes fonctions pour lire les octets puis écrire les données sur la mémoire. Nous avons donc compléter le fichier DataflashManager.c et normalement la mémoire est maintenant complément codée. | ||
+ | '''Séance du 29/03''' | ||
+ | Aujourd'hui nous avons reçu la carte de la clé et de notre carte supplémentaire! Nous avons pu commencé à souder. | ||
+ | Lors de cette séance nous avons soudé : le microcontrôleur ATMEGA16U et 5 résistances. | ||
+ | Nous commençons par souder "le coeur" de la clé (c'est-à-dire la partie microcontrôleur et quartz) afin de la tester dès que possible pour voir si l'on peut continuer à souder si il n'y a aucun soucis. | ||
+ | Cle_a_vide.jpg | ||
− | + | [[Fichier:Cle_a_vide.jpg|thumb|left|500px|Carte de notre cle + notre carte supplémentaire à vide]] | |
+ | <br style="clear: both;" /> | ||
+ | =='''Avril'''== | ||
− | + | '''Séance du 1/04''' | |
− | Aujourd'hui nous avons | + | Aujourd'hui nous avons fini de souder " le cœur " de la clé. Notre professeur a pu vérifier qu'il n'y avait aucun problème de soudure ou de conception et à réinitialiser totalement l'Atmega16U2. En effet, les ATMega16u2 sont vendus configurés avec un diviseur d'horloge par 8 activé. Le microcontrôleur fonctionne donc à 1MHz et pas à 8Mhz comme souhaité pour une clé USB. Maintenant le microcontrôleur est reconnu comme un "at90usb162". Après cela, nous avons continué la soudure de la totalité de la clé. |
− | + | ||
+ | |||
+ | '''Séance du 8/04''' | ||
+ | Aujourd'hui, nous avons terminé totalement la soudure de : | ||
+ | *2 clés USB | ||
+ | *une carte fille | ||
+ | La prochaine fois, nous pourrons donc passer au code de la clé. | ||
+ | [[Fichier:Cles_de_face.jpg|thumb|left|300px|Clé soudées de face]] | ||
+ | [[Fichier:Cles_de_dos.jpg|thumb|right|300px|Clé soudées de dos]] | ||
+ | [[Fichier:Carte_fille_face.jpg|thumb|left|300px|Carte fille soudée de face]] | ||
+ | [[Fichier:Carte_fille_dos.jpg|thumb|right|300px|Carte fille soudée de dos]] | ||
+ | <br style="clear: both;" /> | ||
+ | '''Séance du 12/04''' | ||
− | ==''' | + | Aujourd'hui, nous avons testé nos mémoires. |
− | + | D'abord, nous avons testé le programme 'TestMem'. En l'éxécutant, la LED de la clé a clignoté, ce qui signifie que le test a réussi. | |
+ | <br style="clear: both;" /> | ||
+ | [[Fichier:Terminal_test_mem.png|thumb|left|300px|Notre test de mémoire avec TestMem]] | ||
+ | <br style="clear: both;" /> | ||
+ | Ensuite, nous avons testé le programme 'TestMem RW', test de 'Read' et 'Write', réussi lui aussi | ||
+ | [[Fichier:Terminal_testmem_RW.png|thumb|left|300px|Notre test de mémoire avec TestMemRW]] | ||
+ | <br style="clear: both;" /> | ||
+ | Enfin, nous avons testé notre programme DataflashManager que nous avions modifié précedemment. | ||
+ | [[Fichier:Terminal_test_de_mass_storage.png|thumb|left|300px|Test dans MassStorage]] | ||
+ | <br style="clear: both;" /> | ||
+ | '''Séance du 15/04''' | ||
+ | Aujourd'hui, nous avons testé le nouveau test crée par notre professeur, TestMemRW2. Après avoir débranché puis rebranché la clé, la LED s'allume 128 fois, car elle parcourt chaque octet. Après cela, elle clignote 5 fois, signifiant que le test est un succès. | ||
+ | Puis nous avons modifié le fichier DataflashManager.c e car nous avions utilisé un tableau de 512 octets pour stocker une page mémoire virtuelle avant envoi sur USB, or l'ATMega16u2 ne possède que 512 octets de mémoire et la LUFA en utilise déjà une partie, il faut donc modifier la fonction pour ne pas utiliser trop de mémoire. | ||
+ | [[Fichier:Cle_reconnue_terminal.png|thumb|left|300px|Clé reconnue dans le terminal]] | ||
+ | <br style="clear: both;" /> | ||
+ | '''Séance du 19/04''' | ||
+ | Aujourd'hui nous avons modifié le fichier DataflashManager.c afin qu'il fonctionne sur les 2 mémoires. Les 256 premiers octects vont dans la mémoire 1, les 256 autres dans la mémoire 2. Nous avons aussi modifié le fichier DataflashManager.h afin que la clé soit reconnue comme une 8 Mo et non pas comme une 1M comme précedemment. /!\ Il manque un else dans la fonction Write, nous avons corrigé ce problème. | ||
+ | [[Fichier:write_2_memoires.png|thumb|left|300px|Fonction write modifiée pour qu'elle écrive dans les 2 mémoires]] | ||
+ | [[Fichier:read_2_memoires.png|thumb|right|300px|Fonction read modifiée pour qu'elle lise dans les 2 mémoires]] | ||
+ | <br style="clear: both;" /> | ||
+ | '''Séance du 22/04''' | ||
+ | Aujourd'hui, lors de cette dernière séance officielle, nous avons d'abord réglé quelques problèmes dans le fichier DataflashManager.c. La clé est maintenant reconnue comme un périphérique dans l'explorateur de fichiers. Notre professeur a même réussi à mettre 16 photos dessus! | ||
+ | [[Fichier:Cle_reconnue_et_contenu.jpg|thumb|left|300px|Clé reconnue dans l'explorateur de fichiers avec son contenu]] | ||
+ | <br style="clear: both;" /> | ||
+ | Nous avons alors décider de poursuivre en essayant de rajouter à la clé sa fonction supplémentaire, à savoir jouer un son quand on la branche. Nous avons alors souder les pins mâles et femelles sur la clé et sur la carte fille afin de la assembler ensemble, puis nous avons également soudé un haut-parleur sur la carte fille. Nous avons inclus le code de notre fonction supplémentaire dans le fichier MassStorage.c. | ||
+ | [[Fichier:Cle_et_carte_fille_dessous.jpg|thumb|left|200px|Clé et carte fille assemblée]] | ||
+ | [[Fichier:Cle_et_carte_fille_cote.jpg|thumb|right|200px|Clé et carte fille assemblée]] | ||
+ | [[Fichier:Cle_et_carte_fille_branchee.jpg|thumb|left|200px|Clé et carte fille assemblée]] | ||
+ | <br style="clear: both;" /> | ||
+ | *Premier problème : la fonction tone, que nous utilisions sur Arduino, n'existe pas en langage c. Nous avons donc du chercher un programme tout fait en langage c, qui avait le même but que tone. Ce programme joue une chanson polonaise quand on branche la clé. Référence du programme que nous avons pris : [https://blog.podkalicki.com/attiny13-tone-generator/] | ||
+ | *Deuxième problème : même après avoir modifié le programme pour notre cas (en changeant quelques initialisations), notre clé ne jouait aucune musique lorsqu'on la branchait, nous entendions juste quelques vibrations parasites. Nous avons d'abord pensé que c'était peut-être le haut-parleur, et nous avons soudé à la place le haut-parleur de notre projet intermédiaire v2, qui était très efficace. Mais toujours aucun résultat. | ||
+ | Pour voir si notre carte fille marchait seule et qu'elle n'était pas à l'origine du problème, nous l'avons testé seule à l'aide du programme de base d'Arduino. Seule, elle marchait très bien, voir la vidéo de démonstration : | ||
+ | [[Media:Video_test_carte_fille.mp4]] | ||
− | + | Nous nous sommes alors aperçu que nous avions fait une petite bêtise. En effet nous avions placé notre partie haut-parleur sur la patte PD5 de l'ATMEGA16U2 sur notre schématique, mais après vérification, cette patte n'est pas une PWM, qui est la sortie qu'on doit utiliser lorsqu'on travaille avec un haut-parleur notamment. Nous ne pourrons donc pas faire jouer une musique à notre clé, en tout cas pas comme on l'aurait imaginé... | |
− | + | *Solution : une des solutions proposée par notre professeur est de créer une multitude de vibration dans le haut-parleur, par exemple : 440 par seconde correspondrait à un La. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | < | + | = <div class="mcwiki-header" style="border-radius: 4px; padding: 15px; font-weight: bold; text-align: center; font-size: 80%; background: #b6a7d6; vertical-align: top; width: 100%;"> '''CONCLUSION''' </div> = |
− | |||
− | < | ||
− | |||
+ | Pour conclure, durant ce semestre, nous avons appris énormément de choses. Nous sommes arrivées avec très peu de connaissances concrètes dans les domaines de l'électronique et de l'informatique et sommes fières d'avoir quasiment terminé ce projet. Nous avons réussi, avec la précieuse aide de nos professeurs, à construire une clé USB de A à Z. Ce BE nous a familiarisé avec le logiciel Fritzing, le soudage, le code sur Arduino, la conception d'un PCB, le codage de mémoire etc... | ||
+ | <br style="clear: both;" /> | ||
− | + | Nous sommes juste un peu déçues d'avoir fait une erreur 'bête' qui nous a empêché d'aboutir à la fonction supplémentaire de notre clé, mais on y était presque. Nous étions loin de notre première idée (peut-être un peu trop ambitieuse..) de faire 'parler' la clé. Nous aurions aussi aimé avoir le temps de construire un boîtier. | |
+ | <br style="clear: both;" /> | ||
− | + | Nous garderons donc un très bon souvenir de ce BE, qui nous aura surtout permis de trouver/confirmer notre orientation pour le cycle ingénieur dans l'électronique (pour Hortense à Nice) et les systèmes embarqués (pour Laurine à Lille). | |
− |
Version actuelle datée du 13 mai 2021 à 12:40
Sommaire
INTRODUCTION
Bienvenue sur le wiki de Laurine et Hortense, le but de ce bureau d'étude est de réaliser une clé USB personnalisée. Pour cela nous procéderons en plusieurs étapes :
- nous créerons un circuit électronique ou PCB à l'aide d'un logiciel ;
- nous souderons des composants électroniques ;
- nous programmerons le microcontrôleur pour gérer la communication USB et pour accéder à la mémoire ;
- nous fabriquerons un boîtier.
Pour notre clé USB, nous avons eu l'idée suivante : notre clé USB émettra des sons (voir parlera) lorsqu'on la branche et qu'on l'éjecte. Pour cela, il faudra installer un haut-parleur et un amplificateur à l'intérieur de la clé.
Si nous voulons faire "parler" notre clé (ex : "Bonjour" et "Au revoir"), il faudra enregistrer notre voix au préalable puis la stocker dans la mémoire de la clé. Il ne restera plus beaucoup d'espace pour d'autres données, mais ce n'est pas grave.
PROJET INTERMEDIAIRE
Idée et matériel
Avant de nous lancer dans la réalisation de notre clé USB, nous allons réaliser un premier projet. Celui-ci reprendra la particularité de notre clé USB. Nous allons réalisé une carte qui produit une note lorsqu'on appuie sur un interrupteur.
Matériel
- microcontrôleur : ATTINY84
- amplificateur : LM386
Janvier
Séance du 18/01
Nous avons réfléchi à la particularité que pourrait avoir notre clé USB personnalisée, et donc par extension à notre projet intermédiaire. Nous partons donc sur un circuit haut-parleur/amplificateur.
Séance du 21/01
A l'aide du logiciel Fritzing, nous avons réalisé la schématique du circuit haut-parleur amplificateur qui fera la particularité de notre clé USB. Nous allons utiliser un amplificateur LM386, et un microcontrôleur ATMEGA8U2.
Séance du 25/01
Aujourd'hui nous avons changé la schématique de notre circuit sous les conseils de notre professeur. Nous avons changé le microcontrôleur par un ATTINY84 car il est plus simple à souder et qu'il est à notre disposition, et nous avons rajouté des composants, en trouvant un circuit qui correspondait plus à nos attentes
Séance du 28/01
Aujourd'hui, nous avons une nouvelle fois changé de micro-contrôleur sur notre schématique pour des raisons de représentations. Nous avons aussi simplifié le schéma en remplaçant notre haut-parleur par des connecteurs électriques.
Après avoir réarranger le schématique, nous avons mis au point notre PCB
Février
Séance du 1/02
Aujourd'hui nous avons établi la version finale de la schématique et du PCB. Nous avons envoyé le PCB au service électronique de Polytech afin de recevoir notre carte pour la prochaine fois.
Nous avons également commencé à nous renseigner pour le code de notre circuit haut-parleur.
Notre fichier Fritzing avec schématique et PCB (à renommer en .fzz):
Séance du 04/02
Aujourd'hui nous avons été cherché notre circuit imprimé. Après avoir rassemblé tous les composants qui nous était nécessaires, nous avons commencé la soudure. Nous n'avions jamais soudé auparavant, donc nous n'avons soudé que le microcontrôleur lors de cette séance.
Séance du 08/02
Aujourd'hui nous avons continué à souder les composants sur notre carte. Il ne nous en reste plus que deux à souder.
Séance du 11/02
Aujourd’hui, en soudant le potentiomètre et le haut-parleur, nous avons enfin terminé notre carte.
Voici la carte :
Nous avons également établi la première version de notre code Arduino. Notre but est que l'haut-parleur émette un son à chaque fois que l'on appuie sur le bouton.
Nous nous sommes aidé des exemples suivants : [1] et [2].
Séance du 15/02
Aujourd'hui nous avons transféré notre programme sur notre carte à l'aide de l'Arduino. Malheureusement, le transfert a bien marché mais nous n'avons pas de résultat sur la carte : aucun son ne sort lorsqu'on appuie sur l'interrupteur. En attendant la prochaine séance pour corriger ce problème, nous avons commencé à travailler sur la schématique de la clé USB.
Séance du 18/02
Aujourd'hui, nous avons réglé notre problème de code. En effet nous nous étions trompées sur le numéro des pin liés à l'interrupteur et à l'haut-parleur. Nous avons également rajouté une condition dans le code, pour que la note dure aussi longtemps que l'utilisateur laisse son doigt appuyé sur le bouton.
Nous avons donc fini notre projet intermédiaire!
Voici une vidéo démonstration de notre projet intermédiaire :
Media:Video_demo_projet.mp4
Mars
Séance du 11/03
Aujourd'hui, en quête d'améliorer notre carte intermédiaire, nous avons recrée cette dernière en soudant nos composants (avec de nouvelles valeurs) sur une carte déjà préparée et imprimée par notre professeur. Nous y avons placé un potentiomètre plus petit. Nous espérons avoir de meilleur résultat avec cette carte : un son plus fort sortant de l'haut-parleur. Notre projet correspond au coin inférieur droit de la carte.
(Nous avons aussi avancé sur notre principal projet, la clé USB, voir ici [3])
Séance du 15/03
Aujourd'hui, nous avons transféré le programme sur la nouvelle carte. Nous avons apporté quelques modifications à notre ancien programme afin que le haut-parleur joue 5 notes d'intervalle 100 Hz à la suite. Le bruit sortant du haut-parleur est nettement plus fort que sur notre première carte. Nous en concluons donc que les modifications de quelques valeurs de composants dans notre circuits ont été bénéfiques. Nous sommes satisfaites de cette nouvelle carte intermédiare.
Vidéo de démonstration : Media:demo_v2.mp4
CLE USB
Idée et matériel
Nous allons maintenant nous lancer dans la réalisation de notre clé USB.
Celle-ci reprendra en quelques sortes la fonctionnalité de notre projet intermédiaire. Quand la clé sera introduite/ éjectée, l'haut-parleur sur cette dernière produira un son/ une mélodie. Si nous avons du temps, nous voudrions essayer de faire la clé "parler" : le code consistera alors à jouer un fichier que nous aurons enregistré au préalable.
Matériel
- microcontrôleur : ATMEGA8U2
- amplificateur : LM386
- haut-parleur
Mars
Séance du 08/03
Aujourd'hui nous commençons la clé USB. Nous avons quasiment terminé le schématic et le PCB de la carte finale. Il nous reste à modifier peut-être les valeurs de certains de nos composants (capa et résistances) pour espérer produire un son plus fort. En effet, sur notre projet intermédiaire, le son qui sort de l'haut-parleur est faible. Nous pensons qu'en nous renseignant plus sur le LM386 (notre amplificateur), nous pourrions améliorer ce défaut.
Référence pour les valeurs : [4] (p10)
Séance du 11/03
Aujourd'hui nous avons changé les valeurs de certains composants. Nous avons aussi 'relancé' notre projet intermédiaire avec nos nouvelles valeurs et un autre potentiomètre pour voir si on peut obtenir un son plus fort. Voir ici : [5]
Séance du 15/03
Aujourd'hui nous avons fini la version finale de notre PCB pour la clé USB. Elle est prête à être commandée. Version finale : Fichier:Version finale cle.zip
Nous avons surtout travaillé sur notre projet intermédiaire version 2.
Version "corrigée" de notre clef : Fichier:2020 9 Version finale cle.zip. Les deux cartes ont été commandées le 16 mars.
Séance du 18/03
Aujourd'hui, en attendant de recevoir les cartes pour poursuivre la réalisation de la clé, nous avons commencé à nous pencher sur le code de la mémoire. Nous avons découvert et essayé de comprendre les fichiers.c et .h mis à notre disposition. Nous avons apporté les modifications nécessaires au fichier Lib/DataflashManager.c (ajouts de fonctions, de structures conditionnelles, dans les "insert here")
Séance du 25/03
Aujourd'hui, nous avons continué la programmation de la mémoire à l'aide de notre professeur, nous avons pu plus comprendre le fonctionnement du code de la clé, avec différentes fonctions pour lire les octets puis écrire les données sur la mémoire. Nous avons donc compléter le fichier DataflashManager.c et normalement la mémoire est maintenant complément codée.
Séance du 29/03
Aujourd'hui nous avons reçu la carte de la clé et de notre carte supplémentaire! Nous avons pu commencé à souder. Lors de cette séance nous avons soudé : le microcontrôleur ATMEGA16U et 5 résistances. Nous commençons par souder "le coeur" de la clé (c'est-à-dire la partie microcontrôleur et quartz) afin de la tester dès que possible pour voir si l'on peut continuer à souder si il n'y a aucun soucis. Cle_a_vide.jpg
Avril
Séance du 1/04
Aujourd'hui nous avons fini de souder " le cœur " de la clé. Notre professeur a pu vérifier qu'il n'y avait aucun problème de soudure ou de conception et à réinitialiser totalement l'Atmega16U2. En effet, les ATMega16u2 sont vendus configurés avec un diviseur d'horloge par 8 activé. Le microcontrôleur fonctionne donc à 1MHz et pas à 8Mhz comme souhaité pour une clé USB. Maintenant le microcontrôleur est reconnu comme un "at90usb162". Après cela, nous avons continué la soudure de la totalité de la clé.
Séance du 8/04
Aujourd'hui, nous avons terminé totalement la soudure de :
- 2 clés USB
- une carte fille
La prochaine fois, nous pourrons donc passer au code de la clé.
Séance du 12/04
Aujourd'hui, nous avons testé nos mémoires.
D'abord, nous avons testé le programme 'TestMem'. En l'éxécutant, la LED de la clé a clignoté, ce qui signifie que le test a réussi.
Ensuite, nous avons testé le programme 'TestMem RW', test de 'Read' et 'Write', réussi lui aussi
Enfin, nous avons testé notre programme DataflashManager que nous avions modifié précedemment.
Séance du 15/04
Aujourd'hui, nous avons testé le nouveau test crée par notre professeur, TestMemRW2. Après avoir débranché puis rebranché la clé, la LED s'allume 128 fois, car elle parcourt chaque octet. Après cela, elle clignote 5 fois, signifiant que le test est un succès. Puis nous avons modifié le fichier DataflashManager.c e car nous avions utilisé un tableau de 512 octets pour stocker une page mémoire virtuelle avant envoi sur USB, or l'ATMega16u2 ne possède que 512 octets de mémoire et la LUFA en utilise déjà une partie, il faut donc modifier la fonction pour ne pas utiliser trop de mémoire.
Séance du 19/04
Aujourd'hui nous avons modifié le fichier DataflashManager.c afin qu'il fonctionne sur les 2 mémoires. Les 256 premiers octects vont dans la mémoire 1, les 256 autres dans la mémoire 2. Nous avons aussi modifié le fichier DataflashManager.h afin que la clé soit reconnue comme une 8 Mo et non pas comme une 1M comme précedemment. /!\ Il manque un else dans la fonction Write, nous avons corrigé ce problème.
Séance du 22/04
Aujourd'hui, lors de cette dernière séance officielle, nous avons d'abord réglé quelques problèmes dans le fichier DataflashManager.c. La clé est maintenant reconnue comme un périphérique dans l'explorateur de fichiers. Notre professeur a même réussi à mettre 16 photos dessus!
Nous avons alors décider de poursuivre en essayant de rajouter à la clé sa fonction supplémentaire, à savoir jouer un son quand on la branche. Nous avons alors souder les pins mâles et femelles sur la clé et sur la carte fille afin de la assembler ensemble, puis nous avons également soudé un haut-parleur sur la carte fille. Nous avons inclus le code de notre fonction supplémentaire dans le fichier MassStorage.c.
- Premier problème : la fonction tone, que nous utilisions sur Arduino, n'existe pas en langage c. Nous avons donc du chercher un programme tout fait en langage c, qui avait le même but que tone. Ce programme joue une chanson polonaise quand on branche la clé. Référence du programme que nous avons pris : [6]
- Deuxième problème : même après avoir modifié le programme pour notre cas (en changeant quelques initialisations), notre clé ne jouait aucune musique lorsqu'on la branchait, nous entendions juste quelques vibrations parasites. Nous avons d'abord pensé que c'était peut-être le haut-parleur, et nous avons soudé à la place le haut-parleur de notre projet intermédiaire v2, qui était très efficace. Mais toujours aucun résultat.
Pour voir si notre carte fille marchait seule et qu'elle n'était pas à l'origine du problème, nous l'avons testé seule à l'aide du programme de base d'Arduino. Seule, elle marchait très bien, voir la vidéo de démonstration : Media:Video_test_carte_fille.mp4
Nous nous sommes alors aperçu que nous avions fait une petite bêtise. En effet nous avions placé notre partie haut-parleur sur la patte PD5 de l'ATMEGA16U2 sur notre schématique, mais après vérification, cette patte n'est pas une PWM, qui est la sortie qu'on doit utiliser lorsqu'on travaille avec un haut-parleur notamment. Nous ne pourrons donc pas faire jouer une musique à notre clé, en tout cas pas comme on l'aurait imaginé...
- Solution : une des solutions proposée par notre professeur est de créer une multitude de vibration dans le haut-parleur, par exemple : 440 par seconde correspondrait à un La.
CONCLUSION
Pour conclure, durant ce semestre, nous avons appris énormément de choses. Nous sommes arrivées avec très peu de connaissances concrètes dans les domaines de l'électronique et de l'informatique et sommes fières d'avoir quasiment terminé ce projet. Nous avons réussi, avec la précieuse aide de nos professeurs, à construire une clé USB de A à Z. Ce BE nous a familiarisé avec le logiciel Fritzing, le soudage, le code sur Arduino, la conception d'un PCB, le codage de mémoire etc...
Nous sommes juste un peu déçues d'avoir fait une erreur 'bête' qui nous a empêché d'aboutir à la fonction supplémentaire de notre clé, mais on y était presque. Nous étions loin de notre première idée (peut-être un peu trop ambitieuse..) de faire 'parler' la clé. Nous aurions aussi aimé avoir le temps de construire un boîtier.
Nous garderons donc un très bon souvenir de ce BE, qui nous aura surtout permis de trouver/confirmer notre orientation pour le cycle ingénieur dans l'électronique (pour Hortense à Nice) et les systèmes embarqués (pour Laurine à Lille).