Categories
Pada project ini kita membuat sebuah sistem keamanan sederhana menggunakan modul RFID Reader RC522, modul ini dapat membaca sekaligus mengidentifikasi kartu RFID yang didekatkan pada bagian sensor.
Komponen yang dibutuhkan
- Arduino Uno R3
- RFID Reader RC522
- Buzzer 3-5V
- Micro Servo SG90 180 derajat
- Mini Breadboard
- Jumper secukupnya
- Kartu RFID 13,56 MHz
Dapatkan komponen di atas melalui link di bawah ini :
Skema Rangkaian
Jalur Sambungan (Wiring Table)
Arduino Uno | Servo SG90 |
5V | VCC (Merah) |
GND | GND (Coklat) |
5 (D5) | Pulse / Signal (Orange) |
Arduino Uno | Buzzer |
GND | – (Hitam) |
7 (D7) | + (Merah) |
Arduino Uno | RC522 |
3V3 | 3.3V |
9 (D9) | RST |
GND | GND |
12 (D12) | MISO |
11 (D11) | MOSI |
13 (D13) | SCK |
10 (D10) | SDA |
Source Code
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>
#define SS_PIN 10
#define RST_PIN 9
#define BUZZER_PIN 7
#define SERVO_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN);
Servo myservo;
void setup()
{
Serial.begin(9600);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(BUZZER_PIN, LOW);
myservo.attach(SERVO_PIN);
myservo.write(0);
SPI.begin();
mfrc522.PCD_Init();
Serial.println("Tempelkan kartu...");
Serial.println();
beep(1,1);
}
void loop()
{
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
//Menampilkan UID pada Serial monitor
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) == "B3 7A 23 95") //uid rfid yang diberikan akses
{
Serial.println("ID Dikenali");
beep(2,0.2);
myservo.write(100);
delay(3000);
myservo.write(0);
}
else
{
beep(3,0.5);
Serial.println("ID Tidak Dikenali");
}
Serial.println();
}
void beep(int ulang, float detik){
for(int i=0; i<ulang; i++){
digitalWrite(BUZZER_PIN,HIGH);
delay(detik*1000);
digitalWrite(BUZZER_PIN, LOW);
delay(detik*1000);
}
}