LoginSignup
0
0

PN532 NFC RFID module + elechouse を Arduino UNO で試す

Last updated at Posted at 2022-03-21

(Felica/Mifare/NFC チャレンジシリーズ) その他の記事はこちら 「Felica/Mifare/NFC でいろいろ実験」
https://qiita.com/nanbuwks/items/1f416d6e45a87250ee0a


「PN532 NFC RFID module を Arduino UNO で読む」
https://qiita.com/nanbuwks/items/42f639e7eec928181298

では Arduino UNO で SPI 接続を使ってライブラリをいくつか試してみました。その結果、

FeliCa を使う場合は elechouse 一択のようです。

と書きました。以下は elechouse で更に SPI 接続以外での動作を検証してみました。

環境

ライブラリは以下の記事のようにしてインストールしています。
「PN532 NFC RFID module を Arduino UNO で読む」
https://qiita.com/nanbuwks/items/42f639e7eec928181298

また、以下では実験ごとにスイッチをインターフェースに合わせて都度変更しています。

image.png

SPI

接続して
image.png

サンプルスケッチを呼び出します。
「ファイル」-「スケッチ例」-「カスタムライブラリのスケッチ例」-「PN532」-「ReadMifare」を選びます。

以下のように変更します。

#if 1
  #include <SPI.h>
  #include <PN532_SPI.h>
  #include "PN532.h"

  PN532_SPI pn532spi(SPI, 10);
  PN532 nfc(pn532spi);
#elif 0
  #include <PN532_HSU.h>
  #include <PN532.h>
      
  PN532_HSU pn532hsu(Serial1);
  PN532 nfc(pn532hsu);
#else 
  #include <Wire.h>
  #include <PN532_I2C.h>
  #include <PN532.h>
  PN532_I2C pn532i2c(Wire);
  PN532 nfc(pn532i2c);	
#endif

問題なく動作しました。

電源供給を 3.3V にしてみる

問題なく動作しました。

I2C

以下のように接続します。
image.png

スケッチの先の部分をI2C用に直します。


#if 0
  #include <SPI.h>
  #include <PN532_SPI.h>
  #include "PN532.h"

  PN532_SPI pn532spi(SPI, 10);
  PN532 nfc(pn532spi);
#elif 0
  #include <PN532_HSU.h>
  #include <PN532.h>
      
  PN532_HSU pn532hsu(Serial1);
  PN532 nfc(pn532hsu);
#else 
  #include <Wire.h>
  #include <PN532_I2C.h>
  #include <PN532.h>
  PN532_I2C pn532i2c(Wire);
  PN532 nfc(pn532i2c);	
#endif

スイッチもI2C用に変更します。

問題なく動作しました。

SWHSU

以下のように接続します。

image.png

スケッチ変更

シリアル接続については、通常は HSU モードであり、PN532_HSU.h をインクルードするのですが、これはハードウェアシリアルが前提のようです。
Arduino Uno にはハードウェアシリアルは1つしかなく、それをプログラムやprint表示に使うとすると PN532_HSU.hは使えません。

ソフトウェアシリアルを使う場合は、PN532_SWHSU.h を使うようです。
以下のように直します。


#if 0
  #include <SPI.h>
  #include <PN532_SPI.h>
  #include "PN532.h"

  PN532_SPI pn532spi(SPI, 10);
  PN532 nfc(pn532spi);
#elif 1
  #include <SoftwareSerial.h>
  #include <PN532_SWHSU.h>
  #include <PN532.h>
  SoftwareSerial SWSerial( 10, 11 ); // RX, TX
  PN532_SWHSU pn532swhsu(SWSerial);
  PN532 nfc(pn532swhsu);
#else 
  #include <Wire.h>
  #include <PN532_I2C.h>
  #include <PN532.h>
  PN532_I2C pn532i2c(Wire);
  PN532 nfc(pn532i2c);	
#endif

問題なく動作しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0