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
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?
hat bis jetzt keiner von euch mit rfid modulen gearbeitet im zusammenhang mit einem atmega?
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.
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
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... :)
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.
Externes Bild anzeigen
noch so zur info habe den leser 2 plus von conrad.
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
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
mfgCode:$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
Lesezeichen