# Console portable

# Introduction

Porteur(s) du projet: **Pacôme** (contact : [pacome.delva@upmc.fr](mailto:pacome.delva@upmc.fr "pacome.delva@upmc.fr"))

<div class="level1" id="bkmrk-date-de-d%C3%A9but-%3A-10%2F2">- <div class="li">Date de début : 10/2017</div>
- <div class="li">But : fabriquer une console portable</div>
- <div class="li">PROJET TERMINE</div>

</div>## Machines nécessaires

<div class="level2" id="bkmrk-imprimante-3d-%28up-mi">- <div class="li">Imprimante 3D (UP Mini et Ultimaker) avec PLA</div>
- <div class="li">Fer à souder</div>
- <div class="li">Multimètre</div>

</div>## Matériels nécessaires

<div class="level2" id="bkmrk-raspberry-3-%2B-charge">- <div class="li">Raspberry 3 + chargeur</div>
- <div class="li">Carte mémoire MicroSD 32Go ou 64Go</div>
- <div class="li">Écran Composite couleur 3,5 pouces</div>
- <div class="li">Batterie LiPo 3.7v</div>
- <div class="li">Adafruit PowerBoost 1000 Charger</div>
- <div class="li">15 Boutons 6 mm</div>
- <div class="li">Gros interrupteur</div>
- <div class="li">Ampli Mono PM8403</div>
- <div class="li">Enceinte 0,5 W 8 Ohm 23 mm</div>

</div>

# Construction



# Impression du boîtier

Fichiers STL: [http://www.thingiverse.com/thing:1779343](http://www.thingiverse.com/thing:1779343 "http://www.thingiverse.com/thing:1779343"). Les fichiers STL ne sont pas utilisables tel quels. Il faut les ouvrir et les sauver par exemple avec tinkercad [http://www.tinkercad.com](http://www.tinkercad.com/ "http://www.tinkercad.com").

[front.stl](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?media=wiki:projets:front.stl "wiki:projets:front.stl (1.1 MB)") [back.stl](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?media=wiki:projets:back.stl "wiki:projets:back.stl (610.8 KB)") [buttons.stl](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?media=wiki:projets:buttons.stl "wiki:projets:buttons.stl (353.4 KB)") [buttons2.stl](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?media=wiki:projets:buttons2.stl "wiki:projets:buttons2.stl (410.2 KB)") [buttons3.stl](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?media=wiki:projets:buttons3.stl "wiki:projets:buttons3.stl (126.7 KB)") [extra\_parts.stl](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?media=wiki:projets:extra_parts.stl "wiki:projets:extra_parts.stl (24.8 KB)")

Les petits objets ont été imprimés avec l'imprimante UP Mini. Le boitier est tros gros pour la UP Mini et a été fait avec l'Ultimaker.

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=600&tok=c0cbd4&media=wiki:projets:piboy:dsc05564.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:dsc05564.jpg "wiki:projets:piboy:dsc05564.jpg")

# Batterie

Pour alimenter le Pi3 de façon autonome il faut une batterie LiPo, un chargeur de batterie et un convertisseur de tension. Par exemple:

<div class="level3" id="bkmrk-lithium-ion-polymer-"><div class="level3">- <div class="li">Lithium Ion Polymer Battery - 3.7v 2500mAh - 51 x 65 x 8mm</div>
- <div class="li">Mini USB TP4056 1A Lithium Battery Energy Buckle</div>
- <div class="li">MT3608 2A DC-DC Voltage Step Up Regulator Boost Converter</div>

