Course Content
코딩소스
0/1
[아두이노 키트] NFC모듈
About Lesson

기본설정

  1. 아두이노 설치 및 환경설정이 완료된 상태여야 합니다.

2. 라이브러리는 하기 버튼을 눌러 다운로드하고 설치하세요

3. 아래 소스코드를 보드설정-컴파일-업로드 과정을 진행 후 실행하세요

소스 코드

– 코드설명 :

  1. 카드 고유번호 찾기
    • 코드를 업로드 한 후 동봉된 카드를 NFC부품에 접촉하면 각 카드의 고유번호가 시리얼모니터에 출력됩니다.
      * 출력된 고유번호를 복사하여 다음 RGB LED 작동 코딩코드에 대입합니다.
				
					#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN);  // RFID 객체 생성

void setup() {
  Serial.begin(9600);
  SPI.begin();           // SPI 통신 시작
  rfid.PCD_Init();       // RC522 초기화
  Serial.println("NFC 카드 대기 중...");
}

void loop() {
  // 카드가 감지되지 않으면 리턴
  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
    return;
  }

  // UID 출력
  Serial.print("카드 UID: ");
  for (byte i = 0; i < rfid.uid.size; i++) {
    Serial.print(rfid.uid.uidByte[i] < 0x10 ? "0" : "");
    Serial.print(rfid.uid.uidByte[i], HEX);
    Serial.print(" ");
  }
  Serial.println();

  // 카드와의 통신 종료
  rfid.PICC_HaltA();
}

				
			

2. RGB LED 작동

  • NFC 센서는 NFC 태그를 감지해 전기적 변화를 발생시킵니다.
  • NFC 태그의 고유 UID 값에 따라 RGB LED의 색상이 제어됩니다.
    – 카드 인식 전 : LED OFF 상태 유지
     – 카드 인식 후 : UID 값에 따라 빨간색, 초록색, 파란색 등으로 LED 색상 변경 
  • LED는 잠시 점등 후 자동 OFF
				
					#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);

int redPin = 3;
int greenPin = 4;
int bluePin = 5;

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  
setColor(0, 0, 0);  // LED OFF
  
  Serial.println("RFID LED 제어 시스템 시작");
  Serial.println("카드를 스캔하세요...");
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
    return;
  }

  Serial.print("Card UID: ");
  String uidString = "";
  for (byte i = 0; i < rfid.uid.size; i++) {
    if (rfid.uid.uidByte[i] < 0x10) {
      uidString += "0";  // 한 자리 16진수 앞에 0 추가
    }
    uidString += String(rfid.uid.uidByte[i], HEX);
  }
  uidString.toUpperCase();  // 대문자로 변환
  Serial.println(uidString);

  // 카드 UID에 따라 LED 색상 제어
  if (uidString == "7712687B") { // 파란색 카드의 실제 카드의 UID를 띄어쓰기없이 작성해주세요
    Serial.println("1번 파란색 카드 인식!");
    setColor(0, 255, 0);  // 파란색LED
  } else if (uidString == "A130A81B") {// 하얀색 카드의 실제 카드의 UID를 띄어쓰기없이 작성해주세요
    Serial.println("2번 하얀색 카드 인식!"); 
    setColor(255, 0, 0);  // 초록색LED
  }  else {
    Serial.println("미등록 카드입니다.");
      setColor(0, 0, 255);   // 빨간색LED (미등록)
  }

  delay(2000);  // 2초간 LED 유지
  setColor(0, 0, 0);  // LED OFF
  
  // 카드 통신 종료
  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
  
  delay(500);  // 다음 스캔까지 0.5초 대기
}

void setColor(int redVal, int greenVal, int blueVal) {
  analogWrite(redPin, redVal);
  analogWrite(greenPin, greenVal);
  analogWrite(bluePin, blueVal);
}


				
			

작동영상