Sida 1 av 1

RFID: Paritet, Synkronsering och data

Postat: 7 juni 2006, 02:22:58
av kristoffer
Hej!

Jag har som ett projekt till jobbet börjat fnurla på ett passagesystem mha RFID. Systemet består av en RFID-läsare med inbyggd knappsats och några passande 125kHz-taggar att fästa på nyckelringen.

I en önskan att minimera hårdvarukostnader och maximera flexibilitet vill jag egentligen bara ha läsaren på utsidan av dörren (i trapphuset) och en liten enhet på insidan som beslutar om taggen som hålls upp och koden som matas in skall öppna låsen. Tidomat har tänkt sig att man har åtminstone tre enheter i ett sånt här system: läsaren, en dörrkontroller och en systemkontroller. Detta gör det omöjligt att integrera med ett existerande system - det behövs en separat accesslista i Tidomats systemkontroller.

I vilket fall som helst. Mellan läsaren och dörrservern finns det en tvåtrådskommunikation (clock/data) som är dubbelriktad. Eftersom jag bara äger den ena enheten kan jag inte lyssna av någon dialog och efterlikna den. Jag beslutade mig därför för att se vad det gömde sig för något elektronikartat i läsaren.

Tro det eller ej, när man hade bänt upp locket och fått bort silikonet hittar man en Philips HTRC110 Hitag Reader Chip, en PIC12C672 och 5 st hål för en ICSP-pinheader. Perfekt! Datablad finns tillgänliga, så Elfa fick bistå med en PIC12F675 (pinkompatibel, ungefär motsvarande funktioner) att ersätta kretsen från Tidomat med.

Dessvärre verkar Tidomats krets vara Code Protected och detta gör att man inte har någon större hjälp av den för att lista ut originalprotokollet. Därför får ny mjukvara till ersättnings-PICen skrivas.

På grund av att Tidomat har hängt en buzzer på ICSP-Data och lite annat jox på ICSP-ledningarna kunde jag inte använda min vanliga PIC-programmerare för att lägga in mjukvara. Som ett sidospår fick en egen ICSP-programmerare byggas som tar det lite varligare med ledningarna och inte programmerar lika snabbt som min ordinarie WARP13-programmerare.

I dagsläget fungerar det absolut mesta, dvs
  • Avläsning av knappsatsen (görs mha A/D-omvandlaren, varje knapp uppvisar en särskild spänning på Pin 7 när den är nedtryckt)
    LED-flashning (finns en grön och en röd lysdiod som tänds när man aktiverar GP5 som utgång, 1=grön, 0=röd)
    Initiering av HTRC110 RFID-läsarkretsen
    Avkodning av data från HTRC110-kretsen
När man håller upp en bricka mot läsaren kommer det en ström med Manchester-kodade bitar in på Pin 4. Så länge som brickan hålls upp repeteras denna ström, om och om igen. Detta gör det svårt att hitta början av bitströmmen!

Jag har tre brickor. De verkar repetera följande 256-bitar långa bitströmmar:

Bricka 1

Kod: Markera allt

101000000000001111111011010111111111111111110010111101000101000100001111111101101010111
00000000000001111101011011111111111111111000010110101000100000100111111110101101011111
00000000000111111101111011111111111111111001010110100000100010100111111110110101011
Bricka 2

Kod: Markera allt

101000000000001111111011010111111111111111110010101011101010110111100101111010111111101
00000000000001111111011011111111111111111010010101011101010110110000101101010111111101
00000000000101111101011011111111111111111001010101111101011010110010101101010111110
Bricka 3

Kod: Markera allt

101000000000001111111101010111111111111111101100101110100000001000001000000011010101001
00000000000001111111101011111111111111110101100111110100000001000101000001011010101001
00000000000101111110101011111111111111110110100111010100000101000100000001101010100
Jag har funnit att sekvensen 1010000000000011111111 finns i alla tre brickorna så därför lät jag utdraget ur respektive brickas bitström börja just där - men det behöver inte vara den avsedda början på bitströmmen!

Är det någon som har insikt i hur en sådan här tag är kodad egentligen? Vad synkar man på, så att man hittar början på den repeterande koden tillförlitligt? Finns det paritetsbitar? Hur är de isf beräknade? Vilken del är avsedd att vara unik? Det finns flera återkommande bitsekvenser i alla taggarna...

Tacksam för svar,

Kristoffer

Postat: 7 juni 2006, 08:44:01
av Nannou
Har byggt en RFID läsare till mitt examensarbete. Det finns ju en del standarder och ostandarder, speciellt med system på 125kHz bandet, och alla ser rätt olika ut. Men om du kollar signalen som kommer utan avkodning, är där ingen lucka mellan "paketen"? Kanske lite svårt om man inte har digital oscilloskop.. De taggar jag använt mig av hade iaf en lucka på 9 bitar där de inte sände något innan ett nytt paket påbörjades.

Postat: 7 juni 2006, 12:31:02
av kristoffer
Njae, det är inget jag har sett i alla fall. Jag har läst att vissa taggar använder ogiltiga manchestersekvenser, dvs sekvenser utan mittenbitsgenomgång. Dessa kan man upptäcka om man får timeout när man väntar på nästa genomgång. Så verkar KeeLoq-systemet göra, men dessvärre inte detta. :(

Kanske är det någon som känner någon på Tidomat som kan avslöja en sådan här detalj?

/Kristoffer

Postat: 8 juni 2006, 15:46:08
av vfr
Många 125kHz-system jobbar med EM Microelectronics chipar i 4000-serien. http://www.emmicroelectronic.com/

Postat: 8 juni 2006, 21:05:55
av kristoffer
Jag har hittat en annan leverantör (PAS Card) som verkar sälja taggar från EM, närmare bestämt EM4002-chippar. Har inte tagit reda på exakt kodning ännu (Manchester, biphase osv), men det torde inte vara något svårt när man väl håller i chippet. Tidomats taggar verkar vara proprietärt kodade - 256 bitar verkar deras försäljare hävda att de har (och det verkar jag få ut också), men det är svårt att reda ut mera. Jag kommer nog köra EM Marin-taggar istället. Där kan man iaf verifiera paritet osv på ett bra dokumenterat sätt... Tack för tipset!

Edit: Parenteskorr.