#184 – cart reader – I – software

Mann – was für ein Chaos! Hier müsste dringend mal jemand aufräumen!

Also gut, es hilft ja nichts. Die Spielemodule (und gerade deren Kontakte) werden nicht besser, wenn sie einfach so ungeschützt herumliegen. Hm – wenn ich die Module schon in irgendwelche Regale räume, wäre es doch schön die Spiele (samt mühsam erspielter Spielstände) bei der Gelegenheit gleich digital zu sichern, sodass man sie auch mal (z.B. auf dem PC oder dem Raspberry Pi) in einem Emulator zocken kann! 🙂

Klingt einfach, doch wie geht das eigentlich?

Nun, in den Artikeln 77, 80, 88 und 93 haben wir uns ja bereits mit Möglichkeiten beschäftig, wie sich Spielmodule digital auslesen (und im Falle vom Gameboy Cart Flasher sogar wieder beschreiben) lassen. Heute möchte ich einen Schritt weitergehen und ein sehr interessantes Projekt realisieren, welches diese Funktionen für gleich mehrere Konsolen in einem Gerät zusammenfasst. Darf ich vorstellen? Das ist der „Open Source Cart Reader“:

Fun Fact: Das Teil wird häufig auch „sanni’s cart reader“ genannt, da es von einem enthusiastischen Bastelfreak aus einem Internetforum (mit dem Nicknamen „sanni“) erdacht, bzw. stets erweitert und um neue Funktionen ergänzt wurde.

Das Bild ist natürlich nur ein Beispiel, wie so ein fertig gebauter Reader aussehen könnte. Heute wollen wir versuchen uns einen eigenen Reader zu bauen! So voll DIY-Style und so – schließlich ist es ja ein Open Source Projekt! 🙂

Fun Fact: Es gibt solche Geräte auch fertig zu kaufen, aber die kosten meist 200-300€, was ich persönlich doch arg viel für so ein Retro-Bastelprojekt finde! Ich möchte den Cart Reader unter dem „low budget“ Gedanken bauen, d.h. einerseits günstig und gleichzeitig mit so wenig gekauften Teilen wie möglich. Vielleicht lassen sich ja sogar ein paar alte Teile aus der Elektroschrott-Kiste recyceln? 😉

Leichter gesagt als getan, denn es gibt für das Projekt leider keine fertigen Bausätze, sondern nur eine ellenlange Teileliste, auf welcher teils mehrere nur schwer aus China zu bekommende Teile aufgelistet sind. Das klingt nicht gerade motivierend! 😀

Ok, nicht entmutigen lassen – machen wir zuerst mal eine Bestandsaufnahme:

Immerhin – ein paar Teile haben wir schon aber um ehrlich zu sein fehlt das meiste noch. Gerade bei den elektronischen Bauteilen fehlt eigentlich noch alles. Um nicht ganz bei „Null“ beginnen zu müssen, habe ich von einem netten Kollegen aus einem Videospielforum im Tausch gegen ein Videospiel bereits ein Paket mit einem Großteil der benötigten Teile ergattern können. Als wichtigstes Teil des gesamten Projekts ist auch die Hauptplatine mit dabei – sehr geil! 🙂

Fun Fact: Natürlich könnte man sich die Hauptplatine auch selbst herstellen lassen. Tatsächlich ist das gar nicht mal so teuer, aber ich bin trotzdem froh, dass ich mir diesen Schritt ersparen kann! 😀

Neben der Hauptplatine dient ein Arduino Mega 2560 als technische Basis für das Projekt. Diesen (ein etwas älteres Modell) habe ich gebraucht für ein paar Euro auf eBay erstanden. Ein passendes USB-Kabel samt Netzteil hatte ich noch herumliegen.

Na, so sieht die Excel-Datei doch schon wesentlich freundlicher aus! 🙂 Alle optionalen, nicht zwingend benötigten Komponenten habe ich ausgeblendet. Im Endeffekt verliert man dadurch nicht viele Funktionen, doch mehr dazu später! 😉

Ich befürchte die restlichen fehlenden Teile bekomme ich nicht so schnell, denn die werde ich dann tatsächlich in Fernost ordern müssen. Sehr schade, denn so zieht sich das Projekt wieder mehrere Wochen hin. Tja, da kann man wohl nichts machen. Was wir allerdings während der Wartezeit schon machen können (bevor es an die Hardware geht) ist uns um die Firmware des Arduino zu kümmern. Diese muss (analog Artikel 34) mit Hilfe der Arduino IDE auf den Arduino geladen werden. Allerdings gibt es eine eigens für den Cart Reader entwickelte Version der IDE, die man herunterladen muss.

Als erstes müssen wir den Arduino über ein USB-Kabel am PC einstecken…

…und den Treiber (SETUP.EXE) aus dem Verzeichnis „CH341 Drivers“ installieren:

Anschließend sollte ein USB-SERIAL-Eintrag im Gerätemanager auftauchen. Den COM-Port müssen wir uns für später merken:

Um nun die Software auf den Mikrocontroller aufzuspielen, muss die Arduino IDE (arduino.exe) als Administrator gestartet…

