Mål: Att läsa RFID kort eller tag för att låsa upp en dörr.
Teori: RFID RC522 är en modul som kan avläsa kompatibel kort eller tag och den lagrade informationen (1kB) som finns i den, bl.a. kortets id.
Frizing layout
Arduino koden
Biblioteket som används i koden heter MRC522 och kan laddas ner på github. Kom ihåg att spara biblioteket i mappen arduino/libraries/.
/* * All the resources for this project: http://randomnerdtutorials.com/ * Modified by Rui Santos * Modified by Wilbur Smith 2017 * Created by FILIPEFLOP * * Börja med att kommentera serial.write för processing och * avkommentera samtliga serial.prints. Kör koden för att se kortets id. * Återställ koden så som den var i början och ladda upp. */ #include <Servo.h> #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Skapa ett MFRC522 objekt. Servo myservo; void setup() { Serial.begin(9600); // Starta serial kommunikationen SPI.begin(); // Starta SPI bussen mfrc522.PCD_Init(); // Starta MFRC522 //Serial.println("Sätt kortet nära läsaren..."); //Serial.println(); myservo.attach(8); } void loop() { // Sök efter nya kort if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Välj en av korten eftersom modulen kan avläsa flera åt gången if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Serial.print("UID tag :"); String content= ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { //Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); //Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } //Serial.println(); //Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "15 A4 HH V5") // card id { //Serial.println("Access granted"); //Serial.println(); delay(500); Serial.write(1); // för processing myservo.write(170); } else { //Serial.println("Access denied"); delay(500); Serial.write(2); // för processing myservo.write(10); } }
Processing koden
import processing.serial.*; // inkludera serial biblioteket Serial myPort; // Skapa ett serial objekt PFont font; int a; void setup() { size(650,150); // fönsterstorleken samt vilken rendering println(Serial.list()); String portName = Serial.list()[2]; myPort = new Serial(this, portName, 9600); font = loadFont("Monospaced-48.vlw"); // Load the new font textFont(font, 70); // Set up the font } void draw() { if (a == 1) { background(#000105); fill (#0FDB17); text ("Access granted", 30,100); } else if(a==2) { background(#000105); fill (#0FDB17); text ("Access denied", 30,100); } else { background(#000105); fill (#000105); text ("", 30,100); } } void serialEvent(Serial myPort) // funktionen för serialhändelser { a = myPort.read(); // läs porten och spara byten i variabeln a println(a); }