Binome2020-6

De Wiki de bureau d'études PeiP

Circuit micro-attiny

Janvier

18/01/2021 on cherche la fonctionnalité particulière de notre clé usb personalisée, on aimerait trouver un moyen original de dévérouiller la clé. On a plusieurs idées :

1/utiliser une photorésistance qui ne permettrait de déverouiller la clé que dans l'obscurité

2/détecter les sons ambients pour ne déverrouiller la clé que dans une condition particulière (fréquence précise,volume,...)

21/01/2021 On part sur l'idée du microphone. On aimerait pouvoir déverrouiller la clé usb en lui jouant une note précise/une mélodie si possible. On a trouvé le circuit à réaliser pour connecter le micro à l'ATtiny84 avec un système d'amplification pour pouvoir reconnaître un son. On apprend à utiliser Fritzing pour le recréer et à terme confectionner une version PCB.


Schéma du circuit

On va utiliser l'ATtiny84 comme micro-contrôleur pour ce premier circuit:

  • Attiny84.jpg
  • Attiny84 b.jpeg

25/01/2021 On continue le pcb sur Fritzing pour le circuit qui allume une LED lorsque le micro capte un son de fréquence donnée. On rajoute donc une led et une resistance sur une autre sortie de l'attiny. On a également ajusté les angles du circuits, en effet il faut limiterle nombre d'angles de pistes à 90°, il faut donc ajouter des points aux differents "virages". le circuit sera alimenté par une pile 3.3 V.

Version schématisée sur Fritzing

28/01/2021 On termine le pcb. On a appris à générer le plan de masse, à exporter le PCB en format lisible par la machine outil qui va l'usiner. En parallèle, on effectue quelques recherches pour le code de l'attiny. On va utiliser une carte Arduino uno comme intermédiaire de programmation. on recherche des bibliothèques Arduino qui nous permettraient de reconnaitre une frequence ou arduino

PCB sur Fritzing

Février

01/02/2021 Cinquième séance: On a trouvé un script Arduino permettant de récupérer la fréquence d'un son à partir d'un signal analogique. Ce script utilise la bibliothèque arduinoFFT.h (Fast Fourier Transform). Pour autant cela parait un peu trop complexe pour un test. De plus, la mémoire de l'Attiny pourrait ne pas suffir

04/02/2021 On a commencé à souder les composants sur la carte, micro-controlleur puis les composants smd et enfin le micro traversant. On commence à chaque fois par gommer la surface où on soude pour retirer l'oxidation (pour que la soudure tienne dans le temps). On dépose ensuite de la brasure sur la portion de cuivre sur laquelle on soude,

11/02/2021 On commence à tester des programmes. On essaie de comprendre la data reçue du microphone

15/02/2021 souder un fil sur l'entrée A2, essayer de définir A2 en sortie, décharger le circuit puis repasser en entrée et faire l'acquisition

Mars

08/03/2021 Après plusieurs séances d'analyse à l'oscilloscope du signal, et un changement de résistance dans le circuit d'amplification (celle de 100K remplacée par une de 4,1K), on se heurte à plusieurs problèmes :

  • les pics lors d'un bruit important sont faibles devant la tension moyenne mesurée à la sortie du condensateur
  • certains (voire tous) ces pics sont négatifs, et donc notre programme avec un THRESHOLD ne peut pas les détecter car analogRead ne peut pas renvoyer de valeurs négatives

Pour résoudre ce 2eme problème, on pourrait bypass le condensateur à la fin du circuit d'amplification pour lire une tension oscillant autour de 2V (mesuré à l'oscilloscope à l'entrée du condensateur) et mesurer la variation relative de tension. Cette variation étant d'environ 60 mV avec notre système d'amplification actuel, cela représenterait une différence de 18 dans l'analogRead du programme.

Détection d'un clappement de main à l’oscilloscope

15/03/2021 on essaye de téléverser vers la nouvelle carte (blanche) on a réussi(il fallait d’abord programmer l'Arduino pour que elle puisse programmer l'attiny)

18/03/2021 code:

Fichier:Attiny84 micro.txt Fichier:Clef micro.zip

