2015年8月16日日曜日

CR2032放電実験 8日目

 自作のファームウェアにバグがあって、一定電圧以下になると送信を即時中断してしまう動作になっていました。電圧が2400mV未満に落ちなかったのは、これが原因だったようです。この足切り動作をやめたら、電圧が落ちても送信を続けるようになりました。

 大雑把な秒単位ではなく、4msのtick単位で送信中の電圧変化をプロットしたら、意外な形になっていました。
低い電圧でスタートし、いったん高い電圧になってから元の電圧まで戻り、上下を繰り返して開始電圧+0.2V位に収束しています。
 100uFのチップコンデンサを接続した場合は、下のグラフのようになりました。
開始時の電圧の乱れが収束しないばかりか、変動の幅が広くなっています。中盤以降は安定しますが、もともと大きな乱れではありませんでした。このようなバースト送信では、バッファコンデンサを置く意味は無いかもしれません。

 終盤の収束した電圧が電池そのものの電圧とみなしてプロットしたら、このようになりました。送信時間を毎分10秒にしたり5秒にしたりでgdgdになっていますが、このくらいインターバルを置けばバースト送信による寿命短縮は気にしなくてもよいということはわかりました。

2015年8月14日金曜日

CR2032放電実験 6日目

 電源電圧が2.4Vからほとんど下がらなくなりました。生ログを見ると、2.4Vまで下がったあたりでパケットの連打が止まっています。ファームウェアでは送信開始時の電圧が2.1V以上で連打するようにしているので、別な原因があるようです。

1分毎に5秒連続送信を2回繰り返していましたが、2回目の連打ができなくなったので、5秒連続送信を1回だけに変えました。しかし今は、1回に減らした5秒の連打さえも維持できなくなっているようです。

2015年8月12日水曜日

CR2032放電実験 5日目

まだ続いていますが、1分毎に繰り返している、

  1. 5秒送信
  2. 1秒休止
  3. 5秒送信
のうち、3.の5秒送信がスタート直後に止まる場合が多くなりました。終わりが近いようです。
ここからは、休止時間を3秒に延ばして延命を図ってみます。実験途中で条件を変えるのはアレなのですが、そもそもスタートが新品状態ではなかったので、そこは気にしないことにします。
Excelの制限で32000点を超えるデータを扱えないため、1.の送信開始時と3.の終了時だけをプロットするようにしました。

2015年8月11日火曜日

CR2032放電実験 4日目

日中に電圧が上昇し、夜間に下がる傾向が読み取れます。
全部の点をプロットすると処理が重くなるので、2秒毎の代表値を使用しています。

2015年8月10日月曜日

CR2032放電実験 3日目

 TWE-Liteバースト送信によるCR2032の放電実験を始めて3日目になりました。
まだ力尽きる様子はありません。
 送信中の平均消費電流は、テスターで大雑把に測った感じでは3-4mAでした。仮に4mAとすると、約100mAhを放電したことになります。順調ならば、あと二日くらい続きそうです。

2015年8月9日日曜日

コイン型リチウム電池でTWE-Liteをバースト送信させた場合の電池寿命を検証してみる

 自転車発見器の送信機は、毎秒32回のパケット送信を4秒以上連続して行います。初期の自転車発見器を使い始めたころ、リモコンの電池が思いのほか早く消耗してしまい、この使用方法が大電流を苦手とするコイン型リチウム電池の寿命にインパクトが与えたと思っていました。このため、現在のリモコンは、電気二重層コンデンサに少しずつ蓄えた電荷を電源とするように設計してあります。
 しかし、一旦コンデンサに蓄えてから使用する方式では、
  • 使用できる電力の総量が半減する
  • 電源電圧の上昇が緩やかなためリセットICが必須
  • 電気二重層コンデンサをはじめとする部品コストの上昇
というデメリットがあります。
 そこで、原点に立ち返り、コイン型リチウム電池による直接駆動でTWE-Liteがどのくらい持つのか検証してみることにしました。

