ユウの銀河ブルーパイ製作ノート

中学生でもできる!ラズパイ・模擬人工衛星づくり

「A Guide to Astro Pi」湿度センサーで空気中の湿度測定に挑戦!

今回はSense HAT の Humidity(湿度)センサーで湿度を測定する方法を学習をします。今回も元気にがんばってデバッグしましょう!(笑)。

 

Sense HAT の湿度センサーはここ!

 

What does humidity mean?(湿度とはなにか

  • 湿度は、空気中の水蒸気の量です。
  • 水蒸気は水の気体状態です。

空気中に浮遊する水蒸気の量は温度に依存します。

  • 温度が高いほど、空気中に浮遊できる水蒸気が多くなります。
  • 温度が低いほど、浮遊できる水蒸気は少なくなります。

condensation.jpg

冷蔵庫から冷たい缶やボトルを取り出すと水が現れます。これは、冷たいボトルが周囲の空気を冷却し、空気が水蒸気を浮遊させる能力が低下するために発生します。これにより、浮遊できなかった水蒸気が液体の水に戻ります。これを結露といいます。したがって、この情報を踏まえて、次に湿度を測定する方法が 2 つあることを理解する必要があります。

 

絶対湿度と相対湿度の違いを理解する

  • 絶対湿度は、特定の体積の空気に浮遊する水蒸気の総質量です。温度は考慮されていません。通常、空気 1 立方メートルあたりの水のグラム数で表されます。
  • 相対湿度はパーセンテージで表されます。任意の気温に対して、浮遊できる水蒸気の最大量があります。相対湿度は、可能な最大量と比較した、実際に存在する水蒸気のパーセンテージです。

既知の量の水蒸気は、空気の温度とそれを浮遊させる空気の能力に応じて、異なる相対湿度の測定値になります。したがって、気温が低いと相対湿度の測定値が高くなる可能性があります。これは、空気がそれ以上の水蒸気を浮遊させることができないためです。空気の温度を上げて同じ量の水蒸気を維持すると、浮遊する可能性のある水蒸気の最大量が増加するため、相対湿度の読み取り値が低下します。

Sense HAT は、相対湿度として湿度測定値を提供します。このため、湿度センサーには温度センサーも組み込まれています。

 

what is the current humidity?(現在の湿度を測定する)

1.Webブラウザーで ”Sensors" 「Humidity(湿度)」を開きます。

2.「Thonny Python IDE」を起動します。

3.下図のサンプルコードを Thonny Python IDE にコピペして実行してみます。

4.間違いなくサンプルコードをコピペしたはずなのに、下図赤枠のように Syntax(構文)エラーがでて動きません。「Assistant ウィンドウ」を見るとPythonは "^" で印をした部分が理解できずギブアップしたとあります。ギブアップって・・・。

例のチートシートを確認します。おっと。コピペしたサンプルコードですが、緑枠でマークした部分は改行が必要なのに改行がなくて、ぜんぶつながった1行になってしまっています。緑色のコードが先頭行から始まるように改行を入れてみました。

5.下図は修正したプログラムとその実行結果です。無事湿度をゲットできました。前回同様、「trinket」によるシミュレーションも見られます。

6.いまつくったプログラムの print(humidity) 行の上に以下の行をコピペします。別名で保存して実行してみます。

7.追加したコードは7行目です。その結果下図の緑枠のように ”42x.xxxxxxxx” と長~い測定値が小数点第一位までの表示になりました。

 

Monitoring humidity over time(湿度変化を監視する)
8.1回限りの測定値ではなくて、気温の変化もモニターできるといいですよね。そこで今度は、さきほどつくったプログラムに以下のコードを追加して、繰り返し測定ができるようにしてみます。

9.下図がその実行結果です。気温を連続測定しその値を小数点第一位で丸めた測定値を返しています。処理は中断されるまで、最新値を返し続けます。

10.環境による湿度の変化を見てみましょう。

 ・指を湿度センサーの上にのせて数秒すると湿度が上昇しました

 ・湿度センサーに『はーーーーっ』と息をかけて数秒すると湿度が上がりました


11.「Ctrl」+「C」キーを押して実行中のプログラムを中断させます。

Display the humidity on the LED Matrix(測定した相対湿度にあわせて 64個の LED を点灯させる)

マトリックスを使用して湿度を表示する方法を考えてみてください。 1 つの方法は、64 (マトリックス内の LED の数) を 100 で割り、相対湿度のパーセンテージを掛けて、オンにする必要がある LED の数を求めることです。

たとえば、100% では 64 個の LED がすべてオンになります。 これを行うには、正しい数の明るいピクセルと暗いピクセルピクセル リストを作成し、set_pixels 関数を呼び出す必要があります。

以下にコード例を示します (湿度測定値を 100 に固定する必要があることに注意してください)。

 

サンプルコードを実行してみる

1.新規ウィンドウにサンプルコードをコピペして保存します。下のスクショ、今回はサンプルコードをじっくり見比べられるように文字を大き目にしました(笑)。

2.写真は実行結果です。動画で見せられないのが残念ですが・・・

 ・指を湿度センサーの上にのせて数秒すると湿度が上昇し LED 表示も変化しました

 ・湿度センサーに『はーーーっ』と息をかけて数秒すると湿度が上昇し LED 表示も変化しました

 

最後は忘れずに「LED ぜんぶオフ」プログラム(苦笑)を実行して終わりです。

チートシートを見るクセ?がついてきました。初歩的な Pythonデバッグもわかってきた気がします。”失敗は成長のもと” ですね。大切で貴重な ”基” です。。。

 

次回は「Sensors」、Pressure に挑戦です!