Test

Veröffentlicht in Uncategorized am 1. Oktober 2010 von crackburg

Test

TOUCHATAG HF RFID-Reader/Writer unter Linux einrichten

Veröffentlicht in Debian, Hardware, Linux, Mifare, pcsc, RFID, Touchatag, Ubuntu am 28. Februar 2010 von crackburg

Wie ich im vorherigen Artikel schon angedeutet habe, füllte die mitgelieferte Software des Touchatags  nicht unbedingt meine Bedürfnisse aus. Nicht das sie jetzt schlecht wäre oder mir bedrohliches aufgefallen ist. Ich denke ich bin einfach nicht die Zielgruppe. Man wird halt alt.

Um den Reader unter Linux zu benutzen (ich habe es mit dem Ubuntu 9.10 NR und Debian Lenny versucht) benötigt man PCSC auf dem Rechner. Folgende Pakete sollten installiert werden:

  1. libpcsclite
  2. libpcsclite-dev (das Entwicklungspaket wird nicht unbedingt benötigt. Will man aber nachher noch irgendwas in der Richtung „nachbauen“ schreit eh alles danach)
  3. pcsc-tools
  4. pcscd
  5. libpcsc-perl (pcsc-tools hängt davon ab)
  6. libccid

Nach der Installation der Pakete sollte der Reader zur Verfügung stehen. Wenn die Ausgabe des Befehls pcsc_scan in etwa so aussieht, kann es weiter gehen:

PC/SC device scanner
V 1.4.15 (c) 2001-2009, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.4.102
Scanning present readers…
0: ACS ACR 38U-CCID 00 00

Sun Feb 28 20:59:36 2010
Reader 0: ACS ACR 38U-CCID 00 00
Card state: Card inserted,
ATR: 3B BE 96 00 00 41 03 00 00 00 00 00 00 00 00 00 02 90 00

ATR: 3B BE 96 00 00 41 03 00 00 00 00 00 00 00 00 00 02 90 00
+ TS = 3B –> Direct Convention
+ T0 = BE, Y(1): 1011, K: 14 (historical bytes)
TA(1) = 96 –> Fi=512, Di=32, 16 cycles/ETU
250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
TB(1) = 00 –> VPP is not electrically connected
TD(1) = 00 –> Y(i+1) = 0000, Protocol T = 0
—–
+ Historical bytes: 41 03 00 00 00 00 00 00 00 00 00 02 90 00
Category indicator byte: 41 (proprietary format)

Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
3B BE 96 00 00 41 03 00 00 00 00 00 00 00 00 00 02 90 00
SAM inside the Tikitag reader from Alcatel-Lucent

http://hackerati.com/post/57314994/rfid-on-the-cheap-hacking-tikit

Durch die PCSC-Middleware hat man nun vollständigen Zugriff auf die Lese- und Schreibkapazitäten des Gerätes. Als erstes habe ich tagEventor ausprobiert. Das aber im nächten Artikel.

Der Attraktor hat endlich eigene Räume

Veröffentlicht in Attraktor, CCC, SSDEV am 4. Februar 2010 von crackburg

Endlich ist es soweit…,

nach um und bei zwei Jahren der Raumsuche hat der Attraktor e.V. endlich Räumlichkeiten finden und anmieten können. Lustig daran ist, es sind die selben Räume die als allererstes gefunden worden sind und auch in der engeren Auswahl standen. Leider kam es damals nicht zu einem Mietvertrag. Das ist aber nicht unbedingt so schlimm. Jetzt hat der Attraktor die „Bude“ ja.

Die Räume befinden sich in Hamburg-Winterhude in der City Nord. Stolze 384 m2 stehen für Veranstaltungen und Gruppen zur Verfügung.

Als erste „Mieter“ sind der Attraktor e.V., der Chaos Computer Club Hamburg e.V. und die Sportsfreunde der Sperrtechnik – Deutschland e.V. gerade beim renovieren und einziehen. Es ist also bald damit zu rechnen, dass in die neuen Räume auch leben einzieht.


View Larger Map

Touchatag USB HF RFID Reader

Veröffentlicht in Hardware, Mifare, pcsc, RFID, Touchatag mit den Tags , , am 4. Februar 2010 von crackburg
Das Touchatag Starter Paket (Bild ist Eigentum von Touchatag.com)

Das Touchatag Starter Paket (Bild ist Eigentum von Touchatag.com)

Zu Weihnachten habe ich ein Touchatag Starter Paket geschenkt bekommen. Nun bin ich auch dazu gekommen, ein bischen zu spielen.

