2014年12月23日火曜日

オレオレTWE-Lite R基板でファーム書き換え



 このところお気に入りのTWE-Liteは、DIP/SMD取り混ぜて15個以上を使いました。秋月のFT231X USB-シリアル変換モジュールを持っていたので、専用ライターのTWE-Lite Rは持たず、書き込みにはこのモジュールを使っています。また、使用割合の高いSMDタイプはTWE-Lite Rのソケットに載らないため有り難味がほとんど無く、TWE-Lite Rを必要としない理由のひとつになっています。
 この方法は汎用性があって良いのですが、RESETとPRG(PWM3)をタクトスイッチにつないで操作するのが多少煩わしいです。

TWE-Lite Rの中核部分は設定変更したFT232Rらしく、「TWE-Lite Rメモ」に詳細が書いてありました。メモと回路図を参考に結線し、FT_PROGでEEPROMの設定を書き換えてみたら、TWE-Lite プログラマに「TWE-Liteのリセット」ボタンが現れ、無事にオレオレTWE-Lite Rが出来上がりました。これで、書き換え時のスイッチ操作が不要になります。


  TWE-Lite DIPの下端にある書き換え用端子は、RESET, RX, PRG, TX, GNDの5ピンが引き出されています。また、TWE-Liet Rには対向側の5個の端子が用意されているようです。ただ、実際に使ってみると、
  • 電源に太陽電池やCR2032を使う子機に対しては、書き換え時に外部から安定した電源を供給したい。
  • 無線タグアプリの子機でインタラクティブモードに入るために、M1をアサートしたい。
等の便利機能が欲しくなります。このため、自分で工作する場合は、RESETの隣にVccを、GNDの隣にM1を配置した7ピンをピンヘッダで出しておきます。すなわち、以下のようなピン配置になります。
  1. Vcc
  2. RESET
  3. UART RX
  4. PRG
  5. UART TX
  6. GND
  7. CFG(M1)
 この配置に合わせたピンソケットやTWE-Lite DIP用ソケット、PRG,RESETスイッチ、M1用ジャンパーピンを装備した、オレオレTWE-Lite R用の基板を作りました。結構便利です。






2014年12月22日月曜日

自転車ビーコン メロディー書き換えのデモ

 メロディー書き換えのできるファームウェアの作成と並行して、自転車ビーコンの2セット目を組み立てました。受信機はキャンドゥ(100円ショップ)の自転車用LEDフロントライトを電池ケースとして利用しながら改造、送信機はタカチのプラスチックケースCS75に収納しました。
 デモ動画では、サンプルアプリに入っていた「ちょうちょ」の他に、3曲を次々に書き換えています。
シリアルコマンドを拡張してMML転送用のコマンドパケットを定義し、ペイロードにMMLを載せて、画面外のPCに接続したTWE-Lite DIPから送信しています。受信側では、ペイロードのMMLをEEPROMに書き込んで、すぐに再生を開始します。スリープ中は受信機がコマンドを受信しないので、受信動作が連続するメロディー再生中に書き換えを行います。

2014年12月20日土曜日

自転車ビーコンの改良版ファームウェアを作成

 ブレッドボード上で組んだ試作回路であれこれいじって、改造版のファームウェアが完成しました。
  • 親機からの無線パケットに乗せてMMLのメロディーデータを更新
  • モードビット配線無しに、Device Idでmode3,mode4,mode7が指定可能
  • 子機間欠モードでチャンネル変更に対応(u32ChMaskの末尾をデフォルトchに使用)

マニュアルが無いので使う人はいないと思いますが、回路図とソースコードは公開してあります。
  https://github.com/true-nature/App_BicycleFinder

 無線経由のメロディー更新は、ぜひとも実現したかった機能です。これで、新曲が出てもすぐに対応できます。

2014年12月18日木曜日

自転車ビーコン改造中

 自作の自転車ビーコンは、受信機側の電池を最後に交換してから3箇月経ちました。まだ動いています。

 近日中に、2個目を製作する予定です。2個目の製作と同時に、ファームウェアも以下のように改造します。

間欠モードをDevice Idで指定可能にする

現在は、標準アプリの仕様を継承してモードビットM1,M2,M3の結線で間欠モードを指定しています。間欠10秒モードでは3本すべてをGNDに落とす必要があり、SMD版の製作が多少難しくなっています。
 親機または中継器の場合は、インタラクティブモードでDevice Idを121または122に設定すると、結線無しにモードを変更できますが、子機にはこのような仕様はありません。このモード変更は、ファームウェアを少し改造するだけで子機にも応用できるので、全てのモードをDevice Idで指定できるようにします。

インタラクティブモードで設定したチャンネルを反映させる

現在は、子機間欠モードで使用するチャンネルは、ビルド時に指定したデフォルト値以外使用できません。この原因と思われる部分を見つけたので、対策してみます。

メロディデータを無線経由で変更可能にする

TWE-Liteには4kBのEEPROMがありますが、システムと設定値で少し使用しているだけで、ほとんどが未使用です。もったいないので、ここにMMLデータを置けるようにして、 ファームウェアを書き換えなくてもメロディーを変更できるようにします。

2014年11月10日月曜日

TWE-Liteで雨センサーを作ってみた

