Teardown: Super NES (PAL) Controller SNSP-005

Um das SNES Gamepad an meinen Arduino anzuschließen, habe ich es neulich auseinander genommen. Und ich war verblüfft darüber, wie simpel der Controller aufgebaut ist. OK, man muss auch dazu sagen, dass die Teile ab 1990 hergestellt wurden…

SNES Controller

Die Schokoladenseite des Controllers

Das Gamepad besteht nur aus 12 Knöpfen, 2 Widerständen, 1 Kondensator und einem IC.

Das Gamepad

Das Gamepad ist ein Modell SNSP-005, made in Japan. Auf der Vorderseite befinden sich die Knöpfe A, B X, Y, Start, Select sowie das digitale Steuerkreuz (Up, Down, Left, Right). Außerdem hat der Controller 2 Schultertasten, L und R. Damit unterscheidet sich das SNES Gamepad schon ein ganzes Stück vom NES Gamepad, welches nur 8 Knöpfe hatte (A, B, Start, Select, Up, Down, Right, Left).

Auf der Rückseite befinden sich nur einige Informationen wie die Modellnummer, der Nintendo Schriftzug etc. Außerdem sind hier die 5 Schrauben (Kreuzschlitz, Pihillips-Kopf) zugänglich, durch die sich das Gamepad öffnen lässt.

Auseinandergenommen: Das Design

Sind die Schrauben gelöst und das Hinterteil abgenommen, wird man vom PCB mit dem Rücken begrüßt. Im Gamepad ist ein single-sided PCB (genauer gesagt 3, dazu später mehr), lediglich der Anschluss für das Kabel, was oben durchs Gehäuse kommt und zur Zugentlastung durch 3 Plastikpfosten gefädelt wird, ist auf der Rückseite verbaut.

Read More »

Veröffentlicht in Elektronik & Hardware | Schreibe einen Kommentar

SNESpaduino – Super Nintendo Gamepad für Arduino

Mit der SNESpaduino library ist es möglich, SNES (Super Nintendo Entertainment System) Gamepads (Controller) als Eingabegerät für einen Arduino zu nutzen.

SNES Gamepad an Arduino anschließen

Das Super Nintendo Entertainment System Gamepad kann einfach mit dem Arduino verbunden werden

Die library erfüllt die 3 Aufgaben:

  • Einfaches Interfacing – Es müssen nur 3 Pins für Latch, Clock und Data angegeben werden
  • Button-Status auslesen – Die Funktion liest aus, welche Buttons aktuell gedrückt sind
  • Hilfe beim Parsen – Durch Konstanten können die Werte einfach verarbeitet werden

Neben der einfachen Bedienung lässt sich anhand der library ebenfalls gut nachvollziehen, wie eine Arduino library aufgebaut ist, wie sie entwickelt wird, und vor allem was genau „im Hintergrund“ geschieht. Der gesamte Code ist ausführlich Kommentiert, die einzelnen Commits auf GitHub enthalten dazu noch informative Details.

Download und Installation

Die library kann auf mehrere Wege bezogen werden:

Am besten ist es, die neuste Version von GitHub herunterzuladen. Am einfachsten geschieht dies mit dem Klonen des Repositories (Befehl siehe oben). Wer git nicht installiert hat, kann auch direkt die ZIP-Datei von GitHub herunterladen. Der entpackte Ordner heißt allerdings SNESpaduino-master und muss daher noch umbenannt werden („-master“ muss entfernt werden)!

Wie die library installiert wird, ist in der offiziellen Arduino Library Referenz erklärt. Wurde die library korrekt installiert und ist in der IDE nutzbar, kann als nächstes der Controller angeschlossen werden.

HowTo: SNES Gamepad anschließen

Das SNES Gamepad verfügt über 5 Kontakte: +5V, GND, Latch, Clock, Data. Die Pin-Konfiguration des Steckers, von Links nach Rechts (die 4er Kontaktgruppe links):

Read More »

Veröffentlicht in Arduino | Schreibe einen Kommentar

SSH Absichern: Authentifizierung mit public Key

Die Secure Shell (SSH) ist der Nachfolger von Telnet und wurde ursprünglich entwickelt, mehr Sicherheit gegenüber Telnet zu bieten. Dieses Ziel wurde auch erreicht, denn SSH verschlüsselt die Verbindung komplett.

Das schwächste Glied in der Kette bleibt nun der Login-Screen: Jeder, der einen Benutzernamen samt Passwort für das System kennt, kann sich einloggen. Problematisch wird es, wenn schwache Passwörter verwendet werden, die durch BruteForce-Attacken erraten werden können. Daher empfiehlt es sich, den SSH-Zugang zusätzlich abzusichern:

Anmeldung mit privatem und öffentlichem Schlüssel

Im Gegensatz zu herkömmlichen Passwörtern sind die hier genutzten privaten/öffentlichen Schlüssel um einiges sicherer. Um den Zugang über SSH abzusichern, muss jeder Client, der Zugriff auf ein Konto des Servers haben soll, zunächst ein Schlüsselpaar erzeugen. Wichtig ist, dass der private Schlüssel mit einer Passphrase versehen wird! Das kann bei folgenden Befehlen auch erst beim Aufruf des OpenSSL-Tools geschehen, da der Schlüssel für diesen Schritt eh unverschlüsselt vorliegen muss:

