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 Arduino | 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

Was lange währt wird endlich Drucker…

techik : microcontroller : techik : reprap
Dienstag, 2. April 2013

MendelMax mit Gewindestangen in der Z-Achse und Riemen + Schlitten in X- und Y-AchseWie versprochen hier die Fortsetzung über den Baufortschritt des MendelMax.

Letztes Wochenende konnte ich den Drucker noch samt Mechanik zusammenstellen und soweit vorbereiten dass nur noch die optischen Endstops, der Extruder und die restliche Elektronik angebaut werden müssen. Davor musste ich noch etwas Zeit investieren damit der Rahmen tatsächlich sauber rechtwinkelig ist, hier ist Geduld und Genauigkeit gefragt, die Kunststoffteile an den Ecken sind halt eben nur aus Kunstoff.

Unter der Woche fand ich an ein paar Abenden Zeit mich der Elektronik zu widmen. Betrieben wird der MendelMax von einem Arduino Mega 2560 mit einem aufgesetzten RAMPS (RepRap Arduino Mega Pololu Shield).

Links das Arduino Mega, rechts das RAMPS ohne PololuMeine Version des RAMPS ist 1.3, das bedeutet eine überschaubare Menge an Einzelteilen die auf die Platine gelötet werden. Beim RAMPS 1.4 sind lediglich die Widerstände und Kondensatoren als SMD Bauteile ausgeführt, im Gegensatz zur Version 1.3.
Zusätzlich zu dem RAMPS müssen noch die 4 Pololu Stepper Driver Boards zusammengelötet werden, die dann auf dem RAMPS Platz finden. Dies beschränkt sich aber auf ein paar Stiftleisten, hier sollte man nur auf die Ausrichtung achten, damit die Pololus nachher klaglos in die Sockel passen. Selbiges trifft im Übrigen auch auf das RAMPS zu, das nachher sauber in die Sockel des Arduino Mega passen sollte.

Arduino Mega mit RAMPS und PololusDie Logik, sprich das Arduino wird mit 5 Volt versorgt, für die Schrittmotoren, sowie das beheizte Druckbett und den Extruder braucht es etwas mehr. Hier verwende ich ein 400 Watt Computernetzteil. Dieses sollte zumindest in der Lage sein 16 Ampere zu liefern und wird über die Schraubklemmen am RAMPS doppelt angeschlossen.

Als Firmware für das Arduino habe ich jetzt mal Sprinter aufgespielt, möchte mir aber in weiterer Folge Marlin ansehen. Auf dem  Host habe ich Printrun installiert. Damit kann der Drucker über G-Codes gesteuert werden.

Zukunftsvision wäre hier einen Raspberry Pi einzusetzen, der via http gesteuert wird und als Host dient. Beim Recherchieren habe ich da schon einiges im Netz dazu gefunden, allein es fehlt an der Zeit…

Bereit für den ersten DruckAm Osterwochenende stand dann das Konfigurieren der Firmware sowie das Kalibrieren des Druckers an, unterbrochen durch familiäre Verbindlichkeiten, die sich an solchen Feiertagen nunmal ergeben.
Also wurden die Opto-Endstops ausgerichtet, sowie das Druckbett in eine absolut Waagrechte in Relation zum X-Schlitten gebracht, um eine konstante Entfernung der Extruderspitze zum Druckbett auf allen X/Y Koordinaten zu gewährleisten.
Weiters gilt es die notwendigen Motorsteps pro Millimeter zu ermitteln, sowie die genaue Extruder Geschwindigkeit festzustellen, damit genau die richtige Menge Filament durch das Hotend gedrückt wird. Hotend bezeichnet man die beheizte Düse am Ende des Extruders. Diese erwärmt das Filament bis es als zähflüssige Masse durch das nachkommende Material herausgepresst werden kann.
tja... das musste sein ;)Hilfreich bei der Kalibrierung, darum möchte ich es hier nicht vorenthalten, war Triffid Hunter’s Calibration Guide.
Danach ging es ab zu Thingiverse um passende Objekte für die ersten sauberen Druckversuche zu finden.

Es ist noch nicht alles perfekt eingerichtet, aber jetzt sind es nur noch Kleinigkeiten bzw. Parameter die geändert werden müssen. Aber im großen und ganzen bin ich sehr zufrieden mit dem Ergebnis bisher. Es ist schon ein faszinierendes Gefühl auf diese Art Dinge herstellen zu können, einfach so…

Wenn alles richtig sauber läuft werde ich wohl als erstes Ersatzteile für meinen Drucker drucken, bzw. einige Dinge verbessern. Unter anderem möchte ich auf der Y-Achse einen besseren Riemenspanner, sowie die Endstop Halter und Endstop Trigger etwas optimieren. Auch der Idler für die X Achse bedarf einiger Veränderungen. Ich habe festgestellt, dass da doch sehr viel Bewegung drin ist, die besser nicht da sein sollte.

Hier noch ein Video-Zusammenschnitt der ersten halbwegs sauberen Teile.

So, 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

Arduino Pinout Diagramme

techik : microcontroller
Donnerstag, 21. März 2013

Arduino-Pinoutv2_2Geniale Pinout Diagramme zu Arduino Uno und anderen Atmel Chips hat der Forenuser pighixxx (www.pighixxx.com) unter der Creative Commons Lizenz erstellt und im Arduino Forum  gepostet.

Eine klevere Idee ist auch das Diagramm des Arduino Uno im Masstab 1:1 auszudrucken, zu laminieren, und dann das Arduino Uno darauf zu verschrauben, wie er in einem darauf folgenden Foren Post weiter erläutert.

Somit hat man alles im Überblick während dem Basteln, sehr smart.

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