본문 바로가기
Programming Arduino

Arduino 실습 4. RFID 통신.

by jjerryhan 2014. 10. 28.
반응형

1. RFID 를 위한 RC522 모듈을 Arduino UNO 에 연결합니다. 


 * Pin layout should be as follows:

 * Signal     Pin              Pin               Pin

 *            Arduino Uno      Arduino Mega      MFRC522 board

 * ------------------------------------------------------------

 * Reset      9                5                 RST

 * SPI SS     10               53                SDA

 * SPI MOSI   11               51                MOSI

 * SPI MISO   12               50                MISO

 * SPI SCK    13               52                SCK


- 전원은 3.3V 에 연결합니다. 




- 사진에 keychain 형태의 rfid 단말과, card(교통카드 같은) 형태의 단말도 보실 수 있습니다.



2. RFID RC522 를 위한 Library 를 Sketch 에 추가합니다. 

- 제가 사용한 library 는 

url : https://github.com/miguelbalboa/rfid 입니다.



- 위 경로에서 라이브러리를 "Download ZIP" 으로 다운로드 한후 압축을 해제 합니다.

- 아래와 같이 익숙한 library 구조를 유지하고 있습니다. 


- 해당 library 는 두가지 방식으로 Sketch 에 넣을 수가 있는데요. 

1) 압축해제한 폴더를 직접 Applications -> Arduino.app 상의 library 폴더에 복사합니다.

이때 압축해제한 폴더명을 의미있게 수정하시기 바랍니다. 폴더명 그대로 Sketch IDE 에 출력이 되기 때문입니다. 

저는 RFID-RC522 라고 이름을 주었습니다. 



- 복사를 완료한 후 Arduino IDE 를 재기동 하면 아래와 같이 복사해 넣은 library 가 포함되 있는 것을 확인할 수 있습니다.





2) 또는 Arduino IDE 의 Import Library 기능을 이용해 특정 경로에 있는 Library 의 직접 추가도 가능합니다. 


- 직접 복사해서 추가하던, Import Library... 기능을 통해서 추가하던 결과는 동일합니다. 



3. 추가한 Library 의 예제를 불러옵니다.

File->Examples->RFID-RC522->DumpInfo




4. 소스 확인

- RFID 모듈 콘트롤에 필요한 라이브러리를 include 합니다.

- SS_PIN 과 RST_PIN 번호를 지정합니다. 이 지정 번호는 uno board 와 rfid module 이 연결된 번호기준으로 해야겠지요.

- setup() 에서 serial 통신 port 를 초기화하고 SPI bus 를 초기화하고, mfrc522 를 초기화합니다.

- loop() 에서 mfrc522 에 특정 rfid device 가 확인되는 지 확인하여, rfid device 가 확인될 경우, 해당 정보를 Dump 하여, serial port 로 해당 정보를 출력합니다. 


5. 결과 확인

- 컴파일 및 Upload 를 수행합니다.




- 업로드가 완료되면 Arduino Sketch 에서 Tools->Serial Monitor 를 엽니다. 




- 그런 후 RFID Module 에 rfid 칩이 박혀있는 keychain 또는 card 를 가까이 대면, 





- 해당 rfid 정보가 dump 되어 arduino 의 serial port 로 전송되게 되어, Serial Monitor 에서 해당 출력정보를 확인할 수 있습니다.


- keychain 형식의 rfid 를 인식하였을 경우이며, 중간에 제거하면 위와 같이 communication 에 timerout 이 발생합니다.


- keychain 형식의 rfid 에 대한 전체 정보가 dump 되었습니다.


- card 형식의 rfid 에 대한 전체 정보가 dump 되었습니다. (UID 가 서로 다릅니다. )


* RFID 라이브러리와 함께 포함되어 있는 추가 예제를 더 확인하시기 바랍니다. 이번 실습도 여기까지.