Das Paket enthält einen USB HF RFID Reader und 10 touchatag-Tags. Das Lesegerät ist ein ACR122U von der Firma ACS und funkt auf 13,56MHz.  Der Preis für den Reader ist sehr guenstig. Unter seinem echten Namen kostet er locker das dreifache. Die Tags sind Mifare Ultralight Tags zum einmaligen aufkleben (beim abpuhlen gehen sie in der Regel kaputt man kann sie danach aber noch wieder einlaminieren ;) ).

Die von touchatag.com zur Verfügung gestellte Software gibt es für Windows (XP und Vista) und MAC OS X (10.4 oder höher). Für eine Nutzung der Originalsoftware benötigt man eine Verbindung zum Internet und ein gültiges Benutzerkonto bei touchatag.com. Da ich hauptsächlich unter Linux arbeite und es nicht ganz einsehe den Rechner mit dem Leser immer am Internetz zu haben, habe ich die Software nur kurz angesehen.

Angesprochen wird das Lesegerät über PC/SC.

Unter Linux hat man mit dem Gerät viel Spass. Hier die ersten Schritte um es einzurichten.

La Fonera 2.0n Dashboard

Veröffentlicht in FON, Fonera, Hardware, Wireless, WLAN mit den Tags , , , am 24. August 2009 von crackburg

Hier nun ein paar Impressionen des Dashboards von La Fonera 2.0n.

Fonera 2.0n

Veröffentlicht in FON, Hardware, Wireless, WLAN mit den Tags , , , , am 23. August 2009 von crackburg

Ich habe meinen Fonera 2.0n bekommen. Ein wunderschönes Gerät und ie Firmware ist echt ein Traum. Ich kann durch die Kiste einen kompletten Rechner abschalten. Ich schreibe die Tage ausführlich darüber. Hier noch ein Screenshot vom Dashboard.

Dashboard vom FONERA 2.0N

Dashboard vom FONERA 2.0N

Temperatur mit dem Arduino erfassen und auf dem Computer ausgeben Vol. 2

Veröffentlicht in Arduino, Elektronik, Maxim/Dallas, Processing mit den Tags , , , , , , , am 3. August 2009 von crackburg

Der Chip…:

Diesmal kommt anders als im vorherigen Beispiel ein Maxim/Dallas DS18b20 (Datenblatt) zum Einsatz. Vorteil gegenüber dem vorher verwendeten DS1620 ist zum einen, dass dieser Chip nur einen anstatt drei Portpins belegt. Zum anderen kann man mit der OneWire-Technologie von Dallas viel grössere Kabellängen realisieren, was ja für einen externen Sensor an sich wünschenswert ist. Das TO92-Gehäuse macht die Freude fast rund. Lässt es sich doch wunderbar mit Schrumpfschlauch abdichten und verwenden.

Und nun zu den Nachteilen. Da hätten wir als erstes die Auslesegeschwindigkeit. Jedes mal wenn man den Chip ausliest, dauert es ca. eine Sekunde bis er einen Wert zurückliefert. Nachdem ich vorher in meinem Hauptprojekt alle delays entfernt habe, ist so eine Zwangspause natürlich erstmal ärgerlich. Aber da ich ja nicht mit permanent wild schwankenden Temperaturen zu kämpfen habe, werde ich einfach die Temperatur nicht so häufig auslesen.

Mein zweiter Kritikpunkt ist die Codegrösse die entsteht wenn man den DS18b20 mit der Library von Miles Burton verwendet. War vorher mein kompletter Code samt Libs in etwa 6KB gross, so nimmt die Temperaturanfrage und DallasTemperature lib schon diese grösse ein. Was heisst das sich durch verwendung des Ds18b20 mein kompilierter Code auf die doppelte Grösse aufgebläht hat. Das habe ich aber auch pragmatisch gelöst und den Atmega88 durch einen Atmega168 ersetzt.

Die Schaltung…:

Pin 1 am DS18b20 geht auf Masse (GND). Pin 2 geht auf einen Digitaleingang am Arduino (bei mir D5). Ausserdem geht von Pin 2 ein 4,7 Kiloohm Pullup-Widerstand auf +5V (VCC). Pin 3 geht auf +5V(VCC). Beim Betrieb im parasitären Modus, zieht sich der DS18b20 seine Versorgungsspannung über die Datenleitung. Aber in Zeiten von Ebola und Schweinegrippe, muss man ja nicht auch noch die Bauteile zu parasitärem Verhalten ermutern.

