Possibilmente intaccando il meno possibile l'estetica originale del Gamecube (cioè niente pannelli ad hoc stampati 3d e nessuna modifica esterna) e utilizzando il più possibile le parti originali (alimentatore e pulsanti).
In parole povere: ho preso un Raspberry Pi, l'ho messo dentro un vecchio Gamecube, ho installato RetroPie e ho iniziato a giocare a giochi vecchi.
Perché era da tanto che volevo una cosa del genere in casa: una console da retrogaming altamente trasportabile. Il Gamecube è esteticamente molto bello e dentro c'è molto spazio, inoltre giaceva inutilizzato da decenni.
Nonstante sia una console nata in un periodo in cui facilmente smontabile = facilmente hackerabile, ho trovato il Gamecube piuttosto facile da aprire (una volta ottenuto il cacciavite adatto) e con l'interno estremamente ben organizzato. La scheda madre era racchiusa in una "gabbia" in metallo che aiutava a dissipare il calore, la ventolona laterale mantiene l'interno molto fresco e il lettore CD è un blocco unico facile da estrarre. Qua una guida di IFixIt in caso qualcuno abbia problemi.
Una volta finito di smontare ho deciso che avrei mantenuto l'alimentatore originale e la ventola. Questo per due motivi:
Per fare il cavetto di alimentazione ho dissaldato il connettore della scheda madre che andava ad agganciarsi all'alimentatore del Gamecube (fallendo miseramente, strappando tutti i pin, dissaldandoli uno ad uno e reinserendoli a mano nel connettore in plastica, ma vabbè funziona) e ho saldato un cavetto miniUSB ai pin corretti (+5V e massa, cioè rispettivamente i pin 22 e 1).
Attenzione usare un cavo corto e spesso. La prima volta ho usato un cavetto e l'ho lasciato molto lungo e il Raspberry Pi andava costantemente in undervolt (cioè mostrava continuamente la saetta gialla in alto a destra). L'ho rifatto tenendo solo 4-5cm di cavo e il problema non si è più ripresentato.
Si ringrazia Simone Tolomei per i consigli in merito
Non sottovalutare l'ingombro dei cavi specialmente se bisogna usare prolunghe e quant'altro. Per quanto mi piacerebbe dire che ho calcolato tutto, ho avuto solo un'esagerata fortuna: le prolunghe che ho ordinato, specialmente quella HDMI, entrano all'interno a malapena e, contemporaneamente, consentono al Raspberry Pi di stare incastrato, fisso nella sua posizione senza muoversi di un millimetro.
Come si vede nella foto qui a destra, ho piegato e annodato le prolunghe per farle entrare (stando attendo a non stressare sulle saldature e le giunture) e poter fare uscire le varie porte dalle opportune aperture della scocca. Il risultato finale è accettabile, ma prima o poi dovrò trovare un modo per rendere esteticamente più apprezzabile la parte frontale: quelle porte USB tutte storte e sporgenti mi fanno venire il mal di testa.
Se non altro, una volta appurato che il Raspberry ed i cavi entravano, ho potuto giocare un po' testare il tutto, alimentazione compresa.
A questo punto la base è completa e, volendo, il progetto sarebbe finito. Ma guardando un po' in rete ho deciso di aggiungere due cose per rendere il tutto un po' più figo: il led di accensione e il pulsante di reboot. Ciò richiede di usare i pin GPIO, area in cui non mi ero mai avventurato ed è proprio il motivo per cui ho deciso di farlo.
Sfruttando uno dei due pin GPIO per l'UART, precisamente il pin 8, e impostando enable_uart=1
in /boot/config.txt
, ho collegato un led che automaticamente si accende quando il Raspberry Pi è acceso e si spegne quando il Raspberry Pi è completamente spento.
Quindi posso premere il tasto di accensione del Gamecube per accendere il tutto, ma devo prima fare un sudo poweroff
in qualche modo (terminale, dal menù di Kodi, dal menù di Emulation Station...) e aspettare che il led si spenga prima di ripremere il tasto di accensione per spegnere.
In futuro spero di rendere questa cosa automatica, ora come ora non saprei da dove partire.
Il led l'ho collegato ai GPIO 8 e 6 (per rispettivamente il + e il - del led) e l'ho "agganciato" alla spia sulla parte superiore con tanta colla a caldo.
Forse ne ho usata troppa? L'importante è che sia stabile e resistente, più di una volta ho alzato troppo il coperchio e si sono staccati i cavi ma il led è rimasto in posizione.
Ho riciclato il pulsante di reset originale, che era saldato sulla scheda frontale che conteneva le porte dei joypad del Gamecube. I motivi sono semplici: è un pulsante a molla, quindi tiene correttamente su in posizione il pulsante di plastica della scocca, e inoltre posso facilmente posizionarlo dov'era in origine grazie a delle guide presenti all'interno.
Tramite qualche guida online sono giunto a questa soluzione: ho collegato il pulsante al +3.3v (pin 1) e al pin 11 e ho scritto uno script in Python che, una volta al secondo, ascolta se il pulsante è premuto e in caso lo sia lancia sudo reboot
. Lo script è lanciato all'avvio del sistema grazie a /etc/rc.local
. Di seguito il codice:
import RPi.GPIO as GPIO
import time
import subprocess
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.IN,pull_up_down=GPIO.PUD_DOWN)
bashCommand = "sudo reboot"
try:
while True:
button_state = GPIO.input(17)
if button_state == True:
print "Exec"
process = subprocess.Popen(bashCommand.split(), stdout=subprocess.PIPE)
output, error = process.communicate()
time.sleep(1)
except:
print "Exit"
Dato che avere solo due gamepad dello SNES, più il pad USB che uso con la Switch, non mi bastava, ho deciso di provare a fare anche due pad arcade a 10 tasti grazie ad un kit trovato su Amazon.
All'interno c'erano due kit ciascuno per un pad a 10 tasti (8 normali e 2 piccoli), con stick, scheda USB e i tanti cavi. Collegare il tutto è stato estremamente semplice, in caso di problemi ci si può aiutare con le immagini nell'inserzione Amazon e con le etichette sulle schede dove collegare i cavi. L'ordine con cui collegare i tasti, nel mio caso, non è importante, e nemmeno il verso dello stick arcade, dovendo comunque configurare tutto su RetroPi (e comunque c'è possibilità di invertire gli assi, in caso, su ogni videogioco e sistema che conosco).
Aiutato con una maschera presa da un pad arcade a 10 tasti trovato su Thingiverse, ho sagomato del legno e fatto delle scatoline per contenere il tutto. Non ironicamente questa è stata la parte più difficile di tutto il progetto, essendo la prima volta che faccio una cosa del genere. Infatti il risultato è abbastanza pessimo ma funzionale. Forse lo sistemerò durante l'estate (mentre scrivo è il 6 Maggio 2019), ma per adesso mi godo un po' il risultato.
Il CubePi è ora pronto per essere riempito di giochi ed essere stressato per bene.