マドンナライフとのたたかい

2014/06/27 7M4MON

send

ニシトモ(コーワ)の婦人体温計「プチソフィア(コンピュータ基礎体温計BT-14)」は
パソコンに接続してグラフを表示する機能があるのですが、別売のソフトおよび専用接続ケーブルは結構なお値段です。。
「電子基礎体温帳 マドンナライフ」
マドンナライフ(ソフィアシリーズ専用接続ケーブル MU-02K):11,880円(税込)


足かけ日間ほど弄って無事にグラフを表示できたような夢を見たので、記事にしてみます。
おそらく保証外の使い方なので、メーカーに問い合わせたりしないでください。

プチソフィアのコネクタは、昔の富士フイルムのデジカメ等に使われていた「ミニ4ピン角型」です。
秋葉原の中古ショップにケーブルがあったような気がします。
喜び勇んでUSBポートに挿さないでください。ラッチアップして壊れる可能性があります。

とりあえずFGとの電圧を測ってみると、左から
① 3.072V、② 3.082V、③ 3.072V、④ 0V
となっています。どうやらUSBではないようです。

10kΩでプルダウンすると
① 0.32V…SEndって出た。
② 3.02V…出力?
③ 0.32V…入力?
でした。

そこで、秋月の3.3VのUARTモジュールを引っ張り出し適当に繋いだら、マドンナを使ってみます。
ちなみにソフトウェアはニシトモのサポートサイトからダウンロードできます。

接続先をCOMポートにして、ファイルを作成し、データ受信待ちにして、1ピンをLoにすると…
バーが進んだ!

しかし、バーが最後まで行った後「オーバーランしました」とエラーになってしまいます。

overrun

体温計の表示は一瞬戻るので、データを吐き終わっても①がLなのでループしてるのかな。

じゃぁどこで制御してるのかと、一番怪しい線はRTS線なのでRTS線を見ると、ビンゴ!受信中の時はLに変わっています。
ならば、①RTS(10k介す)、②RX、③TXで上手くいくかと思えば、そうは問屋が卸しません。
データが終わっても(体温計の表示が元に戻っても)RTSはLのままでした。。

オシロで確認すると…2ピンはUARTっぽいです。ボーレートは300bpsらしい。
入力だと思っていた3ピンから何か出ている…どうやらデータの頭でH→Lになるようです。

data

3ピンの間を数えてみると10ビットあります。スタートビット+8ビット+ストップビットでしょう。
しかしながら、スタートビットがHから始っているのは変です。
また、ストップビットもLで終わるのはおかしい…ということは…反転してるのかな?

幸い、FT232なので、FT_PROG(MProgの後継的なツール)でRXの極性を逆にすると…
ftprog
エラーメッセージはは「データに誤りがあります」となり、相変わらずデータは表示されませんが、
ループして送ることはなくなりました。一歩前進です。
3ピンの間が一定ではないのが原因でしょうか。または、プチソフィアでは婦人体温計とL-Sophiaの
プロファイルは使用できないのでしょうか?(か、その両方?か、別の要因??)

ダンプしてみると、HEXで
66 47 36 47
66 48 37 04
66 49 36 18
66 50 36 23
66 51 36 24
66 52 36 20
みたいなデータになっていることがわかりました。

1バイト目が月を表し(66は6月、5月は65、4月は64)、2バイト目は日です。
ただし、1日が41で、9日が49、10日が50で31日が71です。
残りの2バイトは36.47℃を表すようです。
開始日は月の上位ビットが0010になるみたい。測り忘れたときは1110かな。

ここまで分かれば自作ソフトを作っても良いのですが、もうちょっと頑張ってみましょう。

・UARTは実は正しいデータじゃないのかも?データの頭を取り逃しているとか。
 →③のトリガを考慮したデータ中継アダプタをPICマイコンで作る…NGっていうか、アダプタ無しとデータが同じだった。
・マドンナライフのボーレートが違うかも?
 →PICマイコンのプログラム上でボーレートを変更する…バーが進まない。NG。
プチソフィアでは婦人体温計とL-Sophiaのプロファイルは使用できない?
 →マドンナライフの中を覗いたけど、よく分からなかった。

と、ここでマドンナライフのヘルプファイルを見てみると、
「受信できない場合」…「(前略)マドンナをインストールしたフォルダにMadonna.logファイルがあります(後略)」
ほー、ほー、とMadonna.logファイルを開いてみると、なんと、受信データをHEXダンプしたものでした。
しかし、自分がダンプした物とはデータが異なります。さらに、毎回、データ長がちょっと違います。

もしや、と思い、GUIが「受信準備中」から「受信中」となるまでマイコンにリセットをかけてみると…
見事、受信成功です!
しかしながら、グラフ上のデータが途切れ途切れになってしまいました。惜しい!
ということで、再度、Madonna.logを見ると、やはり自分がダンプしたデータとは異なります。
うーむ、マイコン上でのウェイトが原因かなと、マイコンを外し、FT232に直接繋ぐように戻して、
RTS線にスイッチを付けて受信してみると…

無事にグラフも表示されました!

Madonna.logも自分がダンプしたものと一致していました。
さすがにスイッチは無いだろうと、DTR線を当たってみると、「受信中」となったタイミングでLに落ちていました。
最終的にはプチソフィア専用でUARTモジュールを占有するのはもったいないなと思い、
RXに2N7000を付けて反転しました。

invert

これにて一件落着なのですが、まとめると…


という夢を見たのさ。お疲れ様でした。