Warning: Constant WP_PLUGIN_URL already defined in /home/.sites/338/site1783/web/blog/wp-content/plugins/ios-icons-for-wordpress/ios-icons.php on line 31 hardware | blog.nitsch.me

Die Forderungs-Pyramide – Teil 2

techik : hardware : techik : microcontroller
Donnerstag, 27. Juni 2013

Wie versprochen hier der zweite Teil über das Forderungs-Pyramiden Projekt. Diesmal möchte ich etwas näher auf die Hardware eingehen, aus der das Eingabepanel für die Steuerung des Rapsberry Pi besteht.
Den Kern bildet ein Arduino Micro, ein Mikrocontroller Board basierend auf Atmels ATMega32U4.
Es bietet 20 I/O Pins, 32kByte Speicher und 2,5 kByte SRAM, 1 KByte EEPROM, sowie einen Micro-USB-Anschluss, der eine direkte serielle Kommunikation mit einem verbundenen Computer ermöglicht.
Die Stromversorgung kann entweder über den Micro-USB-Anschluss erfolgen oder über ein externes Netzteil. In diesem Fall wähle ich die Versorgung via USB durch den Raspberry Pi, an dem das Micro-Board angeschlossen wird, und der das Board mit 5 V versorgt. Sehr praktisch ist in diesem Zusammenhang auch der 3.3 V Ausgang des Arduino Micro, bereitgestellt über einen internen Spannungsregler des Boards. Er ermöglicht mir ohne Verwendung weiterer Komponenten (Spannungsregler) den Anschluss des RFID Breakout Boards, welches mit 3.3 V versorgt werden möchte. Einzig ein Levelshifter (Pegelwandler) wird notwendig. Dazu aber mehr in Teil 3.

Die Interaktion mit dem Panel erfolgt über ein numerisches 3×4 Keypad. Diese werden als Matrix Keypads ausgeführt. Das hat den Vorteil, dass man nur Zeilen und Spalten Pins benötigt, anstelle für jede Taste einen Pin. Man benötigt also nur 7 Pins für das Matrix Keypad, im Gegensatz zu 12 Pins, wenn jede Taste gesondert verdrahten wäre.
Wenn man kein Datenblatt zu dem Keypad hat, ist ein wenig Herumprobieren notwendig. Mit dem Durchgangsprüfer des Multimeters testet man die verschiedenen Kontaktkombinationen durch, während man die Tasten drückt und notiert sich, welche Taste welche Kontakte verbunden hat. Dadurch erhält man Aufschluss darüber, welche Kontakte für die Reihen und Spalten zuständig sind.

Schema eines Matrix Keypad sowie ein rudimentärer Arduino Sketch um gedrückte Tasten via Serial auszugeben

Schema eines Matrix Keypad sowie ein rudimentärer Arduino Sketch um gedrückte Tasten via Serial auszugeben

Zu Beginn werden alle Pins, die an den Zeilen hängen, als Eingang mit Pullup Widerstand konfiguriert. Dies sorgt dafür, dass die Eingänge einen definierten Zustand haben. Es liegen +5V an und beim Auslesen würde man HIGH zurück bekommen. Die Pins für die Spalten werden zunächst ebenfalls als Eingang mit Pullup definiert. Nun wird in Reihenfolge jeweils ein  Spalten-Pin kurz als Ausgang und auf LOW geschaltet und überprüft, ob einer der Zeilen-Pins beim Auslesen LOW zurück gibt. Aus der Information welche Spalte man gerade als Ausgang auf LOW gesetzt hat und der Zeile des Eingangs-Pins, der LOW zurück liefert, weiß man, welche der 12 Tasten gerade gedrückt ist.
Natürlich müsste man sich auch noch um das Entprellen der Tasten kümmern, eine kleine State Machine (Endlicher Automat) bauen um besser mit den wechselnden Zuständen der Tasten zurecht zu kommen, etc…
Wenn man so eine Abfrage von Matrix Keypads noch nie gebaut hat ist das sicherlich eine interessante Erfahrung und ein Spaß, aber Gott sei Dank gibt es im Arduino Playground eine Library die all diese Dinge bereits erledigt.

