Binome2019-1

De Wiki de bureau d'études PeiP

DEBAISIEUX Nicolas et FLAMENT Maxence

Introduction

Le but de notre bureau d'étude est de créer de A à Z une clé USB 2.0, à laquelle on essayera d'ajouter une fonctionnalité supplémentaire (en l'occurence, une LED qui change de couleur en fonction de la température ambiante.

Séance du 27/01/2020 : Recherche Fonctionnalités

Voici une liste de fonctionnalités supplémentaires auxquelles nous avons pensé à rajouter sur notre clé USB :

  • géolocalisation (mais asssez dur à réaliser)
  • signal sonore pour la retrouver dans la pièce/maison
  • clé USB étanche ( créer boitier étanche + bouchon )
  • capture et affichage de la température de la pièce avec leds


A priori, nous allons opter pour l'option concernant la température. Il nous faudra donc un capteur thermique et une LED RGB.

Séance du 10/02/2020 : organisation du wiki et recherche composants

Nous avons choisi d'opter pour la clé USB déjà testée par les encadrants. Nous avons cherché un capteur thermique "de surface" pour pouvoir le souder plus facilement sur notre clé. Voici à quoi il ressemble :

Capteur thermique MCP9804










MCP9804T-E/MC arduino Lien pour retrouver le capteur thermique

Séance du 13/02/2020 : mise en place de de l'étape du dé

Au vu de la complexité de la réalisation d'une clé USB sans connaissances préalables, nous allons dans un premier temps nous exercer avec la réalisation d'un dé éléctronique. Pour cela, nous nous sommes inspirés de la Youtubeuse "Heliox" qui a créé son propre dé électronique.

Séance du 17/02/2020 jusqu'au 02/03 : Utilisation de Fritzing

Découverte du logiciel Fritzing et première prise en main. Nous avons commencé par organiser les éléments nécessaires à la réalisation du dé éléctronique dans la partie "Vue Schématique" du logiciel :

Vue schématique Fritzing du dé
PCB de notre dé


Puis nous avons une nouvelle fois disposé ces éléments dans la partie "Circuit imprimé" du logiciel. Voici également notre fichier Fritzing de notre dé Fichier:DE BINOME 1.zip

Séance du 05/03/2020 : Code du dé

Voici le code pour que le dé électronique fonctionne correctement et aléatoirement quand on appuie sur le bouton de la carte.

Code partie 1
Code partie 2

Séance du 09/03/2020 : Soudage

Nous avons soudé les résistances, LEDs, microcontroleur et fils sur notre PCB réalisé grâce à Fritzing.

Vue recto du dé
Vue verso du dé




















Séance du 15/03/2020 : Test ReX de la carte "dé"

Test de la carte "dé" par ReX, fonctionnement des 4 LED déjà soudées sans aucune modification.

Programme de test :

#define MAX_LED 7
int leds[]={0,1,2,3,4,5,6};
void setup() {
  int i;
  for(i=0;i<MAX_LED;i++) pinMode(leds[i], OUTPUT);
}
void loop() {
  int i;
  for(i=0;i<MAX_LED;i++) digitalWrite(leds[i], HIGH);
  delay(1000);
  for(i=0;i<MAX_LED;i++) digitalWrite(leds[i], LOW);
  delay(1000);
}

Démonstration de l'exécution : media:binome2019-1-test1.mp4.

Réalisation de la clé USB

Maintenant que nous avons fini l'étape du dé électronique, nous pouvons passer à la réalisation de notre clé USB.

Nous avons choisi de reprendre le modèle Fritzing de la clé de 16 Mo sur le Wiki principal, et d'y ajouter notre propre fonctionnalité, c'est-à-dire une LED qui change de couleur en fonction de la température de la pièce. Pour ce faire, voici la liste du matériel qu'il nous faut :

  • Une LED RGB
  • Un capteur thermique (voir plus haut le modèle choisi MCP9804)
  • Des résistances


PARTIE VUE SCHEMATIQUE

Le capteur thermique n'étant pas disponible sur Fritzing, nous devons utiliser un composant générique dont nous allons renommer les broches pour qu'elles correspondent à celles de notre capteur.

Broches du MCP9804















Après avoir créé notre composant générique, nous l'avons relié au micro-contrôleur de la clé USB (partie capteur thermique). Nous avons aussi ajouté une LED RGB (partie LED RGB). Finalement, voici à quoi ressemble la vue schématique de notre clé, avec notre fonctionnalité supplémentaire LED/Capteur thermique :


Vue schématique de l'ensemble de notre clé USB



PARTIE ROUTAGE PCB

Nous passons maintenant à la partie PCB sur fritzing. Nous avons modifié la taille du PCB pour y ajouter nos composants supplémentaires (LED + Capteur thermique).

Malheureusement, par manque de temps et de moyens (logiciel Fritzing très lent et quasiment inutilisable sur nos ordinateurs personnels), nous ne sommes pas parvenus à réaliser le circuit imprimé de notre clé. Voici tout de même la vue de notre PCB avec la LED et le capteur thermique qu'il reste à relier, et une de nos tentatives en dessous :

PCB de la clé avec nos composants supplémentaires, non reliés


Tentative de routage du PCB de la clé



CODE

Il faut créer un code pour que la LED RGB que nous avons rajoutée s'allume et change de couleur en fonction de la température ambiante.

L'idée générale de ce code est de :

  • récupérer dans un premier temps la valeur de la température mesurée par le capteur thermique
  • allumer la LED en fonction de cette température.


Le capteur thermique que nous avons choisi (MCP9804) est un appareil esclave i2c pur. Le problème auquel nous avons été confronté est qu'il n'y a pas d'i2c matériel sur le micro-contrôleur de la clé USB (l'ATMega16u2), et on ne peut pas se servir des bibliothèques IDE Arduino. Pour communiquer du capteur thermique au micro-contrôleur, il faut utiliser une bibliothèque "logicielle" i2c, qui utilise des entrées/sorties classiques sans avoir besoin d'une prise en charge de la capacité matérielle i2c du micro-controleur. Voici le lien de la bibliothèque en question : Bibliothèque i2c On importe donc le module de la bibliothèque i2c au début de notre code. Il faut aussi déclarer toutes nos variables et constantes en début de code.

