Samstag, 5. Januar 2013

5. Der RFID-Karte auf den Zahn gefühlt

Ich habe mir also  die RFID-Karte ID:789 von Adafruit zugelegt. Wie es sich gehört, wird zuerst mal nachgesehen, was denn bei Adafruit dafür verfügbar ist. Mich interessiert zum jetzigen Zeitpunkt nur die Hardware.

In dem Produktblatt sind verschiedene Reiter zu finden, die wir uns der Reihe nach mal ansehen wollen:

Reiter "Beschreibung"
Hier sind wertvolle Beschreibungen und Hinweise zum Aufbau enthalten. Auch wer die SPI-Schnittstelle benutzen möchte, soll sich die Hinweise zu Gemüte führen. Kurz und gut: Pflichtlektüre.

Reiter "Technische Einzelheiten"
Die nackte Größenangabe ist hier definitiv zu mager. Ich hätte grundsätzlich Angaben zum Stromverbrauch bei verschiedenen Zuständen erwartet. Welche Spannungen werden/können verwendet werden? Leider keine Antworten.

Reiter "Tutorials"

  • Sehr gute Zusatzinformationen zum Thema RFID. Hier konnte ich auch tiefergehende Daten zu den RFID-Karten, die ich  einsetzen werde, finden. Ich benutze Mifare S50 - Karten. In dem genannten Dokument gibt es dazu mehr. Wirklich lesenswert!
  • Da ich nicht die Funktion NFC von Handys benutzen werde und ich da nicht 'reingeschaut habe, kann ich hierzu auch nichts schreiben.
  • Die weiteren Informationen sind Datenblätter und Zeitdiagramme. Die Datenblätter können viele Fragen beantworten, wenn es nicht mehr weitergeht. Ich komme auf die Datenblätter nochmal zurück
Reiter "Download"
Hier bin ich auf eine falsche Fährte geführt worden. Da muss man höllisch aufpassen!!

Die Links zu den Libraries funktionieren und leiten uns auf die benötigten I2C-Sketche. Die werde ich zu einem späteren Zeitpunkt ausprobieren.

Das Antennen-Design bezieht sich auf den verwendeten RFID-Chip PN532 von NXP. Der wird auf meinem Board verwendet. Also auch ok.

Das Schaltbild unter Schematics soll später folgen; es gibt aber einen Link, der funktioniert - und der landet auf dem Schaltbild des Breakout-Boards (ID:364)!! Ich habe es nicht sofort gemerkt, und mich gefragt, wie das mit der Spannungsversorgung und den Pegeln auf den Ein und Ausgängen ist. Ein Blick in die Datenblätter sagt mir, dass die max. Spannung 3,6V ist. Aus- und Eingangspegel liegen bei 3.3V. Die Frage, die ich mir stelle: Wie kann ich den Pegel anpassen? Das Tutorail zeigt nämlich das Breakout-Board mit einer zusätzlichen Pegelanpassung. Brauche ich die auch?

Dann habe ich mal im Forum bei Adafruit gesucht und bin auch fündig geworden. In einem Post vom 13.11.2012 fragt jemand nach dem Schaltbild von dem NFC-Shield. In der Antwort gibt es einen Link auf github, Dort gibt es u.a. eine .brd und eine .sch-Datei. Was zum Teufel soll/kann ich mit der Datei machen? Das zu diesem Format gehörende Programm heißt eagle und ist als Download verfügbar. Bei der Installation kann man eine freie Version mit eingeschränkten Möglichkeiten auswählen (eagle-light).

Und dann sehe ich im Schaltbild (*.sch-Datei) , was ich brauche:

Copyright Adafruit
Beide Leitungen, sowohl die SDA als auch die SCL haben je einen Pegelwandler (Levelshifter) verwendet. Die IRQ-Leitung benötigt keinen Pegelwandler, da es ein Ausgang ist und der Arduino-Eingang mit den 3.3V spielend leicht fertig werden sollte.

Auch die Frage nach der Versorgungsspannung wird durch das Schaltbild klar:
Copyright Adafruit
Das Shield hat einen eigenen Festspannungsregler "onboard". Der macht aus 5V die notwendigen 3.3V.