In Teil 3 geht es dann um das LCD Display und das RFID Break Out Board.

 

 

 

Warning: Attempt to read property "comment_content" on null in /home/.sites/338/site1783/web/blog/wp-includes/comment-template.php on line 1024
Kommentare deaktiviert für Die Forderungs-Pyramide – Teil 2

Die Forderungs-Pyramide – Teil 1

darts : techik : hardware : techik : microcontroller
Dienstag, 25. Juni 2013

Nach längerer Abstinenz bedingt durch einigen Freizeitstress (Go-Live der Seite des Österreichischen Darts Verband, Nova Rock, Geburtstagsfeiern und Feste, etc…) hier nun wieder ein etwas längerer Eintrag über ein Thema, das mir in den letzten Wochen untergekommen ist.
Es geht um die elektronische Unterstützung einer Forderungs-Pyramide für den Darts Verein An Sporran, basierend auf einem Raspberry Pi und einem Eingabepanel mit Tastenfeld und RFID Reader, das über ein Arduino Micro gesteuert wird. Im ersten Teil möchte ich ein wenig über die Hintergründe und Überlegungen schreiben, die zum aktuellen Aufbau und der Komponentenauswahl geführt haben.

Prolog

Forderungs-PyramideIn dem Darts Verein in dem ich Mitglied bin und regelmäßig Zeit verbringe, gibt es eine Forderungs-Pyramide, die aufgrund des bisherigen Regelwerks und mangelndem Interesse der Mitglieder leider seit langer Zeit nicht mehr “bespielt” wurde.
Das Regelwerk sah vor, dass man jemanden über sich fordern kann, diese Forderung kann, muss aber nicht angenommen werden und wenn man das Spiel gewonnen hat, wurde einfach Platz getauscht. Dabei kam es nur zu punktuellen Veränderungen in der Reihung der Mitglieder und es war überhaupt keine Bewegung im Ranking vorhanden.
Nun hat sich der Vorstand dazu entschlossen das Regelwerk der Pyramide zu überarbeiten und hat dazu – Wer errät es? Genau! – eine Arbeitsgruppe bestehend aus 4 Vereinsmitglieder nominiert diese Aufgabe zu übernehmen. ;)
Da ich nun zu den eher Langsameren gehöre, die sich zu spät ducken wenn Arbeit verteilt wird, hatte ich das Vergnügen dieser Arbeitsgruppe anzugehören.
Das Regelwerk wurde radikal überarbeitet und soll für deutlich mehr Bewegung in der Pyramide sorgen. Bei gewonnen Forderungen wird nicht mehr einfach nur Platz getauscht, nein, man reiht sich, so wie es eigentlich gehört, vor dem geforderten Spieler ein und alle nachfolgenden Spieler rücken um einen Platz hinunter. Auch sollen inaktive Spieler nach einem Zeitraum von zwei Monaten automatisch hinter allen aktiven Spielern angereiht werden, etc…
Ein relativ aufwendiges Regelwerk wenn es darum geht die Foto-Steine, die die Spieler auf der Pyramide repräsentieren, umzuhängen. Relativ schnell kam mir die Idee, den Prozess elektronisch zu unterstützen. Nur dies hat so seine Tücken, sollte das System doch robust sein und auch von weniger technikaffinen Spielern benutzt werden können.

 

Versuch und Irrtum

Am Anfang stand die Idee einen Raspberry Pi einzusetzen, diesen mit einem entsprechend großen Bildschirm versehen und in geschützter Lage gut einsehbar zu positionieren. Unser Klublokal ist ein Pub, das auch von Nichtmitgliedern frequentiert wird, daher sollte es unmöglich gemacht werden das System ohne entsprechende Berechtigung zu bedienen.
Am besten sollte die Bedienung berührungslos geschehen, als mögliche Eingabeinstrumente kamen mir SMS oder eMail in den Sinn. Auch eine Smartphone App wäre eine Möglichkeit, nur müsste man hier sowohl Android als auch iOS unterstützen. Besitzer herkömmlicher Telefone hätten aber immernoch ein Problem.

