RFID-RC522 Reader Module with Arduino UNO

สำหรับโครงงานนี้เป็นโครงงานเล็กๆ แบบทั่วไป กับการนำโมดูล RFID-RC522 มาควบคุมด้วยบอร์ด Arduino UNO ซึ่งแอดมินคิดว่าน่าจะเป็นประโยชน์กับผู้อ่านกับการนำไปประยุกต์ใช้งาน เช่น ใช้ในการทำระบบความปลอดภัยในบ้าน (Smart home), การจัดเก็บสิ่งของในรูปแบบข้อมูลให้เป็นหมวดหมู่ (Database System) เป็นต้น ซึ่งตัวโมดูล RFID-RC522 จะถูกออกแบบไว้แบบสำเร็จ และสามารถต่อใช้งานเพื่อควบคุมการปิด/เปิด อุปกรณ์ต่างๆ หรืออ่านข้อมูลเข้าไปยังคอมพิวเตอร์สำหรับตรวจสอบและจัดเก็บข้อมูลได้ทันที

RFID-RC522 Reader Module with Arduino UNO
รูปที่ 1 อุปกรณ์ต่างๆ สำหรับใช้ในการทดลองโครงงาน
RFID-RC522 Reader Module with Arduino UNO
รูปที่ 2 ลักษณะการต่ออุปกรณ์ต่างๆ ให้กับโมดูล RFID-RC522 Reader

รูปที่ 1 และรูปที่ 2 เป็นอุปกรณ์ที่ใช้ในการทดลองสำหรับการต่อโมดูล RFID-RC522 Reader โดยในชุดจะมาพร้อมกับแท็ก RFID ให้ใช้ในการทดลอง 2 ชิ้นแบบการ์ดและแบบเหรียญ เพื่อสังเกตการอ่านข้อมูลที่แตกต่างกัน โดยทั้งนี้เมื่อเราต่อวงจรระหว่างบอร์ด Arduino UNO และโมดูล RFID-RC522 Reader ให้เราโปรแกรมคำสั่งที่ 1 เพื่อเป็นการทดลองในเบื้องต้นก่อนตามที่แสดงข้างล่างนี้

/*
Credit Code Arduino by : https://miliohm.com/mfrc522-rfid-reader-with-arduino-tutorial-the-simplest-way-to-read-rfid-tag/
Program Test RFID-RC522 Reader [1]
*/

#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);

String rfidCard;

void setup() {
  Serial.begin(9600);
  Serial.println("Starting the RFID Reader...");
  SPI.begin();
  rfid.init();
}

void loop() {
  if (rfid.isCard()) {
    if (rfid.readCardSerial()) {
      rfidCard = String(rfid.serNum[0]) + " " + String(rfid.serNum[1]) + " " + String(rfid.serNum[2]) + " " + String(rfid.serNum[3]);
      Serial.println(rfidCard);
    }
    rfid.halt();
  }
}

จากโปรแกรมการทดลองที่ 1 (ข้างบน) จะใช้ในการทดลองอ่านแท็ก RFID เบื้องต้นก่อน ทั้งนี้เพื่อเป็นการทดสอบการต่อวงจรให้ถูกต้องและการอ่านค่าที่ได้ โดยเราจะนำค่าที่ได้จากการอ่านแท็กครั้งนี้ ไปใช้ในการทดลองในโปรแกรมที่ 2 เพื่อเป็นการประยุกต์ใช้งานแบบง่ายๆ กันต่อไป

RFID-RC522 Reader Module with Arduino UNO
รูปที่ 3 ข้อความที่แสดงเมื่อตัวโมดูล RFID-RC522 Reader อ่านแท็กได้

Download Library —-> RFID-RC522 Reader [RFID.h]

RFID-RC522 Reader Module with Arduino UNO
รูปที่ 4 การต่อแอลอีดีเพื่อทดลองการทำงาน
RFID-RC522 Reader Module with Arduino UNO
รูปที่ 5 การต่อแอลอีดีที่ขา D6 และ D7 เพื่อตรวจจับแท็ก RFID ที่ต้องการให้แสดงผล

ในรูปที่ 4 และรูปที่ 5 เป็นการต่อแอลอีดีเพิ่มติมให้กับบอร์ดควบคุม Arduino UNO เพื่อทำหน้าที่แสดงผล โดยในการทดลองที่ 2 นี้จะเป็นการอ่านค่าแท็ก RFID แล้วจะแสดงผลให้ทราบ เมื่อเป็นแท็กที่เรากำหนดโดยจะให้แอลอีดีสีเขียวติด ในทางตรงข้ามถ้าไม่ใช่แท็กที่กำหนดแอลอีดีสีแดงจะติดนั้นเอง โดยในการทดลองที่ 2 ให้เราใช้การโปรแกรมข้างล่างนี้ ซึ่งเราจะต้องนำค่าแท็กที่อ่านได้มากำหนดในบรรทัด (if (rfidCard == “108 31 154 50”)) นั้นเอง

