yoshiislandblog.net
元営業の駆け出しアラサーSEが、休日にMACと戯れた際の殴り書きメモ。日々勉強。日々進歩。

この記事は3年以上前に書かれた記事で内容が古い可能性があります

Raspberry piで温度と湿度を測ってみる(DHT11)

2019-02-09

最近、乾燥しているので、湿度を定期観測してみようと、
こちらを購入。

HiLetgo 3個セット DHT11温度センサー モジュール湿度センサーモジュール デュポンラインと付属 Arduinoと互換

ちなみに3個セットのうち一つは壊れていた。
この値段だから、まいっか。

こちらの記事を参考に進める
ラズパイでDHT11温湿度センサーを作動する

まずはドライバのインストール

# sudo wget http://osoyoo.com/driver/dht11.py

Raspberry piのGPIOピンにザクザク刺していく

+かVCCと書かれているピンは+5Vのピンへ、
-かGNDと書かれているピンはGNDのピンへ、
真ん中のDATA用のピンはIO用のピンへ刺す。
今回は18番を使う。
(図の「G」はGPIOという意味で書いて、特に意味はない)

そして、先ほどインストールしたドライバと同じ階層にこちらのスクリプトを用意
ほぼ、参考にしたコードのまま

# cat temp_sensor.py
import time
import dht11
import RPi.GPIO as GPIO

#define GPIO 18 as DHT11 data pin
Temp_sensor=18
def main():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

instance = dht11.DHT11(pin = Temp_sensor)

while True:
#get DHT11 sensor value
result = instance.read()
print"Temperature = ",result.temperature,"C"," Humidity = ",result.humidity,"%"
time.sleep(1)

if __name__ == '__main__':

try:
main()
except KeyboardInterrupt:
pass

すると、計測できなかったタイミングなのか、0がノイズになる

# python temp_sensor.py
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  22 C  Humidity =  32 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %
Temperature =  0 C  Humidity =  0 %

「if result.temperature != 0:」だけ追加して、0が出力されないようにする

# cat temp_sensor_14.py
import time
import dht11
import RPi.GPIO as GPIO

#define GPIO 18 as DHT11 data pin
Temp_sensor=18
def main():
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)

while True:
#get DHT11 sensor value
result = instance.read()
if result.temperature != 0:
print"Temperature = ",result.temperature,"C"," Humidity = ",result.humidity,"%"
time.sleep(1)

if __name__ == '__main__':

try:
main()
except KeyboardInterrupt:
pass

すると出力はこんな感じ

# python temp_sensor.py
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %
Temperature =  23 C  Humidity =  15 %

もっといいやり方あったかもだけど、まあいっか
空気清浄機の湿度計温度計とほとんど一致していて、結構精度はいい気がする

最終的には、2つで監視して、整合性取れているか確認できるようにした