Dieser erste gedankliche Entwurf gefiel mir nach längerer Überlegung immer weniger, wie sollen Bedien-Fehler via SMS verhindert werden, der Aufwand zur Administration der Telefonnummern welche Befehle an das System senden dürfen, etc…

Als nächstes kam mir der Gedanke einfach die Spielerfotos auf der bestehenden Pyramide (siehe Foto oben) durch touch-empfindliche LCD-Displays in der selben Größe zu ersetzten, welche die Bilder der Spieler auf den entsprechenden Positionen darstellen. Man tippt auf sein eigenes Foto, tippt auf den Gegner und die Forderung ist im System hinterlegt. Dazu bräuchte man dann noch ein numerisches Tastenfeld um das Ergebnis zu erfassen, und wie von Zauberhand würden die Spieler nach erfolgter Forderung entsprechend neu gereiht werden.  Was für eine geniale Idee… bis auf: Die Sicherheit des Systems wäre durch das Schloss vor der Vitrine gegeben, so wie es jetzt schon vorhanden ist. Die bestehende Regelung funktioniert zwar nicht perfekt aber meistens lässt sich der Schlüssel auffinden. Viel schwerer aber wiegen die Kosten. Selbst wenn man die Displays direkt beim Chinesen bestellt, wäre der Betrag doch zu hoch für den Verein. Aber das Konzept bleibt in der Schublade, vielleicht findet sich ja mal ein Sponsor dafür. ;)

Einzig der Einsatz eines Tastenfeldes aus der vorangegangenen Idee erschien brauchbar, es kostet nicht viel, ist halbwegs robust und jeder kann damit umgehen. Man könnte sich mittels eines Pin anmelden um danach einzugeben wen man gerne fordern möchte (Nummer des Gegners im aktuellen Ranking). Allerdings widersprach der Pin einer weiteren Forderung, die ich mir für das System gestellt habe, nämlich einen möglichst geringen administrativen Aufwand. Bei ca. 50 Mitglieder werden so einige regelmäßig ihren Pin vergessen. Keine gute Idee. Auch könnte so ein Pin ausgespäht werden und dann damit Schindluder betrieben werden. Und nein, ich bin nicht übermäßig paranoid.

Und nur den Zugang zum Tastenfeld physisch einzuschränken, indem man es in der Glasvitrine anbringt, in der jetzt die Fotos in Pyramiden-Form hängen, bedeutet wieder, dass der Schlüssel zu der Vitrine zugänglich sein muss, ein Problem dass auch bei dem Konzept mit der LCD-Display Pyramide bestanden hätte.

RFID Karte und Schlüsselanhänger

RFID Karte und Schlüsselanhänger

Die Lösung für das Authentifizierungs-dilemma bot sich im Einsatz von RFID Karten bzw. Schlüsselanhängern. Diese sind relativ günstig zu bekommen, robust, einfach zu handhaben und können jederzeit mitgeführt werden. Einfach die Karte oder den Schlüsselanhänger an das Lesefeld halten und über das Tastenfeld die Forderung oder das Ergebnis einer Forderung eingeben. Einfacher ginge es nur noch mit implantierten RFID Chips. ;)
Die Entscheidung ob Karten oder Schlüsselanhänger benutzt werden muss noch getroffen werden. Karten könnte man bedrucken, Schlüsselanhänger könnten mit dem Vereins Logo versehen werden und wären sicher auch nicht schlecht.

 

Ein brauchbarer Kompromiss

Aus allen vorangegangenen Überlegungen ist ein, so wie ich denke, brauchbarer Kompromiss herausgekommen, der in Sachen Robustheit und Einfachheit den Anforderungen an so ein System im “öffentlichen Raum” gewachsen sein sollte.

