この記事は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つで監視して、整合性取れているか確認できるようにした