Sega Game Gear RecalBox/

Présentation
Le but de ce projet était de recycler une vieille Sega GameGear de 1990 dont la carte mère était HS.
Pour cela, j'ai utilisé un Raspberry Pi Zero W sur lequel j'ai installé l'OS RecalBox. L'avantage de ce modèle de Raspberry est sa petite taille (à peine quelques centimètres de long), ce qui permet de le loger facilement et discrètement dans la GameGear.
RecalBox est un OS dédié au rétrogaming. Il permet de faire fonctionner des émulateurs de consoles de jeux vidéo anciennes (Nintendo GameBoy, Atari Lynx, Sega Master System, Sharp X68000, etc.).
Matériel
Cette console fonctionne avec :
- un Raspberry Pi Zero W: c'est lui le cœur de la bête, le micro-ordinateur
- un écran LCD MPI3508
- un convertisseur ADC ads1015: son rôle est de récupérer des signaux analogiques venant de la console, de les convertir en signaux numériques, et de les transmettre au Raspberry via le protocole I2C (luminosité écran, tension batterie).
- un convertisseur de tension MT3608: son rôle est de convertir la tension de la pile lithium (3V-4.2V) à une tension de 5V nécessaire au fonctionnement du Raspberry
- un BMS (battery management system) TP4056: son rôle est de gérer la charge de la pile au lithium.
- une pile lithium 18650
Technique
Le principe global de cette machine est simple:
L'écran LCD est relié au Raspberry via une prise mini-HDMI.
La pile alimente le Raspberry par l'intermédiaire d'un convertisseur de tension DC/DC.
Un interrupteur permet de couper la liaison entre le convertisseur et le Raspberry.
Un BMS permet de gérer la charge de la batterie qui s'effectue via un connecteur mini-USB.
Le Raspberry reçoit sur ses entrées les signaux des boutons de la console via une simple mise à la masse (la carte mère d'origine a été découpée pour récupérer l'électronique des boutons d'origine).
Le fichier de configuration de Recalbox est adapté afin de prendre en compte les boutons et la résolution de l'écran.
Des scripts supplémentaires sont intégrés à RecalBox pour la prise en charge de la pile, de la luminosité de l'écran et l'extinction sécurisée du système.
Gestion de la tension batterie

La pile au lithium fonctionne dans une plage de tension comprise entre 3.2V et 4.2V. Le choix de 3.2V est volontaire, il permet de garder une marge de sécurité (certains n'hésitent pas à faire descendre les piles sous les 2.5V mais cela diminue la durée de vie de la batterie et pose des problèmes de sécurité).
J'ai donc dû récupérer la tension brute de la pile via le convertisseur ads1015 puis créer un script Python permettant de faire clignoter la LED d'alimentation afin d'avertir l'utilisateur que la pile arrive à sa tension de seuil critique. Si l'utilisateur insiste et que la tension passe sous les 3V, le script déclenche la procédure d'extinction automatique de la console.

Gestion de la luminosité
Dans son état d'origine, la GameGear possède une molette de réglage permettant de faire varier le contraste de l'écran. L'écran MPI3508 quant à lui, possède un bouton poussoir permettant de faire varier la luminosité incrémentalement. Quand le niveau de luminosité maximum est atteint, un appui supplémentaire permet de revenir au niveau minimum.
Là encore, on se sert du convertisseur ads1015 pour récupérer la tension du potentiomètre d'origine, que l'on aura alimenté en 5V au préalable. Cette tension est convertie en signal numérique puis envoyée par protocole I2C au Raspberry. Un script Python, récupère les valeurs, les mappe, puis vient piloter une sortie du Raspberry afin de mettre à la masse le bouton poussoir de l'écran LCD afin d'incrémenter sa luminosité en fonction des variations du potentiomètre.
Extinction de la console
Étant donné que le Raspberry fonctionne comme un micro-ordinateur, il a fallu créer un script, toujours en Python, permettant d'éteindre la console en toute sécurité. Par défaut, il est possible d'éteindre le système en passant par le menu Recalbox, mais cela implique de sortir du jeu, de revenir à l'écran principal, d'ouvrir le menu, etc... Le script automatisant cette procédure se déclenche par l'appui simultané des boutons START + BOUT1 + BAS.

Scripts
Vous pouvez retrouver tous les scripts et fichiers de configuration sur le dépôt GitHub du projet : https://github.com/slan012/GameGear-Zero