티스토리 뷰
1. RFID-RC522 |
위와 같이 생긴 NFC 모듈입니다. 혹시나 구매하시기전 글을 보고 계신다면 납땜이 되어 있지 않는 제품을 파는 곳이 많으니 주의하시기 바랍니다.
2. 라이브러리 및 셈플코드 |
1. RFID 라이브러리 파일
2. RFID Master 라이브러리 파일
압축파일을 아두이노 라이브러리 폴더(C:\Program Files (x86)\Arduino\libraries) 안에 압축을 풉니다.
3. 회로 구성 및 동작 테스트 |
우선 센서 동작 여부를 확인하는 셈플을 돌려보겠습니다. 우선 아래와 같이 회로를 구성합니다.
위 사진과 같이 모듈을 두었다 하였을 시 위쪽부터 아래표와 같습니다.
신호 |
핀 |
SPI SDA |
10 |
SPI SCK |
13 |
SPI MISO |
12 |
SPI MOSI |
11 |
SPI IRQ |
--- |
GND |
GND |
Reset |
9 |
VCC |
3.3V |
위 사진처럼 회로를 구성하셨다면 이전에 다운받았던 rfid-master 폴더안의 examples폴더의DumpInfo.ino를 실행시킵니다. 아두이노 툴에서 바로 불러오셔도 되고 직접 파일을 실행시키셔도 됩니다.
위와 같이 동작을 한다면 모듈에 아무런 문제가 없이 잘 동작한다는 뜻입니다.
4. 셈플코드(Addicore_RFID_Example.ino) |
NFC모듈의 주기능은 카드를 확인하고 승인해 주는 것입니다. 아래 코드는 해당 기능을 구현한 Sample 코드이며 AddicoreRFID 폴더안의 Sample입니다.
#include <AddicoreRFID.h>
#include <SPI.h>
#define uchar unsigned char
#define uint unsigned int
//4 bytes tag serial number, the first 5 bytes for the checksum byte
uchar serNumA[5];
uchar fifobytes;
uchar fifoValue;
AddicoreRFID myRFID;
// create AddicoreRFID object to control the RFID module
/////////////////////////////////////////////////////////////////////
//set the pins
/////////////////////////////////////////////////////////////////////
const
int
chipSelectPin = 10;
const
int
NRSTPD = 9;
//Maximum length of the array
#define MAX_LEN 16
void
setup() {
Serial.begin(9600);
// RFID reader SOUT pin connected to Serial RX pin at 9600bps
// start the SPI library:
SPI.begin();
pinMode(chipSelectPin,OUTPUT);
// Set digital pin 10 as OUTPUT to connect it to the RFID /ENABLE pin
digitalWrite(chipSelectPin, LOW);
// Activate the RFID reader
pinMode(NRSTPD,OUTPUT);
// Set digital pin 10 , Not Reset and Power-down
digitalWrite(NRSTPD, HIGH);
myRFID.AddicoreRFID_Init();
}
void
loop()
{
uchar i, tmp, checksum1;
uchar status;
uchar str[MAX_LEN];
uchar RC_size;
uchar blockAddr;
//Selection operation block address 0 to 63
String mynum =
""
;
str[1] = 0x4400;
//Find tags, return tag type
status = myRFID.AddicoreRFID_Request(PICC_REQIDL, str);
if
(status == MI_OK)
{
Serial.println(
"RFID tag detected"
);
Serial.print(str[0],BIN);
Serial.print(
" , "
);
Serial.print(str[1],BIN);
Serial.println(
" "
);
}
//Anti-collision, return tag serial number 4 bytes
status = myRFID.AddicoreRFID_Anticoll(str);
if
(status == MI_OK)
{
checksum1 = str[0] ^ str[1] ^ str[2] ^ str[3];
Serial.println(
"The tag's number is : "
);
//Serial.print(2);
Serial.print(str[0]);
Serial.print(
" , "
);
Serial.print(str[1],BIN);
Serial.print(
" , "
);
Serial.print(str[2],BIN);
Serial.print(
" , "
);
Serial.print(str[3],BIN);
Serial.print(
" , "
);
Serial.print(str[4],BIN);
Serial.print(
" , "
);
Serial.println(checksum1,BIN);
//이 아래 코드를 수정하여 자기 카드인지 아닌지 확인합니다.
if
(str[0] == 156)
//현재 코드에서는 가장 첫번째(str[0])만으로 비교하는데 늘리셔도 됩니다.
{
//또한 코드에는 '156'으로 되어있지만 자신의 카드를 확인하여 변경하시면 됩니다.
Serial.print(
"Hello Craig!\n"
);
}
else
if
(str[0] == 244) {
Serial.print(
"Hello Erin!\n"
);
}
Serial.println();
delay(1000);
}
myRFID.AddicoreRFID_Halt();
//Command tag into hibernation
}
'HardWare > 아두이노' 카테고리의 다른 글
Arduino IDE로 ESP8266 업로드 및 WIFI 예제 (5) | 2016.12.01 |
---|---|
아두이노 - RGB LED(LS5050RGB, KY-009) 사용하기 (0) | 2016.10.11 |
아두이노 - 슬립 모드(Sleep Mode), 절전 모드, 저전력 모드 (7) | 2016.07.07 |
아두이노 - WIFI(ESP8266) 모듈 이용(1) - 공유기 연결 (4) | 2016.06.22 |
아두이노 - LED 사용하기 (0) | 2016.04.30 |
- Total
- Today
- Yesterday
- vim
- jad
- java
- 파일입출력
- c언어
- 서버
- 유전
- Notification
- java url
- 파일 입출력
- 안드로이드
- 포켓몬 고
- php
- 카운터
- 테라펀딩 #투게더펀딩 #P2P투자 #부동산 소액 투자 #카카오 #토스
- android
- counter
- 인텐트
- 알고리즘
- 포켓몬 Go
- 유전 알고리즘
- vim 설치
- java 파일 입출력
- Res
- LISTVIEW
- Java Decompiler
- 자바 입출력
- 5582
- Service
- 아두이노
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |