United Statesからアクセスのようです。言語設定をEnglishに切り替えますか?
Switch to English site
Skip to main content

ピトー管風速計付き気象観測端末の作成に挑戦

この記事では、周囲温度、相対湿度、および風の強さを測定できる Arduino ベースの無線式気象観測端末を作成します。 これらの環境データは、Bluetooth を介してコンピューターに送信されます。

部品リスト

Qty Product 品番
1 Arduino Due Development Board 769-7412
1 Pmod TMP3 Ambient Temperature Sensor 136-8066
1 Pmod HYGRO Humidity/Temperature Sensor 136-8072
1 Pmod DPG1 Differential Pressure Gauge 134-6485
1 Pmod BLE Bluetooth Low Energy Module 175-2110

まず、気象観測端末で計測する要素を決定しましょう。 一般的によく用いられる測定値は、温度と相対湿度です。 また「感じる」温度 (つまり、肌寒い風の下でより寒く感じる) を取得するために、気象観測所で風速も測定したいと考えています。 消費電力が小さく、より手頃な価格であるため、風速の測定にはピトー管式風速計を使用します。

計測した測定値は、スマートフォン、タブレット、または PC で表示させます。 そのために、気象観測端末はワイヤレス化しましょう。 Wi-Fi、セルラー ネットワーク、および Bluetoothあたりの無線の利用が考えられますが、Wi-FIやセルラー(3G/4G)は、既存の無線ネットワークに接続させる必要があり、しかも大量の電力を消費します。それらは少しハードルが高いので今回は Bluetooth Low Energy (BLE) を使用しましょう。

制御用プラットフォームとしては、3.3Vのデジタル電圧があり、ほぼすべてのI2C・SPIのセンサー・アクチュエーターが使える Arduino Due を使用します。 端末の電源には9Vバッテリーを使用しましょう。

気象観測端末のセンサー

既存製品のDigilent Pmod センサーモジュールで測定値を収集することで、開発時間を短縮します。 これらのセンサー モジュールは、Arduino Due に直接接続でき、 外部回路は必要ありません。 Digilent Pmod センサーなら、気象観測端末に必要なすべてのセンサーをすぐに実装することができます。

Pmod TMP3 デジタル温度センサー

Pmod TMP3 は周囲温度センサーです。 幅広い周囲温度 (-40°C ~ +125°C) を最大 0.0625 °C の分解能 (12 ビット) で測定できます。 標準精度は +/- 1°C です。 マイクロコントローラの 3V3 ピンから電力を供給でき、他の外部ハードウェアを動作させる必要はありません。 Pmod TMP3 は、I2C インターフェイスを介して Arduino Due と通信します。 以下の配線手順に従って、Arduino Dueに接続できます。

Pmod TMP3 Arduino Due
SCL (1) SCL (21)
SDA (2) SDA (20)
GND (3) GND
VCC (4) 3V3

0x48 から 0x4F までの 8 つの異なる I²C スレーブ アドレスがあります。 すべてのジャンパがデフォルト位置のままの場合、デバイスの I2C アドレスは 0x48 です。 デフォルトの分解能は 9 ビットです。 アドレス 0x01 のコンフィギュレーション レジスタ (Microchip TCN75A datasheet section 5.3.2) で目的の解像度を設定し、アドレス ポインタを格納データのアドレスである 0x00 に設定します。 温度を読み取るには、格納されたデータのアドレス (0x00) をレジスタに書き込みます。 温度データは 2 バイトで、2 の補数形式で配置されます。 次の式を使用して、測定データを周囲温度に変換します (Microchip TCN75A datasheet section 5.3 and 5.3.1)

Equation: Ambient Temperature = Measured Data (in decimal) x 2-4

データ転送は、スタート条件 (Start) によって開始され、その後に 7 ビットのデバイス アドレスと読み取り/書き込みビットが続きます。 スレーブからの肯定応答 (ACK) は、各バイトの受信を確認します。 各アクセスは停止条件 (Stop) によって終了する必要があります。(Microchip TCN75A datasheet section 4)

Pmod HYGRO デジタル湿度センサー

