AccueilblogS'enregistrerConnexion
Le Deal du moment :
LEGO : Le 2eme à -50%
Voir le deal

Partagez
 

 Console DIY

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Pep31
Noob'
Pep31

Messages : 8
Réputation : 4
Inscrit le : 27/06/2020


Console DIY Empty
Msg n°1 MessageSujet: Console DIY Console DIY Icon_minitimeSam 27 Juin 2020, 17:56

Bonjour à tous,

Je suis nouveau sur ce forum et souhaite vous présenter ma dernière console DIY à base de Raspberry et Retropie.

Console DIY Photo010

Ce projet a bien évidemment été inspiré par nombre d’autres consoles de retro-gaming comme notamment la Retro-CM3 ou la Freeplay CM3. J’ai beaucoup appris en construisant cette console et même si le résultat n’est pas du niveau d’un produit commercialisé, il est vraiment fun à jouer.

C’est mon 3e projet du genre, et cette fois-ci mon attention s'est porté plus particulièrement sur les points suivants :
   *l’Écran
   Mon 1er projet utilisait la sortie SVideo du Pi et le 2e l’interface SPI. La qualité avec le SVidéo est vraiment décevante alors qu’avec l’interface SPI, ce sont les performances qui en pâtissent. Aussi, j’ai décidé d’utiliser l’interface DPI (RGB) du Raspberry ce qui est déjà un peu moins courant. L’avantage du DPI est la rapidité d’affichage (60Hz), une bonne qualité d’image (c’est du numérique et non de l’analogique comme le SVideo), et la possibilité de piloter l’affichage directement par le Raspberry sans composant supplémentaire. L’inconvénient étant que cela consomme beaucoup de GPIO. Ça dépend du mode choisi mais pour du 24 bits (8 bits par composantes RGB) il faut déjà 24 GPIO pour les données.

   *le Raspberry Pi
   Mon intention est de faire un terminal le plus portable possible, je cherche donc à limiter l’encombrement. De plus, je n’ai pas envie de charcuter une carte existante. Cela met de côté le RPI3 ne serait-ce pour ne pas être gêné par les ports inutiles. J’aime beaucoup le RPI zero pour sa compacité mais il est tout de même un peu juste en termes de puissance et limite les émulateurs utilisables.
   Je suis donc parti sur un Raspberry CM3+ qui dispose de la puissance du Raspberry 3 tout en permettant une bonne intégration. La console mesure au final 147x68x18 mm. L’autre avantage étant le nombre important de GPIO disponibles. Effectivement, et contrairement aux autres Raspberry, sur le CM3 l’ensemble des GPIO du BCM2837 sont disponibles.

   *le démarrage et l’extinction
   Autre chose qui me dérange dans mes précédents projets, et la plupart de ceux que je trouve sur Internet, est le fait que la gestion de l’alimentation est totalement déconnectée du Raspberry. En résulte le besoin de lancer l’extinction du système logiciellement puis une fois le Pi éteint, de couper le courant de l’engin. Je souhaite avoir un comportement comparable à une console standard, c’est à dire : une pression sur le bouton PWR à l’état OFF allume et démarre le système, la même chose à l’état ON lance une extinction propre du Pi et coupe l’alimentation.
   Pour la gestion de l’alimentation, j’utilise un microcontrôleur ATtiny85. Son nombre de GPIO est pile ce dont j’ai besoin pour cet usage, sa taille est contenue et il ne nécessite pas de cristal ou d’autres composants pour fonctionner.

   *le Son
   Sur ce point, j’ai toujours été déçu des sorties son via PWM sur le Pi zero. J’ai essayé de faire des filtres passe-bandes mais le résultat n’a jamais été convaincant. Sur ce projet, je voudrais quelque chose de plus qualitatif et j’ai donc décidé d’utiliser un DAC. J’ai pu utiliser la breakout board d’Adafruit basée sur le circuit MAX9357 et je trouve ce dernier particulièrement adapté à ce type d’utilisation. Les produits d’Adafruit sont opensource et cela est vraiment top pour apprendre et améliorer ses propres réalisations. Aussi, j’ai repris leur travail pour réaliser mon DAC basé sur le même circuit intégré.

