Megadrive SwitchVoxDuino


Menu Bricolages


Pourquoi SwitchVoxDuino ?

Tout simplement parce que je voulais m'amuser à modifier une Megadrive 1 (Jap pour l'occasion) en version Multizone et Multifréquence.
Oui en 2020 on peut très bien s'en passer grâce aux cartouches universelles comme l'Everdrive, mais c'est pas marrant ;)
Et puis aussi parce que j'en ai plusieurs en loose, qui attendent depuis quelques années !!!

Après avoir parcouru le net à la recherche des informations concernant le dézonage et le changement de fréquence des Megadrive 1.
Il faut soit passer par un PIC16Fxxx, couper des pistes, souder des fils sur des pattes de composants, remplacer la LED originale par une bicolore, détourner l'usage du bouton reset, etc, etc, et même pour les premières versions installer des interrupteurs à l'arrière de la console (ça pique les yeux).
En étudiant tout ça je me dis que je pourrais simplifier le switch et comme je n'ai pas de PIC16F sous la main je peux très bien utiliser un Arduino c'est aussi un microcontrôleur puisque basé sur un ATMEGA 168/328, ca tombe bien j'en ai en stock, et je sais bien les programmer.

Vous comprenez déjà pourquoi Switch et Duino pour Vox vous comprendrez en lisant la suite ;)

Donc dans un premier temps il faut comprendre comment est géré le zonage et la fréquence :
C'est très simple les cartes-mères de Megadrive 1 (hormis les V4) sont identiques pour toutes les zones, il y a juste une configuration qui est faite en usine selon la destination (JAP, USA, EURO), et donc toutes peuvent afficher du 50Hz ou 60Hz ;)
Et tous ça grace à une seule puce la 315-5433 et seulement 2 pins (pin 71 : fréquence et  pin 72 : langue), ces 2 pins sont reliés la zone des jumpers JP1 à JP4, c'est cette zone qui nous intéresse, ces jumpers sont reliés par paires = JP1 et JP2(Fréquence) ainsi que JP3 et JP4(Langue) selon que Fréquence et Langue soit connecté au 5V ou GND la console est configurée pour une zone ou une autre, donc avec 2 bit on a 4 possibilités mais on peut simplifier à 3 possibilités, parce qu'à mon sens la quatrième serait Japan 50Hz qui n'apporte rien, et je n'en vois pas l'utilité donc je simplifie de la manière résumée dans ce petit tableau que je vous ai préparé :
Combinaisons possibles :

Freq.
Lang.
 JAPAN (60hz)
5V GND
 USA (60hz)
5V 5V
 PAL (50hz) GND 5V
 
La zone des jumpers  :

La synthèse en photo :


De quoi avons-nous besoin pour ce bricolage :


- Megadrive 1 (Japonaise de préférence).
- Arduino nano ou autre type mais à 16Mhz et 5V impératif.
- Bouton momentané.
- 1 résistance 390R.
- quelques fils de différentes couleurs de longueur suffisante pour relier l'Arduino à la zone des jumpers.
Toutes les versions de Megadrive 1 conviennent sauf les cartes-mères de révision V4 qui ne sont pas compatibles (d'après ce que j'ai pu lire sur le net). Je conseille de prendre une Megadrive japonaise car la fente cartouche permet d'insérer tous les types de cartouches (Jap, Euro, US), alors que les versions EURO de Megadrive ont une fente légèrement différente et rendent l'insertion de cartouche japonaise très difficile voir impossible, sauf à limer l'ouverture cartouche de la console.

On commence par ouvrir la console, et on profite pour faire un peu de ménage.
Ensuite il faut dévisser les vis qui maintiennent la carte-mère, sans oublier les vis de la plaque du  dissipateur :
Ainsi que les 2 vis du port cartouche :

Uniquement pour les Megadrive 1 japonaises :

Les cartouches de Megadrive japonaises ont une forme un peu différente et surtout possédent une encoche dans laquelle vient se coincer un loquet activé lors de la mise sous tension de la console.
Ceci pour éviter que les petits Japonais n'insérent ou n'enlévent une cartouche lorsque la console est allumée.
Donc pour pouvoir utiliser toutes les cartouches du monde entier !!! il vous faut enlever ce loquet c'est très simple et n'empèche absolument pas la console de fonctionner, le loquet n'est tenu que par un vis.