Pmod HYGRO は相対湿度センサーで、最大 14 ビットの分解能で環境の相対湿度を測定できます。 精度±2%。 マイクロコントローラの 3V3 ピンから電力を供給でき、他の外部ハードウェアを動作させる必要はありません。 Pmod HYGRO は、I2C インターフェイスを介して Arduino Due と通信します。 以下の配線手順に従うことができます。 Pmod TMP3 と Pmod HYGRO はどちらも I2C インターフェイスを介しているため、デイジーチェーン接続が可能です。 (1 つの Pmod を Arduino に接続し、次に 2 つ目の Pmod を最初の Pmod に接続します)。

Pmod HYGRO Arduino Due
SCL (3) SCL (21)
SDA (4) SDA (20)
GND (5) GND
VCC (6) 3V3

デバイスの I2C アドレスは0x40です。 湿度センサーを Arduino Due と通信する最も簡単な方法は、ライブラリ ClosedCube_HDC1080.hを使用することです。

Pmod DPG1 差圧計センサーとピトー静圧管

ピトー静圧管は空力同軸管で、内側は開いていて風の方向を向いており、外側は表面に小さな穴があります。 外側のチューブは静圧を与え、内側のチューブはよどみ圧力 (チューブに直接風が吹き込むために生じる圧力) を与えます。

Pitot Tube Types

ソース: https://commons.wikimedia.org/w/index.php?curid=3301685

両者の差が動圧となり、そこから次の式(ベルヌーイの式)で流体の流れ(風)の速度を求めることができます:

Bernoulli's equationBernoulli's equation, where v equals

風速自体には何の意味もないので、ビューフォート スケールに基づいて速度をエンコードします。

Beaufort Number Wind Speed (mph) Wind Speed (kmph) Wind Speed (knots) Description Wind Effects on Land
0 <1 <1 <1 Calm Calm, smoke rises vertically
1 1-3 1-5 1-3 Light Air Wind motion visible in smoke
2 4-7 6-11 4-6 Light Breeze Wind felt on exposed skin. Leaves rustle
3 8-12 12-19 7-12 Gentle Breeze Leaves and small twigs in constant motion
4 13-18 20-28 13-16

Moderate Breeze

Dust and loose paper are raised. Small branches begin to move
5 19-24 29-38 17-21 Fresh Breeze Small trees begin to sway
6 25-31 39-49 22-27 Strong Breeze Large branches are in motion. Whistling heard in overhead wires. Umbrella use is difficult
7 32-38 50-61 28-33 Near Gale Whole trees in motion. Some difficulty walking into the wind
8 39-46 62-74 34-40 Gale Twigs and small branches break from trees. Cars veer on road.
9 47-54 75-88 41-47 Strong Gale Larger branches break from trees. Light structural damage
10 55-63 89-102 48-55 Storm Trees broken and uprooted. Considerable structural damage
11 64-72 103-117 56-63 Violent Storm Widespread damage to structures and vegetation
12 >73 >117 >64 Hurricane Considerable and widespread damage to structures and vegetation. Violence

ピトー静的チューブを作成するには、直径の異なる 2 つのプラスチック チューブが必要です。 このプロジェクトでは、2.5ml シリンジと空のペン リフィルを使用してチューブを作成します。 また、カッター、ドリル、およびチューブを密閉し、外側のチューブを空力的にするための 2 成分ポリエステル パテである接着剤も必要です (これについては後で詳しく説明します)。

Components needed to create pitot-static tube

まず、注射器の先端を切り取り、その端の 1 つにいくつかの穴を開けます。 小さなチューブ用の注射器に他の 2 つの穴を開けます。1 つは軸に沿って、もう 1 つは基部近くにあります。 3mm のドリル ビット (小さい方のチューブの直径) を使用します。 下の画像を参照してください。穴は赤でマークされています:

Drill holes in syringe as indicated

下の画像のように、ペンのリフィルを 2 つ切り取り、注射器に挿入します。 長い方がシリンジの両端から突き出ていることを忘れないでください。

Basic construction of Pitot tube

次に、パテを使用して、小さなチューブ (ペン リフィル) が注射器に挿入される穴を塞ぎます。 また、注射器の後部をシールします。 パテを使用して、注射器の先端をより空気力学的にします。 下の画像は、接着されたチューブを示しています。