--

J’ai commencé mes expérimentations avec la compute module IO board de WaveShare. Cela me donne accès à l’ensemble des ports de la carte de façon simple et rapide. J’ai pu ainsi valider les différents modules (hors alimentation) que je souhaitais utiliser.

Le plus important d’entre-eux est l’écran. Il n’a clairement pas été facile de trouver l’affichage qui me convenait. J’ai du passer de long moments sur Aliexpress a demander des infos aux vendeurs pour avoir des caractéristiques fiables. Il a également fallu étudier les documentations de ces écrans afin de bien comprendre leur fonctionnement et adapter la configuration du Raspberry de façon adéquate.
En effet, j’utilise sur ce projet l’interface DPI du Raspberry qui est une simple interface parallèle qui envoie les données de couleur de chaque pixels en même temps sur l’ensemble des ports. Plus on utilise de ports et plus la couleur sera juste.

Le Raspberry peut aller jusqu’à 24 bits mais j’ai préféré me contenter de 18 bits pour garder assez de GPIO de disponibles pour le reste. L’interface est contrôlée par le GPU et on utilise le fichier config.txt pour adapter la sortie aux caractéristiques de l’écran.
J’ai essayé plusieurs écrans et j’ai fini par choisir un 3.5" format 4/3 qui est facilement trouvable sur Internet : LQ035NC111.

Console DIY Photo011

Je me suis également fabriqué une petite manette de fortune pour pouvoir effectuer les premiers tests.

Pour le son, comme indiqué dans le précédent post, j’utilise la breakout board d’Adafruit “MAX98357 I2S Amp Breakout” ainsi qu’un HP de Gameboy SP. Il s’agit donc d’un décodeur numérique vers analogique et également d’un amplificateur et permet ainsi de connecter directement un mini HP. L’ampli peut délivrer jusqu’à 3W en fonction de l’impédance du HP, de l’alimentation utilisée et de la distorsion tolérée. Il peut en effet être alimenté avec une tension comprise entre 2.7 et 5.5 V.

Concernant la configuration du raspberry, j’ai commencé par créer mon propre “device tree” afin de définir l’utilisation des GPIO que je voulais avoir.

Les 22 premières sont utilisées pour l’affichage DPI de l’écran sur 18 bits (6 par couleur plus 4 pour le signal d’horloge et la position)

4 sont définies pour l’interface I2S pour le son (je n’en ai besoin que de 3)

12 sont utilisées pour les contrôles (4 boutons de direction, 4 boutons action, 2 gâchettes et start/select)

2 seront utilisées pour la gestion de l’extinction

Au-delà du fichier dt-blob.bin créé, j’appelle dans mon fichier config.txt différents overlays pour compléter ma config :
   *i2s-gpio28-31 et hifiberry-dac : pour envoyer le son au format PCM au DAC
   *gpio-shutdown : pour que le raspberry puisse avertir qu’il a fini de s’éteindre
   *gpio-poweroff : pour ordonner au raspberry de s’éteindre
   *gamepad : celui-ci est un overlay que j’ai créé afin que l’utilisation des GPIO dédiées aux contrôles simulent les touches d’un clavier.

--

Pour pouvoir contrôler le démarrage et l’extinction du futur terminal, j’ai décidé d’utiliser un ATtiny85.

Console DIY Photo012

Le microcontrôleur est connecté à la batterie par l’intermédiaire du bouton d’allumage. Lorsque le bouton PWR est pressé cela l’alimente et il démarre.

Le code de l’ATtiny est très simple. Une fois démarré, il attend environ 2 secondes puis passe à l’état haut le pin PWR_CTRL ce qui active le convertisseur de tension U2 et alimente l’ATtiny. La boucle est bouclée, on peut relâcher le bouton, l’ATtiny reste allumé.

Ensuite, le code passe à l’état haut le pin PWR_SYS ce qui va allumer tout le système et donc le Raspberry.

