自宅IoT ESP8266+風力計で自宅周辺の風がどれくらい吹いているのか測ってみた

おことわり:今回測定した風力については使用した風力計の仕様、回路、入力電圧等の理解が不十分のまま測定していると思いますので、その測定内容の正確性については保証できない点、あらかじめご了承の上、必要な箇所については参考にしていただければと思います。次回追って検証はしたいと思います。

立地や自宅周りの環境条件にもよるかもしれないですが、どうも自宅周辺は「風」が通りやすい場所にあるようです。

特に夕方、夜にかけて相当の風がビュンビュン吹き荒れる時が多く、自宅前の植栽がすぐに倒れる、自宅の前に止めてある自転車がすぐに横倒しになる、自転車カバー(100圴で購入しているのでなおさら)が風の力ですぐに破れたり、自宅前のアパートにそのカバーが飛んでっちゃって、何度も迷惑をかけたり・・・と、なんでこんなにウチの家の周りはこうも風が強いのかと、家族でもネタが絶えない話題の一つとなっています。

まあ、確かに自宅は緩やかな斜面にあって、近くに学校や森もあったりで、住宅地ではありますが、あまり密集した地域でもないので、一度風が吹くと、あまり遮るものがない、とうのはあるかもしれませんが。

毎回こんなネタを家族で繰り広げてるんですが、「あんなにビュンビュン吹いている風ってやっぱり台風ぐらいの風でも吹いてるのかねぇ・・・」、「いやいや、そんなことはないでしょ」とか。

とまあ、そんな会話をしているうちに、「風力計でもあったら分かるよね」といった話の流れになり、「じゃあ、実際に測ってみようか」と。

ということで、それをきっかけに「家の周りがどれくらい風が強いのか」を実際に風力計を使ってどのくらいの風力がでているのか試しみることにしました(毎回こんなガラクタ趣味に渋々ながら賛同してくれる妻に感謝)

用意したもの

風力計で収集したデータは自前のサーバに吸い上げたかったので、ESP8266を使うのは前提にしていましたが、インターネットでいろいろ検索すると、NodeMCUのほうを使っている例のほうが多いようです。風力計自体の入力電圧が5V以上を必要としているケースがあり、いつも使っているWeMos D1 mini (ESP-12F)ですと、最大の入力電圧が5Vまで(サイトによっては6Vまでの表記もある)とあり、NodeMCUの場合はこちらのサイトを見ると10Vまでいけるということで、今回はNodeMCUを使うことにしました。

以下は今回の風力測定のために最低限必要なものです。実際の測定では、外に置くため、ソーラーパネル、充電モジュール(過去のブログでも作成しているもの)等を使っています。

最大30m/sまで測定できる風力計で、アルミ合金の素材で耐候性、耐水性はありそうです。

  • その他:ジャンパーケーブル

風力計はこんな感じです。上記サイトではスペックが書かれていますが、間違っている箇所があるため、同梱の説明書を確認したほうが良いです。

説明書で記載されているスペックはこんな感じです。ただ、なんか重複している項目がありますが・・・

一応、記載されているパラメータを転記すると、こんな感じです。

ParameterTechnical index
Wind speed measurement range0-30ms
Wind speed measurement accuracy± 1m/s
Response timeLess than 5 seconds
Baud rate9600
Communication portAnalog interface
Power supply12V-24V DC
Power< 1W
Operating temperature-30-80°C
Working humidity environment0-100%RH (15-95%RH)
Current output type4-20mA
Current output load⩽ 600ohm
Voltage output type0-5V/0-10V
Voltage output load⩽ 250ohm

配置図

各パーツの配置例は次の通りです。

ポイント:
  • 風力計のケーブルは4本のうち、3本使用します。Vin(茶色) => Vin, GND(黒) => GND, 測定ピン(黄色) => A0へ接続します。青色のピンは使用しません。
  • 今回リチウムイオンバッテリーからの電力供給ですが、出力が3.7Vにつき、昇圧モジュールでOutputを10Vに上げた上でESP8266のVinへ接続しています。これにより、風力計への供給電圧は10Vになります。

10Vへの昇圧は昇圧モジュールの調整ネジ(画像の右に写っている金色のネジみたいな箇所)を回し、テスターを使用して調整します(若干オーバーしてしまいましたが・・・)

風力の測定と検証については、簡易的なプログラムで確認する必要がありますが、今回は風力を表示するためのディスプレイを用意していないので、テスト的に確認できるツールが必要になります。

過去に「Ambient」を使用して測定していましたが、今回はArduinoが提供する「Arduino IoT Cloud」を使って確認しました。

セットアップやこちらのサイトを参考にしました。特に「Setting Up Arduino IoT Cloud」の部分を参考にさせていただきました。その参考通りで実際に動かすことができました。

今回はThingsを1つ作成し、風力をグラフ化するためのCloud変数「windspeed」(float型)を作成しました。この変数は後述のサンプルコードにある変数windspeedに値を設定するとグラフとして出力してくれます。