Construction of Pitot tube with putty to seal holes

Construction of Pitot tube - completed

それでは、動的空気圧センサーを見てみましょう。 Digilent Pmod DPG1 を差圧ゲージ センサーとして使用します。 Pmod DPG1 は、2 つの入力間の非常に小さな圧力差 (0 ~ 10 KPa) を検出できます。

Pmod DPG1 は、SPI モード 0 の SPI を介して Arduino Due と通信できます。以下の表は、配線手順を示しています。

Pmod DPG1 Arduino Due
SS (1) 2
MISO (3) MISO
SCK (4) SCK
GND (5) GND
VCC (6) 3V3

接着剤が乾いたら、小さなゴム製チューブを介してピトー静的チューブを Pmod DPG1 に接続できます。 これらの小さいチューブには、Pmod DPG1 が付属しています。

Pitot tube connected to tubes

次の式を使用して、圧力差を計算できます。

Pmod DPG1 Equations

組み立てられた Pmod DPG1 とピトー静圧管を校正するには、静止空気下で測定を行い、測定された圧力差をシリアル モニターに表示します。 そうすることで、測定値からオフセットを取り除くことができます。

: Pmod DPG1 は、内部のピエゾ抵抗シリコンを損傷することなく、特定の範囲の圧力差のみを受け入れることができます。 変換器が PCB の上にくるように Pmod を平らな面に置いた場合、一番上のノズルが P1 (変動圧力を検出するための受信ノズル) であり、一番下のノズルが P2 (P1 の圧力基準ノズル) です。 P1 の圧力は、P2 の圧力よりも 0 10 kPa 高くすることをお勧めします。

ブルートゥース伝送

気象観測所で収集されたデータは、Bluetooth を介して任意の受信機 (タブレット、ラップトップ、デスクトップなど) に送信されます。 そのために、Low Energy Bluetooth モジュールである Pmod BLE を Arduino Due の UART ポートの 1 つ (Serial1 など) に接続します:

Pmod BLE Arduino Due
RXD (2) TX1 (18)
TXD (3) RX1 (19)
GND (5) GND
VCC (6) 3V3

Pmod BLE は ASCII コマンドで設定できます。 そのために、Pmod BLE を初期化してコマンド モードに変換するときに「$$$」を送信します。 次に、次のコマンドを送信して Pmod を構成できます。 すべてのコマンドは、キャリッジ リターン (\r) と " " で終了する必要があります。

  • "SF,1": 構成を工場出荷時のデフォルトにリセットします。
  • "S-,name": デバイス名を設定します。 デバイスは、名前の末尾にシリアル番号を自動的に追加します。
  • "SGA,0": 出力電力を最大に設定します
  • "SS,C0": デバイス情報の送信とトランスペアレント UART モードを有効にします。 このモードを使用して Arduino Due と通信します。

モジュールを構成した後、「---\r」を送信してコマンド モードを終了します。 Pmod BLE はデータ モードに戻り、データを送信します。 コマンドの完全なリストは、 athttps://reference.digilentinc.com/_media/reference/pmod/pmodble/rn4871_user_guide.pdfにあります。

警告: Pmod BLE は、ホットプラグ (デバイスの電源を入れた状態でのプラグの抜き差し) により、デバイスの内部メモリを消去する可能性があります。 これを修正するには、PC Pmod BLE 間の UART ターミナル接続が必要です。

データ表示

シリアルモニタでデータを受信できます。 データとステータスを表示するために、無料の Android アプリ(Kai Morich のSerial Bluetooth Terminal) を使用します。 接続を確立するには、アプリに必要な権限を付与し、携帯電話またはタブレットで GPS と Bluetooth をオンにする必要があります。

メニュー (左上隅) を開き、[デバイス] を選択します。 [Bluetooth LE] タブを選択し、Pmod BLE (Pmod BLE に付けた名前) を選択します。 アプリは自動的に端末を開き、Bluetooth モジュールからのデータを表示します。

terminal screen showing serial dataterminal data showing more serial data

付録

完全な接続図

Full connection diagram

完全なコード

                                                                       

ダウンロード

awong さんはまだ自己紹介を入力されていません...