Une fois la séquence de démarrage passée, le code scrute l’utilisation du bouton PWR, à l’aide du pin BTN_OFF, ainsi que le pin POWEROFF. Lorsque BTN_OFF passe à l’état bas pendant environ 1.5 sec, le pin SHUTDOWN est passé à l’état haut ce qui ordonne au Raspberry de s’éteindre (overlay shutdown).

Une fois la séquence d’extinction du Rasbpberry terminée, celui-ci passe le pin POWEROFF à l’état haut et l’ATtiny éteint tout le système en coupant les pin PWR_SYS et PWR_CTRL (ce dernier a pour effet d’éteindre l’ATtiny lui-même).


Au niveau de l’alimentation, je suis parti sur un circuit intégré utilisé dans les power bank : IP5306.

L’avantage consiste à un unique IC pour gérer la charge, la décharge et la protection de la battery de type LiPo mais également pour booster la tension à 5V. La tension fournie par la batterie variant de 4.2V à ~2.8V suivant sa charge. De plus, cet IC permet de piloter jusqu’à 4 LED pour indiquer le niveau de charge de la batterie.

Le CM3+ nécessite 3 tensions différentes pour fonctionner correctement : 5V, 3.3V et 1.8V. La documentation fait également mention d’une tension de 2.5V mais celle-ci n’est nécessaire que pour la sortie vidéo composite que je n’utilise pas.
Je pars donc de la tension de 5V et utilise des régulateurs de tension pour obtenir les 2 autres.

Pour alimenter le rétroéclairage de l’écran, il faut alimenter 6 LED en série. J’ai donc besoin d’une tension plus élevée pour ce module : ~19V. J’utilise pour ça un boost-converter basé sur l’IC PT4103.

Pour la partie alimentation, je suis resté sur les préconisations de la datasheet de l’IP5306 et ai réalisé un premier PCB permettant de tester les options choisies.

Console DIY Photo013

De là est ressorti :

   il faut être vigilant à l’implémentation du connecteur d’écran. Oui, sur cette version, je l’ai inversé… 😄
   nécessité d’une résistance de rappel pour que l’IP5306 s’arrête une fois le système éteint.
   les 4 LED permettant de connaître l’état de charge de la batterie ne sont pas utiles. 2 LED suffisent pour connaître l’état de charge ou de décharge
   d’autres petites choses qu’il n’est pas intéressant de mentionner ici.

J’ai également ajouté à ce PCB des jumper afin d’être en mesure d’isoler certaines parties du circuit et ainsi plus facilement débusquer les problèmes.


Ce prototype a également été l’occasion pour moi d’affiner le code de l’ATtiny et de tester en condition réelles l’allumage et l’extinction du système.




J’ai pu alors me lancer dans la réalisation du PCB définitif.

Je suis pour cela parti sur des switches ALPS SKRRABE010 dont je suis vraiment fan du feeling. Pour le D-Pad, j’ai voulu utilisé un switch multi-directionnel ALPS SKRHAAE010 également pour le feeling qu’il procure. Cela me rappelle la NeoGeo Pocket Color qui est une console que j’ai particulièrement apprécié pour ce point.

Voici après routage le rendu du PCB :

Console DIY Photo014
Console DIY Photo015

Une fois cette partie terminée, il a donc fallu attendre la réception du PCB. Cependant, la modélisation du boitier pouvait débuter. La première chose à faire consistait à réaliser le PCB sous Fusion 360 à partir des images ci-dessus.
Une fois le PCB modélisé, il faut s’occuper des autres éléments afin d’être en mesure faire un boitier aux bonnes dimensions. Pour cela, je cherche autant que je peux sur le Net les fichiers 3D de mes composants et modules et quand je ne trouve pas, je prend les mesures et fait moi-même une modélisation sommaire me permettant de reporter les principales côtes sur lesquelles m’appuyer.

Je n’ai évidemment pas besoin d’avoir tous les éléments de modélisés. Les éléments les plus importants étant : l’écran, la batterie, le port USB, les switches et le HP.

Au final, le rendu est le suivant :

Console DIY Photo016

Ce n’est pas le rendu le plus récent et j’ai déjà apporté de nouvelles modifications comme l’évent arrière permettant une meilleure dissipation de la chaleur produite par le processeur.

