証明書発行機用USB接続ICカードリーダーの製作
総合技術センター
計測・制御技術分野 飯田 仁
(Hitoshi Iida)
1.はじめに 授業出席管理システムの導入時にいろいろ とお世話になった,学務部・教務情報係長か らの「証明書発行機の更新を支援して欲しい」 との相談によりタイトルの業務が発生した。 この業務実施の結果,従来磁気カードリー ダーのみであった証明書発行機用にUSB接続 ICカードリーダーを製作・設置することがで きたので報告する。 2.本学の学生証について 本学で使用している学生証はMifare規格で, ICチップが内蔵されている磁気ストライプ付 ICカードである。これらのICチップと磁気ス トライプには学生番号等の情報が記憶されて おり,それぞれICカードリーダーと磁気カー ドリーダーにて情報を読み出すことができる。 3.証明書発行機について 学生証を用いて,本人の学生・生徒旅客運 賃割引証(JR学割証)や成績証明書などが自 動的に発行される装置である。この証明書発 行機の内部にはPCが設置されており,ネッ トワークにて教 務情報 システムと接続 して いる。今回このPCの更新に合わせ,外部の 筐体をはじめ,印刷用のプリンター等を一新 することになった。図1に従来の証明書発行 機の外観を示す。 今回の 更新 作業で は筐 体部分 は将 来の 更 新に対応可能な ように 汎用性を持たす こと が重要で,PCやプリンターの更新が必要に なった場合でも,筐体などは流用できるよう に様々なアイディアを盛り込んだが,紙面の 関係で筐体に関 するこ とはここでは割 愛す る。図2に新証明書発行機の外観を示す。 従来の 証明 書発行 機に は学生 証か ら学 生 番号等の情報を 読み取 るための入力装 置と して,磁気カードリーダーのみが設置されて いた(タッチパネル式の入力装置もあるが, 学生番号を手入力すると,入力間違いや成り すましによる他 人の証 明書を入手する こと ができるため利用しない)。 図1 従来の証明書発行機外観 図2 新証明書発行機外観 今回,磁気カードリーダーには市販の製品 を利用し,ICカードリーダーを作製,外箱(ケ ース)を加工し同一のケースに組み込むこと でハイブリッド式カードリーダーを製作した。 図3に製作した ハイブ リッド式カード リー ダーの外観を示す。図3左側にICカードリー ダー,右側に磁気カードリーダーを内蔵して いる。製作したICカードリーダーは,授業出 席管理システム の学生 証読み取り用カ ード リーダーを改良し,PCに直接接続可能なUSB 接続としたものである。また,将来のPC更 新にも対応可能なように,数あるUSBデバイ 11スの中からキーボードと同じ仕様(HIDデバ イス)として製作した。 図3 カードリーダー外観 4.回路の設計・製作 手始め にユ ニバー サル 基板上 にマ イコ ン と カ ー ドリ ー ダ ー モ ジ ュ ー ル とUSBコ ネク タを実装した回路を試作し,動作確認とプロ グラムの開発を行った。 実 機 へ の 搭 載 基 板 は 基 板 CAD ソ フ ト EAGLEを利用して作製し,外部業者であるP 板.comに製造を発注した。必要数が4台だっ たので,予備として1台分の合計5台分の基板 を作製した。 基板への部品の実装は自身で行ったが,抵 抗 や コ ン デ ン サ は 小 型 (1608)の 表 面 実 装 部 品を用いたため苦労した。結果論ではあるが, 基板価格は上昇 するが 基板の製造時に 実装 も追加で依頼すれば良かったと反省した。 5.プログラム 学生証から取得する情報で,証明書発行機 が要求する情報は,授業出席管理システムで 作製したICカードリーダーで全て取得してい たので,カードリーダー部のプログラムは基 本的に流用した。ただし,証明書発行機の用 途には不要なデータは取得しないこととした。 また,接続するPCへの送信データは,磁気カ ードリーダーを参考に不要なスペースに関し ては送信しないこととし,証明書発行機が正 常に動作することを確認した。 USB通信部分はUSBプロトコルアナライザ を使用し,USBキーボードの通信内容を確認 し,参考とした。USB規格についても調査し, データに問題が無いことを確認した。 USBプロトコルアナライザはUSB Chiefと Windows XPのPCを使用した(図4)。 図4 USB Chief外観 本カードリーダーをPCに接続してから利 用可能な状態になるまでの処理(初期化処理) はマイクロチップのライブラリをそのまま利 用し,ICカードリーダーが読み取ったデータ を,証明書発行機が処理可能なデータ列に変 更して送信する部分のプログラムを新規作成 した。ライブラリを利用することで複雑な初 期化処理の開発を回避することができ,短期 間で製作することができた。図5に単純化し たUSB接続時のモード遷移を示す。図5のよ うな処理がライブラリを用いることにより実 現できる(実際はもっと複雑である)。 接続開始 Attached Powered Default Address Confiured 接続完了 図5 USB接続時のモード遷移 通常のPICでの開発環境(MPLAB IDE+Cコ ンパイラ)に加えて,開発用のライブラリ (Microchip-Application-Libraries)をダウンロ ードしてインストールする。今回利用したラ イブラリのバージョンはv2012-10-15である。 よくあることだが,ライブラリ等のバージョ ンが変わるとコンパイル時にエラーとなる場 12
合があるが,このようなときはコンパイラの エラーメッセージを注意深く確認すると原因 を見つけることができる時もあるので,あわ てずに確認して欲しい。 以下に必要なファイルを示す。インストー ルされたライブラリから,現在のPICプロジ ェクトフォルダーにコピーして利用する。 表1 ライブラリファイル一覧 ./Compiler.h ./GenericTypeDefs.h ./HardwareProfile.h ./Keyboard.c → ./main.cに改名 ./usb_config.h ./usb_descriptors.c ./usb_device.c ./usb_function_hid.c ./USB/usb.h ./USB/usb_ch9.h ./USB/usb_common.h ./USB/usb_device.h ./USB/usb_device_local.h ./USB/usb_function_hid.h ./USB/usb_hal.h ./USB/usb_hal_local.h ./USB/usb_hal_pic24.h 表1中の斜体で示したファイルは修正が必要 で,主な変更箇所はファイルへのパスである。 ただし,HardwareProfile.hはデモボードのI/O ポート設定になっているため,製作した基板 のI/Oポート設定に変更した。 開発手順は 1. デモプログラムの確認 2. タイマー割り込み実装 3. PC-PIC間のRS232C通信確認 4. ICカードリーダー機能実装(RS232C) 5. USBでのデータ送信 6. USB通信の妥当性確認 以上のように実施した。ICカードリーダーと して利用するためライブラリ内のファイルへ の変更はmain.cの一部のみとした。今回は, ICカードリーダー機能実現のため,表2に示 すファイルを前述のとおり出席管理システム 用のファイルから利用した。 表2 追加ファイル一覧 ./ DELAY.c 待ち時間用 ./ NFC.c ICカードリーダー用 ./ RS232.c RS232通信用 ./ user_app.c ユーザーアプリ用 表2のファイルはICカードリーダーとして動 作させるために必要なファイルに加え,製作 中にデバッグを実施するために必要なファイ ルである。 6.USBの通信データ(HIDの場合) USBキーボードとして動作するデバイスは キーが押されると「該当するコード」をPCに 送信し,放されると「放されたことを示すコ ード」が送信される。図6にプロトコルアナ ライザの画面を示す。押した,放したという 一連の動作が対となりデータが送信されてい る。 図6 プロトコルアナライザの画面 図6では送信データとして「5012010528」と いう学生番号をUSBキーボードより入力した 際の送信データで,”5のコード”,”放したコ ード”,”0のコード”,”放したコード”という 具合に「0x22,0x00,0x27,0x00,・・・」とデー タが送信されていることがわかる。今回製作 した非接触式ICカードリーダーでも同様のデ ータとなっていることを確認し,動作確認を 実施した。 なお,実際に送信されるデータは,1回(1 13
文字)あたり8バイトとなっており,前述のよ うに対となるため16バイトのデータにて1文 字の入力を表すことになる。送信されるデー タを表3に示す。実際のプログラム時は送信 バッファに値を設定すれば,ライブラリが勝 手に送信処理を実施してくれるので,特別意 識して送信データを作成する必要はない。 表3 USB送信データ例 キー 送信データ(16進数) 1 00 00 1E 00 00 00 00 00 2 00 00 1F 00 00 00 00 00 3 00 00 20 00 00 00 00 00 4 00 00 21 00 00 00 00 00 5 00 00 22 00 00 00 00 00 6 00 00 23 00 00 00 00 00 7 00 00 24 00 00 00 00 00 8 00 00 25 00 00 00 00 00 9 00 00 26 00 00 00 00 00 0 00 00 27 00 00 00 00 00 7.まとめ 今回は 証明 書発行 機の 更新に 合わ せ非 接 触式ICカードリーダーの増設を行ったが,更 新作業はシステ ムを運 用するうえで避 けて は通れない問題である。PCを利用している システムではOSを更新するごとに周辺装置 のドライバーも更新しなければならず,入力 装 置 で は 専 用 ド ラ イ バ ー の 不 要 な HIDデ バ イ ス の よう なUSB装 置 と す る こと で 更 新 作 業の負担も軽減できると感じた。今後は製作 した非接触 ICカ ードリ ーダーが安定し て動 作するか検証を行いたいと思う。 最後になったが図7に回路図を示す。 参考文献: [1] 生理学実験研究データベース。 PIC24FJ64GB002 の USB 機能をテストする 回路。http://www.nips.ac.jp/tech/ [2] PIC で楽しむ USB 機器自作のすすめ 後 閑哲也 著 技術評論社 図7 作成した非接触式IC カードリーダーの回路図 14