パケットを観察する無線モジュールには、TWE-Lite賞の賞品としていただいたToCoStickを使用しました。PC直結ですぐ使えるので、思い立った時に実験が出来て便利です。サイトに書いてある通りにやってみると、リモコンが発信したパケットが猛烈な勢いで表示されます。
リモコンからの電波をキャプチャし、パケット間の時間差をグラフにプロットしてみました。まずは、現状の毎秒64回+再送1回の場合。
64回/秒の場合 |
- 16ms付近が最も頻度が高い
- 4ms未満、30ms前後にも相当な数がある
- 40ms以上も若干あり
続いて、毎秒32回+再送1回の場合。
32回/秒の場合 |
長時間側に分布するという予想を裏切り、毎秒64回の場合とほとんど変化がありません。毎秒32回ならば31msあたりに集中するはずですが、再送が効いているせいでしょう。同じ設定で5回連続してキャプチャした場合も、同様の傾向になりました。
32回/秒を複数回 |
最適な待ち受け時間はどのくらいかを知るために、32回/秒の場合のパケット間隔を集計してみました。
間隔[ms] 回数 積算回数 積算割合
4 212 212 15.5%
8 1 213 15.6%
12 1 214 15.7%
16 699 913 66.9%
20 209 1122 82.2%
24 2 1124 82.3%
28 46 1170 85.7%
32 165 1335 97.8%
36 3 1338 98.0%
40 1 1339 98.1%
44 5 1344 98.5%
48 17 1361 99.7%
52 1 1362 99.8%
56 1 1363 99.9%
60 1 1364 99.9%
64 1 1365 100.0%
32ms以下に大きな集合があり、ここを押さえれば95%以上の確立でヒットします。64回/秒でも約96%がこの範囲にありました。これなら、週5日の使用で空振りは月に1回程度しか発生しません。
36ms以上は電池もち悪化に見合うほどの効果が無いので、待ち受け時間は32msが最適と判断しました。
今後は、
今後は、
- 送信APIを呼び出す頻度は32回/秒
- 再送は1回
- 受信側のスリープ解除1回あたりの受信待ち時間は32ms
0 件のコメント:
コメントを投稿