PN532 V3 Controller
NFC / RFID 규격의 신호로 전송되는 정보를 읽기 위한 모듈로 범용적으로 사용되고 있는 부품 중 하나가 PN532 입니다. 현재 판매되고 있는 버전의 대부분은 “버전 (v) 3” 으로 스위치가 컨트롤러 상단에 배치되어, 이를 사용해 입출력 모드의 선택과 변경이 용이하도록 설계된 모듈입니다. 세 가지 (SPI, I2C, UART (High Speed UART)) 의 입출력 방식을 지원합니다.

하단의 사진을 기준으로 맨 위쪽 좌측에 입출력 모드를 변경하기 위한 2 개의 스위치가 자리하고 있습니다. SPI 방식으로 연결하기 위해서는 오른쪽 박스 안의 여섯 개의 핀이 모두 연결되어 있어야 하고, 1번 스위치는 [꺼짐], 2번 스위치는 [켜짐] 상태로 스위치 변경이 필요합니다. 스위치 부분을 기준으로 왼쪽이 2번 스위치, 오른쪽이 1번 스위치이며, 위쪽 방향으로 올리면 [꺼짐] 상태로, 아래쪽 방향으로 내리면 [켜짐] 상태로 전환됩니다.
모듈은 3.3V ~ 5.0V 범위 내에서 작동하며, ESP8266-12E 혹은 Wemos D1 Mini 에 연결해 사용하더라도 문제 없이 사용할 수 있고, 소비전력은 저전력으로 크지 않은 편에 속합니다.

배선
PN532 | ESP8266-12E |
---|---|
SCK | D5 |
MOSI | D7 |
SS | D0 |
MISO | D6 |
이 외에도 VCC 와 GND (Ground) 선을 연결해줍시다.
테스트
일단 https://github.com/adafruit/Adafruit-PN532 에서 필요한 Library (라이브러리) 를 다운로드 받아 Arduino IDE 에 추가 시킵니다. [라이브러리 관리] 창에서 직접 PN532를 검색하는 방법으로도 다운로드와 라이브러리 참조가 가능합니다.
이후, Library (라이브러리) 에 포함된 PN532 관련 예제를 통해 테스트와 디버깅이 가능합니다만, 위에서 설명한 방법과 같이 배선을 완료하였다면, 아래의 코드와 같이 일부를 수정하여 작동하는데 문제 없도록 처리 해 주시면 됩니다. setup() 함수와 loop() 함수를 제외한다면 실제로 필요한 코드는 7 줄 정도로 단순합니다.
#include <ESP8266WiFi.h> #include <Adafruit_PN532.h> #define PN532_SCK (D5) //(2) #define PN532_MOSI (D7) //(3) #define PN532_SS (D0) //(4) #define PN532_MISO (D6) //(5) Adafruit_PN532 nfc(PN532_SS); void setup(void) { ... } void loop(void) { ... }
포스팅을 마치며…
예제를 실행시켜보시면 카드의 ID 값을 가져오는데, 아직은 어떻게 써야 할 지 감이 오질 않네요. 대중교통 카드의 잔액을 간편하게 조회할 수 있는 기기 나 한번 만들어봐야겠습니다.

[Arduino] 근거리 무선 통신 기술, NFC 와 ESP8266 을 이용한 선불교통카드 잔액 조회기
외국인 친구들이 한국에 여행 차 방문하는 경우가 종종 생깁니다. 상황이 되면 제가 친구들을 따라다니며 가이드를 해 주는데 외국인 친구들이 한국에 들렀을 때 대중교통을 가장 저렴하면서도 편하게 이용할 수 있는 방법 중 하나가 바로 편의점에서 선불 교통카드를 구매한 후 충전하여 사용하는 방법입니다. 그러나, 가장 많은 불편함을 느끼며 제게 이야기 해주는 것 중 하나가 선불 교통카드의 잔액 […]
고맙습니다.