RFID-Läsare

D-LAN är Linköpings Universitets största LAN med runt 200 deltagare varje år. Jag har varit delaktig de senaste tre åren som riggare, kassör och nu webbansvarig. Vi har alltid haft ett litet ’check in’ system där man kan blippa sitt liu kort för att se vart man ska sitta på lanet. Tidigare har det gjorts genom en liten app på en smartphone som kopplats till en dator med USB över vilken man bryggat ett nätverk och på datorn kört en lokal Flask applikation som gjorde ett http GET request till servern som sköter D-LANs biljettsystem och kollade vart man hade plats. Det visade upp det i form av en lokal hemsida. I år gjorde jag en liten tvist och ersatte både telefonen och datorn med en Raspberry Pi 3 och ett Aurdino RC-522.

Min tanke var att det vore snyggt med bara en liten låda man kunde blippa sitt LIU-kort på och sen en skärm som visade upp vart man satt. Jag ville undvika att någon skulle behöva sitta med sin dator och ta emot alla vilket varit fallet tidigare år. Resultatet blev inte alls dumt för att bara varit någon kvälls arbete. Mycket tack vare hjälp från LIU 3D som hjälpte mig att skapa ett snabbt litet skal, såhär såg det ut på lanet.

Hårdvara

Som sagt så använde jag en Raspberry Pi 3 för att köra mitt program som kollar plats och visar upp på skärmen och ett Aurdino RC-522 kort för att läsa av själva kortet. Dessa två komponenter kommunicerar med varandra över SPI som jag pillat lite med tidigare vilket var en av anledningarna till att jag valde RC-522 kortet.

Mjukvara

Programmet som körs på Raspberry Pi:n är ett litet Python program som blev väldigt enkelt att göra då jag hittade ett Python bibliotek för RC-522 kortet pi-rc522 på Github. Vilket gjorde att allt som behövdes var

(error, uid) = rdr.anticoll()

för att läsa av UID från kortet. Blev lite besviken att jag inte fick pilla med SPI men det var också skönt att det gick så fort och få ihop det (det blev klart kvällen innan…). Lite klurigt var dock att jag fick det i MSB men ville ha det i LSB. Det tog sin lilla tid att förstå men sen var det inte allt för svårt att snurra runt bitarna och whola!

def uid_to_decimal(uid):
     decimal = uid[0]
     decimal += uid[1] << 8
     decimal += uid[2] << 16
     decimal += uid[3] << 24
     return decimal

Den grafiska biten löste jag med hjälp av pygame, blev kanske inte det snyggaste gränssnittet men det fyllde sin funktion och har man lite ont om tid blir det lätt det kosmetiska som får lida, tyvärr.

Min klasskompis Anton Dalgren hjälpte mig med lödning och MSB till LSB problemet, kika gärna in hans Github.

Du kan hitta all kod till det här lilla projektet på github.com/Dunstrom/rfid_reader.

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *