2014年9月23日火曜日

自転車ビーコンの使い勝手向上計画

 リモコン送信機のボタンが小さいため、受信機が反応するまで押し続けるのは、意外と不便な仕様です。ボタンの押しにくさのせいで受信間隔をあまり長くできず、電池持ちも思うように伸ばせませんでした。今週は、ここに改造のメスを入れてみました。

 当初の設計では、リモコン送信機を親機とし、タクトスイッチで電源をON/OFFしていました。押した間だけ電源が入り、動作中は連続送信を行います。
 これを、「チョイ押し」だけで手を離しても数秒間連続して送信を行うように改造しました。
  • 送信機をmode7(子機間欠10秒モード)とし、送信間隔を0秒としました。これで、タイマーによるWakeUpが無効となり、ボタンによる割り込みでのみWakeUpします。
  • 送信機がWakeUpしたら、mode4の送信間隔+100msの間、スリープせずにデータを32回/秒のペースで連続送信するようにしました。
  • 受信機側では、vReceiveIoData()にある親機子機の判定を無効化し、受信したデータを親機/子機の区別無く処理するようにしました。
  送信機のチョイ押しで自動的に送信を続けるので、子機の通信間隔が長くてもボタンを押すのが苦にならなくなりました。この改造に合わせて、
  • 2秒毎だった通信間隔を4秒に延長
  • ADCを行わない受信待ちだけのWakeUp時間を24msに延長
  • 連続送信の間隔を毎秒64回から32回に戻す
  • mode7のスリープ時にRAMを保持しない
という調整も行いました。これで、子機の電池は半年持つ見込みです。
 受信間隔が長いと親機の連続送信時間が延びて、親機の電池持ちは短くなりますが、スリープ時にRAMを保持しないことで待機時の消費電流を減らしました。1日1回の使用で、送信機の電池は7年以上持つ見込みです。

追記:
 この時は子機間で通信するために親子判定を無効化しましたが、子機からの宛先論理IDを親機(0x00)ではなく子機宛とし、この動作を想定するように受信時のID判定を改造するというのがToCoNet的にはまっとうな方法のようです。
  http://tocos-wireless.com/jp/products/TWE-ZERO/App_Twelite/overview.html

0 件のコメント:

コメントを投稿