« SE3Binome2023-7 » : différence entre les versions

De projets-se.plil.fr
Aller à la navigation Aller à la recherche
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](https://archives.plil.fr/adjadjaa/Mega-Boy.git)


== Cahier des charges ==
== Cahier des charges ==
Mini-console de jeu avec écran et plusieurs bouton (flèches directionnelles + deux boutons), présence de LEDs (au moins une pour le niveau de la batterie), batterie, giroscope
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.
Jeu pouvant être joué non décidé encore, quelques idées : Snake, Jeu de réflexes ...


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
=== ATMEGA32U4-A ===
Micro-controlleur
* Micro-contrôleur


*AT45DB161D-SU
=== AT45DB161D-SU ===
Mémoire
* Mémoire


*FH12S-40S-0.5SH
=== FH12S-40S-0.5SH ===
Connecteur pour l'écran
* Connecteur pour l'écran


*NHD-2.4-240320CF-CTXI#-F
=== NHD-2.4-240320CF-CTXI#-F ===
Ecran
* Écran


*RT9526AGE
=== RT9526AGE ===
Chargeur de batterie
* Chargeur de batterie


*AP7333
=== AP7333 ===
Régulateur de Tension:
* 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 pris ce régulateur car tous nos composants sont en 3.3V et la batterie donne 3.7V. Nous ne pouvons pas utiliser de LM1117 car le drop out voltage est de 1.2V. Celui du AP7333 étant de 0.3V nous convient mieux.


*USB_MINI-B_SMT
=== USB_MINI-B_SMT ===
Connecteur USB
* Connecteur USB


*AVR-ISP-6
=== AVR-ISP-6 ===
Programmateur AVR
* Programmateur AVR


*BUTTON_SWITCH
=== BUTTON_SWITCH ===
6 bouttons poussoirs
* 6 boutons poussoirs


*LED_SMD
=== LED_SMD ===
4 leds
* 4 LEDs
 
=Hardware=


= 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 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.
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 pcb vierge]][[Fichier:Photo carte vierge avant.png|vignette|thumb|right|450px|Photo avant du pcb vierge]]
[[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:Avant du PCB soudé.png|vignette|left|thumb|450px|Arrière du pcb soudé]][[Fichier:Arrière du PCB soudé.png|vignette|thumb|right|450px|Arrière du pcb soudé]]
[[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;" />


===Différents problèmes rencontrés===
== Essai de la carte ==
Le premier problème encontré 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é 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évenu les éventuels imprévu avec des test-points un peu partout simplifiant ainsi cette modification.
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:Photo modification SAG vers SRG.png|vignette|left|thumb|450px|Photo détaillant la modification SAG vers SRG]][[Fichier:Arrière du PCB soudé.png|vignette|thumb|right|450px|Arrière de la carte modifié]]
 
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;" />


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-processeur. Il n'était donc pas possible de programmer le micro-processeur 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.
Le deuxième code adapté à partir de l'IDE Arduino :
[[Fichier:Avant du PCB soudé.png|center|500px|vignette|Arrière du pcb soudé]]
[[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.


L'autre problème survenu provient également du régulateur. En sortie, nous étions censé retrouvé 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 viens du régulateur en lui même ... Nous n'avons pas pu le remplacer car il n'y en avait plus en stock.
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

Photo de la schématique

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.

Avant du PCB
Arrière du PCB


PCB vue 3D avant
PCB vue 3D arrière


Reçu carte vierge

Photo arrière du PCB vierge
Photo avant du PCB vierge


Carte après soudure des composants

Arrière du PCB soudé
Avant du PCB soudé


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.

Photo détaillant la modification SAG vers SRG
Arrière de la carte modifiée


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.

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.

Datasheet pour la connectique de l'écran
Connexion au micro-contrôleur


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.

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.

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.

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):

Bit de la schématique
Code modifiant l'ordre des bits


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é :

Code datasheet
Code datasheet


Le deuxième code adapté à partir de l'IDE Arduino :

Code Arduino
Code 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.