2015年7月22日水曜日

MFT2015に向けて準備中

8月1日、2日のMaker Faire Tokyo 2015に向けて、展示の準備をしています。
合計12個の自転車ビーコンを並べる予定です。


2015年7月11日土曜日

リセットIC BD45231Gを使用した、ゆっくり充電回路

 リセットICにROHMのBD45231Gを使った電源回路で、自転車ビーコンの送信機をゼロから充電してみました。回路図は下図の通り。RST#のプルアップ抵抗1Mohmは省略しています。

 結果はこちら↓。教科書に書かれているようなCR充電曲線です。


 実験に使用したCR1220電池の無負荷状態の電圧は3.05Vでしたが、充電中は2.8V台でした。放電電流は、スタート時は約3mA、グラフの右端では約0.2mAと推定できます。
 BD45231Gのリセット閾値電圧は2.3Vですが、リセットが解除された時の電圧は2.42Vでした。スタートからの経過時間は42分でした。

2015年7月10日金曜日

TWE-Liteのパケットスニファ・アナライザを使ってみた

 自転車ビーコンは、受信機が4秒おきにスリープから起床して短時間の受信待ちを行います。このタイミングを逃さないよう、送信機側では連続送信を4秒間以上継続します。タイミング設計については、開発を始めて間もない昨年9月に、「自転車ビーコンの電池持ち問題に対する解決案」というタイトルで考察しています。この目論見が正しかったのか、TWE SDKに含まれているパケットスニファを使って確かめてみました。

 パケットを観察する無線モジュールには、TWE-Lite賞の賞品としていただいたToCoStickを使用しました。PC直結ですぐ使えるので、思い立った時に実験が出来て便利です。サイトに書いてある通りにやってみると、リモコンが発信したパケットが猛烈な勢いで表示されます。


 リモコンからの電波をキャプチャし、パケット間の時間差をグラフにプロットしてみました。まずは、現状の毎秒64回+再送1回の場合。
64回/秒の場合

  • 16ms付近が最も頻度が高い
  • 4ms未満、30ms前後にも相当な数がある
  • 40ms以上も若干あり
という傾向があります。
 続いて、毎秒32回+再送1回の場合。

32回/秒の場合

 長時間側に分布するという予想を裏切り、毎秒64回の場合とほとんど変化がありません。毎秒32回ならば31msあたりに集中するはずですが、再送が効いているせいでしょう。同じ設定で5回連続してキャプチャした場合も、同様の傾向になりました。
32回/秒を複数回
パケットの高密度化を狙って64回/秒の送信を行ってきましたが、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
という設定で使用します。

雨センサーが復活

 故障した雨センサーの太陽電池を交換したところ、見事に復活しました。
5分平均グラフ
  夜のうちに太陽電池を交換して設置。明朝5時ころから発電が始まり、夕方には満充電近くまで充電されています。今朝も、既に充電が始まっています。
週間グラフ
交換した太陽電池は、秋月で売っている アモルファスシリコン太陽電池 AM5815CAR です。買い置きしていた 環境発電管理モジュール太陽電池セット の太陽電池だけを使いました。

2015年7月8日水曜日

雨センサーが故障

 戸締りチェッカーシステムの一部である雨センサーの電源にトラブルです。昼間になっても、電気二重層キャパシタがほとんど充電されなくなりました。


 土曜日に下がり始めたVcc(緑色)が、日曜の昼間になっても上昇していません。

 テスターで調べたところ、太陽電池モジュールの出力電圧が無負荷状態でも1V程度しかありません。新品では4V以上でした。ここが原因のようです。今晩、修理します。

2015年7月4日土曜日

TWE-Liteの外部リセット回路(2)

 3か月余り前にTWE-Liteの外部リセット回路について書きましたが、未だに試行錯誤を繰り返しています。

 最近まで試していたリセット回路は、FETでTWE-LiteとリセットICのGNDを切り離す回路になっていました。CR1220に直列に入れる抵抗は、実際には1kΩを使っています。


 リセットICのTCM809RVNBはリセット閾値は2.63Vで、TWE-Liteの始動電圧2.05Vよりかなり高めです。ところが最近、複数回試してみたところ、2.7Vを超えてもリセットが解除されませんでした。別な種類のリセットICでも、閾値を0.1V以上超えてから、ようやく解除状態となるケースがありました。テスターの誤差にしては大きすぎます。電圧が非常にゆっくりと上昇する場合、リセット解除の閾値が高くなるのかも知れません。2.63Vを大きく上回る必要があるとすると、リチウム電池では残量によってはリセットに至らない恐れがあります。
 上のリセット回路では、リセットが解除されるまではTWE-LiteのGNDをFETで切り離しています。また、始動したTWE-LiteがDO1をLowに落としてリセットICのGNDを切り離し、再びリセットがかからないようにしています。リセットICの切り離しは、駆動電流の9μAを節約する意味もあります。

 ここに至って、秋月で売っているTCM809RVNB以外のリセットICの使用をいろいろ調べた結果、このリセットICを使うこと自体が問題であるとの結論に達しました。
 そもそも、TWE-Liteの始動電圧に近い閾値のリセットICを使えば、リセットICをFETで無効化する必要はありません。閾値2.3Vで駆動電流0.8μAというリセットICが普通にあるので、これを使ってTWE-LiteのRESET端子を直接制御すれば、FETを追加する必要はありません。
 また、1-2μA単位の電流を惜しんでTWE-LiteのGNDを切り離すほどの省電力も必要ありません。

 新たに選定したリセットICは、RohmのBD45231Gです。遅延タイマーは必要ないのですが、
  • RSコンポーネンツに在庫がある
  • 駆動電流が0.85μAと充分小さい(実測したらもっと少なかったです)
  • マニュアルリセット用の端子がある
という理由で選びました。
 このリセットICでElecrowに注文した基板の電源とリセット回路は下のようにしました。TWE-Lite(JN5164)のリセット端子には500kΩのプルアップ抵抗が内蔵されているので、外付けのプルアップ抵抗は省略したほうがいいかも知れません。


自転車ビーコンの新機能を復活!? LEDフラッシャー機能を実装

 自転車ビーコンがMake: Japanのblogで紹介された際に「普段はテールランプとしてサドル下に装着しておき」と説明されていましたが、この自転車ビーコンにテールランプ機能はありませんでした。普段は、何の役にも立たない荷物でした。
 その後、よく考えたら、リセット用として使っていたスイッチをGPIOで読み取るようにしたら、少しの改造でテールランプとしても使えることに気がつきました。基板の設計を変更し、

  • リモコンからの指令を待ち受ける自転車ビーコンのモード
  • 無線機能を一切使わないLEDフラッシャーモード

をスイッチで切り替えるようにしました。


 無線を使わないとしてもCPUは電力を消費するため、フラッシャー動作中はLEDのON/OFFタイミング以外はCPUをスリープさせるようにしています。