22/03/2021 On commence à construire la carte de la clé usb. Comme l'AtmegaU2 ne comporte pas de convertisseur analogique-numérique, on va devoir utiliser le comparateur du microcontrolleur avec un circuit pour générer une référence (réglable avec un potentiomètre). On revérifie les tensions aux bornes du circuit d'amplification: au bruit ambiant on est aux alentours de 30mV, lorsqu'on tape dans les mains on atteint un pic à environ 470mV.

Fichier:Clef micro Vshield.zip

25/03/2021 On va finalement mettre notre circuit de micro/ampli sur un shield qui se posera sur notre clé (légèrement modifiée pour l'accueillir) pour économiser de la place sur la clé elle même.

29/03/2021 On a terminé notre shield qui viendra sur notre clé usb pour connecter le circuit du micro et de l'ampli.

Fichier:Clef micro shield finie.zip

Cartes commandées

Le routage de la clé a été un peu amélioré. Le routage de la carte fille a été complétement repris (emprise un peu trop importante). Le nouveau fichier Fritzing : Fichier:ClefUSBLouisMatthieuV2.zip.


Clé et shield terminés

Avril

01/04/2021 Les cartes ont été commandées, on commence à regarder pour écrire le code de notre fonction avec le micro : à savoir dévérouiller la clé usb seulement si un son est détecté. Problème : on doit desormais utiliser le comparateur pour "lire" la valeur du micro et déclencher l'interruption. On cherche donc comment programmer cette interruption/comment se programme le comparateur.

cf p225/224 de la fiche technique du atmega16u2 pour le fonctionnement de l'analog comparator

8/04/2021 On a fait le code de notre fonction sur Arduino en utilisant une bibliothèque Analogcomp pour utiliser le comparateur de l'Atmega. On a commencé à regarder pour les modifications du Dataflashmanager.c qui nous ervira à lire sur la mémoire. datasheet mémoire : https://www.adestotech.com/wp-content/uploads/DS-45DB641E-027.pdf

12/04/2021 On continue d'avancer sur "DataflashManager" en attendant la livraison des cartes.

19/04/2021 On a effectué le programme de test de mémoire sur la clé, on a bien les 5 clignotements de la led de contrôle : les mémoires sont bien détectées.

Screen dfu programmer.png

On a ensuite utilisé testblock, puis formaté/monté la clé. On a réussi à mettre un fichier texte dans la clé, puis démonter et ejecter la clé. En la rerbranchant, on retrouve bien le fichier. La clé est fonctionnelle ! On essaye ensuite d'implémenter la fonction de la clé (déverouillage de l'écriture par detection d'un son)

22/04/2021 On a essayé de regarder pour implementer la fonctionnalité particulière de la clé, mais on a pas eu le temps de trancrire la fonction dans MassStorage et de faire des tests et des debugs de cette fonction (qu'on avait jamais testée sur ce microcontrolleur)

Cle fonctionne.png

Conclusion

Le bureau d'étude a été une expérience positive pour nous deux. Au delà de toutes les choses qu'on a apprises pour pouvoir finir la clé (Arduino, soudure, élaboration de PCB...), le format de "projet" nous a permis de nous investir plus que dans la plupart des enseignements.

Même si nous sommes un peu déçus de ne pas avoir mis au point notre fonction particulière sur la clé, sa réalisation nous a rendu fiers. Enfin, le BE a été une expérience productive dans notre processus d'orientation en cycle ingénieur.

Un grand merci à M.Boe et M.Redon pour leur aide et leur pédagogie face à de grands débutants comme nous, merci également à Gabriel et Edward pour leur aide régulière pour nos debuggages ;)

Resources

http://elektor.presse.free.fr/fiches_livres/205%2050%20mini-projets/978-2-86661-205-4%2050%20mini-projets%20TDM+extrait.pdf

https://github.com/ArminJo/Arduino-FrequencyDetector (bibliothèque Frequency Detector)

https://www.hackster.io/lbf20012001/audio-frequency-detector-617856

https://github.com/kosme/arduinoFFT (bibliothèque arduinoFFT)

https://scienceprog.com/electret-condenser-microphone-amplifier-for-use-in-microcontroller-projects/