Début du code



Ensuite, en cherchant dans la datasheet du capteur thermique (que vous pouvez trouver en cliquant sur le lien de notre capteur), nous avons trouvé un code utilisant cette bibliothèque, permettant d'obtenir la valeur de la température ambiante mesurée par le capteur. Voici ce code, que nous mettons dans le void loop :

Code de récupération de la température



Maintenant, le but est d'allumer la LED et que la couleur de cette dernière corresponde à une fourchette de température (par exemple, bleue si on est sous les 15 degrés). Voici donc ce code, qui utilise la variable Temperature créée précédemment :

Allumage de la LED en fonction de la température

Remarques :

  • Il est fort probable que des erreurs soient présentes dans ce code, ou qu'il manque des éléments. Nous nous en excusons d'avance et nous ne voulons pas faire pleurer les puristes de l'informatique. Nous avons simplement donné ici une "idée générale" de code, vu notre incroyable niveau en langage C :).
  • Des améliorations peuvent être apportées. Par exemple ici, on allume en bleue la LED ou en rouge ou en vert, mais on aurait pu combiner deux ou trois couleurs pour apporter des variations de couleurs.

Conclusion

Nous allons maintenant dresser un bilan de ce bureau d'études en guise de conclusion.

  • Tout d'abord la mise en place de la conception du dé électronique était une excellente idée, qui nous a permis de mieux appréhender les différents outils à disposition. Nous avons en effet suivi toutes les étapes qu'il y aurait à reproduire ensuite pour la conception de la clé, comme la conception sur Fritzing, la réalisation du code en langage C, puis la soudure des différents composants.


  • Si une recherche internet ne suffisait pas pour ôter nos interrogations, la réactivité des deux encadrants nous permettait de toujours plus ou moins avancer.


  • Est ensuite venu le temps de la conception de la clé USB, brusquement interrompue par la mise en place du confinement, et donc de la privation des outils nécessaires. L'accompagnement de ce bureau d'études s'est tout de même poursuivi sur un chat en ligne, nous permettant de continuer notre travail. Nous avons donc téléchargé sur nos ordinateurs les logiciels nécessaires comme Fritzing et l'IDE Arduino pour le code. Malgré nos différentes tentatives, nous n'avons pas réussi à obtenir de très bons résultats sur Fritzing à cause de ralentissements importants inexpliqués.


  • Donc nous avons tant bien que mal réussi à intégrer, dans le schématique de la clé USB disponible sur le wiki, les éléments de la fonctionnalité "affichage de température par LED". Celui-ci validé par @rex et @aboe, nous nous sommes lancés dans le routage du PCB ainsi que dans la réalisation du code de nos fonctionnalités.


  • N'étant ni en option langage C, ni très doués pour l’électronique, nous ne sommes pas certains que le code soit optimal, voire fonctionnel, et le routage du PCB est loin d'être achevé


  • Nous sommes cependant très contents d'avoir suivi ce bureau d'études qui nous a permis d'obtenir les bases de certains logiciels et fait découvrir certaines compétences comme le codage. Il nous a également permis de mettre les pieds dans un univers bien différent de celui apporté par les matières classiques avec un suivi de projet comme nous rencontrerons lors de notre cursus ingénieur.