Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ベルトガジェットにチャレンジしてみる

7,514 views

Published on

FeliCaを用いたライダーベルトにチャレンジしてみました。

Published in: Technology
  • Be the first to comment

ベルトガジェットにチャレンジしてみる

  1. 1. はじめに これは仮面ライダーの変身ベルトを自分のもっている IT技術でどこまで近いものを作ることができるかに 挑戦するというものです。 生暖かく見守ってください。
  2. 2. 自己紹介 氏名:Shigeo Ueda(Twitter:ueponx、Facebook:Shigeo Ueda) 仕事:インフラ設備の保守 好きなもの •特撮、アニメ(最近よかったのは「オーバーロード」) •ガジェット作成(Arduino、mbed、Raspberry Piがベース) •プログラミング(C#、Java、JavaScript)
  3. 3. 今回作ろうとしたもの 仮面ライダー電王(以下電王)で変身する際に 使用したベルトにチャレンジ 平成ライダーでは変身ベルトのことをドライバー ということもありますが、 電王ではベルトといいます 図:デンオウベルト→
  4. 4. 仮面ライダー電王とは? 2007年の現代に現れ、時間の改編を企てる 侵略者イマジンと、これを阻止するために戦う 仮面ライダー電王・野上良太郎、 そして良太郎に憑依し力を貸す 味方イマジン達の活躍を描く。 (Wikipediaより)
  5. 5. なるほど… まったく、わからん
  6. 6. デンオウベルトの仕組み デンオウベルトはベルトのバックル部分に チケットをかざして変身 (SUICAでいうところのタッチ) 複数のパスがあり、タッチする ことでフォームチェンジ (特性と形状の変化)
  7. 7. 完全に一致!
  8. 8. バックルとパスの関係から 何かと何かを近づけて、 その認識と識別が行えれば 実現が可能!!
  9. 9. 近づいたことを検知する方法 「何かと何かを近づける」 近接・非接触の技術がキーワード
  10. 10. 一般的な近接・非接触の技術  NFC(AndroidやWindows Phoneなどに対応)  FeliCaなどの非接触式ICカード  SuicaやmanacaなどのIC系交通カード  nanacoなどの電子マネー  Beacon  iBeacon  Eddystone(エディストン)
  11. 11. 一般的な近接・非接触の技術 リーダー/カード(タグ)など入手性を考えて 一番容易に使用できるのは“FeliCa”のため それを使用する方向
  12. 12. 準備 認識させるものが決定したので以下のものを準備 • PC(Windows10 or 8.1) • FeliCaリーダー(パソリ:RC-S380) • SUICA、MANACA、nanaco • Visual Studio 2015(C#)
  13. 13. 必要な機能 今回必要な機能は以下となります 1. ICカードの読み込み 2. ICカードの種類、またはIDを識別 3. 識別によって音声の出力
  14. 14. 試行錯誤その1
  15. 15. Windows8の機能の検討 •まず手始めにWindows8では近接通信(Proximity API)があったと記憶し ていたのでそれで実験してみることにしました。 Windows.Networking.Proximity名前空間に用意されたクラスライブラリを 使って、NFCを活用したアプリを開発できます… だが、FeliCaテメーはダメだ
  16. 16. Windows8の機能の検討 Windows8の近接通信(Proximity API)ではFeliCa未対応 (明確に記載されているページを誰かおしえてください)
  17. 17. 試行錯誤その2
  18. 18. PaSoRiのStarter Kitの検討 PaSoRiのドライバと開発のお試し版のような感じで配布されているスターターキット (http://www.sony.co.jp/Products/felica/business/products/ICS-D004_002_003.html )ドライバと そのDLL呼び出し用ラッパサンプルを含む サンプル付きなので、楽勝と甘く見ていましたが、ソースの改変してコンパイルエラーはなくなった けど動作せず。Webの情報ではPaSoRiの型番がRC-S380になってから仕様(FeliCaベースから ISO18092/21481ベースへ。そのためRC-S380ではNFCには対応)が変更となった?
  19. 19. \(^O^)/オワタ
  20. 20. ほかの方法をさがした よく考えてみたらPC/SC(Personal Computer/Smart Card)APIがあっ た このAPIは旧来から存在していたAPIなので、全く考えていなかったが、 パソリでも使用可能の模様 これを使えばそれほどストアアプリでなくても実装可能なので、制限 事項もない
  21. 21. PC/SC APIの簡単な仕組み プロジェクトでwinscard.dllをLoadLibraryで読み込み、APIの各機能はDllImport その後以下の手順でAPIの呼び出し 1. SCardEstablishContext() : スマートカードサービスへの接続 2. SCardListReaders() : 認識しているリーダの一覧を取得 3. SCardGetStatusChange() : リーダの状態の変化を検知
  22. 22. PC/SC APIの簡単な仕組み 4. SCardConnect() : カードと接続 5. SCardTransmit() : カードに対してコマンドを送信 6. SCardDisconnect() : カードとの接続を切断 7. SCardReleaseContext() : リソースの開放 この手順でカードから情報を取得可能!
  23. 23. 実装してみた 読み出しのコマンドをAPI経由でIDmを取得 IDmとは? FeliCaのICチップ製造時に、ICチップに記録される固有のID番号 トレーサビリティと個体識別を目的としているため、編集は不可能 前述のSCardTransmit() で{0xFF,0xCA,0x00,0x00,受信サイズ}と送るとIDmを返 します。 あとは音声が鳴らせればある程度完了となります。
  24. 24. デモ
  25. 25. 終わりに(?) 今回は選定の部分でうろ覚えの知識を使ったため、試行錯誤をしま したがそれ以外は引っかかる部分はなし 自作おもちゃ程度ですが、うまく応用すればタイムカードや出欠シス テムは容易に作れる ただし、IDmは特別なルールにしたがって発行されているものではな いので、事前に紐付け可能な社員証・学生証などの利用が現実的
  26. 26. さて 今回は変身ベルトをつくるという目的で作っていましたが、 本当にこれはベルトといえるのか? PCあり、カードリーダありでは、身に付けるには圧倒的に重く、現実 的ではないような気が・・・ 同じ技術であればAndroidを使ったほうがよりそれっぽい?
  27. 27. Androidを使った場合のメリット 本体にリーダーがあるのでコストがかからない 電源を別途用意しなくていい ベルトのバックルに近い大きさに収まる かなりメリットがあります。 敗北感があったので、Andoroidで実装してみた!
  28. 28. AndroidManifest.xml <uses-feature android:name="android.hardware.nfc" android:required="true" /> <uses-permission android:name="android.permission.NFC" /> <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="17" /> <meta-data android:name="android.nfc.action.TAG_DISCOVERED" android:resource="@xml/nfc_filter" />
  29. 29. プロジェクト内にxml/nfc_filter.xmlを作 成 resourceタグ内に <tech-list> <tech>android.nfc.tech.IsoDep</tech> <tech>android.nfc.tech.NfcF</tech> </tech-list>
  30. 30. IDmを取り出すコード Intent intent = getIntent(); // Tag から情報を取得 Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); if (tag != null) { // IDmを取得 byte[] idm = tag.getId(); }
  31. 31. デモ2
  32. 32. 大きなデメリットが! リーダーの感度がわるく、認識に時間が掛かることが多い。 Androidスマホは小さな本体にいろいろなものを詰め込んだ  認識が行える領域がわかりにくい  感度が圧倒的に悪くなっている スマートフォンだけに限らず、Nexus7のようなタブレットでも同様に感 度が低いので状況としては厳しい
  33. 33. 本当の終わりに 今回は二転三転しましたが、 やはり完成度は微妙だったかもしれません いっそのこと バンダイで発売中の「大人の為の変身ベルト」に 手をだすべきなのかもしれません。 http://www.b-boys.jp/csm/
  34. 34. ueponxの次回作に ご期待ください

×