« SE3Binome2023-7 » : différence entre les versions
Aucun résumé des modifications |
|||
(42 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
=Préambule= | =Préambule= | ||
== Lien du GIT == | == Lien du GIT == | ||
[https://archives.plil.fr/adjadjaa/Mega-Boy.git](https://archives.plil.fr/adjadjaa/Mega-Boy.git) | |||
== Cahier des charges == | == 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 composants : | === Liste des composants : === | ||
*6 touches (A, B et 4 touches directionnelles) | * 6 touches (A, B et 4 touches directionnelles) | ||
*1 gyroscope (abandonné pas assez de pins) | * 1 gyroscope (abandonné, pas assez de pins) | ||
*4 LEDs | * 4 LEDs | ||
*1 mémoire | * 1 mémoire | ||
*1 batterie | * 1 batterie | ||
*1 écran | * 1 écran | ||
== Détails composants == | == Détails des composants == | ||
=== ATMEGA32U4-A === | |||
Micro- | * Micro-contrôleur | ||
=== AT45DB161D-SU === | |||
Mémoire | * Mémoire | ||
=== FH12S-40S-0.5SH === | |||
Connecteur pour l'écran | * Connecteur pour l'écran | ||
=== NHD-2.4-240320CF-CTXI#-F === | |||
* Écran | |||
=== RT9526AGE === | |||
Chargeur de batterie | * Chargeur de batterie | ||
=== AP7333 === | |||
Régulateur de | * 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. | ||
Nous avons | |||
=== USB_MINI-B_SMT === | |||
Connecteur USB | * Connecteur USB | ||
=== AVR-ISP-6 === | |||
Programmateur AVR | * Programmateur AVR | ||
=== BUTTON_SWITCH === | |||
6 | * 6 boutons poussoirs | ||
=== LED_SMD === | |||
4 | * 4 LEDs | ||
=Hardware= | |||
== Kicad == | == Kicad == | ||
[[Fichier:megaboysch.png|center|1000px|vignette|Photo de la schématique]] | [[Fichier:megaboysch.png|center|1000px|vignette|Photo de la schématique]] | ||
Nous avons mis sur la face avant les 6 boutons, le connecteur d'écran ainsi que les 4 | 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. | ||
[[Fichier:megaboypcb.png|left|480px|vignette|Avant du PCB]][[Fichier:megaboygerber.png|right|480px|vignette|Arrière du PCB]] | [[Fichier:megaboypcb.png|left|480px|vignette|Avant du PCB]][[Fichier:megaboygerber.png|right|480px|vignette|Arrière du PCB]] | ||
Ligne 62 : | Ligne 61 : | ||
<br style="clear: both;" /> | <br style="clear: both;" /> | ||
=== Reçu carte vierge === | === Reçu carte vierge === | ||
[[Fichier:Photo carte vierge.png|vignette|left|thumb|450px|Photo arrière du | [[Fichier:Photo carte vierge.png|vignette|left|thumb|450px|Photo arrière du PCB vierge]][[Fichier:Photo carte vierge avant.png|vignette|thumb|right|450px|Photo avant du PCB vierge]] | ||
<br style="clear: both;" /> | <br style="clear: both;" /> | ||
=== Carte après soudure des composants === | === Carte après soudure des composants === | ||
[[Fichier: | [[Fichier:Arrière PCB.png|vignette|left|thumb|450px|Arrière du PCB soudé]][[Fichier:Avant PCB.png|vignette|thumb|right|450px|Avant du PCB soudé]] | ||
<br style="clear: both;" /> | |||
=== 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. | |||
[[Fichier:Photo modification SAG vers SRG.png|vignette|left|thumb|450px|Photo détaillant la modification SAG vers SRG]][[Fichier:Modification SAG vers SRG.png|vignette|thumb|right|450px|Arrière de la carte modifiée]] | |||
<br style="clear: both;" /> | |||
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. | |||
[[Fichier:Avant PCB.png|center|500px|vignette|Arrière du PCB soudé]] | |||
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. | |||
[[Fichier:Datasheet pin écran.png|left|480px|vignette|Datasheet pour la connectique de l'écran]][[Fichier:Connectique micro p.png|right|480px|vignette|Connexion au micro-contrôleur]] | |||
<br style="clear: both;" /> | |||
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. | |||
[[Fichier:Changement du connecteur d'écran.png|center|450px|vignette|Photo du changement du connecteur écran]] | |||
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. | |||
[[Fichier:Fils pour relier la carte a une alimentation 3,3V.png|center|500px|vignette|Photo des fils pour branchement sur l'alimentation 3.3V]] | |||
=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. | |||
[[Fichier:Programme test.png|center|450px|vignette|Programme test]] | |||
À 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): | |||
[[Fichier:Bit_schématique.png|vignette|left|thumb|450px|Bit de la schématique]][[Fichier:Fonction pour modifier l'ordre des bits.png|vignette|thumb|right|600px|Code modifiant l'ordre des bits]] | |||
<br style="clear: both;" /> | <br style="clear: both;" /> | ||
== | == 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. | |||
[[Fichier: | |||
Le premier code fourni par la datasheet et modifié : | |||
[[Fichier:Code datasheet.png|left|480px|vignette|Code datasheet]][[Fichier:Code datasheet 2.png|right|480px|vignette|Code datasheet]] | |||
<br style="clear: both;" /> | <br style="clear: both;" /> | ||
Le deuxième code adapté à partir de l'IDE Arduino : | |||
[[Fichier:Code forum obscure.png|left|480px|vignette|Code Arduino]][[Fichier:Code forum obscure 2.png|right|480px|vignette|Code Arduino]] | |||
<br style="clear: both;" /> | |||
=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. |
Version actuelle datée du 9 juin 2024 à 20:03
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.