低消費電力(20uA未満)で動作する気象センサーを作ってみた。

降雨センサーに続き、気温、湿度、照度、風向、風速が測れる気象センサーを作ってみた。

風速計については以下のものがある。

・回転式(発電/回転数検出、風車/風杯など)
・風圧式(ピトー管、振り子)
・超音波式(消費電力大)
・熱式(消費電力大、サーミスタなど)

微風まで計測でき低消費電力かつ機械的可動部の少ないものとなると振り子式のみであるが、その振り子の角度の計測は?とか...風向も測りたいし...とか考えながらアマゾンを散策してたらたまたまジョイスティックが目にとまった。ジョイスティックなら方向も角度も測れるじゃん?とアマゾンや秋月電子から適当にいくつか購入し試してみた結果、ニュートラルの遊びが少なく全方位同じ力で動作するアルプス電気のものが良さそうだ。ただ、気になるのはジョイスティックの耐久性が10万サイクル/方向であること。製品仕様としては十分すぎるとは思うけど風で動作させるとなると常に動きまわるためあっというまかもしれないが、とりあえず消耗品と割り切るしかないか...

省電力化のためジョイスティック回路には計測時のみ電源を供給するようにしてみた。気温/湿度(SHT31)と照度(BH1750)センサーについても計測時のみ電源供給するようにしてみたのだがそれらについては未計測時(パワーダウンモード)の消費電流が0.2uA/0.01uAということがあとでわかったので意味なかったかも。(-_-;)

さらに可能な限り省電力化するために10秒毎に間欠起動させジョイスティック値のみを取得、1分毎にジョイスティック値(最小、最大、平均)、温度、湿度、照度、電池電圧を送信するようにしてみた。実測での平均消費電流は20uA未満だったので計算上ではボタン電池でも1年以上は持つはず...たぶん。

ちなみに照度データからはいろいろなものが見えてきて面白い。日の出/日の入り時刻などがわかるし天気予報データだけでは現地の雲の状況まではわからないから太陽光発電の発電量と照度から設備の故障や異常を正確に早く発見することに役立つはずだ。太陽光発電してる人に照度センサーは必須かも。

【主要部品】
防水プラケース [KH-F20]
ユニバーサル基板 [UP75X50A]
TWELITE RED PAL アンテナ内蔵タイプ★特価★ [MW-R-PAL-P]
SHT31使用 高精度温湿度センサーモジュールキット
ジョイスティックRKJXK122000D DIP化キット
KKHMF 3個 BH1750 GY302
光 アルミパイプ 4丸×395mm AP395-4
発泡スチロール球 直径75mm ※手芸用品店で購入したほうが安い
【A】取り付け部品付きシャフトカプラー 2mm – 4mm

試験してみるとなぜか不定期に送信データ抜けが発生してしまう。特価のTWELITEをaitendoで見つけてついポチッてしまったのだが4個購入したうちの2個は送信データ抜けが激しかったりする。詳しく調べてみないとわからないがやはり安いのには訳があるということなのかな?

【ホスト側で保存したログ・データの例】
日付 時刻、電圧、気温、湿度、照度、X{最小、最大、平均}、Y{最小、最大、平均}、東を0度とした角度、16方位

【外観】
本体が太陽に照らされるとケース内の温度が急上昇してしまうので百葉箱などを使うべきだろうが風も検出するので防水対策もかねてカバーを取り付けてみた。
風向はジョイスティック値をatan2(y,x)*180/3.14で角度変換できるが風速計算についてはこれからデータ取りしてみないとわからない。ちなみに球の大きさや取付位置を調整することで感度調整ができる。

【履歴】
2024-06-16
10分に1回ほど送信データ抜けが起こっていたが正規品のTWELITEと交換したみたところ数時間に1回程度に改善。受信機の近くに設置すれば抜けは起こらないので設置場所による電波状況の問題もありそう...

2024-06-14
送信データ抜けの件について調べてたら不定期に送信出力が3dBm弱程度落ちるのを発見。これが原因かと思ったが送信出力の指定をしていない場合の規定の動作らしく送信出力指定しても抜けは発生するし何度送信リトライをしても送信失敗となるから送信周波数が狂ったりしてるのかもしれない...測定器持ってないのでわからないけど。

送信出力について色々試してみたが、規定値は0dBm(3dBmまでの変動を許容)で、+3dBmに変更するとかなり通信距離が延びるようだ。JN5164は0dBm、JN5169は+10dBmが最大出力であるが+3dBmを超える送信出力は消費電流が多くなるためボタン電池では駆動しきれないし電池電圧の低下にも耐えられない。それとJN5164よりJN5169のほうが消費電流が少なめなのでボタン電池駆動するときはJN5169で+3dBmを指定するのが良さそうだ。

【回路】
ジョイスティックの計測時はGPIO制御によりXとYを直列接続に構成し直して測定しない軸をプルアップ抵抗代わりとして利用するとともに電池の電圧変動の対策としてその中間点(+V)をADCリファレンス電圧としている。そのために基板をリワークしY-GNDをNC端子に接続し直す必要がある。

【ファームウェア】
SHT31/BH1750の測定は最低16msと比較的長い時間がかかることから省電力化のため最初に測定開始だけしておき次の間欠起動時(1秒後)に測定値を取得するようにしている。