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

More Related Content

More from Shigeo Ueda

ソーシャルストリーミングリモコン
ソーシャルストリーミングリモコン ソーシャルストリーミングリモコン
ソーシャルストリーミングリモコン
Shigeo Ueda
 

More from Shigeo Ueda (11)

SeeedJP User Group 情報交換会発表資料
SeeedJP User Group 情報交換会発表資料SeeedJP User Group 情報交換会発表資料
SeeedJP User Group 情報交換会発表資料
 
ソーシャルストリーミングリモコン
ソーシャルストリーミングリモコン ソーシャルストリーミングリモコン
ソーシャルストリーミングリモコン
 
ソーシャルTvリモコンの作成
ソーシャルTvリモコンの作成ソーシャルTvリモコンの作成
ソーシャルTvリモコンの作成
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
 
技適あり!ESP8266搭載WiFiモジュールをArduino化しよう!
技適あり!ESP8266搭載WiFiモジュールをArduino化しよう!技適あり!ESP8266搭載WiFiモジュールをArduino化しよう!
技適あり!ESP8266搭載WiFiモジュールをArduino化しよう!
 
E2D3で地図を作画してみよう
E2D3で地図を作画してみようE2D3で地図を作画してみよう
E2D3で地図を作画してみよう
 
Windows10のお気に入りの機能を使いやすくしてみる
Windows10のお気に入りの機能を使いやすくしてみるWindows10のお気に入りの機能を使いやすくしてみる
Windows10のお気に入りの機能を使いやすくしてみる
 
変身ベルトアプリ謎
変身ベルトアプリ謎変身ベルトアプリ謎
変身ベルトアプリ謎
 
AndroidStudioのインストールをゼロからしてみる
AndroidStudioのインストールをゼロからしてみるAndroidStudioのインストールをゼロからしてみる
AndroidStudioのインストールをゼロからしてみる
 
Kinect入門
Kinect入門Kinect入門
Kinect入門
 
Python toolforvsをインストールをしてみる
Python toolforvsをインストールをしてみるPython toolforvsをインストールをしてみる
Python toolforvsをインストールをしてみる
 

Recently uploaded

Recently uploaded (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 

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