2023年4月19日水曜日
機械学習でRFIDの向きを予測
2023年3月29日水曜日
フラッグタグで、読み取り距離10m以上を実現してみた
フラッグタグは、金属製品に貼り付け、金属自体で電波を受けることが可能なため、小さなサイズでも長い読み取り距離を実現しました。
フラッグタグを紹介する一部のサイトでは、金属部分の形状や大きさによっては、10m以上の読み取り距離を実現するとの記載もあるのですが、どのような条件で、10m以上の読み取り距離が実現できるのか、試してみました。
タグ : Smartrac Midas Flag Tag
リーダー : デンソー BHT-1281
距離の測定には、レーザー距離計を使用しました。
レーザー距離計はm(メートル)単位で、小数点3桁まで測定できるのですが、今回の実験では、4回以上読み取った距離を計測して、平均値の小数点3桁目を四捨五入しました。本文の距離の単位はメートルとなります。
(1)材質による読み取り距離の比較
銅、鉄、アルミニウムの3種類の材質で読み取り距離を比較してみました。
※サイズは0.5×100×200(厚さ×縦×横)単位はmm
※銅、アルミニウムは純度99%以上(鉄には純度の表記なし)
リーダーのMANICA EXCEL TOOL で電波を4番目にして、立てかけた金属板を正面から読み取りました。
以下の順位と読み取り距離になりました。
1位 銅 : 5.55
2位 アルミニウム: 5.48
3位 鉄 : 5.36
今回3種類の金属だけで実験しましたが、電気伝導率の順位と一致するようなので、伝導率が高い金属ほど読み取りが良くなると思われます。
銅が1位でしたが、価格や入手の都合で、2位のアルミニウムで、次の実験を行いました。
(2)厚さによる読み取り距離の比較
厚さが 0.3mm、1mm、2mm のアルミニウムで読み取り距離を比較してみました。
※縦横は100×200で純度99%以上
(1)と同じ方法で実験し、以下の順位と読み取り距離になりました。
1位 0.3mm : 5.53
2位 0.5mm : 5.48 ※(1)で計測した値(異なる日に測定)
3位 1mm : 5.45
4位 2mm : 5.33
それぞれの差は小さいのですが、1位の0.3mmと最下位の2mmは20cmの差があり、薄い方が読み取り距離が長くなりました。
薄いアルミニウムという事で、安価で加工しやすいアルミ箔を使って、次の実験を行いました。
(3)読み取り距離10m以上に挑戦
リーダーの出力を最大にし、アルミ箔を小さいサイズから順に読み取り距離を測定しました。
※100均で買った幅25cmのアルミ箔を使用
※アルミ箔の材質に「アルミニウムはく」とのみ記載されていて純度は不明
※(1)、(2)と同様、アルミ箔のサイズの単位はmmとする
なお、風の影響でアルミ箔が動いてしまうので、プラスチックの下敷きで押さえました。
① サイズ250×200 : 5.87
(2)のアルミニウム板の2倍以上の面積があったたのですが、思っていたほど距離が出ませんでした。(アルミニウムの純度が低い?)
② サイズ250×300 : 6.94
③ サイズ250×400 : 9.40
最大で9.856mを測定したのですが、1度も10mを超える事はありませんでした。
④ サイズ250×500 : 10.40
安定して10m以上を測定できました。
ただし、10mを超えると、度々レーザー距離計が測定不可能となってしまいました。それらも考慮すると、平均距離は、10.4mより長かったと思います。
以上の実験から、サイズが250mm ×500mm以上のアルミ箔であれば、10m以上の読み取り距離を実現できる事が分かりました。
【おまけ】
金属製品で測定してみました。
物置 : 4.08
自動車 : 5.25
アルミ缶 : 5.16
アルミ蒸着PETフィルムの袋 : 8.08
2022年10月17日月曜日
簡易版のシャトルバス乗車数カウントデバイスを作ってみた
別件でFeliCaを読み取ってIDを飛ばすデバイスを作っていたので、それをいじって超簡易版のシャトルバス乗車数カウントデバイスを作ってみました。
カードを読み取って、枚数をカウントするだけの簡単なデバイスです。乗車時にタッチでカウントアップ、降車時にタッチでカウントダウンします。カウントアップしたかカウントダウンしたかは音で判別できるようにしています。
電源があれば使えます。何時何分にタッチしたかがわかるようなログ機能や、誰がタッチしたのかがわかる機能など便利な機能は一切搭載されておりません。
2022年5月30日月曜日
DRAGINO の LPS8 で SIMのドングルを使う その2
前回の記事では DRAGINO の LPS8 に AK-020 のSIMドングルをつけて動作することろまでを確認したんですが、その後問題が発生し結果として AK-020(+SORACOM) は使用できないことがわかりました。
LoRaWAN デバイスから OTAA でアクティベーションするところまでは問題無く動作します。問題はその後です。データ通信は ACK を ON にしていたので、デバイスから GW にデータ送信後、GW からの ACK を受信したいのですがこれが全く返ってきません。
SIMドングル経由ではなく、有線LANでGWを接続した場合は何も問題なくACKが返ってきます。えー、なにこれー、と思っていろいろ調べたんですが原因を特定できず、回線速度が問題じゃないのかくらいの情報を得ることしかできませんでした。ようするに ACK を返すには時間制限があるんですが、それに間に合ってないと。
回線速度かー、確かに AK-020 は 3G だしねー。諸事情により AK-020 が大量に余っていたので使える用途が見つかってやたー、と思っていたところその野望は即座に崩れてしまいました。
仕方なく他の方法を考えます。
まずは別件で使っていたSIM8070Gの開発ボードを使ってみます。しかしながらいろいろ躓いてしまったので記事は後回しにして、別のLTEのSIMドングルを使ってみました。
試したのはこちらのFS040Uです。
仕様を確認すると、Linuxでは RNDIS に対応しているようです。OpenWRTでもRNDISは使えるようです。
Use RNDIS USB Dongle for WAN connection
こちらと下記の DRAGINO Wiki の情報を参照して試していきます。
FS040Uはとても優秀で、設定をしてあげればその設定で勝手に接続して、あとはRNDISなど通してネットワーク・インターフェースとして使えます。なのでSORACOMの設定をWindowsなどからしてあげます。その後 FS040U を GW に差し込んで認識するかみてみます。(前回でいろいろいじったのでファクトリリセットして最初からやりました)
root@dragino-1dac90:~# lsusb Bus 001 Device 003: ID 1c9e:f133 OMEGA TECHNOLOGY Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
何か認識してくれています。さらに dmesg で確認すると
rndis_host 1-1.2:1.0 usb0: register 'rndis_host' at usb-ehci-platform-1.2, RNDIS device, ae:08:9a:e7:0b:db
おー、RNDISとして認識している。わーい。ここで DRAGINO Wiki の方の記事にそってコマンド入力します(一部改変してます)。
uci set network.lte=interface uci set network.lte.proto=dhcp uci set network.lte.ifname=usb0 uci commit network uci add_list firewall.@zone[1].network="lte" uci commit firewall /etc/init.d/network restart
すると、あ、繋がってるっぽい。PINGも通るぞ。ここでLoRaWANデバイスからの送信。JOINは通った。次、データ送信。あ、ACK返ってきた!とりあえずよかったー
2022/8/2 追記 通常のファームウェアではなく、こちらのファームを使用して行いました。
2022年4月19日火曜日
DRAGINO の LPS8 で SIMのドングルを使う
前回の記事では、DRAGINO の LPS8 を Azure IoT Hub に接続するところをやったんですが、実はいろいろあって今は AWS IoT の方に接続しております。ちなみに Azure の方は前回の記事のように手こずったんですが、AWS の方は簡単に接続できましたので説明は無しです。
今回は LPS8 に SIM の USBドングルを挿して何とか通信をしたいという内容になります。使用するドングルは AK-020 で SIM は SORACOM を使います。
こちらに先人のありがたい記事が掲載されております。
Dragino社製IoTゲートウェイ LG01-JPを、SORACOM スターターキット(3G USBドングル AK-020)を使ってSORACOM Airに接続する。
Dragino社製IoTゲートウェイ LG01-JPを、SORACOM スターターキット(3G USBドングル AK-020)を使ってSORACOM Airに接続する。その2
今回使用する LPS8 とは異なる機種ですし、のっけからカーネルの更新があるのでちょっと無理そうかなーと思って手を付けていなかったんですが、やってみたら意外といけたので備忘録にしたいと思います。
AK-020 は、USB に挿し込むと CD-ROM として認識され、それをイジェクトすると USBモデムになる仕様になっていますので、まずは USBモデムとして認識されるところまでをやります。
現時点でのファームの最新は lgw-5.4.1644990565 です。LPS8 に AK-020 を挿して SSH で接続し、 lsusb をやると一応デバイスとして認識しているようです。
# lsusb Bus 001 Device 003: ID 15eb:a403 Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
VendorID が 15eb で ProductID が a403 が AK-020 の CD-ROM 側の ID になります。これをイジェクトすると、ProductID がUSBモデムの側の 7d0e に変わります。
で、イジェクトをしたいんですが eject パッケージも入らないのでどうしたもんかと調べてたら usb_modeswitch というこういうときに使うであろうモード切り替え用のパッケージがあったのでこれを使ってみます。が、何とすでにインストールされていました。OpenWRT では設定ファイルは /etc/usb-mode.json だそうです。見てみると確かにあります。ここに周りを参考におもむろに追記してみます。
"15eb:a403": {
"*": {
"t_vendor": 5611,
"t_product": [ 32104 ],
"mode": "StandardEject",
"msg": [ ]
}
}
t_vendor と t_product は整数で指定されているので、15eb と 7d0e をそれぞれ10進数にした 5611 と 32104 を指定します。追記後、リブートして再度 lsusb してみると、
# lsusb Bus 001 Device 003: ID 15eb:7d0e Bus 001 Device 002: ID 1a40:0101 Terminus Technology Inc. Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
おー!、変わりました。さらに、デバイスをUSBシリアルとして認識してもらうため上記1個目の記事の3番の前半部分をやります(/etc/modules.d/80-usrserial の作成)。
ここまでくれば LPS8 の設定画面でドングルの認識されてるかなと思ったんですが、残念ながら認識してもらえませんでした。
2022年3月4日金曜日
高いところのタグを読む
棚卸しに絶大な効果を発揮するRFIDですが、棚卸しといえばだいたい倉庫みたいなところでやりますよね。大きな倉庫になると何段にも積み上げてあって、手の届かない高いところに読み取り対象物が置かれていたりします。これをハンディリーダで読み取りできるかというのが今回のお題です。
ちょうど某倉庫で読み取り実験をしてほしいというご依頼がありましたので、実際にやってみました。実験した倉庫は天井が5mと高い倉庫で、荷物はパレットに積んでありパレットをそのまま金属フレームの棚に収めるという方式で、棚は3段になっています。
距離計で手をかざしたところから荷物の最上段部分までを測定したところ、おおよそ3mの距離がありました。荷物にタグを簡易的に取り付け、最上段に置いてもらい実際にハンディリーダで読み取りしてみたところ、80%くらいは瞬時に読み取れますが残りはぐるぐるしたりしてようやく読めるといった感じでした。読み取れなくは無いが、ちょっと時間かかるなぁという印象です。
そこで今回はハンディを取り付ける棒を2種類用意しました。
1個目はマイクスタンドの
この部分
ブラスターがすっぽりと取り付けできます(画像は一部ぼかしてあります)。
読み取り風景はこんな感じ(画像は一部ぼかしてあります)。
これで何と、下段に置いてあるときと同じくらいのスピードで読み取ることができました!棒つけただけですけどかなり効果が出ることがわかりました。
2022年1月24日月曜日
MANICAモバイルのアプリにHIDで値を入力する
ニッチすぎる内容ですが、ある案件対応の中で思いついたアイデアを、ちょっと試してみました。
MANICAモバイルで、アプリからICタグの登録を簡単に行う機能があります。
未登録のICタグをスキャンして、カテゴリと名称を入力するだけの手軽さなのですが、ある現場で、この名称登録のところに文字じゃなくて管理番号を入力したいというご要望がありました。
管理対象のパレット(的なもの)に添付した現品票(的なもの)に印刷されている管理番号を、ICタグのユニークIDに紐付けるかたちでのICタグ登録をしたいわけですが、現品票には既に管理番号がバーコードでも印刷されていました。
であれば、管理番号を手入力するよりはバーコードを読んで自動入力したくなりますよね。
MANICAモバイルが対応しているRFIDハンディリーダーの中には、バーコード/2次元コード対応の製品がもちろん存在しています。が、SPP接続のため単純に読み取った内容をキーボード入力するようなことは逆に(?)できないんですね。
カスタマイズすれば出来るんでしょうけど、費用的にもったいないし、あまり複雑な操作フローにするのも避けたいところ。。。
お、もしかして別のスキャナーをHID接続してあげれば、そっちで読み取ったバーコードをシンプルに入力できたりしないだろうか、という案を思いつきました。
1台のAndroidスマートフォンに、RFIDハンディリーダー(SPP)とバーコードスキャナー(HID)と、2台のBluetooth接続から同時に接続を行う構成となります。
実際に使用した機器はこんな感じ。
結論から言うと、まったく問題なく動作しました。
いちおう動画でも残しておきますね。