検証開始

 検証に使った電源部は、下の図の通りです。電流制限用の1kohm抵抗を外し、1Fの電気二重層コンデンサを100uFのチップ積層セラミックコンデンサ(DCバイアス状態のため、実質80uF)に交換しました。
 電源部を改造したリモコンの送信スイッチを、Raspberry PiのGPIOに接続し、送信トリガーをRaspberry Piから定期的に与えるようにしました。
 送信パターンは、
  ・5秒間送信
  ・1秒間停止
  ・5秒間送信
を1分毎に繰り返すようにしました。これは、空振りによるリトライを考慮したパターンです。電圧の計測は、TWE-Liteの標準アプリと同様に、内蔵AD変換で得られる電源電圧を使用しました。

 丸1日以上計測したところ、結果はこのグラフのようになりました。土曜の13時頃から始めて、翌日の13時を過ぎても、普通に送信が出来ていました。全体に電圧がやや低めなのは、ダイオードによる電圧降下が0.2Vほどあるためです。


バッファコンデンサ除去

 送信のたびに発生する脈動が100uFコンデンサによるものか確かめるため、途中でコンデンサを外してみた所、脈動はほぼそのままで、平均電圧が下がりました。脈動の原因は、大電流取出しによる一時的な内部抵抗の上昇が原因ではないかと思います。グラフの一部分を切り出して拡大すると、送信開始と送信終了で数十mVの電圧低下が発生している様子がわかります。

コンデンサ再接続

 二日目の18時を過ぎた頃に、トリガーを与えても5秒間の送信を維持できず、1-2秒で息切れするようになりました。送信インターバルを変えれば復活するのではないかと思い、パターン周期を2分毎に変えたところ、少しずつ電圧が回復してきました。
 さらに、取り外したコンデンサを再び接続したところ、安定して送信できるようになりました。

結論

 新品の電池でないにもかかわらず、丸1日以上送信を維持できました。24×60=1440回以上ということは、回数だけなら約4年分になります。実使用では長いインターバルを置くので、待機時の消費電流を抑えれば、数年間は使えそうです。
 CR2032と1Fの電気二重層コンデンサはほぼ同じサイズなので、PS-65プラスチックケースでCR2032による直接駆動を検討してみます。


CR1220の場合

 コイン電池をCR1220で試したところ、息切れ状態のCR2032と同様に、連続送信を維持できませんでした。CR1220による直接駆動は無理なようです。

2015年8月4日火曜日

MFT2015に出展しました

8月1日、2日に東京ビッグサイトで開催されたMaker Faire Tokyo 2015で、自転車ビーコンと戸締まりチェッカーを展示してきました。 翻訳家の高橋信夫さんが、展示の模様を facebookにアップしてくれました。 様々な収穫と反省点がありました。 このエントリに徐々に書き足して行こうと思います。

2015/08/09追記
 会場内の位置は、A-08-09。会場を貫く通路に面していて、エレクトロニクスのエリアの中では、特に恵まれた場所でした。
初めての出展で、チラシを何枚用意したらいいか見当もつきません。地味な展示なので人気は無かろうと、ざっくり予想来場者数の1%と見込んで200枚を初日に用意しましたが、開場後3時間で無くなりました。1日目の帰宅後に追加分を印刷したものの、プリンタの紙とインクが尽きてしまい、用意できたのは100部余り。
 次があるとしたら、チラシ印刷業者に委託して千部用意します。

 1日目と2日目を比べると、1日目の方がビジネスっぽい来場者が多かった印象です。
 今年は東京コスモス電機さんの展示が無くて残念に思っていましたが、社員の方が数名も来られて、いろいろ話をすることが出来ました。
 1日目の終了後に開催された出展者懇親会に出てみましたが、会場を離れて参加者1箇所に集めただけで、交流の場としては意味が無いと思いました。他の出展者と話がしたいのであれば、出展者リストを予習して、昼間に見て回った方がいいです。
 帰った後で知ったのですが、前夜にはプレス向けLT&展示 が会場内であったようです。これは見てみたかった。

 1日目を終えた時点で、特に多く質問される項目(電池もち、通信方式等)がだいたいわかりました。一人ずつに同じ事を話していたら喉の負担が大きすぎるので、2日目には回答用の紙を用意して、聞くまでも無く見るだけで理解できるように目立つ場所に置きました。

 当日、会場に向かう知らなかったのですが、大学時代を共に過ごした友人が、 熊本高専 Makers として出展していました。熊本高専からの出展があるのは知っていましたが、会場へ向かうまでのfacebookでのやり取りで初めて知りました。東京ビッグサイトで十数年ぶりに再会できました。

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をスリープさせるようにしています。

