SE3Binome2023-7
Préambule
Lien du GIT
[1](https://archives.plil.fr/adjadjaa/Mega-Boy.git)
Cahier des charges
Nous aimerions fabriquer une mini-console de jeu avec un écran et plusieurs boutons (flèches directionnelles + deux boutons), la présence de LEDs (au moins une pour le niveau de la batterie), une batterie et un gyroscope. Le jeu à inclure n'est pas encore décidé, mais quelques idées incluent : Snake, jeu de réflexes, etc.
Liste des composants :
- 6 touches (A, B et 4 touches directionnelles)
- 1 gyroscope (abandonné, pas assez de pins)
- 4 LEDs
- 1 mémoire
- 1 batterie
- 1 écran
Détails des composants
ATMEGA32U4-A
- Micro-contrôleur
AT45DB161D-SU
- Mémoire
FH12S-40S-0.5SH
- Connecteur pour l'écran
NHD-2.4-240320CF-CTXI#-F
- Écran
RT9526AGE
- Chargeur de batterie
AP7333
- Régulateur de tension : Nous avons choisi ce régulateur car tous nos composants fonctionnent en 3.3V et la batterie délivre 3.7V. Nous ne pouvions pas utiliser le LM1117 à cause de son drop out voltage de 1.2V. Celui du AP7333 étant de 0.3V, il nous convient mieux.
USB_MINI-B_SMT
- Connecteur USB
AVR-ISP-6
- Programmateur AVR
BUTTON_SWITCH
- 6 boutons poussoirs
LED_SMD
- 4 LEDs
Hardware
Kicad
Nous avons mis sur la face avant les 6 boutons, le connecteur d'écran ainsi que les 4 LEDs. Cette face constituera donc l'avant de la console pour l'utilisateur. Au dos, nous avons donc mis tous les autres éléments non nécessaires pour l'utilisateur tels que les différentes connectiques (USB, connecteur de batterie et l'AVR ISP), le microprocesseur, les différents composants pour gérer l'alimentation (le régulateur de tension et le chargeur pour la batterie) et enfin en dernier, nous avons mis une mémoire.
Reçu carte vierge
Carte après soudure des composants
Différents problèmes rencontrés
Le premier problème rencontré est survenu sur le régulateur de tension. En effet, nous avions routé pour un AP7333-SAG or Monsieur Boe ne les a pas retrouvés et nous a donné un AP7333-SRG à la place. Le mapping des pins n'étant pas identique, il a fallu modifier le routage à la main. Heureusement, nous avions prévu les éventuels imprévus avec des test-points un peu partout simplifiant ainsi cette modification.
Lors du routage de la carte, nous avons également commis une erreur. En effet, nous avons oublié de relier le UVCC et le VCC du micro-contrôleur. Il n'était donc pas possible de programmer le micro-contrôleur en l'alimentant via l'USB. Nous avons donc court-circuité l'alimentation de la batterie (VCC) et l'USB (5V) avec un fil mâle femelle permettant ainsi de le débrancher facilement.
Pour brancher l'écran (possédant une nappe), il est important de faire attention au sens des pins pour connecter l'écran. Pour celui-ci, nous nous sommes référés à la datasheet de l'écran. Il semble correct étant donné que les backlight sont allumés.
Lors du routage, nous avons fait attention à bien garder le même sens sur les pins entre l'écran et le connecteur. Cependant, nous avons oublié que la nappe elle-même possédait un sens. Ainsi, lorsque nous avons voulu insérer la nappe de l'écran dans le connecteur, nous nous sommes rendu compte que la nappe était dans le mauvais sens. Il a donc fallu retourner le connecteur pour tenir compte de ce problème.
L'autre problème survenu provient également du régulateur. En sortie, nous étions censés retrouver du 3.3V que ce soit via le 5V de l'USB ou bien le 3.7V de la batterie. Or, nous ne retrouvions que du 2.92V que ce soit à vide ou branché sur le reste du circuit. Le problème reste donc non identifié, mais nous supposons que celui-ci vient du régulateur en lui-même... Nous n'avons pas pu le remplacer car il n'y en avait plus en stock. Pour pallier ce problème et quand même essayer, nous avons décidé de brancher notre carte directement sur une alimentation 3.3V. La puce présente dans l'écran n'est peut-être pas active avec une tension trop faible.
Software
Code préliminaire
Nous avons tout d'abord testé la carte avec un programme simple allumant une LED pour s'assurer du bon fonctionnement de la carte.
À l'issue de ce test, la carte semble fonctionnelle.
Dans un premier temps, étant donné notre routage, il est important de créer une fonction modifiant l'ordre des bits de commande. Notre routage inverse les bits 5 et 6 et inverse l'ordre. Voici le programme ainsi conçu (test effectué dans le dossier /Programmation/inversion de bit):
Essai de la carte
Afin de programmer l'écran, nous avons essayé pas mal de choses différentes. L'écran est contrôlé par un TFT Controller/Driver ST7789VI, des commandes spécifiques lui sont associées. La liste de toutes ces commandes est disponible dans la datasheet de celui-ci. Nous avons donc essayé pas mal de codes différents, que ce soit le code fourni par la datasheet de l'écran ou un code fait avec l'IDE Arduino par le constructeur, adapté en un code C classique.
Le premier code fourni par la datasheet et modifié :
Le deuxième code adapté à partir de l'IDE Arduino :
Conclusion
Le projet Mega-Boy nous a beaucoup appris. Malgré les défis rencontrés, comme les incompatibilités de composants et les erreurs de routage, nous avons beaucoup appris de nos différentes erreurs.
Les principales difficultés ont été de modifier le routage pour le régulateur de tension AP7333-SRG, d'ajuster les connexions de l'écran et de gérer les problèmes de tension.
La conception et les tests du matériel nous a permis de développer nos compétences en conception de PCB. Les essais et ajustements de la carte, ont souligné l'importance de faire preuve de rigueur lors de toutes les étapes de conception et d'avoir une documentation technique claire.
Nous sommes persuadés qu'avec les bons composants et des ajustements supplémentaires, la mini-console Mega-Boy pourrait fonctionner.