23.9K Views
August 24, 24
スライド概要
iOSDC2024のトーク資料になります。
iPhone NFC で 実現するスマートキーの開発方法 iOSDC Japan 2024 Day2 - Track D 10:30〜 oka yuji
自己紹介 • oka yuji(おか ゆうじ) • @oka̲yuuji • 工業高校教諭(電気・電子・情報) → NRIネットコム株式会社 → サイボウズ株式会社
動画
YouTube
😇
🤔
トークの概要 ゴール • このトークを聞いて • NFCについてなんとなくわかった! • NFC使って何か開発しようと思えた! と思ってもらえたら大成功!! -> 🙆
トークの概要 • NFCとは • NFCに関する基礎知識的な話 • NFCでスマートキーを作成 • 今回やりたいことの確認 • NFCでスマートキーを作成するために必要なもの • 製作及び開発の紹介 • 最後に
NFC
NFC NFCとは
NFC NFCとは - セットアップが不要 https://www.apple.com/jp/shop/ buy-iphone/iphone-14-pro https://www.apple.com/jp/shop/ buy-watch/apple-watch
NFC NFCとは - 低消費電力であり、電源が無くても動作する!
NFC NFCとは? - 安全性が高く、環境に左右されにくい
NFCに関する基礎理解 ⚠注意
Near Field Communication 近距離無線通信
NFCに関する基礎理解 NFCとは? NFCは、Near Field Communicationの略称で、13.56 MHzの周波数を利用 する通信距離10cm程度の近距離無線通信技術です。非接触ICカードの通信お よび機器間相互通信が可能で、機器を近づけることで通信を行うため、「かざ す」動作をきっかけにした、わかりやすい通信手段として注目を集めていま す。 https://www.sony.co.jp/Products/felica/NFC/
NFCに関する基礎理解 NFCとは? - RFID同様、電源が不要な「パッシブ」と電源が必要な「アクティブ」があ り、特定のISO規格(例えばISO/IEC 14443やISO/IEC 15693)に基づいた RFIDタグを読み書きすることも可能 - RFIDに基づいた通信規格を使用しているので、一部互換性があるものの、 FeliCaのようなNFC専用の技術などに関しては互換性はない RFID ISO/IEC 14443 ISO/IEC 15693 などなど NFC
NFCに関する基礎理解 NFCとは?
NFCに関する基礎理解 NFCとは?
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag Type 1 Tag Speci cation Card Emulation mode Host Card Emulation Type 2 Tag Speci cation Reader / Writer mode Secure Element based Card Emulation Type 3 Tag Speci cation Type 4 Tag Speci cation Peer-to-Peer mode Wireless Charging mode Type 5 Tag Speci cation fi fi fi fi fi Tag NDEF Exchange Protocol (TNEP) Technical
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag Type 1 Tag Speci cation Card Emulation mode Host Card Emulation Type 2 Tag Speci cation Reader / Writer mode Secure Element based Card Emulation Type 3 Tag Speci cation Type 4 Tag Speci cation Peer-to-Peer mode Wireless Charging mode Type 5 Tag Speci cation fi fi fi fi fi Tag NDEF Exchange Protocol (TNEP) Technical
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag Type 1 Tag Speci cation Card Emulation mode Host Card Emulation Type 2 Tag Speci cation Reader / Writer mode Secure Element based Card Emulation Type 3 Tag Speci cation Type 4 Tag Speci cation Peer-to-Peer mode Wireless Charging mode Type 5 Tag Speci cation fi fi fi fi fi Tag NDEF Exchange Protocol (TNEP) Technical
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag Type 1 Tag Speci cation Card Emulation mode Host Card Emulation Type 2 Tag Speci cation Reader / Writer mode Secure Element based Card Emulation Type 3 Tag Speci cation Type 4 Tag Speci cation Peer-to-Peer mode Wireless Charging mode Type 5 Tag Speci cation fi fi fi fi fi Tag NDEF Exchange Protocol (TNEP) Technical
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag Type 1 Tag Speci cation Card Emulation mode Host Card Emulation Type 2 Tag Speci cation Reader / Writer mode Secure Element based Card Emulation Type 3 Tag Speci cation Type 4 Tag Speci cation Peer-to-Peer mode Wireless Charging mode Type 5 Tag Speci cation fi fi fi fi fi Tag NDEF Exchange Protocol (TNEP) Technical
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag NFC Forumとは、Near Field Communication(NFC)技術の標準化を推進 するための業界団体です。2004年に設立されたこのフォーラムは、NFC技術の 開発、普及、互換性の確保を目的として、世界中の主要な企業や組織が参加して います。NFC Forumは、NFC技術が安全で信頼性のある形で、さまざまなデバ イスやアプリケーションで利用されることを目指し、技術仕様の策定や標準の 定義、認証プログラムの提供を行っています。また、NFCの利用シーンを拡大 し、業界全体でのNFCの相互運用性を確保するために、ガイドラインやベスト プラクティスも提供しています。これにより、消費者は安心してNFC技術を利用 でき、企業はNFC対応の製品やサービスを円滑に提供できるようになります。
NFCに関する基礎理解 NFC Forum で定義されているModeとType Tag NFCの技術を効果的に活用するためには、NFC Forumで定義されたModeとType Tagの 理解が非常に重要です。Modeは、NFC対応デバイスがどのように通信を行うかを決定す るもので、具体的にはリーダー/ライターモード、カードエミュレーションモード、P2Pモ ードの3つの通信モードがあります。これらのモードは、それぞれ異なるユースケースに対 応しており、NFCの柔軟性と多様な応用を支えています。一方、Type Tagは、NFCタグ の種類を示すもので、Type 1からType 5までのタグが定義されています。各Type Tagは 異なる性能や機能を持っており、特定の用途や要求に応じて適切なタグが選ばれます。こ れらのモードとタグの特性を理解することは、NFCを効果的に設計・実装するための基盤 となります。したがって、NFCの基礎を理解した上で、これらのモードとType Tagの詳 細を学ぶことは、NFC技術の全体像を把握し、実践的な活用を図るために欠かせないステ ップです。
NFCに関する基礎理解 NFC Mode • Card Emulation • Reader/Writer • Peer-to-Peer
NFCに関する基礎理解 Card Emulation Mode • ICカードのように振る舞う →デジタルカードみたいなもの • Wallet Pass https://support.apple.com/ja-jp/ HT201239 https://developer.apple.com/ jp/wallet/
NFCに関する基礎理解 Card Emulation Mode
NFCに関する基礎理解 Card Emulation Mode 何の成果も得られませんでした!!
NFCに関する基礎理解 Card Emulation Mode
NFCに関する基礎理解 Card Emulation Mode https://www.youtube.com/watch?v=q5D55G7Ejs8
NFCに関する基礎理解 Reader/Writer Mode • タグやカードの中にある情報を読み取ったり 書き込んだりすることができる • Core NFC https://services.digital.go.jp/mynumbercard-check-app/
NFCに関する基礎理解 Peer to Peer • NFC対応デバイス間で通信を行う事ができる • 現在はAndroidのみ http://help.mb.softbank.jp/aquos-r/sp/ 11-18.html
NFCに関する基礎理解 3つのモードのまとめ Card Emulation ICカードのような振る舞いをする事ができるモード Reader/Writer 各Typeのタグやカードなどの読み書きできるモード Pear to Pear デバイス間で対等に通信を行う事ができるモード
NFCに関する基礎理解 Tag Type
NFCに関する基礎理解 Tag Type
NFCに関する基礎理解 NFC Forum Type 2 Tag ベ が ISO/IEC 14443A の MIFARE Ultralight ース
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] UID [0] 0000 0000 ・・・ UID / シリアル番号 [1] 内部番号 / ロックバイト [2] データ領域 [3] ・ ・ ・ Byte[2] Byte[3] 0000 0000 0000 0000
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] Byte[2] Byte[3] UID [0] 0100 1010 1100 1010 0001 1111 1100 0101 UID / シリアル番号 [1] 内部番号 / ロックバイト [2] 0000 0000 0000 0000 データ領域 [3] ・ ・ ・
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] Byte[2] Byte[3] UID [0] 0100 1010 1100 1010 0001 1111 1100 0101 UID / シリアル番号 [1] 内部番号 / ロックバイト [2] 0000 0000 0000 0000 データ領域 [3] ・ ・ ・
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] UID [0] 0000 0000 ・・・ UID / シリアル番号 [1] 内部番号 / ロックバイト [2] データ領域 [3] ・ ・ ・ Byte[2] Byte[3] 0000 0000 0000 0000
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] UID [0] 0000 0000 ・・・ UID / シリアル番号 [1] 内部番号 / ロックバイト [2] データ領域 読み取りしかできないわよ [3] ・ ・ ・ Byte[2] Byte[3] 1111 1111 1111 1111 ロック状態!!
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] UID [0] 0000 0000 ・・・ UID / シリアル番号 [1] 内部番号 / ロックバイト [2] データ領域 [3] バージョン番号 CC0 CC1 データ領域 NDEFメッセージを [4] サポートしている場合 0xE1(マジックナンバー) ・ ・ ・ Byte[2] Byte[3] 読み書きのアクセス権限 00h: 読み書き可能 0Fh: 読み取りのみ可能 ※書き換え不可 1111 1111 1111 1111 CC2 CC3 データ領域の メモリサイズ
NFCに関する基礎理解 NFC Forum Type 2 Tag • コマンドセット Byte Number Command Set Read Write Byte[0] Byte[1] Byte[2-5] 0x30 0x00 - 0xFF - 0x00 - 0xFF 0x00 0x00 0x00 0x00 (4 Byte 1ブロック分) 0xA2
NFCに関する基礎理解 NFC Forum Type 2 Tag • コマンドセット Byte Number Command Set Read Write Byte[0] Byte[1] Byte[2-5] 0x30 0x00 - 0xFF - 0x00 0x00 0x00 0x00 (4 Byte 1ブロック分) 0xA2 0x00 - 0xFF 例えば 0x30 0x00 でブロック[0](UID)をRead
NFCに関する基礎理解 NFC Forum Type 2 Tag • コマンドセット Byte Number Command Set Read Write Byte[0] Byte[1] Byte[2-5] 0x30 0x00 - 0xFF - 0x00 - 0xFF 0x00 0x00 0x00 0x00 (4 Byte 1ブロック分) 0xA2
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] UID [0] 0000 0000 ・・・ UID / シリアル番号 [1] Byte[2] Byte[3] 例えば以下をコマンドセットして書き込む 内部番号 / ロックバイト [2] 1111 1111 1111 1111 0xA2 0x04 0xFF 0x00 0xFF 0x00 データ領域 [3] データ領域 [4] CC0 CC1 ・ ・ ・ CC2 CC3
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block Byte[0] Byte[1] UID [0] 0000 0000 ・・・ UID / シリアル番号 [1] Byte[2] Byte[3] 例えば以下をコマンドセットして書き込む 内部番号 / ロックバイト [2] 1111 1111 1111 1111 0xA2 0x04 0xFF 0x00 0xFF 0x00 データ領域 [3] CC0 CC1 CC2 CC3 データ領域 [4] 1111 1111 0000 0000 1111 1111 0000 0000 ・ ・ ・
NFCに関する基礎理解 NFC Forum Type 2 Tag 完全に理解した!!
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag Category Block UID [0] UID / シリアル番号 [1] 内部番号 / ロックバイト [2] データ領域 [3] Byte[0] Byte[1] ・ ・ ・ Byte[2] Byte[3]
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag
NFCに関する基礎理解 NFC Forum Type 2 Tag • 通信方式は電磁誘導を用いた ISO/IEC 14443A に準拠したMIFARE Ultralight • メモリはスタティックとダイナミックで構成 • スタティックメモリの構成は共通 ベ が • 読み書きするコマンドセットが定義されている ース
NFCに関する基礎理解 NFC Forum Type 3 Tag https://www.sony.co.jp/Products/felica/
NFCに関する基礎理解 NFC Forum Type 3 Tag https://www.sony.co.jp/Products/felica/about/
NFCに関する基礎理解 NFC Forum Type 3 Tag • メモリの構造はType 2 と全く違う • ポーリングでType 3 を検出 • 検出時に一意な値とされているIDm(製造ID)や PMm(製造パラメータ)を取得することができる
NFCに関する基礎理解 NFC Forum Type 3 Tag • 一意の値としてIDm D0 D1 D2 … 先頭の8 Byte がIDm PMm(各コマンド含む)
NFCに関する基礎理解 NFC Forum Type 3 Tag
NFCに関する基礎理解 NFC Forum Type 3 Tag
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成 やりたいこと 独 自 の CE
NFCを利用したスマートキーの作成 やりたいこと 独 自 の CE
NFCを利用したスマートキーの作成 やりたいこと 既存のPass (今回はモバイルSuica) Reader
NFCを利用したスマートキーの作成 やりたいこと 既存のPass (今回はモバイルSuica) Reader
NFCを利用したスマートキーの作成 やりたいこと 既存のPass (今回はモバイルSuica) Reader
NFCを利用したスマートキーの作成 やりたいこと 既存のPass (今回はモバイルSuica) Reader
NFCを利用したスマートキーの作成 やりたいこと 既 存 ( 今 回 は の Pa ss モ バイ ル Su ica )
NFCを利用したスマートキーの作成 今回検証すること - Core NFCを用いてモバイルSuicaのIDmを読み取る 既存のPass (今回はモバイル Suica) Reader (Core NFC)
NFCを利用したスマートキーの作成 今回検証すること - Wi-Fiモジュールを持ったマイコンを使っ てモバイルSuicaのIDmを読み取る 既 ( 今 回 存 は モ の Pa ss バイ ル Su ica ) コレ!!
NFCを利用したスマートキーの作成 今回検証すること 既存のPass (今回はモバイル Reader 既 ( 今 回 存 は Suica) モ の Pa バイ ル Su IDm = IDm ss ica )
製作及び開発
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成 ¥124,800
NFCを利用したスマートキーの作成 RC-S620/S ESP32-WROOM 6Pフラットケーブル ピッチ変換基板
NFCを利用したスマートキーの作成 RC-S620/S Arduino Mega 2560 6Pフラットケーブル ピッチ変換基板
NFCを利用したスマートキーの作成 RC-S620/S Arduino Mega 2560 6Pフラットケーブル ピッチ変換基板 ¥2,850 ¥7,490 ¥550
NFCを利用したスマートキーの作成 Arduino Mega 2560 の選定理由 • RC-S620Sとの通信では、115,200bpsのシリアルで接続 • ESP-32や通常のArduinoではシリアルピンが足りなく 接続しながらシリアルモニタでコンソールを確認できない • Arduino Mega 2560では、0/1番ピンを使う ハードウェアシリアルの他に、3系統の ハードウェアシリアルを使うことができる →検証に最適!
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成 約 ¥1,000
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成 https://blog.felicalauncher.com/?p=2677
NFCを利用したスマートキーの作成 4. GND 3. TxD ⇆ RX1(19) 2. RxD ⇆ TX1(18) 1. Vcc(3.3V)
NFCを利用したスマートキーの作成 TX1 RX1 TxD RxD
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成 fl fl • #include “Wprogram.h → #include “Arduino.h • Serial.write(data, len) → Serial1.write(data, len) • Serial.available() > 0 → Serial1.available() > 0 • data[nread] = Serial.read() → data[nread] = Serial1.read(); • Serial. ush() → Serial1. ush();
NFCを利用したスマートキーの作成
NFCを利用したスマートキーの作成
デモ
NFCを利用したスマートキーの作成 デモ 既存のPass Reader (今回はモバイルSuica) (Core NFC)
NFCを利用したスマートキーの作成 デモ コレ!! 既 存 ( 今 回 の P モ as バイ s ル は Su ica )
NFCを利用したスマートキーの作成 デモ https://www.sony.co.jp/Products/felica/business/products/reader/RC-S620.html
NFCを利用したスマートキーの作成 デモ https://www.switch-science.com/products/353
NFCを利用したスマートキーの作成 デモ 😇 https://www.switch-science.com/products/353
NFCを利用したスマートキーの作成 デモ https://www.sony.co.jp/Products/felica/business/products/reader/RC-S660S.html
NFCを利用したスマートキーの作成 デモ https://www.switch-science.com/products/9660
NFCを利用したスマートキーの作成 デモ 😇 •Arduino向けのSDKはない! •記事もない!
NFCを利用したスマートキーの作成 デモ
NFCを利用したスマートキーの作成 デモ
NFCを利用したスマートキーの作成 デモ
NFCを利用したスマートキーの作成 デモ
NFCを利用したスマートキーの作成 デモ 🤔
NFCを利用したスマートキーの作成 デモ
NFCを利用したスマートキーの作成 デモ https://www.sony.co.jp/Products/felica/business/tech-support/#Port
NFCを利用したスマートキーの作成 デモ SDKも近日公開!
NFCを利用したスマートキーの作成 デモ 詳細はまたいつかどこかで! https://www.sony.co.jp/Products/felica/business/tech-support/#Port
デモ
さいごに
その他 参考資料など • RC-S660/S https://www.switch-science.com/products/9660 https://www.sony.co.jp/Products/felica/business/products/reader/ RC-S660S.html • RC-S620/S https://www.switch-science.com/products/353 https://www.sony.co.jp/Products/felica/business/products/reader/ RC-S620.html
その他 参考資料など • FeliCa共通 技術情報 https://www.sony.co.jp/Products/felica/business/tech-support/ • Arduino向けRC-S620/S制御ライブラリ https://blog.felicalauncher.com/sdk̲for̲air/?page̲id=2699 • RC-S660/S Starter Pack https://www.sony.co.jp/Products/felica/business/tech-support/#Port • NFC Forum https://nfc-forum.org/
その他 参考資料など • Felica https://www.sony.co.jp/Products/felica/about/ • NFC https://www.sony.co.jp/Products/felica/NFC/
その他 免責事項 • 公開している資料やコードについてはあくまで個人で楽しむ範囲を想定した もので、全て自己責任のもと、ご利用ください。 • トークを中心に作成した資料となりますので一部正確性に欠ける表現もあり ます。 • スライドの資料は2024年8月頃に作成されたもので、将来的に内容に変更が 生じる場合があります。
ご清聴ありがとうございました