2014/05/25

WeatherFlow製WindMeterがAQUOS PHONE SH-04Eで使えない

テストフライト時の風況把握や人力飛行機の対気速度計に使えることを期待してWeatherFlow製のWindMeterを買ってみたのですが、手持ちのAndroid端末SH-04Eで試してみたところ、正常な動作が確認できませんでした。
購入したWeatherFlow製WindMeter
対応Andoroidアプリの評価は5か1の真っ二つに割れていて、うまく使えれば便利なツールであるものの、全く使えないこともあることを想像させる結果です。

せっかく買ったものが使えないのは悔しいので、原因を調べてみました。
アプリのダウンロードページにある動画からわかる通り、センサはAndroid端末のイヤホンジャックに挿入して使います。
センサから出るパルスをマイク端子に入力し、その周波数から風速を求めるものと動作原理を予想して実験を行いました。

実験には以下のようなケーブルを使いました。

実験用のケーブル。1kOhmの抵抗でマイク挿入検知をごまかし、PCから出力したパルスを入力する
マイク入力<->GND間に1kOhmの抵抗をつなぎマイク検出をごまかし、PCのヘッドフォン出力からWaveGeneを使って生成したパルスをAndroid端末のマイク端子に入力します。
その結果、
  • パルス入力直後はWindMeterアプリに数値が表示される
  • しばらくすると表示が0.0m/sになる
という挙動が観測できました。

おそらくこれはマイク入力に自動ゲイン調整(AGC)がかかっているためだと思われます。
マイク端子に入力された波形を表示するAndroidアプリ 音声波形を使い、WageGeneで生成したパルスがAndroid端末でどのように見えるかを確かめてみましたが、過大な入力を与えた場合でも一定時間で波形がクリップすることがない程度まで入力アンプのゲインが落ちることがわかりました。
一部のSharp製端末の場合、マイク入力のAGCはアプリ側から制御できないようで、この類の端末を使っている場合にはWindMeterアプリ側からの対策はできないということになります。

また、数人の方に協力していただいて、いくつかの端末でWindMeterがうまく動くか検証してみました。
結果は下の表なります。

端末名 Androidバージョン マイク端子電圧
(1kOhm負荷時)
動作可否
Nexus 7 (2013) 4.3 0.99V ×
AQUOS PHONE
SH-04E
4.1.2 0.80V ×
Xperia Z
SO-02E
4.2.2 0.82V ×
AQUOS PHONE
ISW16SH
4.0.4 0.80V

公式アプリのページには「オーディオジャックを通して十分な電力を提供する任意のAndroidデバイスで動作します」という文言がありますが、この結果から電力以外の原因でも動作しなくなることがあることがわかります。

以上より、WeatherFlow製WindMeterのセンサにはAndroid端末との相性問題があり、ソフトウエア側からの対策も不可能な場合があることがわかりました。
WeatherFlow製WindMeterの購入を考えている方は、事前に情報収集を行って動作しそうかどうかを確認することをおすすめします。