2019年3月27日水曜日

xSpan用のデモアプリ作ってみた

Impinj社が出している xSpan というかっちょいいリーダがあります。

このリーダ、アンテナが内蔵されていてこれだけ設置すれば使えます。それだけなら他にもリーダあるんですが、xSpanは(擬似的に)13枚のアンテナが内蔵されているのです。

アンテナは1列に並んでいる感じで、どのアンテナで読んでるかを見ることでタグが右に行ったとか左に動いたとかがわかるようになっています。スゲー

ちなみにどんな風にアンテナが並んでるかは、
https://support.impinj.com/hc/en-us/articles/206246824-xSpan-Documentation
こちらの「xArray/xSpan Orientation Guide」というのに記載されています。

とはいえなんせ電波なもんで見えないし、実際にはどんな風に読んでるのさ?というのがわかるといいなーと思ってデモアプリを作ってみました。

じゃーん


超シンプル。読み取ったタグのEPCと、横に読み取ったアンテナのところにRSSIが入るというそれだけです。これがなかなか遊び甲斐があります。

というわけで動画

わかりづらくてすいません。でも何となくおわかりいただけるのではないかと。画面の左下に一枚タグを置いてるんですが、これが1行目のデータで、2行目と3行目は動かしているタグのデータです。どうでしょう。わかります?わかるよね?

デモ用なんですが、リーダ設置の際とか読取りテストに使えるかなーと思ってます。

2019年3月14日木曜日

リーダの制御をうまいことする

今回の内容は RFID とはあんまり関係ないんですが、Android から RFID のリーダを制御するときのあるある的なネタです。

リーダを制御する場合、Bluetooth でつないだり 直接接続(シリアル的な)でつないだりとリーダごとに違うんですが、問題は通信先のリーダは1つということで、スマホにおいてはカメラやマイクなどハードを使うときと同じように1つのアプリで専有しちゃうとまずいということなんですね。

つまりアプリの起動時にリーダに接続(専有)して、終了時に切断(開放)する必要があるということです。さらにサスペンドしてるときとかアプリが裏に回ったときなんかも細かく切断する必要があります。

じゃぁ、Android の Activity のライフサイクルにおいて onResumeで接続して、onPauseで切断すればいいじゃん的な流れに当然なりますよね。しかし複数の画面があるアプリで画面を切り替えると onPause とか呼ばれちゃうので画面を切り替えるたびに切断、接続を繰り返すのでちょっとそれはなーってなります。

ようするに自分のアプリが画面に出ているときは接続してて、画面からいなくなったら(それが終了であれ裏に回ったであれサスペンドであれ)切断するというのをやりたいのですが簡単そうでなかなかできません。

そこでこちらの記事を参考にしてみました。
https://qiita.com/wasnot/items/e7e4699de4b21f150c63

Applicationを継承して、Activity のライフサイクルじゃなくて Application のライフサイクルを利用しようというわけです。

public class MyApplication extends Application {

    private static MyReaderController mController;

    @Override
    public void onCreate() {
        super.onCreate();
        registerActivityLifecycleCallbacks(new MyLifecycleHandler());

        mController = ....
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }

    private class MyLifecycleHandlerimplements ActivityLifecycleCallbacks {
        private int activities = 0;

        @Override
        public void onActivityCreated(Activity activity, Bundle bundle) { }

        @Override
        public void onActivityStarted(Activity activity) {
            activities++;
            if (activities == 1) {
                mController.start();
            }
        }

        @Override
        public void onActivityResumed(Activity activity) { }

        @Override
        public void onActivityPaused(Activity activity) { }

        @Override
        public void onActivityStopped(Activity activity) {
            activities--;
            if (activities <= 0) {
                mController.stop();
            }
        }

        @Override
        public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { }

        @Override
        public void onActivityDestroyed(Activity activity) { }
    }
}


やり方は簡単で、Application を継承したクラスを作って、AndroidManifest.xml の application の name属性 に作成したクラス名を指定するだけです。

この onActivityStartyed と onActivityStopped がそれぞれアプリ内で Activity がスタートしたときとストップしたときに呼ばれますので、呼ばれた数をカウントして1個目だったら画面に表示されはじめた、0個になったら画面から居なくなったと判断できるわけですね。

これが正解なのかよくわかりませんが、実装は楽でした。

2019年1月10日木曜日

USBメモリにICタグを貼ってみた。(Smartrac Bling R6編)



■管理対象

今回は何の変哲もないUSBメモリにICタグを貼ってみたいと思います。


■貼ってみたICタグ

今回使用するICタグは、SmartracのBling R6、
端正なアンテナパターンが魅力の近接通信用タグ。


■貼るときの注意点/こんな貼り方が良さそう

とりあえずロゴを隠さないように貼ってみました。
本体サイズが小さいので、貼れる場所は限られてますね。


■どれぐらい読めるかな

ひとまずハンディリーダー(RF-Blaster 1Wタイプ)で読み取ってみるとだいたい、50cmぐらい。これだけ小さいのに、なかなかですね。