…das Sketchbook „Cart_Reader“ geöffnet…

…und – nachdem man überprüft hat ob alle Einstellungen wie Board, Prozessor und Port richtig gesetzt sind –…

…kompiliert und auf den Arduino hochgeladen werden.

Ganz wichtig: Bevor man das Skript hoch lädt, muss man in der „options.h“ die richtige Hardware-Version des Cart Readers (also der Platine) setzen. In meinem Fall ist es Version 3. Ich hatte das natürlich beim ersten Mal vergessen und musste den Schritt zweimal machen! Shit happens! 😀

Fun Fact: Tatsächlich gibt es mittlerweile mehrere Versionen des Projekts. Bei den Teilen, bzw. der Platine handelt es sich um die Vorgängerversion, aber das kann ich gut verschmerzen. In der aktuellen Version gibt es keine großartigen Neuerungen. Lediglich das Design wurde überarbeitet und der Bestückungsprozess etwas einfacher gestaltet. Ebenso gäbe es die Möglichkeit das Teil über eine Batterie zu betreiben, aber auch darauf kann ich verzichten! 😉

Als letzten Schritt muss der Inhalt des Ordners „SD Card“ auf eine Micro-Karte kopiert werden. Diese brauchen wir zwar erst ganz zum Schluss, aber, wenn wir schon dabei sind, sollten wir alle „Software“-Themen in einem Aufwasch erledigen.

Fun Fact: Ich verwende hierfür eine alte 4GB MicroSD-Karte, die sowieso nur im Schrank herumliegt! 🙂

Nachdem das erledigt ist, können wir uns der Hardware und somit auch der Hauptplatine widmen. Ein schönes Teil! Noch schöner wäre es, wenn die zahlreichen Lötstellen bereits bestückt wären! 😛

Es hilft nichts, wir müssen selbst Hand anlegen. Doch was sehen meine Augen da? SMD-Komponenten?! Igitt! Na das kann ja was werden. Dafür brauche ich eine Pinzette und eine Hopfenkaltschale zur Beruhigung der Hände (und Nerven)! 😀

Fun Fact: Ich habe das Bild mit der AAA-Batterie nur gemacht, um euch zu verdeutlichen, wie klein diese SMD-Bausteine sind. Echt irre… 😀

Als erstes wird die Platine mit ein paar 220 Ohm Widerständen bestückt. Definitiv nicht meine beste Arbeit, aber es sollte trotzdem funktionieren – hoffe ich! 😛

Anschließend wird auf der anderen Seite der Platine ein 1 kOhm Widerstand verlötet.

Fun Fact: Dieser Widerstand wird benötigt um dem Cart Reader die Funktion zu geben, N64-Spielstände über das Controller Pak zu lesen.

Ist das geschafft, müssen noch zwei 10 kOhm Widerstände verlötet werden. Diese sind notwendig, damit sich das Gerät später durch zwei Taster bedienen lässt:

Genug Widerstände für heute! 😛 Als nächstes muss ein Spannungsregler (AMS1117) verlötet werden, damit wir das Gerät nicht nur mit 5, sondern alternativ auch mit 3 Volt betreiben können. Abhängig von dem Modul, welches der Cart Reader lesen soll ist das notwendig, da die verschiedenen Spielkonsolen selbst ja auch mit unterschiedlichen Spannungen laufen!

Ist das erledigt, muss noch ein 22uF-Kondensator (um die 3 Volt Spannung für GBA- und N64- Module etwas zu glätten) verlötet werden. Eigentlich sollte man hierfür einen 22uF Tantal-Kondensator verwenden. Da ich keinen zur Hand hatte, habe ich einfach einen Elektrolytkondensator als Ersatz verwendet. Das funktioniert ebenso, allerdings muss der Kondensator dafür etwas „schräg“ angebracht werden, damit er unter den später aufzusetzenden Arduino passt! 🙂

Als letzte Amtshandlung müssen wir noch zwei Jumper in Form von Lötbrücken auf der Platine setzen. Welche das sind hängt davon ab, welches Display verwendet werden soll. Bei einigen Displays liegt nämlich VCC an Pin 1 des Displays an, bei anderen ist es GND! 😀

Nun sollten wir uns nochmal dem Arduino zuwenden. Auf dessen Platine müssen der 5 Volt Spannungsregler sowie ein darüber liegender Transistor entfernt werden. Dieser Schritt ist notwendig, damit die Cart Reader Platine den Arduino später mit 5 oder 3 Volt ansteuern kann.

Abschließend habe ich dann noch zwei Kabel (welche ich von einer – aus einem alten PC ausgebauten – Status-LED-Zuleitung recycelt habe) an den entsprechenden Lötstellen befestigt. Das könnte man auch später machen, aber was erledigt ist, ist erledigt! 😀

Puh – seht es mir nach, dass ich an dieser Stelle einen Break mache. Ich hatte gehofft schon etwas weiter zu sein, aber das Projekt ist – mal wieder (oder sollte ich besser sagen wie immer) – etwas größer als gedacht! 😀 In diesem Sinne – ciao, bis zum nächsten Mal! 😉

Write a comment