2015年6月25日木曜日

TWE-Liteを基板から外す

 TWE-Lite(SMD)を基板に取り付けて動かしてから、基板設計の問題点に気づくことがよくあります。そんなときは、組み立ててしまった基板は使わず、新たに設計した基板で作り直します。こんなことを繰り返しているうちに、失敗作の基板が数枚貯まってしまいました。
 使っている部品が安ければ捨ててしまうところですが、TWE-Liteは1個1430円。ホイホイ捨てるには抵抗があります。何とか再利用したいと思い、半田吸い取り線を使って基板から剥がそうとしましたが、一旦付けてしまったTWE-Liteは容易には外せませんでした。

 半田が溶ける温度まで基板全体を加熱したら外せると目論んで、ヒートガンを買って試してみました。
 基板とTWE-Liteの間に隙間ができて、そろそろ外れるかと思ったら、ポロリとシールドがだけが外れてしまいました。


 そのまま続けたら他のチップ部品まで外れてしまうかも知れなかったので、基板の裏側から加熱することにしました。基盤がゆがむほど加熱して、ようやく外すことが出来ました。
 今週末には、シールドを元に戻して、新しい基板に取り付けてみます。

2015.06.30 追記
 5枚試してみて、救済できたのは2枚だけです。半田が十分に溶けないうちに外そうとして、TWE-Liteの端子が剥がれてしまったり、加熱しすぎてTWE-Liteのチップ部品が落ちてしまったり、温度管理が原因の失敗が多いです。放射温度計で基板の温度を測りながら、200度に達するころにピンセットでつついて外していますが、なかなか成功しません。

2015年6月22日月曜日

Maker Faire Tokyo 2015に出展します

Maker Faire Tokyo 2015に出展応募し、承認されました。
自転車ビーコンと戸締りチェッカーを展示します。


2015年6月3日水曜日

自転車発見器の電池を交換

 昨日の夕方、いつもの駐輪場で自転車発見器を動作させたら、LEDが通常の4倍速で点滅していました。電池の残量が減って、電圧が低下したようです。

 前回の電池交換が2月26日でしたので、今回の稼動期間は約3か月を少し上回る程度でした。使用した電池は、Amazon Basicsのニッケル水素電池(750mAh)です。
 前回の電池股間前は、5か月動作しました。今回は呼び出しの空振りを防ぐために、4秒毎のスリープ解除時に受信待ちを行う起床時間を長めにしたので、電池持ちが犠牲になることは予想されていました。
 また、前回の電池交換から今回までの間に、タッチでメロディー切り替えする機能を追加しました。その際、動作確認のために、一日に何度もメロディーを鳴らしたことがあります。これが電池を消費したという要因もあります。
 3か月が長いか短いかは人によって見解が異なると思いますが、私にはとって許容範囲内です。

2015年5月21日木曜日