■まとめ

というわけで、今回はUSBメモリにSmartracのBling R6を貼ってみました。

これからいろんなものにペタペタ貼っていきたいと思いますー




2018年12月12日水曜日

ランドセルチェッカー その1

最近RFIDの企業での活用が目立つようになってきましたが、一般家庭での利用が増えないかなーということで何か家庭内で使えるような商品を作りたいと思い作ってみました。


じゃーん。ランドセルチェッカー(仮称)です。

タブレットとUHFのリーダがセットになっています。下の方にある黒い四角のやつがリーダです。STIXというリーダで出力は 250mW ですので免許不要で利用できます。

小学生のお子さんをお持ちの方はよくわかると思うのですが、毎朝持ち物のチェックをするのは非常に面倒なものです。よね?
そこで時間割に合わせて持ち物がランドセルに入っているかどうかをチェックしてくれるというスグレモノの製品です。

それぞれの教科書にはあらかじめ邪魔にならないところにRFIDのタグを貼ります。


さんすう


と こくご

で、いつもランドセルを置いているところにリーダをセットします。


こんな感じ。


で、今は何もリーダの上に載せてないのでバツの表示になっています。左側に時間割が表示されていて、これはタッチですぐに変更できるようになっています。ちょっとわかりにくいですが、試しに「こくご」と「さんすう」だけを時間割にセットしていますので「たりないもの」のところに「こくご」と「さんすう」が表示されています。

この状態からランドセルにRFIDを貼り付けた国語と算数の教科書を入れてからランドセルをリーダの上に載せると...


表示がマルに変わりました!


「たりないもの」の欄の表示が無くなりました。
どうでしょう。これがあれば毎日の持ち物チェックの煩わしさから開放されるのです。スバラシイ!

というわけで作ってみたこの製品、販売したら欲しい方いらっしゃいますかね?現時点ではかなりマニアな製品になりますけど(笑

2018年9月12日水曜日

第20回自動認識総合展

東京ビッグサイトにて9/12~9/14に開催されている第20回自動認識総合展に出展しています。


ぜひ遊びにきてください。


驚異の読み取り性能を誇る新型のリーダα811も展示しています(しかも珍しい白の筐体)。

2018年8月15日水曜日

8月30日「リアルとデジタルが繋がる?! ~RFID/NFCの今と未来~」のお知らせ



直前のご案内で恐縮です、8月30日(木)に株式会社グーフ様主催の

「妄想」を「構想」にする goof.labセミナー「リアルとデジタルが繋がる?! ~RFID/NFCの今と未来~」

に、弊社の大坂が登壇させていただきます。

技術動向や事例を一方的に紹介するのではなく、今回はロド櫻井さんとのパネルディスカッションで、RFIDをテーマとした皆様の「妄想」を膨らませていこうという目論見となっております。

8/30の16:00~、場所は大崎広小路駅のすぐ上です。Beer Sessionもあるそうですので、ご都合のつく方は是非お気軽にお立ち寄りくださいませ!



2018年8月10日金曜日

RFIDリーダーをカバンに入れて街角のICタグを探した

最近、実証実験を含めて、UHFタグを使って店舗の在庫管理を始めた、というニュースを聞くことが珍しくありません。もしかして、もう街にはUHFタグがいっぱいあるのではないでしょうか?
250mWのMorphic CDを読み取りっぱなしにしてカバンに入れて探してみました。

8/1から8/9まで実施しました。いっぱいはなかったんですが、そこそこありました。以下、読み取った場所のレポートです。

8/1
・ユニクロ新宿店:数百枚 +α
下げ札にUHFタグが入っているので当然ですね。読めるの分かっててわざと行きました。

下げ札はEPCの先頭数バイトが共通のようなのですが、他とは異なるEPCのタグが数枚ありました。タグ関係者が来店してたのでしょうか?

8/2
・弊社近く飲み屋前:ユニクロのタグ1枚
並んでるお客さんがユニクロで買い物したようです。

・弊社近く某配送センター前:謎のタグ2枚
管理に使用してるにしては数が少ないので、荷物に紛れてたとかでしょうか?

8/7
・四ツ谷駅近辺:ユニクロのタグ3枚
ユニクロ帰りの誰かのでしょうね。

・四ツ谷駅近辺:謎のタグ1枚
???タグ関係者とすれ違った?

・東急ハンズ新宿店レジ近く:謎のタグ2枚
配送センターのときと同じ見解です。管理にしては数が少ないので、誰かが持ってたのかな?と思います。

・東急ハンズ新宿店出口付近:ユニクロのタグ1枚
・自宅近くスーパー:ユニクロのタグ3枚

書いていない日は全く読まなかった日です。
250mWなのでそこそこ近づかないと読まないので、移動した場所にあるもの全部読めたとは限らないです。

ユニクロのタグが街にチラホラありますね。

またしばらくしたら実施してみます。