29lab.log

We live just for fun and exciting.

Raspberry Pi で気温・湿度を取得するウェザーステーションを作ってみた

   

Здравствуйте!
この記事は、スタートトゥデイ工務店 Advent Calendar 18日目の記事です。
お約束事ですが、私の個人的な意見・経験に基づくものであり、私の雇用者、所属団体には一切の関係はありませんし、イロイロ気になるところがあるかもしれませんが、そこんとこお察しください。

はじめに

とあるMashup Awardsのとあるハッカソンイベントで作った作品を解体したおかげでRaspberry Pi 3が余ってたり、手元に手頃な温湿度センサーモジュールが転がっていたり、ほんの出来心から、ウェザーステーションを作ってみました。

  • Raspberry Pi 3を使って
  • Raspibian Jessieを使用しています
  • Raspberry Pi のインストール、初期設定については、説明しません
  • 温湿度センターには am2320 を使用して、i2c で接続しています
  • センサーの読み出しでは Ruby を使っています
  • センサーでの測定値は Logger で log に出力しています

使用したもの

ガジェット
Raspberry Pi 3
OS
Raspbian Jessie
センサ
AM2320

温湿度センサーを取り付けて、Raspbianの設定をする

温湿度センサーをブレッドボード上に設置

センサー取り付け

簡単に示すと、以下のようになっています。

たまたまT型の接続キットを持っていたので使っていますが、ピンから接続しても問題ありません。

Raspbianの設定 – i2c の有効化

Raspberry Piの初期状態ではi2c機能が有効化されていないため、有効化する必要があります。

表示されるメニューの『7 Advanced Option』を選択します。

i2c 有効化 その1

『5 Interfacting Options』を選択し、『P5 I2C』を選択します。

i2c 有効化 その2

i2c 有効化 その3

I2C接続を有効化してもよい?(意訳)と聞かれているので、『はい』を選択し、その後のページも『OK』を選びます。

i2c 有効化 その4

i2c 有効化 その5

その後、一旦、再起動します。(再起動しますか?というダイアログが表示されるので、『はい』を選択します)

Raspbianの設定 – i2c-tools のインストール

i2c接続するセンサーとの疎通確認を行うために、i2c-toolsというパッケージをインストールします。

Raspbianの設定 – i2cのグループにユーザーを追加する

ここでは、piユーザ(初期ユーザ)でi2cにアクセスできるように、i2cグループに追加します。

Raspbianの設定 - 設定ファイルの修正

/boot/config.txt に以下の内容を追記します。

Raspbianの設定 – カーネルモジュールの自動読み込み

起動時にカーネルモジュールに自動的に読み込ませるために、/etc/modulesに以下を追記します。

以上、設定したら、再度、再起動します。

再起動後、カーネルモジュールが読み込まれているか確認をします。

i2c_bcm2708, i2c_devが存在すればOKです。

疎通確認

先程インストールした i2c-tools の i2cdetect コマンドを利用して、疎通確認を行います。

AM2320のアドレスである 0x5cが検出されました。
ちなみに、AM2320はセンサー自体の発熱による湿度誤差を軽減するために、休止状態になることがあります。
そのため、i2cdetectコマンドをなげても検出されないことがありますが、何度かコマンドを実行すると、検出されます。

温度と湿度を取得するコード

まず、Rubyからi2cを操作するために、i2c Gemをインストール擦る必要があります。

i2c経由でAM2320でデータを取得します

Loggerで出力するようにしてみる

Loggerを使い、/var/log/weatherbox/に出力するようにしてみます

このコードを実行すると、/var/log/weatherbox/weatherbox.logに対して、以下のようなデータが出力されます。

今後の流れ

Raspberry PiでAM2320という温湿度センサーを使って温度と湿度を取得しました。
現時点では、Raspberry Pi内にデータを格納しているので、次回、fluentdを使って、クラウドへデータを保存するようにします。(えっっっ)

それでは、до свидания!

 - Raspberry Pi,