Assalamualaiku semuanya salam arduino disini saya mau berbagi pengalaman menggunakan rfid dengan output menggunakan relay bisa di gunakan untuk menyalakan motor, mengkunci pintu dengan selenoid lock atau menyalakan lampu dengan rfid ini untuk skema rangakain bisa kalian lihat di bawah ini tetapi contonya saya menggunakan motor dc:
Bahan-bahan yang harus diperlukan:-Arduino uno = 1
-Module RFID RC522 = 1
-Buzer = 1
-LED Biru/Hijau = 1
-LED Merah = 1
-Rellay 5v = 1
-Batre 9v = 1
-Motor DC = 1
Penyambungan dari Module RFID ke Arduino
-3,3V RFID ==> 3,3V arduino
-RST RFID ==> 9 Arduino
-GND RFID ==> GND
-MISO RFID ==> 12 Arduino
-MOSI RFID ==> 11 Arduino
-SCK RFID ==> 13 Arduino
-SDA RFID ==> 10 Arduino
-LED Hijau ==> 4 Arduino
-LED Merah ==> 5 Arduino
-Buzzer ==> 8 Arduino
-Rellay ==> 7 Arduino
disini saya akan sharing dengan 2 cara yaitu dengan kondisi dan tidak menggunakan kondisi, baik sebelum ke coding kalian bisa download dulu librarynya bisa download disini atau kalau kalian mengareti di aplikasi arduinonya kalian bisa instal langsung dari aplikasi, setelah itu kalian tidak bisa langsung scen kartu harus di daftarkan dulu kartu yang mau di gunakan untuk coding scan kode kartu dibawah ini:
Change UID:
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Configurable, see typical pin layout above
#define SS_PIN 10 // Configurable, see typical pin layout above
MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance
/* Set your new UID here! */
#define NEW_UID {0xDE, 0xAD, 0xBE, 0xEF}
MFRC522::MIFARE_Key key;
void setup() {
Serial.begin(9600); // Initialize serial communications with the PC
while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
SPI.begin(); // Init SPI bus
mfrc522.PCD_Init(); // Init MFRC522 card
Serial.println(F("Warning: this example overwrites the UID of your UID changeable card, use with care!"));
// Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
}
// Setting the UID can be as simple as this:
//void loop() {
// byte newUid[] = NEW_UID;
// if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) {
// Serial.println("Wrote new UID to card.");
// }
// delay(1000);
//}
// But of course this is a more proper approach
void loop() {
// Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle. And if present, select one.
if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
delay(50);
return;
}
// Now a card is selected. The UID and SAK is in mfrc522.uid.
// Dump UID
Serial.print(F("Card UID:"));
for (byte i = 0; i < mfrc522.uid.size; i++) {
Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(mfrc522.uid.uidByte[i], HEX);
}
Serial.println();
// Dump PICC type
// MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
// Serial.print(F("PICC type: "));
// Serial.print(mfrc522.PICC_GetTypeName(piccType));
// Serial.print(F(" (SAK "));
// Serial.print(mfrc522.uid.sak);
// Serial.print(")\r\n");
// if ( piccType != MFRC522::PICC_TYPE_MIFARE_MINI
// && piccType != MFRC522::PICC_TYPE_MIFARE_1K
// && piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
// Serial.println(F("This sample only works with MIFARE Classic cards."));
// return;
// }
// Set new UID
byte newUid[] = NEW_UID;
if ( mfrc522.MIFARE_SetUid(newUid, (byte)4, true) ) {
Serial.println(F("Wrote new UID to card."));
}
// Halt PICC and re-select it so DumpToSerial doesn't get confused
mfrc522.PICC_HaltA();
if ( ! mfrc522.PICC_IsNewCardPresent() || ! mfrc522.PICC_ReadCardSerial() ) {
return;
}
// Dump the new memory contents
Serial.println(F("New UID and contents:"));
mfrc522.PICC_DumpToSerial(&(mfrc522.uid));
delay(2000);
}
Setelah itu klik serial Monitor
tunggu beberapa saat, setelah itu kalian bisa scan kartu RFID, bila sudah terbaca copy yang di beri tanda biru
sekarang baru ke codingnya:
-Dengan kondisi
Code yang tadi di copy dimasukan cari
if (content.substring(1) == "EB D0 4C 0D")
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// inialisasi pin RFID, buzzer, dan relay
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int pinBuzzer = 8;
int pinRelay = 7;
int pinLedRed = 5;
int pinLedGreen = 4;
// inialisasi variabel kondisi
int kondisi;
// ===================== PROGRAM PENGATURAN AWAL ======================= //
void setup()
{
// inialisasi baud rate serial monitor
Serial.begin(9600); // Initiate a serial communication
lcd.init();
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
Serial.println("Tempelkan Kartu Anda");
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("Tempelkan");
lcd.setCursor(3, 1);
lcd.print("Kartu Anda");
// inialisasi status I/O pin
pinMode(pinBuzzer, OUTPUT);
pinMode(pinRelay, OUTPUT);
pinMode(pinLedRed, OUTPUT);
pinMode(pinLedGreen, OUTPUT);
// mematkan buzzer dan relay di awal program
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinRelay, HIGH);
// kondisi awal = 0
kondisi = 0;
}
// ============================== PROGRAM UTAMA ============================== //
void loop()
{
// cek kartu RFID baru
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// memilih kartu RFID
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
// menampilkan ID kartu RFID pada Serial Monitor
String content = "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
// *** PROGRAM JIKA KARTU RFID SESUAI DENGAN YANG TERDAFTAR *** //
// ****** ubah ID katu RFID yang ingin didaftarkan di sini ****** //
if (content.substring(1) == "EB D0 4C 0D")
{
// PROGRAM "ON" alat
// jika kondisi = 0
if (kondisi == 0)
{
// relay dinyalakan
// alat dalam kondisi "ON"
// buzzer menyala
digitalWrite(pinRelay, LOW);
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinLedRed, LOW);
digitalWrite(pinLedGreen, HIGH);
delay(1000);
lcd.setCursor(5, 0);
lcd.print("Rellay");
lcd.setCursor(7, 1);
lcd.print("ON");
Serial.println("Rellay ON");
delay(1000);
lcd.clear();
// buzzer dimatikan
digitalWrite(pinBuzzer,LOW );
delay(1000);
// kondisi menjadi = 1
kondisi = 1;
}
// PROGRAM "OFF" alat
// jika kondisi = 1
else if (kondisi == 1)
{
// relay dimatikan
// alat dalam kondisi "ON"
// buzzer menyala
digitalWrite(pinRelay, HIGH);
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinLedRed, HIGH);
digitalWrite(pinLedGreen, LOW);
delay(1000);
lcd.setCursor(5, 0);
lcd.print("Rellay");
lcd.setCursor(7, 1);
lcd.print("OFF");
Serial.println("Rellay OFF");
delay(1000);
lcd.clear();
// buzzer dimatikan
digitalWrite(pinBuzzer, LOW);
delay(1000);
// kondisi menjadi = 0
kondisi = 0;
}
}
// PROGRAM JIKA KARTU RFID YANG DIGUNAKAN SALAH ATAU TIDAK TERDAFTAR
else {
// buzzer berbunyi pendek 3 kali
delay(1000);
digitalWrite(pinBuzzer, LOW);
delay(300);
digitalWrite(pinBuzzer, HIGH);
delay(300);
digitalWrite(pinBuzzer, LOW);
delay(300);
digitalWrite(pinBuzzer, HIGH);
delay(300);
digitalWrite(pinBuzzer, LOW);
delay(300);
digitalWrite(pinBuzzer, HIGH);
delay(300);
lcd.setCursor(0, 0);
lcd.print("Tidak Terdekeksi");
lcd.clear();
Serial.println("Kartu Tidak Terdeteksi");
}
}
-Coding tanpa kondisi
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// inialisasi pin RFID, buzzer, dan relay
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);
int pinBuzzer = 8;
int pinRelay = 7;
int pinLedRed = 5;
int pinLedGreen = 4;
// inialisasi variabel kondisi
int tanpakondisi;
// ===================== PROGRAM PENGATURAN AWAL ======================= //
void setup()
{
// inialisasi baud rate serial monitor
Serial.begin(9600); // Initiate a serial communication
lcd.init();
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
Serial.println("Tempelkan Kartu Anda");
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("Tempelkan");
lcd.setCursor(3, 1);
lcd.print("Kartu Anda");
// inialisasi status I/O pin
pinMode(pinBuzzer, OUTPUT);
pinMode(pinRelay, OUTPUT);
pinMode(pinLedRed, OUTPUT);
pinMode(pinLedGreen, OUTPUT);
// mematkan buzzer dan relay di awal program
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinRelay, HIGH);
// kondisi awal = 0
}
// ============================== PROGRAM UTAMA ============================== //
void loop()
{
// cek kartu RFID baru
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// memilih kartu RFID
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
// menampilkan ID kartu RFID pada Serial Monitor
String content = "";
byte letter;
for (byte i = 0; i < mfrc522.uid.size; i++)
{
content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(mfrc522.uid.uidByte[i], HEX));
}
content.toUpperCase();
// *** PROGRAM JIKA KARTU RFID SESUAI DENGAN YANG TERDAFTAR *** //
// ****** ubah ID katu RFID yang ingin didaftarkan di sini ****** //
if (content.substring(1) == "EB D0 4C 0D")
{
// PROGRAM "ON" alat
// jika kondisi = 0
if (tanpakondisi == 0)
{
// relay dinyalakan
// alat dalam kondisi "ON"
// buzzer menyala
digitalWrite(pinRelay, LOW);
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinLedRed, LOW);
digitalWrite(pinLedGreen, HIGH);
delay(1000);
lcd.setCursor(5, 0);
lcd.print("Rellay");
lcd.setCursor(7, 1);
lcd.print("ON");
Serial.println("Rellay ON");
delay(1000);
lcd.clear();
// buzzer dimatikan
digitalWrite(pinBuzzer,LOW );
delay(1000);
// kondisi menjadi = 1
digitalWrite(pinRelay, HIGH);
digitalWrite(pinBuzzer, HIGH);
digitalWrite(pinLedRed, HIGH);
digitalWrite(pinLedGreen, LOW);
delay(1000);
lcd.setCursor(5, 0);
lcd.print("Rellay");
lcd.setCursor(7, 1);
lcd.print("OFF");
Serial.println("Rellay OFF");
delay(1000);
lcd.clear();
// buzzer dimatikan
digitalWrite(pinBuzzer, LOW);
delay(1000);
}
}
// PROGRAM JIKA KARTU RFID YANG DIGUNAKAN SALAH ATAU TIDAK TERDAFTAR
else {
// buzzer berbunyi pendek 3 kali
delay(1000);
digitalWrite(pinBuzzer, LOW);
delay(300);
digitalWrite(pinBuzzer, HIGH);
delay(300);
digitalWrite(pinBuzzer, LOW);
delay(300);
digitalWrite(pinBuzzer, HIGH);
delay(300);
digitalWrite(pinBuzzer, LOW);
delay(300);
digitalWrite(pinBuzzer, HIGH);
delay(300);
lcd.setCursor(0, 0);
lcd.print("Tidak Terdekeksi");
lcd.clear();
Serial.println("Kartu Tidak Terdeteksi");
}
}
sekian untuk coding RFID relay semoga bermanfaat untuk video menyusul.



Komentar
Posting Komentar