Die Platine hat also alles, was mein Herz begehrt!

Aber wo ist denn was auf der Platine? Dazu schau ich morgen mal auf die *.brd-Datei.





.

Freitag, 4. Januar 2013

4. Die Eingeweide des DuinoSqueeze

In dem Übersichtsschaubild von gestern habe ich die benötigten Baugruppen aufgeführt. Im nachfolgenden Bild sind sie in aller Pracht zu sehen.

Von links nach rechts: Das Ethernet-Shield, der Arduino Uno und die RFID-Karte


Der Arduino Uno
Zu dieser Baugruppe gibt es am wenigsten zu sagen, da hierzu am meisten im Netz zu finden ist. Ich habe mein Uno aus China erworben und er hat mich bis jetzt nicht im Stich gelassen. Ich überlege noch, ob er aus Platzgründen nicht einem Nano weichen soll. Ich würde vorschlagen, dass wir das zu einem späteren Zeitpunkt entscheiden, wenn der DuinoSqueeze läuft.

Das Ethernet-Shield
Ebenfalls ein Board aus China. Die wichtigsten zwei Ethernet-Shields haben entweder den ENC28J60 oder den WIZnet W5100 Chip verbaut. Ich habe mich für die Wiznet-Variante entschieden, da sie einfacher zu handhaben ist. Das Shield wird huckepack auf den Arduino verbaut werden. Ethernet und Arduino arbeiten via SPI-Schnittstelle zusammen.

Das RFID-Shield 
Ich habe nicht vor, den Leser huckepack zu verwenden, sondern etwas abgesetzt von der restlichen Elektronik. Die Gründe liegen alleine in der Optik. Die Elektronik werde ich irgendwo im Schrank verstecken, den Leser nicht. Also ist auf jeden Fall eine Schnittstelle zu benutzen, die solch eine abgesetzte Funktionsweise ermöglicht. Hier habe ich mich für eine I2C-Schnittstelle entschieden. Also benötige ich ein Board/Shield welches diese Schnittstelle bedient. Da hält sich die Auswahl schon in Grenzen. Wenn man/frau dann noch einen Leseabstand von mindestens 5cm benötigt, spielt die Antennengröße schon eine große Rolle.  

So ist meine Entscheidung letztendlich auf das Board von Adafruit (ID:789) gefallen. Das Board ist im Auslieferungszustand bereits für die I2C-Schnittstelle vorbereitet.

Verwendung der Arduino-Ports
Damit es nicht zu Kollisionen auf den Ports kommt, sollte man/frau die Verwendung sorgfältig planen.

Die SPI-Schnittstelle belegt von Hause aus folgende Pins:

MOSI (MasterOut/SlaveIn)                Pin D11 (nicht veränderbar)
MISO (MasterIn/SlaveOut)                Pin D12 (nicht veränderbar)

SCK (Slaveclock)                              Pin D13 (nicht veränderbar)
SS/CS (Slaveselect bzw. ChipSelect) Pin Dx (veränderbar)

Die I2C-Schnittstelle des Readers besteht aus:
SDA (Serial Data)
SCL (serial Clock)

Zusätzlich müssen wir den IRQ (Interrupt) noch unterbringen. Er gehört nicht zur I2C-Schnittstelle.

Die nachfolgende Tabelle zeigt die beabsichtigte Pinbelegung:

Dx = Digitale Ein/Ausgänge,  Ax = Analoge Ein/Ausgänge

Wer sich für SPI und I2C tiefergehend interessiert, dem sei diese Seminararbeit empfohlen..

Alle Geräte am I2C-Bus benötigen eine eindeutige Adresse, mit der sie am Bus identifiziert und angesprochen werden können. Wichtig wäre zu wissen, welche Adresse der RFID-Reader hat. Das machen wir aber später. Dafür gibt es sogenannte Sniffer (Schnüffler).

Das nächste Mal schauen wir uns das RFID Board und das Innenleben mal genauer an. Jetzt könnte man/frau sagen "unwichtig", aber ganz so unwichtig ist das doch nicht. 

Donnerstag, 3. Januar 2013

3. Die RadioCard spielt die Musik

Ich möchte heute die beabsichtigte Funktionsweise anhand des nachfolgenden Schaubildes erläutern:

Übersichtsschaubild des Heimnetzwerkes für DuinoSqueeze

Dazu werde ich die Abfolge der Arbeitsweise an einer RadioCard darstellen. Die RadioCard hat die UID incl Prüfziffer (PZ), mit der wir es schon einmal zu tun hatten:

254 72 152 209 255

Dahinter wird sich der Internetsender MemoryhitsFM  verbergen. Also auf geht's
  1. Der RFID-Leser erkennt die Karte und sendet die UID als Zeichenfolge 25472152209255 an den Arduino.
  2. Der Arduino speichert die UID und PZ als Variable intern ab.
  3. Der Arduino wandelt die Zeichenfolge 25472152209255 in 254-72-152-209-255 um. Diese Zeichenfolge wird unsere gewünschte Playlistnummer (PL-Nr.)!
  4. Der Arduino hat nun eine PL-Nr., die er via Ethernet-Shield an den Musikserver Logitech Media Server (früher:SqueezeCenter) übermittelt. Wo ist denn auf dem Schaubild der Logitech Media Server? Der Logitech Media Server "wohnt" bei mir im Heimnetz auf dem NAS Synology 409+. Wer den Begriff Logitech MediaServer googlet, findet mit Sicherheit die kostenfreie Variante für Windows oder Linux.
  5. Der Logitech Media Server (ab jetzt nur noch LMS) steuert die Kommunikation mit den angeschlossenen Mediaplayern. Im Schaubild sind das die Squeezebox Touch und Squeezbox Classic (SB3).
  6. Der LMS prüft, ob es eine Playliste mit der Bezeichnung 254-72-152-209-255.m3u in der Datenbank gibt. Findet der LMS die passende Playlist, sendet sie den Datenstrom an einen oder mehrere Player.
So einfach ist die Funktionsweise einer RadioCard. Die Funktion einer CDCard oder PlaylistCard wird vom Prinzip her identisch behandelt. Lediglich die Inhalte der Playlisten sind unterschiedlich. Das wird dann, wenn es benutzt wird, genauer erläutert.

In der Playliste 254-72-152-209-255.m3u steht (nur) folgender Text:

#EXTM3U
#EXTINF:-1, - Memoryhits FM, DE
http://www.surfmusik.de/m3u/memoryhits-fm,13851.m3u


Diese Playliste wird von mir "zu Fuß" erzeugt.

Für jeden anderen Internetsender wird die RadioCard nach dem gleichen Prinzip arbeiten.

Das ist Alles, damit die Musik spielt!!

Zusätzlich gibt es noch eine DeviceCard, mit der bei Bedarf, den oben genannten Datenstrom an eine andere Squeezebox leiten kann.






Mittwoch, 2. Januar 2013

2. Was Dynamo Dresden mit dem Projekt zu tun hat

Dynamo Dresden? Ja! Der Fußballverein. Dieser bestellt jedes Jahr seine Jahres- bzw. Sparkarten bei einem Distributer seines Vertrauen. Das war auch in der Saison 2011/2012 so. Der Distributer hatte die Karten drucken lassen. Aber leider waren alle Karten falsch bedruckt. Jede Menge RFID-Karten, die nun auf einen neuen Einsatz warteten. Durch einen Zufall (man muss auch mal Glück im Leben haben) habe ich nun die erforderliche Anzahl an Karten preiswert erstehen können. Die Karten waren zwar bedruckt, aber technisch in einem einwandfreien Zustand.

Grundsätzlich ein Satz zu den Karten. Diese Karten sind noch keine Jahreskarten!!! Sie werden erst bei Dynamo Dresden zu dem gemacht, was sie werden sollen. Ich habe lediglich die Rohlinge! Sie werden bei Dynamo Dresden  personalisiert und bekommen dort Daten, auf die (zu Recht) kein Unautorisierter Zugriff hat.

Die Karten haben einen Speicherplatz von 1KByte. Zwei verschiedene Passwörter können den Inhalt absichern. Ohne diese Schlüssel hat man keinen Zugriff auf die Inhalte. Bei einer "jungfräulichen" Karte ist das anders. Sie werden mit einem sogenannten Transportcode ausgerüstet, der allgemein bekannt ist und "FF FF FF FF FF FF" lautet. Der kann bei Bedarf mit einem eigenen Passwort überschrieben werden. Meine Anwendung muss keinen besonderen Sicherheitsanforderungen genügen, deshalb werde ich die Karten ausschließlich mit dem Transportcode verwenden.

