PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RFID und Atmega



smookie
20.06.2006, 20:02
Hi

ich möchte gern ein RFID Lesemodul an einen Atmega16 anschließen das RFID Modul soll die Informationen des TAGs an den Atmega schicken und dieser soll dann die Informationen verabreiten. Nun meine frage ist sowas überhaupt möglich und wenn ja wie?

mfg
smookie

bluelight_electronic
20.06.2006, 20:14
kommt darauf an was du für ein Lesemodul hast und was es für daten "Ausspuckt".. wenn es z.b. schon Seriell daten ausdonnert hast ja kein prob diese zu verarbeiten .. irgendwie nen Protokoll hat es sicher ;) und das kannst dann mit deinem Atmel auslesen ;) (das solltest natürlich kennen)

smookie
20.06.2006, 20:19
zur zeit habe ich den leser 2 plus von Conrad dieser hat einen rs232 ausgag und auf dem ist auch ein atmel chip verbaut. jedoch weis ich nich wie ich die daten auslesen kann von dem modul.



Kann mir hier keiner Helfen?

smookie
14.07.2006, 20:37
hat bis jetzt keiner von euch mit rfid modulen gearbeitet im zusammenhang mit einem atmega?

digitali
15.07.2006, 12:10
Einen wunderschoenen guten Tag!

Ich hatte mir mal dieses kleine Proggie zusammengeschustert:

--------------------------------------
$regfile = "m128def.dat"
$crystal = 16000000

Dim A As Byte , B1(10) As Byte , B2(10) As String * 1 , C As Byte , T As Bit
Dim Rfid As String * 10
Config Graphlcd = 240 * 128 , Dataport = Portb , Controlport = Portc , Ce = 2 , Cd = 3 , Wr = 0 , Rd = 1 , Reset = 4 , Fs = 5 , Mode = 6

Cursor Off
Cls

C = 1
Locate 1 , 1
Lcd " 125Khz RFID-Reader"
Locate 2 , 1
Lcd " Unique, HT4102"

Do
A = Inkey()
If A > 32 Then
B1(c) = A
B2(c) = Chr(b1(c))
If C = 10 Then
Rfid = B2(1) + B2(2) + B2(3) + B2(4) + B2(5) + B2(6) + B2(7) + B2(8) + B2(9) + B2(10)
Locate 4 , 1
Lcd Rfid
Locate 6 , 1
Lcd B1(1) ; B1(2) ; B1(3) ; B1(4) ; B1(5) ; B1(6) ; B1(7) ; B1(8) ; B1(9) ; B1(10)
C = 0
End If
Incr C
End If

Loop

End

--------------------------------------

Damit habe ich dann erfolgreich Rfid-Tags ausgelesen. Ein Tag in Form einer Chipkarte und ein Bioglastransponder. Siehe Fotos:

http://www.speckmann.de/atmel/b8.html
http://www.speckmann.de/atmel/b5.html

Ich hatte mir mal vor Monaten ein 125khz-Reader auf eBucht ersteigert. Ist auch eins mit seriellem Ausgang.

smookie
18.07.2006, 17:54
Hi
kannst du mir das programm mal kurz erklären bzw. den teil der für das auslesen des rfid moduls zu ständig ist da ich mit programmieren gerade erst anfenge.
vielen dank

digitali
18.07.2006, 19:22
Das ist nur ein Beispiel wie es funzen koennte.
Weißt Du was Dein Modul da im einzelnen ausspuckt? Das wuerde ich mir zunaechst genauer anschauen. Klemm das Modul an die Serielle Deines PCs und schau Dir das mit einem Terminalprogramm an. Bei mir war's so das das Modul fortlaufend die Seriennummer der Transponderkarte ausspuckte, sobald diese in Reichweite war.
Und mit Inkey() unter Bascom dann den Schlunz wieder eingelesen (Baudraten usw. beachten!).
Aber wenn Du erst gerade mit Bascom anfaengst, und das Programmbeispiel noch nicht verstehst, dann ist das noch ein weiter Weg...
Da kann ich Dir nur empfehlen zu lesen, experimentieren, lesen, experimentieren, lesen, experim..., usw... :)