Arduino Code:

/*
DallasTemperature.CPP -  Dallas Temperature Control Library 1.0.0 Author: Miles Burton, miles@mnetcs.com
Code basiert auf dem Beispiel von Miles Burton, miles@mnetcs.com
*/

#include <DallasTemperature.h>

DallasTemperature tempSensor;

void setup(void) {
// inputs/outputs initialsieren
// seriellen port starten
Serial.begin(9600);
tempSensor.begin(5); // Die Datenleitung geht in den digitalen Pin 5 am Arduino
}

void loop(void) {

// Bei der Library anfragen ob das Geraet gueltig ist
switch(tempSensor.isValid())
{
case 1:
Serial.println(„Invalid CRC“);
tempSensor.reset(); // Versuch den Chip erneut zu erkennen
return;
case 2:
Serial.println(„Not a valid device“);
tempSensor.reset(); // Versuch den Chip erneut zu erkennen
return;
}

// getTemperature liefert einen float-Wert zurueck. Dies ist immer eine positive Zahl.

Serial.print(„Temp: „);
//Temperatur abfragen und auf der seriellen ausgebendas abfragen der Temperatur braucht ca. 1sek. deswegen der „delay“ an dieser Stelle
Serial.print(tempSensor.getTemperature());
Serial.print(„C“);
Serial.println();
}

Processing Code:

import processing.serial.*;

Serial myPort;  // Die serielle Schnittstelle
PFont fontA;
String tempBuffer = null;
int lf = 10;    // Linefeed in ASCII

String Temperatur = „keine Daten“;

void setup() {

size(200, 200);
background(210);
// Alle verfügbaren seriellen Ports auflisten:
println(Serial.list());

/*Auswahl der seriellen Schnittstelle. die erste ist 0, die zweite ist 1 usw.*/
myPort = new Serial(this, Serial.list()[1], 9600);
/* Die Schrift laden. Schriften muessen im Datenverzeichnis des Sketches vorliegen.
um eine Schrift zu erstellen, verwende den Menuepunkt /Tools/create Font.
fontA = loadFont(„ArialRoundedMTBold-48.vlw“);*/

// Schrift und deren groesse definieren (in Pixeln)
textFont(fontA, 20);
}

void draw() {

while (myPort.available() > 0) { //Warten bis Daten auf der seriellen vorhanden sind
redraw();
String inBuffer = myPort.readStringUntil(lf); //So lange den inhalt der seriellen Schittstelle in den inBuffer lesen bis ein Linefeed kommt

if (inBuffer != null && inBuffer.startsWith(„Temp:“)) //wenn der inBuffer nicht leer ist und mit Temp: beginnt
{
Temperatur = inBuffer; // schreibe den Inhalt von inBuffer nach Temperatur
}

if (inBuffer != null && tempBuffer != inBuffer) {
background(210);
fill(51);
text (Temperatur, 1 , 20);
String tempBuffer = inBuffer;

}
}
}

Relaistreiber 0.2

Veröffentlicht in Arduino, Elektronik mit den Tags , , , , , , am 1. August 2009 von crackburg

Wie bei der vorherigen Version versprochen, habe ich den Relaistreiber überarbeitet. Der schaltende Portpin wird jetzt durch einen Optokoppler vor allem bösen was aus der Relaisspule sickern könnte geschützt. Als Optokoppler soll ein  CNY17 zum Einsatz kommen.

Günstiger Wandler von RS232 auf TTL

Veröffentlicht in Arduino, Maxim/Dallas mit den Tags , , , , am 24. Juli 2009 von crackburg

Wenn man einen Arduino kompatiblen Clone gebaut hat, will man ja nun auch mit ihm sprechen koennen (ohne Kommunikation ist das irgendwie nicht so der burner). Der Handel bietet einem dafuer diverse Programmieradapter an, die zwischen 12 und 15 Euro zu haben sind.
Diese Adapter sind dann meistens mit einem FTDI FT232B ausgestattet und arbeiten alle sehr gut. Sie versorgen die Schaltung in der Regel gleich mit sauberen fuenf Volt und auch das Auto-Reset fuers flashen haut hin. Nur braucht man das alles wirklich auf einem kleinen Mikrokontrollerboard das alle Jubeljahre mal geflashed wird oder via seriell ein paar Daten ausgibt?
Ich war der Meinung das ich das nicht brauche und es ein bischen uebertrieben waere jedes zusammengebastelte Board mit einem eigenen FTDI auszustatten. Ein Einbau eines FT232B kam fuer mich wegen der Bauform (LQFP SMD Gedoens) nicht in Frage. Auch der Preis fuer den blanken Chip ist mit circa vier Euro nicht zu verachten.
Auf meiner Suche nach alternativen zum FTDI-Adapter bin ich zuerst auf die 7404 Hex Inverter gestossen. Also schnell zu Radio Koelsch und ein paar davon gekauft…. aber ich habe _nie_ einen Mucks auf der seriellen Schnittstelle gesehen. Ob das nun an dem Chip, meiner Bloedheit oder Voodoo lag kann ich nicht sagen. Auf jeden Fall ist der 7404-Plan bei mit vorerst vom Tisch.

