Langsung ke konten utama

BELAJAR RFID DENGAN KONDISI DAN DAN TIDAK MENGGUNAKAN KONDISI

 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

Postingan populer dari blog ini

Feeder Fish Arduino Menggunakan RTC

 Assalamualaikum teman-teman saya mau sharing project sederhana yaitu fish feeder menggunakan RTC awalnya rangkaian alarm cuman saya modif menjadi feeder fish untuk coding aslinya yang berupa alarm ada di sini  GitHub , feeder fish ini ada 2 set plant dan keduanya bisa di aktifkan atau di nonaktifkan dan dapat di atur sesuai dengan jam yang kita inginkan misalkan contohnya: pakan1 set jam 09 pakan1 set menit 50 berarti pada jam yang sudah di setting maka servo akan bergerak sesuai jam yang kita setting. Untuk gambar skema rangkaian di bawah ini: Komponen yang diperlukan: -Resistor 220 Ohm           = 1 -Trimpot 10K Ohm         = 1 -LCD 16x2                          = 1 -Push Button                       = 5 -Motor Servo                 ...