On commence par localiser la zone des Jumpers:
En gros plan :
Maintenant il nous fait dessouder le condensateur si il est présent

Ensuite déboucher les trous à la pompe à dessouder : Maintenant il nous faut couper les pistes définissant la configuration d'origine:

Attention il faut impérativement s'assurer que vous ayez bien coupé les 2 pistes, car sinon vous allez griller votre Megadrive, pour cela utilisez un multimètre en position diode (continuité) et vérifiez qu'il n'y ait plus aucun contact entre les pastilles côté JP1-2-3-4 et les pastilles de l'autre côté.

Comme indiqué plus haut, le 5V et GND de la console sont présents sur les pastilles face à JP1-4,on soude 2 fils : rouge pour le +5V et noir pour le GND.
Ou les couleurs qui vous plaisent, après venez pas râler si vous grillez quelque chose ;)
Ensuite on soude 2 fils  de couleur autre que rouge et noir sur JP3 et JP1.
Pour ceux qui suivent ça correspond à quoi ?
Maintenant on prépare le bouton pour switcher de zone:

Tous ça c'est bien beau mais il nous faut choisir comment indiquer dans quelle zone la console est lorsque l'on appuiera sur le bouton.
Deux solutions me viennent à l'exprit :
- utiliser une LED et faire un petit trou dans la coque
- changer la LED power par une bicolore comme cela est fait sur certains tutos mais ça me parait pas très original.
Je reflechis à ce qui serait vraiment très original sans modifier l'esthétique de la console :
Et si une voix nous indiquait la zone de la console à chaque fois que l'on appuie sur le bouton et à chaque démarrage, puisque je compte bien conserver la sélection même la console éteinte (facile à faire avec un Arduino).

Voila vous comprenez maintenant le Vox ;)

Pour réaliser cette fonctionnalité, je commence par faire un test avec un Arduino et un petit speaker, mais le son va être étouffé si le speaker est enfermé dans la console.
La meilleure solution est de sortir le son directement par la sortie son de la console.
Pour cela nous allons commencer par souder un fil sous la carte-mère. avec un fil encore d'une autre couleur, précisément à cet endroit :

Maintenant que nous avons tous nos fils soudés côté console, il nous faut les relier à l'Arduino.

Au préalable pensez à téléverser le programme dans l'Arduino depuis votre PC.

Ensuite suivez le schéma ci-dessous pour relier les fils entre l'Arduino et la console :

Placez l'Arduino à un endroit qui ne gène pas la fermeture de la coque, heureusement il y a de la marge.

Placez le bouton en face du petit trou présent d'origine derrière la console, et fixez-le avec un peu de colle chaude:
Surtout pensez à bien isoler les pins de l'Arduino de la carte-mère pour éviter les courts-circuits.
Pour ça vous pouvez utiliser du scotch d'électricien ou toute autre solution.

Le bouton dépasse juste ce qu'il faut pour pouvoir l'utiliser sans être proéminant.



Résultat final vue arrière de la console, le bouton est très discret, et surtout aucun perçage ni modification esthétique, puisque le trou existe d'origine sur la coque :


Quelques vidéos pour vous rendre compte du résultat :







Conclusion:
C'est un bricolage qui est beaucoup plus simple que ce que l'on pourrait croire, et amusant à faire.

La partie Arduino est enfantine, et encore une fois grâce aux nombreuses librairies existantes ça nous fait gagner pas mal de temps,  notamment pour la partie sonore.

Le code utilise la librairie "PCM" pour jouer les samples à 8Khz ce qui a l'avantage de ne pas demander de trop gros fichiers car la mémoire interne de l'Arduino est limité.

Pour réaliser les samples j'ai utilisé naturalreaders en ligne, le résultat est vraiment pas mal, même si j'ai capturé le son depuis l'entrée micro vers la sortie son avec un cable jack/jack, puis downsamplé en 8Khz.

Je suis assez fier du résultat et l'originalité du projet, et surtout je me suis bien amusé ;)

Les fichiers nécessaires pour programmer l'Arduino sont disponibles sur mon site :
 


Pour d'éventuelles questions vous pouvez consulter le forum  :