smookie
18.07.2006, 20:53
ich habe das modul mal an den pc angeschlossen und mit dem programm HyperTerminal ausgelesen was es sendet. es ist eine zeichen folge die sich bei jedem Transponder ändert. das problem ist wenn ich den transponder länger über dem lesegerät halte sendet er diese nummer immer wieder.
ich müsste diese nummer jetzt im atmega weiter verarbeiten so das er bei einem bestimmten transponder etwas macht. problem ist er darf das signal das vom lesegerät kommt nur einmal verwenden und dann für die zeit die er über dem transponder steht blocken.
anbei ein bild von der zeichenfolge die das lesegerät sendet.
http://img54.imageshack.us/img54/8823/robotervn3.th.jpg (http://img54.imageshack.us/my.php?image=robotervn3.jpg)

noch so zur info habe den leser 2 plus von conrad.

digitali
18.07.2006, 22:35
Dann funktioniert Dein Leser genauso wie meine Kiste. Sobald ein Transponder sich in Leseweite befindet, wird die Zeichenfolge ausgegeben und permanent wiederholt.
Bei mir besteht der aus zehn einzelnen Zeichen. Zunaechst wird alles eingelesen was da kommt. Aber sobald der ASCII-Wert 32 ueberschritten wird (schau mal in die ASCII-Tabelle: ab dann kommen die Buchstaben, usw), wird ne Feldvariable mit den einzelnen Zeichen deklariert. C wird am Ende inkrementiert.
Das ganze geht bis 10 (denn ich weiss ja das die Nummer des Transponders in meinem Falle 10 Zeichen lang ist). Und dann wird der ganze Schlunz auf dem LCD angezeigt, oder was man auch immer damit machen will...
Zu Schluss wird C wieder auf 0 gesetzt. Und dann geht das Spiel von vorne los.
Es geht sicherlich auch noch auf anderem Wege, aber da hatte ich nur experimentiert und das mal schnell zusammengeschustert...


Do

A = Inkey()

If A > 32 Then
B1(c) = A
B2(c) = Chr(b1(c))

If C = 10 Then
Rfid = B2(1) + B2(2) + B2(3) + B2(4) + B2(5) + B2(6) + B2(7) + B2(8) + B2(9) + B2(10)
Locate 4 , 1
Lcd Rfid
Locate 6 , 1
Lcd B1(1) ; B1(2) ; B1(3) ; B1(4) ; B1(5) ; B1(6) ; B1(7) ; B1(8) ; B1(9) ; B1(10)
C = 0
End If

Incr C

End If

Loop

smookie
12.09.2006, 20:02
Hi
ich hab das programm für mich ein bischen umgeschrieben. jedoch funktioniert bei mir gar nichts vielleicht kann mir ja noch mal jemand helfen?

hier mal das program was ich geschrieben habe


$regfile = "m16def.dat"

$crystal = 8000000

$framesize = 32
$swstack = 8
$hwstack = 24


Dim A As Byte , B1(13) As Byte , B2(13) As String * 1 , C As Byte , T As Bit
Dim Rfid As String * 13
Portd.5 = 0
Portd.6 = 0

C = 1
Do

A = Inkey()

If A > 32 Then
B1(c) = A
B2(c) = Chr(b1(c))

If C = 13 Then
Rfid = B2(1) + B2(2) + B2(3) + B2(4) + B2(5) + B2(6) + B2(7) + B2(8) + B2(9) + B2(10) + B2(11) + B2(12) + B2(13)
Portd.5 = 1
Else
Portd.6 = 1
C = 0

End If

Incr C

End If

mfg

smookie
18.09.2006, 17:13
hi
kann mir einer ein möglichkeit nennen signale über die rs232 zu empfangen und dann mit bestimmten funktionen zu verknüpfen?

mfg