/*
Credit Code Arduino by : https://miliohm.com/mfrc522-rfid-reader-with-arduino-tutorial-the-simplest-way-to-read-rfid-tag/
Program Test RFID-RC522 Reader [2]
*/

#include <SPI.h>
#include <RFID.h>
#define SS_PIN 10
#define RST_PIN 9
RFID rfid(SS_PIN, RST_PIN);

String rfidCard;

void setup() {
  Serial.begin(9600);
  Serial.println("Starting the RFID Reader...");
  SPI.begin();
  rfid.init();
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop() {
  if (rfid.isCard()) {
    if (rfid.readCardSerial()) {
      rfidCard = String(rfid.serNum[0]) + " " + String(rfid.serNum[1]) + " " + String(rfid.serNum[2]) + " " + String(rfid.serNum[3]);
      Serial.println(rfidCard);
      if (rfidCard == "108 31 154 50") {
        digitalWrite(6, HIGH);
        delay(1000);
        digitalWrite(6, LOW);
             
      } else {
        digitalWrite(7, HIGH);
        delay(1000);
        digitalWrite(7, LOW);
      }
    }
    rfid.halt();
  }
}

สำหรับโปรแกรมที่ 2 แสดงข้างบนนี้เป็นการประยุกต์ใช้งานแบบง่ายในการตรวจจับแท็กที่กำหนดค่าที่ต้องการ โดยจะเพิ่มคำสั่ง if (rfidCard == “108 31 154 50”) เพื่อทำการตรวจสอบแท็กที่ต้อง ทั้งนี้เราสามารถนำใช้ในการเปิดการทำงานของอุปกรณ์ต่างๆ ต่อไป เช่น การเปิดและปิดประตู เป็นต้น

RFID-RC522 Reader Module with Arduino UNO
รูปที่ 6 การทดลองด้วยแท็ก RFID แบบที่ 1
RFID-RC522 Reader Module with Arduino UNO
รูปที่ 7 การทดลองด้วยแท็ก RFID แบบที่ 2

ในรูปที่ 6 และรูปที่ 7 แสดงลักษณะของการทดลองให้โมดูล RFID-RC522 อ่านแท็ก โดยในรูปที่ 6 เป็นแบบที่ 1 จะเห็นว่าแออีดีสีเขียวจะติด นั้นหมายความว่าเป็นแท็กที่เรากำหนดและถูกต้อง ในทางตรงข้ามการอ่านแท็กแบบที่ 2 รูปที่ 7 แอลอีดีสีแดงติดเมื่อไม่ใช่แท็กที่กำหนดไว้นั้นเอง

RFID-RC522 Reader Module with Arduino UNO
รูปที่ 8 วงจรที่ใช้ในการทดลองร่วมกับโมดูล RFID-RC522 Reader
RFID-RC522 Reader Module with Arduino UNO
รูปที่ 9 การต่ออุปกรณ์และวงจรสำหรับทดลองโมดูล RFID-RC522 Reader

สำหรับโครงงาน RFID-RC522 Reader นี้เป็นโครงงานเล็กๆ อีก 1 ตัวที่สามารถนำไปใช้งานต่างๆ ได้หลายรูปแบบและนำไปใช้งานได้ไม่ยากมากนักครับ ทั้งนี้ตัวโมดูล RFID-RC522 Reader จะเป็นโมดูลสำเร็จ ที่ผู้พัฒนาสามารถใช้บอร์ดไมโครคอนโทรลเลอร์มาเชื่อมต่อใช้งานได้ทันทีในรูปแบบการสื่อสาร SPI Protocol และในส่วนของข้อมูลเพิ่มเติมสำหรับการพัฒนาโครงงานจะอยู่ที่ลิ้งก์อ้างอิงข้างล่างนี้ครับ.

Reference

  1. https://lastminuteengineers.com/how-rfid-works-rc522-arduino-tutorial/
  2. https://www.elementzonline.com/blog/interfacing-rfid-rc522-with-arduino-uno
  3. https://mschoeffler.com/2017/02/07/how-to-use-the-rfid-rc522-module-rfid-reader-with-the-arduino-uno/
  4. https://www.hadex.cz/navody/m490a.pdf
  5. https://www.instructables.com/Interfacing-RFID-RC522-With-Arduino-MEGA-a-Simple-/
  6. https://github.com/aaneloy/RFID-Tag-Reader-using-Arduino-Uno-
  7. https://github.com/song940/RFID-RC522
  8. https://miliohm.com/mfrc522-rfid-reader-with-arduino-tutorial-the-simplest-way-to-read-rfid-tag/