【RaspBerryPi】温度・湿度測定  工事中!

目的

温度センサーを用いて気温湿度を測定する。データー通信としてI2C通信について学ぶ。

必要なもの

Raspberry PiB

SDカード

温湿度センサー(AM2320

ブレッドボード

電源アダプター

作業工程

ブレッドボードに温度センサーの差し込み

ブレッドボードに温湿度センサーを差し込みます。

温湿度センサーとラズパイを接続

温湿度センサーからリード線を使ってラズベリーパイに接続します。 センサーの刻印が書いてある面からみて、左から順にVDD・SDA・GND・SCLと書いてあります。この後ろにリード線を差し込みます。

VDDは2ピンの5Vに差し込みます。 SDAは3ピンのGPIO2(SDA)に差し込みます。 GNDは9ピンのGroundに差し込みます。SCLは5ピンのGPIO3(SCL)に差し込みます。

以下の写真では

黒色のコードはVVDから1ピンの3.3V 緑色のコードはSDAから3ピンのGPIO2(SDA) 白色のコードはGNDから9ピンのGround 青色のコードはSCLからSCLは5ピンのGPIO3(SCL)

に接続されています。

I2C通信の有効

今回の温湿度センサーはI2C通信を用いて通信するためこの機能をオンにする必要があります。

下記のコードを入力します。

入力すると下の写真の画面に切り替わります。

ここで3.Interface Optionsを選択します。

P5 I2Cを選択します。

はいを選択してI2C通信を有効にします。

これでI2C通信の有効化ができました。

温湿度センサーの動作確認

次はラズベリーパイを起動し、温湿度センサーが正しく認識されているかの確認をします。

温度・湿度検知のプログラム入力

次に検知した温湿度を画面上に出力するプログラムを書き込みます。 内容は検知した温湿度を毎秒更新し、画面上に表示させるプログラムです。

左上にあるラズベリーパイのロゴマークをクリックします。

クリックすると、このように目次が出てきます。

この中のプログラミングをクリックし、中にあるThonny python IDEを起動します。

起動出来たら下記のプログラムを打ち込みます。

プログラムが入力できたら一度データの保存を行います。

左上にあるSaveを押してデータの保存をします。

今回はデスクトップに保存しました。 これでプログラムの入力は完了です。

実際にプログラムを実行する

入力したプログラムを実行させる場合は、画面やや左上にあるRunをクリックします。

すると毎秒の温度と湿度が画面上に表示されました。

これで部屋の温度と湿度が計測できました。

温湿度センサーの活用

温湿度センサーを利用すると温度・湿度測定で測定結果を使用しての制御などができるようになります。 例えば、ある一定の温度に達したらモーターでファンを回転させる回路や、測定した湿度により条件ごとに警告を表示させる回路など、応用が利きます。

皆さんもぜひご活用ください。

プログラム

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys

import time

import smbus

i2c = smbus.SMBus(1)

address = 0x5c

if __name__ == ‘__main__’:

        try:

                while 1:

                        # センサsleep解除

                        try:

                            i2c.write_i2c_block_data(address,0x00,[])

                        except:

                            pass

                        # 読み取り命令

                        time.sleep(0.003)

                        i2c.write_i2c_block_data(address,0x03,[0x00,0x04])

 # データ受取

                        time.sleep(0.015)

                        block = i2c.read_i2c_block_data(address,0,6)

                        humidity = float(block[2] << 8 | block[3])/10

                        temperature = float(block[4] << 8 | block[5])/10

                        print(‘温度={0:0.1f}℃ 湿度={1:0.1f}%’.format(temperature, humidity))

                        time.sleep(1)

        except KeyboardInterrupt:

                sys.exit(0)

コメントを残す

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

CAPTCHA