Zusätzlich zu den beiden möglichen Passwörtern besitzt jede Karte seine eigene "Kennung", die UID-Number (UID =Unique IDentification). Diese besteht aus vier Bytes und einem Prüfbyte. Da sie auf der Karte binär abgespeichert ist, ist sie in der vorliegenden Form nicht vernünftig zu benutzen. Also entweder in HEX-Zahlen oder als Dezimalwerte. Ich habe mich für die Dezimal-Variante entschieden. Also habe ich 4 Zahlenwerte im Zahlenraum von 0-255. Zu den vier Zahlenwerten wird sich noch die Prüfziffer gesellen, die ebenfalls ausgelesen werden soll. Hier nun ein Beispiel der UID einer RFID-Karte: 254 72 152 209 255 .

Solche Ziffernfolgen werden uns also in Zukunft wiederholt begegnen.

Dienstag, 1. Januar 2013

1. Heute soll es losgehen oder der WAF

Heute habe ich mich entschlossen, aus meinem Projekt ein Blog zu erstellen. Ob es funktioniert weiß ich noch nicht. Die ersten Tage sind Versuchsobjekt. Sie dienen auch dazu die Einstellungen des Blogs zu testen.

Jeder Leser fragt sich zu Recht: Warum der zig-Millionste Blog. Der Blog ist nicht für mich, sondern für alle da draußen, denen es ebenso geht wie mir. Ich habe (bzw. hatte) in meinem Projekt mit vielen Unklarheiten zu kämpfen, vor denen ich den/die interessierten Leser bewahren möchte.

Worum geht es in diesem Blog?

Projekte entstehen immer dann wenn man/frau der Meinung ist irgendetwas könnte einfacher oder schöner werden. Als Musikfreund habe ich überall in meiner Wohnung Mediaplayer der Sorte Squeeze.* verteilt. Das sind zwei Squeezebox 3 classic eine Squeezebox Touchzwei Squeezplay auf Rechnern mit den Betriebssystemen Windows und OSX. Den Abschluss bilden ein iPhone und ein iPod mit dem Controller/Player iPeng.

Das ist für mich, der die ganze Mimik aufgebaut hat, einfach zu bedienen. Nur die Frau des Hause will nicht bedienen, sondern hören -  und das möglichst einfach. Das ist zugegebenermaßen nicht der Fall, und so werden die wunderbaren Geräte einfach von meiner Frau sehr argwöhnisch betrachtet.

Kurz gesagt: Der WAF ist, auf der nach oben hin offenen Beliebtheitsskala, auf Teppichbodenniveau (also ganz unten). Der WAF ist der Womens-Acceptance-Factor oder auf gut Deutsch der Akzeptanz-Faktor bei Frauen. Offensichtlich scheint er umgekehrt proportional zur männlichen Begeisterung bei technischen Neuerungen zu sein.

Doch zurück zum Thema.

Ausgehend von diesem Youtube Video https://www.youtube.com/watch?v=m-0Zj8fJz8U  bei dem die Dokumentation nicht wirklich zu finden war, habe ich mir vorgenommen nicht nur alle meine CD's so abspielen zu können, sondern auch für Internet-Radiostationen eine eigene berührungslose Steuerung zu entwickeln. Die Basis des Ganzen sind kleine RFID-Transponder in Kartenform deren Information gelesen wird und die, ausgehend von der gefundenen Information, bestimmte Aktivitäten durchführt.

Anforderungen an die RFID-Steuerung:

Abspielen aller CD's via CDCards
Abspielen von Playlisten durch PlaylistCards
Zielauswahl des Streamings durch Einsatz sog. DeviceCards
Direkte Anwahl von Internet-Radiostationen durch RadioCards


... und das nächste Mal wird die Funktionsweise dargestellt und erläutert, was Dynamo Dresden mit meinem Projekt zu tun hat.

                                                              weiterlesen =>