ニワとりの巣箱

面白いものが生まれたり生まれなかったり。

テラリウム管理装置を作る3

大変です。

モタモタしている間に、

(管理装置の有無とか水やりに関係なく)

苔がどんどん茶色くなっていきます。

やはり寒いのか…

 

f:id:niwakxq:20171207002518j:plain

 

相変わらず完全に枯れているわけではなさそうですし、

よく見ると一部新芽らしきものもあるので

ダメと言い切るには早いのですが

いかんせん元気がなさそうです。

 

今のところ特にできることもなく、様子を見るしかありません。

誰か詳しい人がいたらどうすべきか教えていただきたい…

 

 

手段が目的になり若干本末転倒な気はしますが

作りかけの管理装置は完成させてしまいましょう。

 

今回は温度と湿度を計測できるようにしたいと思います。

調べてみると、この辺のセンサーを接続するのが定番のようです。

 

上の画像と基板が若干違いますが、センサー自体は同じものです。

抵抗付きなのでこのまま接続できて便利です。

f:id:niwakxq:20171206235040j:plain

結構メジャーな安価センサーらしく、秋月電子さんとかでも買えます。

 

この辺の記事を参考に、

qiita.com

GPIOとセンサーを接続します。

どのピンをどのピンに接続するかは、上の記事と基板を見ながら何となく判断しました。

 

ちなみに私が使ったものの場合、写真の3本のケーブルは

 赤が2番(5V)

 黒が6番(grand)

 緑が7番(GPIO4)

に接続するのが正解でした。

この辺は多少違っても試行錯誤でつなぎ変えているうちに正解にたどり着けます。

センサーは初期不良があったり、うっかり壊すこともあるので

安ければ2~3個買っておいてもいいでしょう。

 

センサーの値は、Pythonから取得します。

ありがたいことに、そのためのライブラリが公開されているので

遠慮なく使わせてもらいます。

https://github.com/szazo/DHT11_Python

 

いくつかファイルがありますが、必要なのはdht11.pyという奴です。

この中に書いてある処理を、自分のソースコードから呼び出せばいいわけです。

dht11_example.pyが呼び出し方のサンプルになっているので、

それを参考にこんな感じで取得処理を書きます。

#coding:UTF-8

import RPi.GPIO as GPIO
import dht11
import time
import datetime

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

dht11Inst = dht11.DHT11(pin=4)

dateTimeFormat = "%Y/%m/%d %H:%M:%S"
current_time = datetime.datetime.now().strftime(dateTimeFormat)

sleepTime = 30

loopRead = True
        
while loopRead:
    dht11Read = dht11Inst.read()
 
    if dht11Read.is_valid():
        textTweet = 'ゲンザイノ ニチジハ ' + current_time + ' キオン ' + str(dht11Read.temperature) + '℃ ' + 'シツド ' + str(dht11Read.humidity) + '% デス.'
        print(textTweet)
    else:
        print('dht11 error')
        loopRead = False
               
    time.sleep(sleepTime)

 

dht11というのがライブラリの呼び出しで、

readして成功したら気温と湿度を出力する

readが失敗したら終了

です。

実際に動かしてる奴から抜粋してきたので

どこか間違ってたらごめんなさい。

 

30秒間隔で読み取ってみましたが、

結構頻繁にエラーになります。

失敗しても何度かリトライするようにした方がよさげ。

 

うまくいけば、実行画面に

ゲンザイノ ニチジハ 2017/11/14 17:16:25 キオン 19℃ シツド 95% デス.

のように表示されます。

 

さあこれで残るはTwitterとの連携ですね。

続く