</div></div>ATTENTION: les batteries LiPo sont dangereuses si on ne fait pas attention. Il faut absolument les acheter avec un circuit de protection intégré, ce qui les empêche d'atteindre des tensions trop basses (&lt;3V) ou trop hautes (&gt;4.2V). Pour plus d'infos voir [http://www.majordome-video.com/guides/le-guide-ultime-de-la-batterie-lipo/](http://www.majordome-video.com/guides/le-guide-ultime-de-la-batterie-lipo/ "http://www.majordome-video.com/guides/le-guide-ultime-de-la-batterie-lipo/")

On assemble d'abord la batterie avec le chargeur TP4056, et on vérifie la tension de la batterie, qui doit être entre 3V et 4.2V. Pour charger la batterie il faut un convertisseur AC/DC avec en sortie DC5V-2A. Prendre un chargeur de qualité, comme par exemple celui du Pi3.

Ensuite on assemble la sortie du TP4056 à l'entrée du convertisseur de tension. En mettant un voltmètre en sortie du convertisseur et en tournant la petite vis on règle la tension de sortie à environ 5V, ce qui permettra d'alimenter le Pi3. Attention il faut utiliser des fils suffisamment gros (eg. 0.5mm^2), sinon le courant ne passera pas assez et le pi3 sera sous-alimenté (la tension chute). Si c'est le cas alors la diode rouge du Pi3 ne s'allume pas, même si le Pi3 fonctionne. On peut vérifier la tension du Pi3 entre les pins 2 et 6 du GPIO; elle doit être entre 4.75V et 5.25V.

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=ef71ef&media=wiki:projets:piboy:dsc05565.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:dsc05565.jpg "wiki:projets:piboy:dsc05565.jpg") [![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=96a72f&media=wiki:projets:piboy:dsc05566.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:dsc05566.jpg "wiki:projets:piboy:dsc05566.jpg")

Finalement, j'ai utilisé le [Powerboost 1000C](https://learn.adafruit.com/adafruit-powerboost-1000c-load-share-usb-charge-boost/overview "https://learn.adafruit.com/adafruit-powerboost-1000c-load-share-usb-charge-boost/overview") de Adafruit. C'est plus cher mais ça inclut à la fois le chargeur et le convertisseur de tension, et des choses supplémentaires comme:

<div class="level3" id="bkmrk-la-possibilit%C3%A9-d%27%C3%A9te"><div class="level3">- <div class="li">La possibilité d'éteindre la console facilement</div>
- <div class="li">un indicateur de batterie déchargée</div>
- <div class="li">La possibilité de brancher au secteur alors que la console est allumée</div>

</div></div>De plus, j'ai utilisé une batterie plus petite car la 2500 mAh ne tenait pas dans la console.

# Système d'exploitation

On utilise un système qui s'appelle retropie. Pour l'installer il suffit de télécharger l'image sur [https://retropie.org.uk/download/](https://retropie.org.uk/download/ "https://retropie.org.uk/download/"), d'insérer la carte MicroSD dans un lecteur et de “flasher” l'image sur la carte, par exemple avec l'excellent programme Etcher [https://etcher.io/](https://etcher.io/ "https://etcher.io/") disponible sur toutes les plateformes.

Attention il ne faut pas acheter n'importe laquelle des cartes microSD, certaines sont plus performantes que d'autres, et certaines ne fonctionnent pas du tout. Pour des benchmarks: [http://www.pidramble.com/wiki/benchmarks/microsd-cards](http://www.pidramble.com/wiki/benchmarks/microsd-cards "http://www.pidramble.com/wiki/benchmarks/microsd-cards")

Une fois la carte flashée, on lance le Pi3 avec un clavier et un écran. Après quelques configs on tombe sur l'écran de l'émulateur. Il peut y avoir un problème d'écran quand on redémarre le système, en particulier avec les vieux écran VGA ou certain écrans HDMI. Pour plus d'infos: [https://github.com/retropie/retropie-setup/wiki/Video-Issues](https://github.com/retropie/retropie-setup/wiki/Video-Issues "https://github.com/retropie/retropie-setup/wiki/Video-Issues")

Ensuite on peut faire quelques configs dans “raspi-config”, expliquée dans: [https://hiob.fr/configurer-retropie/](https://hiob.fr/configurer-retropie/ "https://hiob.fr/configurer-retropie/")

- <div class="li">changer les locales</div>
- <div class="li">changer le clavier en azerty</div>
- <div class="li">configurer le wifi</div>
- <div class="li">mettre le ssh (interfacing option)</div>

Pour se connecter en ssh depuis un autre ordi, noter l'adresse IP accessible depuis le menu de config (show IP), puis: ssh pi@ip\_adress; pass: raspberry

# Ecran

Les possibilités de brancher un écran sont multiples sur le Pi3: voir [http://www.sudomod.com/game-boy-zero-screen-alternatives/](http://www.sudomod.com/game-boy-zero-screen-alternatives/ "http://www.sudomod.com/game-boy-zero-screen-alternatives/")

J'ai choisi un écran composite pour plusieurs raisons:

- <div class="li">c'est pas cher</div>
- <div class="li">la qualité est moyenne ce qui garde un effet rétro</div>
- <div class="li">la prise HDMI reste libre pour pouvoir brancher la console portable sur une télé, un écran ou un projecteur HDMI</div>
- <div class="li">les connecteurs GPIO du Pi3 restent libres pour pouvoir brancher les boutons de la console, ce qui évite d'ajouter un controleur</div>

La plupart des écrans composites fonctionnent en 12V. Il y a donc 2 possibilités:

- <div class="li">modifier l'écran pour le faire fonctionner en 5V comme le Pi3: voir [http://www.sudomod.com/wiki/index.php?title=GBZ\_Screen](http://www.sudomod.com/wiki/index.php?title=GBZ_Screen "http://www.sudomod.com/wiki/index.php?title=GBZ_Screen")</div>
- <div class="li">ajouter un convertisseur de tension en parallèle de celui du Pi3 et le régler sur 12V</div>

J'ai choisi la 2ème option sur le test illustré en dessous sur la photo. Pour prendre le signal vidéo du Pi3 il suffit de mettre une pince crocodile à l'entrée de la prise TRRS comme expliqué ici: [https://www.instructables.com/id/Raspberry-Pi-2-Quick-n-Easy-RCA/](https://www.instructables.com/id/Raspberry-Pi-2-Quick-n-Easy-RCA/ "https://www.instructables.com/id/Raspberry-Pi-2-Quick-n-Easy-RCA/")

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=800&tok=3cf218&media=wiki:projets:piboy:ecran.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:ecran.jpg "wiki:projets:piboy:ecran.jpg")

Pour la suite, il faut souder le cable vidéo sous la prise TRRS comme expliqué dans le [même tuto](https://www.instructables.com/id/Raspberry-Pi-2-Quick-n-Easy-RCA/ "https://www.instructables.com/id/Raspberry-Pi-2-Quick-n-Easy-RCA/"):

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=aa7d27&media=wiki:projets:piboy:rca.jpeg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:rca.jpeg "wiki:projets:piboy:rca.jpeg")

# Boutons

Pour controler les boutons on peut soit utiliser un controleur comme le [teensy](https://www.adafruit.com/product/2756 "https://www.adafruit.com/product/2756"), ou bien contrôler les boutons directement avec les GPIO du Raspberry. La 2eme option permet de gagner de la place. Un utilitaire permet ensuite de programmer facilement Retropie pour configurer les boutons: [Easy way to setup the controller buttons via GPIO](https://www.sudomod.com/forum/viewtopic.php?f=20&t=3390 "https://www.sudomod.com/forum/viewtopic.php?f=20&t=3390")

#### Souder les boutons

Le programme utilise le schéma suivant pour souder les différents boutons aux GPIO:

GPIO04 - 'UP' button  
GPIO07 - 'DOWN' button  
GPIO27 - 'LEFT' button  
GPIO22 - 'RIGHT' button  
GPIO05 - 'A' button  
GPIO06 - 'B' button  
GPIO13 - 'X' button  
GPIO26 - 'Y' button  
GPIO23 - 'ENTER' button  
GPIO12 - 'SELECT' button  
GPIO16 - 'LEFT Shoulder' button  
GPIO20 - 'RIGHT Shoulder' button

GROUND - Connect to any ground pin

Les GPIO sont numérotés ici: [https://pinout.xyz/](https://pinout.xyz/ "https://pinout.xyz/")

Il est possible d'utiliser un schéma différent, il suffit de changer ensuite le fichier retrogame.cfg

J'ai utilisé une plaque de prototypage pour souder les boutons:

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=9e3de5&media=wiki:projets:piboy:boutons_01.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:boutons_01.jpg "wiki:projets:piboy:boutons_01.jpg") [![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=017bdf&media=wiki:projets:piboy:boutons_02.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:boutons_02.jpg "wiki:projets:piboy:boutons_02.jpg")

Bien tester le soudage avec un multimètre, en mettant un connecteur sur le GROUND, et l'autre sur le GPIO correspondant au boutons, et vérifier que la connexion est bonne en appuyant sur le bouton.

# Installation du programme

- <div class="li">[Télécharger le programme](https://www.sudomod.com/forum/download/file.php?id=6328 "https://www.sudomod.com/forum/download/file.php?id=6328")</div>
- <div class="li">dézipper le programme et copier le dossier “Adafruit-Retrogame” dans le dossier “/home/pi” de la distribution Retropie sur la carte SD.</div>
- <div class="li">Changer le retrogame.cfg si le schéma de soudage est différent</div>
- <div class="li">Se connecter avec une console en ssh au Raspberry</div>
- <div class="li">Éditer le fichier “/etc/rc.local” en root avec par exemple la commande “sudo nano /etc/rc.local”</div>
- <div class="li">Puis faire “sudo bash /home/pi/Adafruit-Retrogame/Setup-Retrogame.sh”</div>
- <div class="li">Allumer le Raspberry, qui devrait ensuite rebooter automatiquement</div>

# Son

On peut utiliser un PAM8302 pour mettre un petit haut-parleur 8 Ohms, 0.5W, de qualité très moyenne. Il existe un bon [tuto sur Adafruit](https://learn.adafruit.com/pigrrl-2/pi-audio "https://learn.adafruit.com/pigrrl-2/pi-audio").

- <div class="li">Le pin gauche (bleu) est le négatif, le droit (rouge) le positif, à souder ensuite à l'amplificateur</div>

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=800&tok=a5e675&media=wiki:projets:piboy:son_01.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:son_01.jpg "wiki:projets:piboy:son_01.jpg")

- <div class="li">Puis on soude la sortie de l'ampli au haut-parleur, en respectant la polarité de la photo</div>

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=f7c505&media=wiki:projets:piboy:son_02.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:son_02.jpg "wiki:projets:piboy:son_02.jpg") [![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=998dde&media=wiki:projets:piboy:son_03.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:son_03.jpg "wiki:projets:piboy:son_03.jpg")

Le son obtenu est pas terrible, avec un fort ronflement gênant quand il n'y a pas de son. On peut ne pas mettre de potentiomètre car on peut régler le son facilement dans Retropie (dans les jeux, mais pas dans le menu). Il existe un moyen simple de faire un filtre pour avoir un son meilleur, mais je n'ai pas testé (voir par exemple [ce tuto, step 13](https://www.diy.engineering/how-to/ "https://www.diy.engineering/how-to/")).

# Assemblage

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=800&tok=c80a0c&media=wiki:projets:piboy:piboy_bb.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:piboy_bb.jpg "wiki:projets:piboy:piboy_bb.jpg")

[![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=f2dc9f&media=wiki:projets:piboy:assemblage_01.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:assemblage_01.jpg "wiki:projets:piboy:assemblage_01.jpg") [![](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/fetch.php?w=400&tok=ba571a&media=wiki:projets:piboy:assemblage_02.jpg)](https://wiki.fablab.sorbonne-universite.fr/wiki/lib/exe/detail.php?id=wiki%3Aprojets%3Aconsole_portable&media=wiki:projets:piboy:assemblage_02.jpg "wiki:projets:piboy:assemblage_02.jpg")