FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

「RFIDタグからシリアル番号(UID)を取得する」のtiny13A版

「RFIDタグからシリアル番号(UID)を取得する」 のターゲットを安いものでできないかと考えていたら、ATtiny13A(@50円2018年2月秋月)を思い出した。それで、今回はATtiny13Aへの移植の話だ。

C言語なのでソースコードの大半はそのまま使える。初期設定やポートのI/Oなどのハードウェアに依存する部分のみ改変すればよいので、ソースコードの変更はすぐに出来た。しかし、コンパイルは正常終了したが、プログラムメモリの使用率が140%になり、遭えなく撃沈されてしまった。僅か0.5kワードのATtiny13Aに過度の期待を寄せてはいけない。同じ価格のPIC12F509(@50円2018年2月秋月)は1kワードあるので、この点では優位性があるが、こちらはスタックが2段しかなく使えない。

実装メモリの倍にはなっていないので、アセンブラで書けば収まりそうに思う。SPIインタフェースでは最低4本のポートを喰うので、少ピンでやるならI2Cインタフェースのリーダライタモジュールを使ってやりたい。

と言うことで、今回はこれで御仕舞い。

撃沈されたプロジェクトは ここから ダウンロードできる。
スポンサーサイト



  1. 2018/02/18(日) 15:50:55|
  2. RFID
  3. | コメント:0

「RFIDタグからシリアル番号(UID)を取得する」の改善

RFIDタグからシリアル番号(UID)を取得するファームウェア の改善の話だ。

おもちゃのファームウェアはとにかく忙しい。例えばPIC電子オルゴールでは、複数パートの音符の発音処理、音声再生、赤外線受信、モーターやLEDの制御など沢山のイベントを同時並行処理しなければならない。しかもレイテンシは数usが要求されるときもある。1本道を真直ぐに歩くプログラムは誰だって作れるが、短いレイテンシでのマルチイベント処理を書くとなると少しハードルが高くなる。

RFIDの応用として、タグを読んで対応する言葉をしゃべることが考えられる。レジのおもちゃがそれだ。商品に貼り付けたタグで商品を識別して、商品の名前と値段をしゃべる。これを実現するには、PIC電子オルゴールにRFID機能を統合するのが早道だ。RFIDに限らず、おもちゃのファームウェアは殆どPIC電子オルゴールをベースに機能をカスタマイズして作っている。PIC電子オルゴールにいろんな機能を集約することで、その応用範囲を大きく拡大して来ている。

しかし、RFID機能の統合は一筋縄では行かない。それは、PIC電子オルゴールの処理のレイテンシが数10usを要求されるのに対して、RFIDの処理のレイテンシはタグとの同期を含めて数10msもある。せっかちな人とおっとりな人が一緒に行動するとどんなことになるか、結果は見えている。

こんなときはステートマシンにすると解決する。RFIDの処理を細かなステートに分割して、10msのコールバック周期で1ステート分ずつ処理をコツコツと進めて行く。RFIDリーダライタの処理待ち時間はコールバック周期に隠してしまう。

それで、RFIDタグからシリアル番号を取得するファームウェアをステートマシン向けに書き砕いた。それとアセンブラ化に向いたデータとモジュール構造に変えた。PIC電子オルゴールに組み込む前の、他のプロジェクトに応用し易い状態で公開する。

口で説いても判り辛いのだが、ソースコードを見るとご理解いただけると思う。 MFRC522_STATE.c の最後の方にある 「タスク処理」 がステートマシンになっていて、タグ検出からシリアル番号取得までの一連の処理を12のステートに分割している。PIC電子オルゴールに組み込んだ場合は1個のタグを読み取るのに120ms掛かることになるが、レスポンスとしては十分だ。

関連資料と開発プロジェクトは ここから ダウンロードできる。

16F1503用のプロジェクトは MFRC522_SERIAL_STATE_1503.X
16F1705用のプロジェクトは MFRC522_SERIAL_STATE_1503.X
  1. 2018/02/16(金) 20:55:43|
  2. RFID
  3. | コメント:0

RFIDタグからシリアル番号(UID)を取得する

RFIDを利用したおもちゃが増えてきて、おもちゃ病院にもそのようなおもちゃが持ち込まれるようになった。幸いにもリーダ部の故障には出会ったことが無いのだが、今のうちにRFIDの使い方を修得しておく必要がある。そこで、リーダ部を換装するためのプロトタイプを作ってみた。公開されているArduinoのスケッチを素に必要最小限の内容に絞ってPIC環境に移植した。猿真似で、独自の設計は行っていない。素人は無意味な創意工夫をしないで、猿真似に徹することが成功の秘訣だ。