LPC810でLチカ / JIS D 5601準拠の車速パルス発生器

 1年以上前のトラ技付録に付いてきたLPC810を使ってLチカしてみました。

 単純にLEDを点滅させても何の役にも立たないので、JIS D 5601:1992(自動車用スピードメータ)に準拠した車速パルスを出せるように周期を調整し、パルス周期の時速換算値をLCDに表示するようにしました。LPC810の出力はFET(2SK4017)のゲートにつながっていて、車載電源と同じ電圧のパルスを発生できるようになっています。デフォルトの設定ではメーター1回転毎に4パルスですが、リセット時にUP/DOWNキーを押しておくと、2pulse/rev., 8pulse/rev., 16pulse/rev.に切り替えることができます。
 この信号をカーナビの車速信号ラインに流すと、時速300kmの世界をナビ上で再現できます。


 こんなの作っても、何の役にも立ちませんけどね。

 参考にした書籍は「挿すだけ! ARM32ビット・マイコンのはじめ方」です。サンプルのソースコードがコンパクトで理解しやすかったです。

 ソースコードと回路データは、githubの公開リポジトリに置いてあります。

2015年4月29日水曜日

KiCadの3DフットプリントをFreeCADで作るの巻

 今年に入ってから、TWE-Liteの工作に使う基板に、専用のプリント基板(PCB)を使うようになりました。プリント基板CADはKiCadを使っています。
 KiCadには既存の部品ライブラリがあります。しかし、抵抗やコンデンサ、FETのような一般的な部品以外は、自分の使う部品はライブラリにはまず存在しません。これらは、回路図の部品も、基板エディタで必要となるフットプリントも、全て自分で用意しなくてはなりません。
 KiCadには回路図ライブラリエディタとPCBフットプリントエディタがあるので、プリント基板を作るのに必要なデータはKiCadだけで用意することが出来ます。さらに、2次元のPCBフットプリントに3Dデータを関連付けすると、基板の部品配置を3Dプレビューで立体的に把握することが出来ます。TWE-Liteを使う工作では、小さなケースに部品を配置する必要があるため、この3Dプレビューがとても役に立っています。
KiCad用の3Dフットプリントを作るにあたり、以下のチュートリアルが参考になりました。 
    Tutorial: Custom 3D models for KiCad 3D viewer


 私も、TWE-Liteの3Dフットプリントを作る過程を録画してみました。
 こちらは 、TWE-Lite SMD本体。

 さらに、ハテナアンテナも。
動画は10分前後ですが、実際には、データシートから必要な寸法を拾い出すのに多くの時間を要しています。
 この他に、電気二重層コンデンサ、リチウムコイン電池ホルダー、 リチウムコイン電池、タクトスイッチ、プラスチックケース等の3Dフットプリントも作りました。これらは、githubのリポジトリで公開しています。

2015年4月26日日曜日

しゃべる戸締りチェッカーのリモート子機を追加

 「みんなのラズパイコンテスト」でTWE-Lite賞を受賞した戸締りチェッカーのリモート子機をもう一台作ってみました。初号機はユニバーサル基板にTWE-Lite DIPでしたが、弐号機はKiCadで設計してElecrowで作ったプリント基板にTWE-Lite SMDを搭載しています。
 初号機のケースは穴あけ位置を間違えた結果、切り貼りの後が痛々しくて見苦しかったので、弐号機はFreeCADで配置を確認しながら位置を決めました。でも、まだ改善の余地があります。

 新旧のリモート子機を並べてしゃべらせてみました。左の黒が初号機、右のアイボリーが弐号機です。 アナログアンプ部分が別物なため、弐号機は妙に大声になっています。
初号機の音声合成ICは「ATP3012F5-PU(落ち着いた女声)」、弐号機は「ATP3011F4-PU(かわいい系の女声)」です。この弐号機の声、何度聞いてもPepperと同じです。PepperもAquesTalkを使っているのでしょうか?

2015年4月20日月曜日