Das Herz des Systems bildet ein Raspberry Pi. Dieser kann einfach via HDMI an einen beliebigen Monitor/Fernseher angeschlossen werden und bietet Full HD Auflösung zur Darstellung der Pyramide bzw. Rangliste. Die Software dafür wird in Python entwickelt, für die einfache Funktionalität ist das vollkommen ausreichend. Weiters können neben der Rangliste auch noch Termine und Ankündigungen des Vereins darüber angezeigt werden.

Verbunden wird der Raspberry Pi via WLAN USB Dongle mit dem Internet und ist so in der Lage, die aktuelle Rangliste auch mit der Homepage des Darts Vereins abzugleichen. Ebenso sollen neue Spieler über die Benutzerverwaltung der Homepage erstellt werden und automatisch auf das Ranglistensystem übertragen werden können.

Breadboard Aufbau

Breadboard Aufbau

Das Tastaturfeld und der RFID Reader werden in einem extra Gehäuse zusammen mit einem Arduino Micro und einem einfachen LCD-Display verbaut und mittels USB mit dem Raspberry Pi verbunden. Im Moment existiert nur ein auf einem Breadboard aufgebauter Prototyp der als Entwicklungsplattform herhalten muss.
Wird ein autorisierter RFID Chip erkannt wird das Tastenfeld freigeschaltet und am LCD-Display erscheint ein Menü mit möglichen Aktionen, wie zum Beispiel eine Forderung eingeben oder das Ergebnis der Forderung bekannt machen. Die Eingaben werden an den Raspberry Pi übertragen und dieser aktualisiert die Pyramiden-Rangliste entsprechend.
Nachdem bei einer Forderung auch ein Euro an die Vereinskasse zu entrichten ist, welcher als Guthaben auf das Nenngeld des jährlich stattfindenden großen Turniers der Vereins wieder rückerstattet wird, wäre es eventuell auch eine Überlegung wert, diese Transaktionen ebenfalls über RFID abzuhandeln. Zum Beispiel könnte ich mir beim Kassier 10 € Guthaben auf mein “Vereinskonto” buchen lassen, und davon gleich beim Eingeben der Forderung den notwendigen Euro wieder abziehen lassen. Dies wäre aber erst in einer späteren Phase sinnvoll, wenn sich das Forderungssystem bewährt hat und auch häufig genutzt wird.

Als RFID Reader nutze ich das PN532 NFC/RFID controller breakout board von Adafruit, eine brauchbare, fertige Lösung mit Libraries für Arduino und eingebauter Antenne. Das Board kann über SPI, I2C oder UART angesprochen werden.
Das Tastaturfeld und das 4×20 LCD Display stammen von Conrad, wobei ich das LCD Display eventuell noch gegen eines mit LED Beleuchtung austauschen möchte.

In meinem nächsten Blogeintrag werde ich ein wenig mehr über Aufbau und Ansteuerung der Hardware erzählen.

Warning: Attempt to read property "comment_content" on null in /home/.sites/338/site1783/web/blog/wp-includes/comment-template.php on line 1024

Lets get Kinected

techik : hardware : techik : software
Sonntag, 7. April 2013

Microsoft Kinect

Obwohl ich keine X-Box 360 besitze hat mich die Kinect Bewegungssteuerung seit ihrer Markteinführung Ende 2010 schon immer fasziniert. Mit Spannung habe ich die Berichte über die verschiedenen Forschungsprojekte und Initiativen verfolgt, die zum Ziel haben neue Wege der Interaktion zwischen Mensch und Computer zu realisieren. Dabei geht es weniger darum klassische Anwendungen auf dem PC durch herumfuchteln zu steuern, sondern vielmehr um sehr spezialisierte Anwendungen etwas bei Präsentationen, Displays in Operationssälen, etc…
Nicht weiter verwunderlich ist, dass kurze Zeit nach dem Erscheinen der Kinect bereits ein Treiber für die Anbindung unter Linux verfügbar war.
Die Open Source Projekte Open Kinect und OpenNI treiben die Entwicklung von Open Source Libraries massgeblich voran. Auch ein Hardware Clone der Kinect, das Asus Xtion ist verfügbar, gemeinsam entwickelt mit PrimeSense, die auch das Referenzdesign der Kinect erstellt haben.