現時点での到達点は、タグからシリアル番号(UID)を取得して外部へ表示するところまでだ。おもちゃ病院での修理は個々のおもちゃに特化した対応になるのでシリアル番号でタグが識別できれば十分だし、タグ内の情報をハンドリングするようなおもちゃは今のところは見受け無い。PIC電子オルゴールへの機能統合を考えて、嵩張らないように最小限の機能に止めておく。

アプリケーションは実際のおもちゃの要件に合わせて開発する必要がある。

【実行環境】
構成はPICマイコンとRFIDリーダライタモジュールだけだ。

この事例では、ターゲットは 16F1503 と 16F1705 で開発したが、SPIはソフト実装だしUARTもソフト実装可能なので、デジタルI/Oポートさえあればターゲットは何でもよい。但し、スタック2段ではダメだ。
RFIDタグからシリアル番号を取得する実行環境

RFIDリーダライタモジュールは RFID-RC522。
RFIDタグからシリアル番号を取得するリーダライタ
今回はSPIインタフェースの物を使った。I2Cインタフェースの物に比べて廉価なのと、Arduinoでの製作例がそれを使っていたので同じ環境にするのが無難だと思ったからだ。

【実行例】
リーダのアンテナから5cm以内にタグをかざすと自動的にシリアル番号を読み取り、その情報をシリアルポートから送信する。
シリアルの通信パラメータは、9600bps・パリティ無し、2ストップビット。
かざしたままにしても1回しか読まない。一旦離してから再度かざすと2回目を読み取る。
1件を 「タイプ-シリアル番号」 の形式で表示する。

以下はTeraTermで表示した例
RFIDタグからシリアル番号を取得するTera画面
タイプの 0x0400 は Mifare_One(S50)を示している。

【対応タグ】
RFID-RC522の石(MFRC522)はNXPなので、当然Mifareのみの対応だ。日本で広く普及しているFliCaには非対応。
MifareはFliCaより価格が安いので、おもちゃの修理にはMifareの方が向いている。
素のソースコードでは下記のタイプがサポートされているようだが、このプロトタイプで実機確認したのは Mifare_One(S50) と Mifare_UltraLight のみだ。それ以外のタグは持っていないので試験していない。
Mifare_UltraLight
Mifare_One(S50)
Mifare_One(S70)
Mifare_Pro(X)
Mifare_DESFire

【コスト】
RFIDリーダライタモジュールは@150円程度(AliExpress2018年2月)。これにはテスト用のタグとカードが1個ずつ付いている。

タグは@15円程度(AliExpress2018年2月)。おもちゃの換装にはシールタイプのタグが使いやすく、価格も安い。

制御用マイコンは、PIC16F1503T-I/SLの場合は@70円(秋月2018年2月)。

合わせると200円を超えてしまうのでおもちゃ修理にはまだ高価だが、価格は徐々に下がってきていて、今後の低価格化に期待する。

【商品ページ】
リーダライタモジュール
RFIDタグからシリアル番号を取得するRC522商品1
RFIDタグからシリアル番号を取得するRC522商品2

タグ
RFIDタグからシリアル番号を取得するRC522商品3RFIDタグからシリアル番号を取得するタグ商品

【ファームウェア】
開発したファームウェアと関連資料は ここから ダウンロードできる。
16F1503用のプロジェクトは MFRC522_SERIAL_1503.X
16F1705用のプロジェクトは MFRC522_SERIAL_1705.X
ピン割り当てはソースコード中のコメントを参照。
  1. 2018/02/11(日) 21:06:27|
  2. RFID
  3. | コメント:0

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物の複製、改変および再配布はフリーです。読者様のおもちゃ病院活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。なお、公開ファイルは最新版を載せているので、古い記事の内容から変わっている場合があります。

カテゴリ

おもちゃ修理技術 (124)
¦ ・電子オルゴール+音声再生 (52)
¦ ・音声再生・録音再生 (13)
¦ ・2.4GHzラジコン (35)
¦ ・レガシーラジコン (13)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (4)
ツール製作 (35)
¦ ・プログラマー (27)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (5)
修理事例 (157)
¦ ・マイコン換装 (75)
¦ ・電子・電気修理 (59)
¦ ・メカ修理 (23)
製作記事 (5)
PIC開発 (4)
おもちゃ病院 (9)
ドクター研修会 (2)
未分類 (0)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

QRコード

QR