自転車発見器に新機能 タッチでメロディ切り替え

 TWE-Liteのサンプルアプリとして公開されているApp_Melodyは、DI1-DI4に対してメロディーを割り当てて、3+1(停止)種類のメロディーを鳴り分けるようになっていました。App_Melodyを改造した自転車発見器では、送信機のボタンが一個しか無いため、DIの番号による鳴り分けはできません。メロディーは1種類に固定されています。
 これではつまらないので、メロディーをEEPROMから読むように改造し、独自に定義したメロディー更新のパケットによってメロディーを書き換えられるようにしました。これでメロディーは自由に選べるようになりました。しかしこの方式では、メロディー書き換えのためにPCが必要になります。また、書き換え用のパケットを送る操作は、プログラマーでなければ到底できそうにない難解なものでした。

 自転車発見器はTWE-Liteの入出力の一部しか使用していません。未使用の入出力端子のうち、送信機のDI4にリードスイッチを接続して、受信機に仕込んだ磁石にタッチしてスイッチONするという使い方を追加しました。App_Melodyの既存機能により、DI4はメロディーの停止に割り当てられています。これをリードスイッチでONにすると、タッチ操作で再生中のメロディーが止まるようになります。 これだけならリセットスイッチと大して変わりはありませんが、さらに、DI1に接続したタクトスイッチを押しながらタッチすると、タクトスイッチのDI1とリードスイッチのDI4の同時押しができます。この場合の処理として、送信機からメロディー書き換えのパケットを送ることにしました。

 我ながら、面白い機能が出来たと思います。今まではメロディーを止めるために受信機のリセットスイッチを押していましたが、リードスイッチでメロディーを止められるようになったので、受信機のリセットスイッチは廃止しました。

2015年4月19日日曜日

自転車ビーコン 受信機ver3 & 送信機ver4.1

 自転車ビーコンの受信機をElecrowで作った基盤で再実装し、ケースをダイソーの自転車用LEDリアライトに変更しました。このケースはキャンドゥのLEDライトと違い、電池と基板の収納場所が分かれてるうえ、基板に割り当てられるスペースに余裕があるため、改造にとても向いています。
  送信機も、リセットICとGND切り離し用のFETを追加して作り直しました。スイッチを中央に配置して、押しやすくなっています。
以前は受信機の圧電スピーカーをケースの外にボンドで貼り付けていましたが、今度は表面実装用の圧電スピーカーを基板上に実装しました。スピーカーがケース内に入ってデザインの問題は解消しましたが、代わりに音量不足という新たな問題が発生しました。そこで、秋月電子のチャージポンプ内蔵圧電スイッチングドライバモジュールで音量の増強を図ることにしました。上の画像で、左のセットが標準音量版、右のセットは音量増強版(4倍)です。
 これらを並べて動作させてみました。音量の違いがわかるでしょうか?
駅へ行く用事が会ったので、駐輪場で早速試運転してみました。今までは、よーく耳を澄まさないと聞こえませんでしたが、音量増強版では、離れていても聞き取れる、十分な音量になりました。

2015年3月22日日曜日

自転車ビーコンの第4世代リモコン

予定していた通り、自転車ビーコンのリモコンをタカチのPS-65プラスチックケースに移行し、歴代最小のリモコンが出来上がりました。
画像左のPS-85(全長85mm)と右のPS-65(全長65mm)比べると、スペック以上に小さく感じます。手の中にすっぽり収まる小ささとなり、小型化に関しては納得のいくレベルになりました。

 電池交換後に手動で強制リセットが必要、ボタンが中央に無いために持ち方に気を遣う必要があるなど、心残りな点がまだあるので、また基板を起こして作り直す予定です。

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

 TWE-LiteでリセットICを使うに至った経緯を書いたばかりですが、まだ詰めが甘かったです。TOCOSさんの技術情報にあったリセット回路から部品点数を減らして簡略化したリセット回路にしたところ、自作TWE-Lite Rからファームウェアのプログラミングモードに入れなくなりました。
 最初は、push-pull動作のリセットICとライターでRST信号の競合が起きているかと思い、リセットICとTWE-LiteのRST端子の間に抵抗を入れてみました。しかし、現象は変わりませんでした。テスターで調べてみると、ボルテージディテクタ(リセットIC)が電圧不足を判定してRESET#をアサートしている時に、TWE-LiteのRST端子からVccと同じ電圧が出力されていました。