せっかく作った戸締まりチェッカー。これを雨センサーを組み合わせたら、窓の閉め忘れで室内びしょ濡れという事故が防げるんではないかと思い、雨センサーを自作しました。
 ニトムズの銅箔テープをカッターで切って、100円ショップのプラ版に1-2mmの間隔で貼り付ければ、センサー電極の完成です。このセンサーをTWE-Lite DIPのAI3とGNDの間に接続し、AI3(ADC2)を2.2MΩでVccにプルアップしました。
 屋外設置なので、電源はTWE-EH Solarと1Fの電気二重層コンデンサの組み合わせにしました。スタート時は充電量が0なのですが、まもなく雨が降るとの予報だったので、乾電池で電気二重層コンデンサを充電して、即運用開始です。

土曜日に製作して、日曜の未明から丸1日の電圧変化をモニターしました。左がそのグラフです。青は雨センサー、緑は電気二重層コンデンサーの電圧です。
 日曜の朝に小雨が降り始めると、すぐに電位が低下しました。この時は平面に放置していたのですが、雨粒がいつまでも留まると晴天時の回復が遅れるため、14時ころに手すり上の斜め設置に変更しました。設置変更の再に雨粒を拭いたので、一時的に電位が回復しています。
 この日曜日の天気は降ったりやんだりでしたが、21頃には雨が上がりました。しかし、雨センサーの電位は翌朝まで下がったままです。ヒーターを内蔵していないので、雨上がりの検出は苦手なようです。大容量の電源は無いし、雨上がりを検出する必要も無いので、この特性は改善する予定はありません。

 せっかく作った雨センサーですが、もうじき訪れる降雪期の事はまるで考えていません。雪の季節に窓を開け放つことは無いので、 寒い時期は片付けて、春になったら運用再開ということになると思います。

2014年11月1日土曜日

RoombaにTWE-Liteを運ばせてLQIを測ってみた

 TWE-LiteのLQI(電波通信品質)が距離の目安になるというので、実際にどの程度のものか実験してみました。

 TWE-Liteを載せたRoombaを4畳半の部屋で走らせて、部屋の四隅に置いた中継器および親機でLQIを1秒毎に測定し、距離感を円で描いて動画化してみました。



 上の図に、LQI値からざっくり推定した距離が円として描いてあります。距離が遠いほど大きな円になります。プロットの範囲は部屋を真上から見た形に相当し、各々の円の中心は対応する中継器の座標に配置してあります。カメラの映像とグラフの時刻が微妙に合っていないため、変化に時間差があるようです。
 LQIと近さの間には正の相関があるのは見て取れますが、いくつか問題があって、この実験では可もなく不可もないという結果になりました。
  • 子機と親機・中継器のアンテナ高さが揃っていないと、アンテナの垂直方向の指向性が合わないため、近くてもLQI値が小さくなる。
  • 測定した部屋が狭すぎるせいか、距離の変化に比較してLQIの変動が大きい。
複数の中継器を置いて相対的な遠近を知る用途なら使えるかもしれませんが、絶対的な距離を知るのは無理っぽい感じです。

2014年10月29日水曜日

戸締まりチェッカー ソーラーセル版子機の充電状態をモニターしてみた

 自家製戸締まりチェッカーのセンサー子機は、リチウム電池版とソーラーセル版の2種類を作りました。リチウム電池の方は興味深い動作は別にありませんが、太陽電池を使うのは初めてなので、どのくらい使い物になるか興味津々でした。

 センサー子機は、I/O状態を定期的に親機へ送信します。この情報には、電源電圧とTWE-EH Solarに接続した電気二重層キャパシタの電圧が含まれています。 これをデコードして、Raspberry Piのモニター用に使っていたmrtgでグラフ化してみました。

  過去1週間のグラフは、このようになりました。運用開始から1週間しか経っておらず、この間にも何度かメンテナンスをしているため、切れ間の多いグラフになってしまいました。
 青色がVcc、緑色がVC2(電気二重層キャパシタ)の電圧です。電気二重層キャパシタは、秋月で買った耐圧5Vの容量1Fです。
週間電圧グラフ
先週の水曜日から計測を開始しましたが、VC2の電圧はほとんど上昇せず、日没の度にシャットダウンしていました。この時の起床間隔は30秒でした。このペースでは、充電と消費が拮抗していたようです。昼間に充電されなくては困るので、金曜日に起床間隔を1分に延長したところ、生き返ったように充電されるようになりました。

 グラフのところどころで、緑色で示した電気二重層キャパシタの電圧が急落している箇所があります。この子機はFRISKのケースに収納していますが、 絶縁がいい加減だったために、ケース内で電極が接触して短絡する事故が発生していたようです。
  月曜の朝にケースを開けたときにもキャパシタを短絡させてしまったらしく、1V未満からのスタートになりました。この日は晴天でしたが、一日かけても2V程度までしか充電することができず、日没直後にTWE-Liteが落ちてしまいました。
 こうも短絡事故が頻発していては困るので、amazonで買ったカプトンテープでTWE-Lite SMDと電気二重層キャパシタを包む対策を火曜日の朝に施しました。この後は、短絡は発生していません。

 火曜日の一日分の電圧は、下のようになりました。起床後に雨戸代わりのシャッターを開けてから充電がスタートし、正午頃には満充電(約3.45V)になっています。10時頃にVccの電圧が急落していますが、これは、VC2が2.6Vの閾値を超えてVccに直結されたためです。その後は、VccとVC2がほぼ同じ電圧で推移しています。
 日中に充分に充電されたため、日没後も動作し続けました。
復活して満充電
  翌日の水曜日は、下のようになりました。電圧は夜明けまで徐々に下がりましたが、3Vを切ることはありませんでした。日中の充電は、9時頃には満充電に達しています。
 もう安心です。このペースなら、暗闇の中でも満充電から丸1日以上は持ちそうです。