Kinect Fusion 3d Scan

Aber die Kinect kann nicht nur zur Erkennung von Personen und deren Bewegung dienen, man kann sie auch als einfachen 3d Scanner benutzen. Eine hervorragende Ergänzung also zu einem 3d Drucker und das letzte Argument für mich mir endlich eine Kinect zuzulegen.

Bisher hatte ich leider wenig Zeit damit herum zu experimentieren, doch das Kinect Toolkit macht nach kurzer Zeit deutlich welches Potential in der Kinect steckt. Mit Kinect Fusion kann man schon recht beeindruckend die Möglichkeiten der Kinect als 3d Scanner austesten. Der Scan kann als stl oder obj File gespeichert und in Meshlab begutachtet und überarbeitet werden.

Eine spannende Sache, ich werde weiter berichten… stay tuned…

Warning: Attempt to read property "comment_content" on null in /home/.sites/338/site1783/web/blog/wp-includes/comment-template.php on line 1024

In den Eingeweiden des Mac mini

techik : hardware
Mittwoch, 13. März 2013

mac-mini-zerlegtEigentlich wollte ich meinem Mac mini ein SSD Laufwerk spendieren, stolperte dann aber über eine neue Technologie von Apple, die seit OSX 10.8 verfügbar ist, nämlich das Fusiondrive. Hierbei wird eine SSD und eine herkömmliche Festplatte zu einem logischen Laufwerk kombiniert. Jedoch fungiert hier die SSD nicht wie bei anderen Laufwerken als Cache, sondern Core Storage, so heißt der Volume Manager in OSX, verteilt die Inhalte so, dass das Betriebssystem und oft benötigte Programme auf der SSD sind. Klar, kann man sich auch selbst drum kümmern, aber typisch für Apple: es wird vorhandene Technologie herangezogen, neu durchgemischt und so aufbereitet, dass sie einfach und ohne tiefere Kenntnisse einsetzbar ist. Ein gelungener Kompromiss zwischen Performance und Kapazität, wie ich finde.

Also, man nehme einen Mac mini, besorge sich ein eine SSD Festplatte, in meinem Fall eine Samsung 840 Pro mit 128 GB, dann braucht man noch ein Anschlusskabel, dass bei OWC Data Doubler heißt, oder bei iFixit Dual Hard Drive Kit genannt wird, nehme die Online Anleitung von iFixit zur Hand, und los geht es. Ach ja, vorher ein Backup zu machen wäre sehr zu empfehlen. Ich hab einfach Time Machine Backups über mein NAS laufen, da kann wenig passieren.

iFixit-Dual-Hard-Drive-KitIch habe mich für das Dual Hard Drive Kit von iFixit entschieden, da gibt es auch einen deutschen Distributor (Mac Speichershop). Das ganze kommt dann auch mit einem netten 26 teiligen Bit Schraubendreher Set, sehr nett, kann man immer brauchen.

Nachdem der Mac mini komplett ausgeweidet wurde kann man die SSD Platte einbauen und dann quasi in umgekehrter Reihenfolge alles zurück bauen.

Wenn man alles richtig gemacht hat und den Power Knopf drückt kommt man dann auch mit cmd-R in den Wiederherstellungsmodus. Das Festplattendienstprogramm war bei mir witzigerweise sehr voreilig und hat aus den beiden Festplatten gleich mal eine logische Volumegruppe gemacht, ich dachte OK, und dann war die Wiederherstellungs Partition weg. Alles kein Problem, es gibt ja die Internetwiederherstellung, mit etwas Langmut hat man nach einiger Zeit wieder ein funktionierendes System.