TWE-LiteのMCUであるJN5164のリセット端子は入力専用ですので、不可解な動作です。もしかすると、JN5164のRSTが直接出ていないのかもしれません。このような現象に直面し、TOCOSさんの技術情報にあるリセット回路が、RST端子のアサートではなくGNDの切り離しでリセットを実現している意味が理解できたような気がします。TWE-Liteでは、起動に至る前にRST端子が出力動作をする事があって、通常のリセットICの使い方では起動の制御ができないのではないかと思います。
 観念して、 技術情報にあったリセット回路と同等の回路を組むことにしました。リセットICの追加だけでなくGNDの切り離しが必要なため、小手先の変更では対応できそうにありません。Elecrowから基板が届いたばかりですが、早速作り直しが必要です。

 今回のリセットICにまつわる試行錯誤で得た教訓は「TWE-LiteのRST端子にリセットICを接続するな」です。

2015年3月9日月曜日

コイン型リチウム電池でTWE-Liteを動作させて経験した問題

 TWE-Liteを間欠的に動作させた場合、その平均消費電流はかなり小さくなるため、CR2032等のコイン型リチウム電池でも、長期間動作させることができます(たぶん)。

 CR2032の標準放電電流は0.2mAであるのに対し、TWE-Liteが電波を送受信するときの消費電流は約20mAと、100倍の開きがあります。TWE-Liteで造った最初の作品である自転車ビーコンでは、リモコンの電源としてCR2032を使用し、大きな電流を取り出すためのバッファとして、1Fの電気二重層コンデンサを用意しました。
 しかし、この回路では、CR2032から流れ出す電流を制限していなかったため、TWE-Lite動作時に大電流を放電する事に変わりは無く、CR2032は短期間で電池切れになりました。

CR2032の特性を調べていくうちに、大きな電流を流した場合、標準放電電流で取り出せる220mAhよりもはるかに少ない容量しか取り出せない事を知りました。電池を長く持たせるには電流を制限する必要があると考え、最近試作した戸締まりチェッカーのセンサー子機では、バッファコンデンサとの間に抵抗を入れてみました。
この回路は一見うまく行くかに見えましたが、始動性に問題がありました。C1の両端電圧を見てみると、2Vから全く上昇しなくなるのです。オシロスコープが無いので実際の波形は不明ですが、イメージとしては下のようなグラフになります。
この現象はコンデンサの容量とは関係なく発生し、2Vに達した段階でCR2032からは数mAの電流が連続して流れていました。しかし、R1を100Ωにすると発生しなくなります。
 ファームウェアで何とかならないかと、SVM(Supply Voltage Monitor)の設定変更を試してみましたが、cbAppColdStart()にすら達していないようで、お手上げでした。

 この現象は、C1が充分に高い電圧まで充電されていれば発生しません。試しに、2Vで頭打ちになった状態でRSTをGNDに一瞬落としてみると、C1は3V近くまで充電されます。C1両端電圧の変化イメージは、下のようなグラフになります。
 どうやらこれは、TOCOSさんの技術情報「信頼性向上のための検討」に書かれたリセットICが必要なケースのようです。そこで、高い始動電圧を確保するために、2.63VのリセットIC(TCM809R)を追加しました。TWE-Liteの内部プルアップを考慮して、外部の10MΩプルアップは省略しています。
 起動後は、Q1でリセットICを無効化します。これは、起動後の電圧ドロップでリセットICが再動作してリセットを繰り返すのを防ぐ事と、リセットICの動作電流(9μA)を節約するためです。

 リセットICを追加したところ、2Vで頭打ちになる現象は発生しなくなりました。 この時のC1両端電圧の変化イメージは、下のようなグラフになります。
  定常時のスリープ中に電池から流れる電流を測ったところ、約1.5μAでした。Q1によるリセットICの停止が効果を奏しているようです。

 今後は、コイン型リチウム電池で真面目に電源を設計する場合、リセットICは必ず付けるようにします。

