IoTシステムをつくってみよう【データ取得編】
はじめに
前回の記事にて、IoTシステムをつくってみよう【構想編】を紹介しました。
今回は、温湿度データを取得する準備として、Raspberry Piを使って温湿度センサーを動かしてみます。
使用する温湿度センサー
今回は「DHT11」という温湿度センサーを使用します。
DHT11は価格も安価で入手し易い温湿度センサーです。
今回はモジュール化されているものを使っています。
モジュール化されたものでは、VCC、DATA、GNDの3ピン端子となっています。
センサー単体で使う場合はDATAピンにプルアップ抵抗を接続して使う形になりますが、モジュール化されたDATAピンには10kΩの抵抗が接続され、プルアップされた状態となっているため抵抗を接続する必要はなく、手軽に使用することができます。
準備するもの
・Raspberry Pi (今回はRaspberry Pi 3を使用)
・ブレッドボード (電子部品やジャンパ線を差し込むだけで電子回路を組むことのできる半田付けが不要なタイプの基盤)
・オスーメス型ジャンパー線 3本
・温湿度センサー DHT11 (モジュール化されたもの)
・その他 (ディスプレイ、HTMIケーブル、電源、マウス、キーボード)
配線する
DHT11とRaspberry Piのピンとをジャンパー線で配線していきます。
DHT11のVCCピン、GNDピンにRaspberry Piの5V、GNDを接続し、
DHT11のDATAピンにRaspberry PiのGPIOを接続します。
配線の方法はいくつかありますが、今回は写真のように配線しています。
ライブラリのインストール
DHT11から情報を取得するPythonのライブラリがGitHubで公開されています。
GitHub(ギットハブ)とは、世界中の人々がソースコードを保存・公開できるようにしたウェブサービスです。
こちらのライブラリを使って、センサーから温湿度の情報を取得します。
gitを使ってライブラリをインストールするため、まずはgitを入れておきます。
Raspberry Piのターミナルより、以下のコードを入力します。
sudo apt-get install git
そして次のようにDHT11のライブラリをインストールします。
git clone https://github.com/szazo/DHT11_Python.git
ライブラリのインストールが完了したら、”DHT11_Python”ディレクトリが作成されます。
ディレクトリの中身は次のようになっています。
サンプルプログラムの中身
“DHT11_Python”ディレクトリにある”example.py”は、温湿度を測定するサンプルプログラムです。
サンプルプログラムは、6秒おきに温度と湿度がコンソールに出力される処理になっています。
import RPi.GPIO as GPIO
import dht11
import time
import datetime
# initialize GPIO
GPIO.setwarnings(True)
GPIO.setmode(GPIO.BCM)
# read data using pin 14
instance = dht11.DHT11(pin=14)
try:
while True:
result = instance.read()
if result.is_valid():
print("Last valid input: " + str(datetime.datetime.now()))
print("Temperature: %-3.1f C" % result.temperature)
print("Humidity: %-3.1f %%" % result.humidity)
time.sleep(6)
except KeyboardInterrupt:
print("Cleanup")
GPIO.cleanup()
サンプルプログラムの実行
“example.py”を実行してみます。
ターミナルより、以下のように入力します。
python DHT11_Python/example.py
成功したらターミナルに次のように出力され、温度と湿度が取得できたことが確認できます。
失敗してしまった場合は、接続しているGPIOピンがサンプルプログラムと一致しているか確認してください。
プログラムを止めたい場合は、「Control + C」キーで止めます。
まとめ
Raspberry Piを使って温湿度センサーを動かし、温度を測定してみました。
次回はこの取得した温湿度データを送信してみたいと思います。