Zur Sicherheit habe ich, bevor ich die Internetwiederherstellung angestoßen habe die Volumegruppe gelöscht und über das Terminal mit diskutil die Volumegruppe sowie die Partition zu Fuß nocheinmal angelegt.

Wenn OSX läuft fehlt eigentlich nur noch eines, nämlich den Trim Support zu aktivieren. Moderne SSDs haben zwar ihre eigenen Garbage Collection Mechanismen, trotzdem setze ich lieber auf Trim. Doch Apple aktiviert Trim nur bei ihren eigenen “Brandet” SSDs in den Build to Order Geräten.

Dazu fand ich folgende Variante, die unter OSX 10.8.2 bzw. OSX 10.8.3 funktioniert. Dazu öffnet man das Terminal und gibt folgende 3 Befehlszeilen ein:

sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original

sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x54)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

sudo touch /System/Library/Extensions/

Danach rebooten und die Einstellung in der Systemübersicht kontrollieren. Fertig ist der Mac mini mit Eigenbau Fusion Drive, lt. Diskspeed Test mit Schreibwerten von 365MB/s und Lesewerten von 480MB/s …

Warning: Attempt to read property "comment_content" on null in /home/.sites/338/site1783/web/blog/wp-includes/comment-template.php on line 1024

Frischobst… jetzt ist es doch passiert

techik : hardware : techik : software
Sonntag, 10. März 2013

mac-miniSeit Monaten spiele ich mit dem Gedanken mir einen Mac zu kaufen. iPad und iPhone sind ja schon seit langer Zeit meine täglichen Begleiter, der Plan selbst Apps hierfür zu schreiben ist schon lange vorhanden, also muss so ein OSX Wunderwuzi ins Haus. Dann aber wieder die Zweifel ob ich  Zeit finden werde dafür, billig sind die Apfelgehäuse auch nicht gerade, es war ein ewiges hin und her und ein ständiges Abwägen. Doch jetzt habe ich mich doch dazu durchgerungen und mir einen Mac mini geholt, “da ist nicht viel verhaut” dachte ich mir.

Tja, was soll ich sagen, fauler Apfel oder doch die Verführung vom Baum der Erkenntnis?

Weder noch. Ich muss gestehen dass ich, seit dem ich den Mac habe, meinen PC kaum mehr benutze.
Trotzdem gibt es Dinge die ich wohl weiterhin auf dem PC erledigen werden, einfach weil ich damit flotter und schmerzfreier zurecht komme. Dazu gehören Arbeiten in diversen IDEs (z.B. Atmel Studio 6, Eclipse), und eben jene Programme, für die es unter OSX keine Entsprechung gibt. Über die XCode IDE von Apple kann ich noch nicht viel berichten, hierzu wird wohl ein eigener Blog Eintrag fällig.

Wirklich gut finde ich die Magic Mouse. Die Gesten Steuerung über die Multi-touch berührungsempfindliche Oberfläche ist intuitiv und wirklich praktisch. Dafür geht mir die Apple Tastatur ein wenig auf den Nerv. Ist immer ein wenig ein Ratespiel wo sich den welches Sonderzeichen befindet. Keine Ahnung ob dies bei der englischen Tastatur auch der Fall ist, die deutsche Tastatur ist meiner Meinung nach zum Entwickeln, wo man schon mal einen Backslash zum Escapen braucht, echter Mist. Hier gibt es sicherlich Abhilfe, ich habe mich allerdings noch nicht damit beschäftigt.

Das Nächst wird sein, dass ich meiner Neugier freien Lauf lasse, den Mac mini zerlege und ihm eine SSD Festplatte spendiere. Wobei ich sagen muss, dass das System schon mit der herkömmlichen Festplatte wirklich flüssig läuft.

Warning: Attempt to read property "comment_content" on null in /home/.sites/338/site1783/web/blog/wp-includes/comment-template.php on line 1024