2015年8月13日追記

CR2032の放電特性を検証した結果、電気二重層コンデンサとリセットICを使用しない方向で見直しをしています。詳しくは、
 コイン型リチウム電池でTWE-Liteをバースト送信させた場合の電池寿命を検証してみる

で始まる放電実験をご覧ください。

2015年3月8日日曜日

自転車ビーコンの歴代リモコン4世代

歴代リモコンを並べて撮影してみました。左が古く、右へ進むほど新しくなっています。

 左端は初代リモコン。内部に基板は無く、TWE-Lite DIP PCBを両面テープで固定していました。実際に動くものを手っ取り早く1台作りたかったので、ケースはMINTIA BREEZEの廃品流用です。

 2代目は、コンパクトで安定したケースに入れたかったので、タカチのCS-75と専用ユニバーサル基板で作りました。2代目以降のTWE-Liteは、DIPではなくSMDを使用しています。TWE-Lite SMDはユニバーサル基板に乗らないので、テープで固定していました。2代目の途中から、LEDのパイロットランプを点滅するようにしました。
 小型化については充分でしたが、内蔵したタクトスイッチの厚さに無理があったせいか、チャタリングと思われる誤動作が頻発しました。それ以外にも、スイッチが押しにくい、選定した電気二重層コンデンサの特性が不適切などの問題がありました。

 右から二番目は、現在使用している3代目です。スイッチを大型化し、内部抵抗の小さな電気二重層コンデンサを採用して、2代目にあった問題は改善されました。使用したケースはタカチのPS-85で、大人の掌からはみ出るサイズは大きいと言わざるを得ず、コンパクト化に関しては後退してしまいました。
 3代目からは、KiCadで設計してElecrowで製造したプリント基板を使用しています。お陰で、組み立てがだいぶ楽になりました。

 一番右は、次に作る予定の4代目で使用するケース(タカチのPS-65)です。3代目と比較して半分の大きさのスイッチを使用し、電池をCR2032からCR1220に変えることで、このサイズに納まる予定です。

2015年3月1日日曜日

自転車ビーコンのリモコンケースをCS-75からPS-85に引越し

自転車ビーコンのリモコンを新調し、ケースと基板を一新しました。

ケースは、タカチのプラスチックケースCS-75から、同じくタカチのPS-85に変えました。これは、EDLC(電気二重層コンデンサ)を大きな物に交換するためです。

 CS-75で使っていた電気二重層コンデンサ(ELNA DCK-3R3E224-E)は、サイズ重視で採用したものの、内部抵抗が大きく、TWE-Liteの駆動に必要な約5~20mAの電流を流すと電圧降下が1V以上も発生してしまいます。EDLCはCR2032から取り出す電流を平準化するために導入したものの、DCK-3R3E224-Eでは全く役に立たない事がはっきりしたので、内部抵抗が小さくて稼動実績もある、大容量のSE-5R5-D105VYVに戻すことにしました。SE-5R5-D105VYVは大きくてCS-75に納まらないため、ケースをPS-85に変更しました。

 PS-85にはCS-75のような専用のユニバーサル基板が用意されていませんが、最近はKiCadで設計した基板をElecrowで作るようにしたので、既製基板の有無はどうでもよくなりました。PS-85になって部品サイズの制限が緩くなったので、貧小な10円タクトスイッチから、大きくて押しやすそうな丸型タクティルスイッチに変更しました。

 この画像は、KiCadで設計した基板に部品を載せた状態です。こちらは表面。
 電池ホルダーはSMTU2032です。容量1FクラスのEDLCは分厚くて、平置きタイプではPS-85でも入り切らないため、薄型の縦置き用EDLCを横倒しにして、基盤を挟み込むように配置しています。

 こちらは裏面。UARTのTXとRXを逆に配線するというミスをしたのに加え、後から思いついたアイデアを試すために部品を追加したため、切ったり貼ったりが痛々しいです。