グラフについてはDashboardタブより設定ができ、Gauge(ゲージ)1つと、Chart1つを追加しました。

サンプルコード

#include "thingProperties.h"

void setup() {

  Serial.begin(9600);

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);

  setDebugMessageLevel(2);  // Default=0 (only errors)
  ArduinoCloud.printDebugInfo();

  delay(500);

}

void loop() {

    ArduinoCloud.update();

    float anemoValue = analogRead(A0);
    Serial.print("Anemo Meter: Analog Value = ");
    Serial.println(anemoValue);

    float v = (anemoValue / 1023) * 5;
    Serial.print("Voltage = ");
    Serial.print(v);
    Serial.println(" V");

    v = v - 0.07;  // the voltage from the sensor when it is stopped.
    Serial.print("Adjustment Voltage = ");
    Serial.print(v);
    Serial.println(" V");

    if (v < 0 ) { v = 0; }
    windspeed = v * 1000 * 0.006;
    float speed_mph = ((windspeed *3600)/1609.344);
    Serial.print("Wind Speed = ");
    Serial.print(windspeed);
    Serial.println("m/s");
    Serial.print(speed_mph);
    Serial.println("mph");

    delay(1000);

}
コードの補足
  • 「float v = (anemoValue / 1023) * 5」:アナログピンへ入力される電圧は0-5Vになり、その値は0-1023の数値で取得できます。よって、その数値を電圧に変換する式となります(こちらのサイトを参照)
    ただ、実際には風力計のプロペラを思いっきり回して測定しても、5Vにはいかず、およそ4.6Vまでしか確認できませんでした。
  • 「v = v – 0.07」:プロペラが回っていない状態でも微量ながら0にはならず、およそ約10ぐらいの値が出力されます(電圧にすると0.07V)。よって、この状態は0Vにして風力を0/msとしたいので、調整目的で0.07Vをマイナスすることにしました。
  • 「if (v < 0 ) { v = 0; }」:上記で調整すると、値の大小は発生するため、値によっては電圧がマイナス値になってしまうケースも生じるため、この場合は一律ゼロにするように調整しました。
  • 「windspeed = v * 1000 * 0.006;」:風力計で計測できる最大が30m/sにつき、最大電圧5Vとなるため、この計算式としました。今回の風力計に付属していた説明書では出力が0-10Vの場合と0V-5Vの時の換算式があり、0-5Vの場合の式を取った形となります(うーん、そのまま使ってもよいのだろうか・・・)。変数「windspeed」は上にありましたCloud変数としてグラフ化のインプットになります。

  • 「float speed_mph = ((windspeed *3600)/1609.344);」:メートル毎秒→マイル毎時の換算式です。

上記サンプルコードをThingsタブで開いたSketchで実装し、動かしてみると、こんな感じになりました。LIVEモードで測定すると、風の強さに応じて風力の値が描画されているのがわかります。

以下は同じサンプルコードからArduino IDEで動かせるように少し手直ししたものを実行し、シリアルモニタで出した動画です。

実際の取り付けと計測

こんな感じで自宅のベランダの手すりに風力計とソーラーパネルを設置しました。土台は板材に塗装と油性ニスで防水加工し、手すりと固定させるようにしました。

風力計測定器全体の様子。風力計とソーラーパネルからのコードは下のボックスに収納したモジュール類とつなげています。雨水が入らないように防水対応。

試しに、2023年6月2日(金)の1日の自宅の風力を測ってみました。10分おきに5回連続して計測し、濃いオレンジはその平均、薄いオレンジはその中での最大の風力を出力しています。この日は前線の影響で線状降水帯が発生し、各地で激しい風雨や洪水がありました。

風力計では10時-12時ごろあたりに少し風が強くなり、昼過ぎから16時ごろにかけて風が相当強かったことがわかります。記録上は15m/s-18m/s吹いていた状況となります。

念の為、その日の自宅の市区町村の天気(日本気象協会 から取得)を見比べると、風が吹いていた時間帯は同じで、風力についてはこちらで計測したもの(特に後者)が強かった結果となっています。測定地点によっては当然差異はあると思いますが、10-12時台はそれほど差異がないので、やっぱり自宅周辺が相当風が強い場所なんだなと思います。

振り返り

今回の測定結果を踏まえると、風力計の仕様に対して正しく使っているかどうかがいまいち自信が持てていないのですが、測定内容を見る限りでは、とりあえず問題なく運用できるかなと考えています。

まあ、どこかのタイミングできちんとした風力計を使って検証した方が良いかも入れないですし、機器自体を正しく使えているかどうかも再度確認したいなと思います。まだだまだ素人なので、この記事をご覧になられた方で知見おありでしたら、ぜひともご指摘、アドバイスいただければ幸いです。m(_ _)m

おまけ

ちなみに、ソーラーパネルですが、サイズ的にも良さそうなものがあったので、こちらも紹介しておきます。カシムラのスマートカメラで使用するソーラーパネルを利用しました。供給電力が3Wなので、今回の風力計測定での電力供給としてはちょうどよかったです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です