Nun bin ich wieder beim MAX232 gelandet.
Schon beim spielen mit dem WRT54g habe ich einen MAX3232 zum reden mit den UARTs eingesetzt. Aber da beim $duino in der Regel 3,3V keine Rolle spielen, reicht hier auch der guenstige rein 5voltige Bruder.
Da ich zur Zeit einfach zuviel Streifenraster/Kaugummi-Konstrukte auf dem Arbeitstisch liegen habe, wollte ich erstmal etwas schickes mit gefraester Platine haben. Also habe ich es finanziell mal richtig krachen lassen und habe mir fuer knapp vier Euro den RS232-TTL-Wandler-Bausatz bestellt.
Das zusammenloeten hat in etwa 10 min gedauert und es funktionierte auf anhieb. Auch mit mein PL2303 basierten USB2RS232 Adapter laesst sich der Giessduino flashen und gibt artig seine Werte ans Processing.

Temperatur mit dem Arduino erfassen und auf dem Computer ausgeben

Veröffentlicht in Arduino, Maxim/Dallas, Processing mit den Tags , , , , am 9. Juli 2009 von crackburg

Ich moechte mit dem Freeduino und einen DS1620 die Temperatur messen und diese dann auf dem Computer ausgeben. Die Ausgabe der Temperatur erfolgt ueber Seria.println auf der seriellen Schnittstelle.  Im Video sieht man dann erst die Ausgabe in Minicom und dann in Processing.

Der DS1620 wird ueber die Library von John P. Mulligan angesprochen.

ds1620 004

Processing Code:

// basiert auf dem Beispiel von Tom Igoe

import processing.serial.*;

Serial myPort;  //Die Serielle Schnittstelle
PFont fontA;
String tempBuffer = null;
int lf = 10;    // Linefeed in ASCII

void setup() {

size(200, 200);
background(210);
//Gib eine Liste der seriellen Interfaces aus
println(Serial.list());

// Serielle Schnittstelle festlegen
myPort = new Serial(this, Serial.list()[0], 9600);
// Die Schrift.  Der Font muss im Data Verzeichnis vom Sketch liegen
// Um einen Font zu erstellen, verwende  Tools > Create Font
fontA = loadFont(„ArialRoundedMTBold-48.vlw“);

// Textgroesse definieren (in pixeln)
textFont(fontA, 20);
}

void draw() {

while (myPort.available() > 0) {
redraw();
String inBuffer = myPort.readStringUntil(lf);

if (inBuffer != null && tempBuffer != inBuffer) {
background(210);
println(inBuffer);
fill(51);
text („Temp:“, 1, 20);
fill(51);
text (inBuffer, 1, 40);
fill(51);
text („°C“, 35, 40);
String tempBuffer = inBuffer;

}
}
}

Arduino Code:

*/

#include „DS1620.h“

// Pins fuer die 3-wire-serial definieren
int dq = 5;
int clk = 4;
int rst = 3;

// Aufruf des DS1620 Konstruktors
DS1620 d = DS1620(dq, clk, rst);

void setup()
{
// Beginne serielle Kommunikation mit 9600 Baud
Serial.begin(9600);

// Schreibe TH und TL ins EEPROM des DS1620

d.write_th(30);
d.write_tl(15);

// Schreibe configuration/status register
// Dezimal 10 = Binary 00001010
// Aktiviert CPU-Mode und deaktiviert 1-Shot Mode.
// das Datenblatt erzaehlt mehr
d.write_config(10);
d.start_conv();

}

void loop()
{
//  Temperatur auslesen und aud der seriellen Schnittstelle ausgeben
Serial.println(d.read_temp());

// eine Sekunde Pause vor dem naechsten Lesezyklus
delay(1000);
}

Follow

Get every new post delivered to your Inbox.