Jika kita ingin menyalakan sesuatu pasti identik dengan tombol, kemudian saklar, kemudian kunci, kebayang ndak jika kita ingin menyalakan sesuatu cukup dengan kartu????, di era moderen ini semua serba canggih kita bisa menyalakan lampu cukup dengan menempel kartu, kita membayar tol pun cukup dengan menempelkan kartu, karyawan absensi pun cukup dengan menempelkan kartu. pada kesempatan kali ini saya ingin berbagai pengalaman bagaimana menyalakan motor RC dengan menggunakan kartu, tidak cuma menyalakan Motor Rc, Kita bisa mengaplikasikannya bisa dengan menyalakan lampu, kipas, dll dikarenakan pengontrolanya menggunakan relay yang suport arus AC dan DC
Gambar Rangkaiannya sbb:
Keterangan Rangkaian :
§ Kaki SDA Modul RFID ===> Pin 10 Arduino
§ Kaki SCK Modul RFID ===> Pin 13 Arduino
§ Kaki MOSI Modul RFID ===> Pin 11 Arduino
§ Kaki MISO Modul RFID ===> Pin 12 Arduino
§ Kaki IRQ Dikosongkan
§ Kaki Data Relay/IN ===> Pin 7 Arduino
§ Kaki Negatif/Pendek Buzzer ===> Pin 8 Arduino
§ Kaki Positif/Panjang Buzzer ===> Power(+) 5V
§ Salah Satu Pin Motor ===> Power(-)/GND Adaptor/Power Supply
§ Pin Motor Yang Lain ===> Port NO Relay (Normally Open)
§ Kabel Power (+) Adaptor ===> Port COM Relay (Yang Tengah)
§ Kaki vcc pada module RFID dihubungkan ke sumber power positif 3,3 v (bisa dari 3,3v Arduino). Ingat, harus 3,3V … !!! Jangan hubungkan ke 5V karena bisa merusak modul RFID nya … !!!
§ Kaki gnd/ground pada masing-masing komponen hubungkan ke sumber negatif power (dihubungkan ke pin gnd Arduino, ground masing-masing komponen dan Arduino harus saling terhubung)
Kode Program
#include <SPI.h>
#include <MFRC522.h>
#include <Wire.h>
// 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;
// inialisasi variabel kondisi
int kondisi;
// ===================== PROGRAM PENGATURAN AWAL ======================= //
void setup()
{
// inialisasi baud rate serial monitor
Serial.begin(9600); // Initiate a serial communication
SPI.begin(); // Initiate SPI bus
mfrc522.PCD_Init(); // Initiate MFRC522
// inialisasi status I/O pin
pinMode(pinBuzzer, OUTPUT);
pinMode(pinRelay, 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
Serial.print("UID:");
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));
}
content.toUpperCase();
// *** PROGRAM JIKA KARTU RFID SESUAI DENGAN YANG TERDAFTAR *** //
// ****** ubah ID katu RFID yang ingin didaftarkan di sini ****** //
if (content.substring(1) == "70 5B 91 29")
{
// PROGRAM "ON" alat
// jika kondisi = 0
if (kondisi == 0)
{
// relay dinyalakan
// alat dalam kondisi "ON"
// buzzer menyala
digitalWrite(pinRelay, LOW);
digitalWrite(pinBuzzer, LOW);
delay(1000);
// buzzer dimatikan
digitalWrite(pinBuzzer, HIGH);
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, LOW);
delay(1000);
// buzzer dimatikan
digitalWrite(pinBuzzer, HIGH);
delay(1000);
// kondisi menjadi = 0
kondisi = 0;
}
}
// PROGRAM JIKA KARTU RFID YANG DIGUNAKAN SALAH ATAU TIDAK TERDAFTAR
else {
// buzzer berbunyi pendek 3 kali
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);
}
}