La modélisation doit toujours se faire en ayant en tête l’impression qui suivra. En effet, toute modélisation n’est pas imprimable et prendre en compte la façon dont fonctionne une imprimante 3D au moment de la modélisation permet d’avoir de meilleurs résultats.

Concernant la soudure des composants, il est clair qu’un heat gun est plus que conseillé. J’ai également utilisé un stencil pour déposer la pâte à souder pour le socket de DDR2-SODIMM devant accueillir le CM3. Il y a tout de même 200 pin et après mettre arraché les cheveux pour le souder sur le premier prototype, j’ai préféré me faciliter la vie pour le PCB final et par la même occasion obtenir un bien meilleur rendu.

Au final, les différents éléments prêts pour le montage :

Console DIY Photo017
Console DIY Photo018

J’utilise une goutte de colle à chaud sous les boutons pour obtenir un bon contact avec les switches.

Il ne me reste plus qu’à poster quelques photos du résultat final.

Console DIY Photo111
Console DIY Photo110
Console DIY Photo112




Concernant les émulateurs, j’ai pu joué à des jeux PS1 et N64 ce qui n’est pas possible avec un Pi zero. Les jeux GameBoy Advance passent vraiment super bien, ce qui était mon premier objectif.

Pour ceux qui seraient intéressés, voici le lien de mon projet sur Github : [je ne peux pas poster de liens pour l'instant...]
Merci de m’avoir lu !
Revenir en haut Aller en bas
Caanunoo
PANDORA Addict
PANDORA Addict
Caanunoo

Messages : 1688
Réputation : 260
Age : 47
Inscrit le : 10/03/2020

Machine préférée Open Pandora 1GHz & 600 MHz, GPD WIN, GPD WIN 2

Localisation : La Terre

Humeur : Splité (cf film "Split")


Console DIY Empty
Msg n°2 MessageSujet: Re: Console DIY Console DIY Icon_minitimeSam 27 Juin 2020, 18:36

Bonsoir Pep31, c'est dommage que l'on n'ait pas eût droit à ta présention dans la section "présentation des membres", car je suis sûr que les membres du fofo auraient aimé en apprendre un peu plus sur toi, vu ce que tu nous présentes là, c'est vraiment du super taf pour un autodidacte et tout est bien expliqué, chapeau monsieur, faire sa propre console, faut le faire tout de même, c'est un beau rêve qui devient réalité pour toi, je trouve cela excellent, même si ta console DIY n'a pas la finition d'une console de fabriquant, vraiment bravo à toi !!! :clap: :top: :+1:
Revenir en haut Aller en bas
Pep31
Noob'
Pep31

Messages : 8
Réputation : 4
Inscrit le : 27/06/2020


Console DIY Empty
Msg n°3 MessageSujet: Re: Console DIY Console DIY Icon_minitimeSam 27 Juin 2020, 18:46

Merci pour ton commentaire positif.

Effectivement, je ne me suis pas présenté dans la section dédiée. Je réparerai ça prochainement. Wink
Revenir en haut Aller en bas
Caanunoo
PANDORA Addict
PANDORA Addict
Caanunoo

Messages : 1688
Réputation : 260
Age : 47
Inscrit le : 10/03/2020

Machine préférée Open Pandora 1GHz & 600 MHz, GPD WIN, GPD WIN 2

Localisation : La Terre

Humeur : Splité (cf film "Split")


Console DIY Empty
Msg n°4 MessageSujet: Re: Console DIY Console DIY Icon_minitimeSam 27 Juin 2020, 19:52

De rien, c'est moi qui te remercie d'avoir poster ta création de A à Z, je me suis régalé :merci: , malgrès des termes techniques qui ne parlent pas :/ ... Je suis carrèment fan de ta console !!! :bave:
Revenir en haut Aller en bas
fute77
Noob'
fute77

Messages : 7
Réputation : 0
Inscrit le : 29/03/2019


Console DIY Empty
Msg n°5 MessageSujet: Re: Console DIY Console DIY Icon_minitimeSam 04 Juil 2020, 00:00

Bravo, superbe réalisation

j'aime beaucoup le resultat
Revenir en haut Aller en bas
Natghe66
Padawan
Natghe66

Messages : 234
Réputation : 3
Inscrit le : 25/12/2017


Console DIY Empty
Msg n°6 MessageSujet: Re: Console DIY Console DIY Icon_minitimeSam 04 Juil 2020, 12:26

Incroyable, l’écran a l’air tellement qualitatif, j’aimerais être capable de réaliser ce genre de choses Razz

Félicitation en tout cas
Revenir en haut Aller en bas
goldenboy92
Accro'
goldenboy92

Messages : 405
Réputation : 13
Inscrit le : 05/12/2013


Console DIY Empty
Msg n°7 MessageSujet: Re: Console DIY Console DIY Icon_minitimeSam 04 Juil 2020, 18:17

Un grand bravo à toi , c'est juste magnifique.
Tu as fait un boulot d'enfer.
Encore bravo.
Le pCB tu l'as inventé tout seul et tu l'as fait fabriqué, c'est bien ca?
Revenir en haut Aller en bas
Pep31
Noob'
Pep31

Messages : 8
Réputation : 4
Inscrit le : 27/06/2020


Console DIY Empty
Msg n°8 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 14:53

Merci pour vos retours !

Effectivement, j'ai conçu le PCB ainsi que le boitier. Les 2 vont ensemble. J'ai ensuite commandé la fabrication du PCB.

Je laisse libre accès à tout ce que j'ai fait si certains veulent refaire la même console. Les schémas et PCB sont accessibles à l'adresse suivante :

https://easyeda.com/pep31/cm3-retropie_copy_copy

Concernant les fichiers stl pour l'impression 3D : https://github.com/pep3175/Retro-PixelBoy

J'ai également créé un projet sur Hackaday pour tout répertorier : https://hackaday.io/project/173417-retro-pixelboy

Concernant l'écran, le rendu est clairement top mais cela est surtout à l'utilisation de l'interface DPI. J'ai acheté mon écran sur Aliexpress pour moins de 10 EUR : https://www.aliexpress.com/item/32691537726.html?spm=a2g0s.9042311.0.0.27424c4dV0gNEO
Revenir en haut Aller en bas
snk4ever
Membre Hyper Actif
snk4ever

Messages : 722
Réputation : 38
Age : 35
Inscrit le : 17/11/2013

Machine préférée Megadrive

Localisation : Nantes


Console DIY Empty
Msg n°9 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 15:24

Chapeau, c'est la classe internationale ta console. Je m'imagine pas la difficulté de souder un slot SO-DIMM, ça doit être tendu.

Pour ton écran du coup c'est différent d'un VGA666 par exemple qui utilise aussi les GPIO mais avec un réseau de résistances derrière ?

Je suis aussi un grand fan du stick de la NeoGeo Pocket et je rêve de pouvoir me faire un mod de joycon pour ma switch en mettant un stick à la place des boutons pourris du joycon gauche. Quel est ton avis sur le ALPS SKRHAAE010 par rapport à la vraie Neo Geo Pocket ?

J'ai l'impression que tu as les capacités pour faire la machine dont je révais: une Pandora/Pyra mais avec un slot pour les compute modules de Raspberry pour pouvoir l'upgrader dans le temps. Tu sais si les prochains Compute Module seront compatibles pin à pin ?
Revenir en haut Aller en bas
Lanfeust
Accro'
Lanfeust

Messages : 286
Réputation : 11
Inscrit le : 06/01/2013


Console DIY Empty
Msg n°10 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 16:52

Pas mal....@snk4ever, détrompe toi, pour souder çà tu prends de la pâte à braser et du flux, çà se fait tout seul, juste vérifier que tu fais pas de pont de soudure .
Revenir en haut Aller en bas
Pep31
Noob'
Pep31

Messages : 8
Réputation : 4
Inscrit le : 27/06/2020


Console DIY Empty
Msg n°11 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 17:34

@snk4ever : VGA666 est un overlay qui utilise également l'interface DPI mais prévue pour piloter des écrans VGA. Ça n'utilise pas les pins CLK et DE mais c'est toujours l'interface DPI qui est utilisée.

Concernant le stick directionnel ALPS SKRHAAE010 je suis très agréablement surpris. Cela fait trop longtemps que je n'ai plus ma NGPC pour faire une comparaison objective mais j'ai l'impression de retrouver les mêmes sensations.
Il me faut cependant revoir l'impression du "cap" car ce n'est pas très propre et pas des plus agréable sous le pouce.
Revenir en haut Aller en bas
Pep31
Noob'
Pep31

Messages : 8
Réputation : 4
Inscrit le : 27/06/2020


Console DIY Empty
Msg n°12 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 17:39

Concernant un futur CM4, je n'ai encore lu aucune info là-dessus. Il y a déjà eu des annonces ?

C'est vrai que ton projet de Pandora/Pyra à base de Compute module est intéressant. Je n'ai par contre jamais tenter de boitier de type clamshell, ce ne doit pas être évident...
Revenir en haut Aller en bas
RankXeroxZ
The Puppet Master
The Puppet Master
RankXeroxZ

Messages : 5191
Réputation : 179
Inscrit le : 03/12/2011

Machine préférée Neo Geo, SFC, PC Engine, Saturn, MSX, X68000


Console DIY Empty
Msg n°13 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 20:04

Bonjour, un tuto intéressant et hyper complet c'est plutôt étonnant et déroutant pour un premier message... :hmmm:
ceci dit une présentation sera la bienvenue, on est curieux d'en savoir un peu plus à ton sujet après cette entrée fracassante sur le forum..

________________________________
Console DIY 35490010
Les Reviews Retrogaming sont ICI  happy et LA  Wink



« Je représente l'humanité telle que ses maîtres l'ont faite. L'homme est un mutilé. Ce qu'on m'a fait, on l'a fait au genre humain. On lui a déformé le droit, la justice, la vérité, la raison, l'intelligence, comme à moi les yeux, les narines et les oreilles ; comme à moi, on lui a mis au cœur un cloaque de colère et de douleur, et sur la face un masque de contentement. »

Revenir en haut Aller en bas
https://www.open-consoles.com/
Pep31
Noob'
Pep31

Messages : 8
Réputation : 4
Inscrit le : 27/06/2020


Console DIY Empty
Msg n°14 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 21:24

J'ai depuis pris le temps de me présenter dans la section dédiée.

C'est la première fois que je prend la peine de poster mais je consulte le forum depuis quelque temps déjà. Après avoir glaner divers tuyaux et conseils, il me paraissait intéressant d'à mon tour faire profiter les autres de mes bricolages.
Revenir en haut Aller en bas
Arrk
Ultimate Retrogamer
Arrk

Messages : 2682
Réputation : 101
Inscrit le : 28/01/2012


Console DIY Empty
Msg n°15 MessageSujet: Re: Console DIY Console DIY Icon_minitimeDim 05 Juil 2020, 22:53

Ton travail est réellement très impressionnant! bravo et bienvenue! :merci:
Revenir en haut Aller en bas
ClementNerma
Master Chief
ClementNerma

Messages : 551
Réputation : 36
Age : 20
Inscrit le : 10/09/2015

Machine préférée Switch Lite

Localisation : Quelque part dans le monde

Humeur : :D


Console DIY Empty
Msg n°16 MessageSujet: Re: Console DIY Console DIY Icon_minitimeLun 06 Juil 2020, 00:59

Wow superbe :top:

Et bienvenue sur le forum happy
Revenir en haut Aller en bas
https://github.com/ClementNerma
Contenu sponsorisé




Console DIY Empty
Msg n°17 MessageSujet: Re: Console DIY Console DIY Icon_minitime

Revenir en haut Aller en bas
 
Console DIY
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Hors sujet: quelle console de jeu possédez vous?
» Console d'annihilation
» Console de commandement.
» console de commandement v7
» test applet

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Communauté Francophone Consoles Open Source et Android - Caanoo GPH / Open Pandora / GCW-Zero :: AUTRES CONSOLES :: Forum du Raspberry Pi & Autres Dev-Board-