今回から、ケースの加工に型紙を使う事にしました。穴の位置をFreeCADの図面上に描いてからSVGファイルにエクスポートし、これをInkScapeで読んで印刷すると、原寸ぴったりの型紙になります(FreeCADでは原寸プリントができないようです)。

 印刷した型紙をケースに糊付けします。
 糊が乾いたら、型紙に書かれた位置に穴を開けます。大きな穴は、ドリルで開けた穴をハンドリーマーで広げました。
 用が済んだ型紙は、剥がしてから糊を水ぶきすると、綺麗に取り除けます。スイッチ穴の縁が角張っていると手触りが悪いので、ヤスリで傾斜を着けて押しやすくしました。
パイロットランプは、穴を開けずに淡い透過光を見せるようにしました。この方が、穴あけ加工が省略できるうえ、外観がすっきりしてデザイン的にもいい感じです。
黒いケースは光を透過しないので、やむなくLED用の穴を開けました。こういうデザインは好みではないので、この黒いケースはもう使いません。
スイッチの窪みがかなり深いので、カバンの中に入れても誤作動は起こりにくいと思います。明日から、このリモコンを使ってみます。

 できたばかりの新リモコンですが、PS-85のサイズは満足できる小ささではないので、使用する部品を見直して、よりコンパクトなプラスチックケース PS-65で作り直す予定です。既に基板はElecrowへ注文済みで、仕上がりを待っているところです。
 寸法確認のために使ったKiCadの3Dプレビューはこんな感じです。
 ケースに食い込んで見えるスイッチは、穴あけ加工後は若干引っ込んだ状態で露出します。同じく食い込んで見えるLEDは保険のつもりで置いた予備で、実際は並列に配線した表面実装LEDで賄うので、最終的には無くなります。

3月5日追記
型紙作成のため、PS-65ケースにタクティカルスイッチの穴を追加した3Dモデルを用意しました。この角度からは見えませんが、始動を確実にするためのリセットICを追加したため、配線が変わっています。

2015年2月26日木曜日

自転車ビーコンの電池を交換

 自転車ビーコンの受信機側の電池が減り、LEDが警告モードの点滅に切り替わったので、満充電したエネループに交換しました。9月20日頃に電池を入れ替えてから5か月動作しました。4か月は持って欲しいと思っていたので、充分合格です。
 送信機側はまだまだ持ちそうですが、コイン型リチウム電池(CR2032)の特性を調べてみたら見直すべき点が見えてきたので、改良をするつもりです。

 半月前に実施したチャタリング対策は、有効に作用しているようです。改造後は、ボタンを押す前にメロディーが鳴る誤動作は起きていません。

2015年2月11日水曜日

KiCadで設計した基板に部品を実装

 昨日届いた戸締まりチェッカー用基板に、部品を付けてみました。
 バッテリーとスピーカーをつないだらAques Talk picoの合成音声が流れたので、回路に問題は無さそうです。

TWE-LiteはSMD用のパッドに手半田で着けました。テープで固定して、最初の2箇所をずれない様に注意して半田付けできれば、後は楽勝です。TWE-Lite SMDの端子側面は窪んでいて、ここに半田ごてを当てるとブレないので、半田を過剰に盛らなければ、ブリッジの心配は無さそうです。

  アンテナ取り付け用に開けた窓も、TOCOSさんが公開している「アンテナ取り付け用開口(TWE-Lite)」に従って用意したので、寸法ぴったし。
  基板設計には、オープンソースのKiCad (bzr4022-ja)を使いました。フットプリントに加えて3Dモデルを作ると、ケースの中の収まり具合が事前に確認できて安心です。
設計に使ったKiCadのライブラリとフットプリントおよびVRMLの3Dモデルは、githubの公開リポジトリに置いてあります。