#SSH-Schlüsselpaar generieren, ohne passphrase
ssh-keygen -f id_rsa
cd ~/.ssh

#Privaten Schlüssel mit PKCS8/PBKDF2 schützen
openssl pkcs8 -topk8 -in id_rsa -out id_rsa.pkcs8
rm id_rsa
mv id_rsa.pkcs8 id_rsa

#Dateirechte anpassen
chmod 600 ~/.ssh/id_rsa

Als praktischen Ein-Zeiler zum Kopieren:

ssh-keygen -f id_rsa && cd ~/.ssh && openssl pkcs8 -topk8 -in id_rsa -out id_rsa.pkcs8 && rm id_rsa && mv id_rsa.pkcs8 id_rsa && chmod 600 ~/.ssh/id_rsa

Für jedes Konto auf dem Server existiert eine authorized_keys Datei, im Verzeichnis .ssh des Home-Ordners. Wird der öffentliche Schlüssel eines Clients in dieser Datei hinterlegt, hat er per SSH Zugriff auf das entsprechende Konto. Das sicherste wäre es natürlich, den Schlüssel lokal per USB-Stick zu kopieren. Andernfalls kann man das Programm ssh-copy-id verwenden:

Read More »

Veröffentlicht in Linux | Schreibe einen Kommentar

Facebook: Sozial – Asozial

Aufstehen, Facebook. Auf der Fahrt zur Arbeit oder Schule, während jeder freien Minute, auf dem Klo. Wir alle kennen diese Freunde, die ohne Facebook nicht mehr leben können. Von einer möglichen Sucht einmal abgesehen, wer Facebook selbst im normalen Maße nutzt hat schon einige Probleme.

soziale netzwerke

Soziale Netzwerke hat das Internet genug. Bild: gsn-norderney.de

Facebook ist der Feind. Das mag jeder so sehen wie er will, für mich ist das ein Fakt. Wenn Leute erfahren dass ich keinen Account bei Facebook habe lautet der Schlachtruf „Du hast kein Facebook?!?!!!?“, gefolgt von komischen Blicken.

Diesen Artikel habe ich schon etwas länger auf meiner ToDo-Liste, damit ich solchen Leuten nicht immer wieder erklären muss, warum ich persönlich Facebook für die grausamste Erfindung des 21. Jahrhunderts halte.

Facebook: Die Geschäftsidee

Facebook wird als soziales Netzwerk vermarktet. Alte Freunde wiederfinden, einfacher mit aktuellen Freunden kommunizieren und neue Freunde kennen lernen. Der Mensch braucht Kommunikation und Gemeinschaft zum überleben, wir sind ein soziales Wesen. Es erscheint also auf den ersten Blick ganz logisch, warum soziale Netzwerke das Internet von Heute dominieren.

Doch mit steigender Besucherzahl sammeln sich die Serverkosten, der Programmieraufwand und auch die Daten. Es muss Geld investiert werden, damit die Erreichbarkeit sichergestellt ist, und die Mitglieder bleiben. Im Gegenzug muss aber auch irgendwie Geld wieder eingenommen werden, sonst lohnt sich der ganze Aufwand nicht.

Aber Facebook ist kostenlos. Facebook verkauft keine Produkte oder Dienstleistungen an die Mitglieder. Wie kann Facebook also wirtschaftlich rentabel sein? Zwei Faktoren kommen hier zusammen: Eine riesige Masse an Mitgliedern und deren Daten. Der feuchte Traum eines jeden Werbeagenten. Facebook verkauft keine Dienste an Kunden, Facebook verkauft Kunden an Dienste.

Facebook und die Daten

Das soziale Netzwerk ist ein riesiger Aggregator für Daten. Und genau diese Daten spielen für Marketing-Unternehmen eine große Rolle. Durch das Netzwerk wird ein Profil über jeden Nutzer erstellt: Alter, Geschlecht, Beruf/Einkommen, Wohngegend, Sexuelle Orientierung, Freundeskreis… Read More »

Veröffentlicht in Meta-Level | 3 Antworten

LED-Matrix Programmieren: Lauftext & Bildsequenz animieren

Eine LED-Matrix muss nicht unbedingt durch Schieberegister betrieben werden. Heute sehen wir uns an, wie eine Laufschrift in C programmiert wird. Dazu dient der letzte Artikel als Grundlage: LED-Matix Programmieren: Binäre Darstellung und Multiplexing

Für einen Lauftext empfehle ich ausdrücklich Schieberegister, da diese das Programmieren um einiges einfacher machen. Sind – so wie bei mir – gerade keine Schieberegister auf Vorrat, spricht aber auch nicht viel gegen die direkte Steuerung über Pins (angeschlossen an Transistoren) des Mikrocontrollers, in diesem Fall ein Arduino Mega R3.

LED Matrix Interfacing

Die LED-Matrix ist an einen Arduino Mega angeschlossen. Im Hintergrund sind die Transistoren und Widerstände erkennbar.

Vorbereitung

Zur Wiederholung: Wir betreiben eine 8×8 LED-Matrix per Multiplexing. Ich habe den Bau der Matrix bereits dokumentiert, ebenfalls wie diese Matrix angeschlossen und programmiert wurde. Wir bauen in diesem Tutorial auf der Code-Basis des letzten Tutorials auf, der Code ist auch auf GitHub verfügbar. Hier ist noch einmal der Komplette Code:

Read More »

Veröffentlicht in Arduino | 7 Antworten