LoginSignup
1

More than 3 years have passed since last update.

posted at

updated at

IoTセンサを用いた不具合検知システムの提案

はじめに

 はじめてQiitaに投稿します。つたない文章で申し訳ないのですが読んでくれたら幸いです。知識不足が大きいので読んでいておかしい部分があると思いますが、その時は申し訳ありません。

提案

 IoTセンサを用いた不具合検知システムの提案です。この提案の背景として、せっかく設置したIoT機器とか機械が動作不良で動かなかったり、動いたとしても途中で止まったりするという問題に関心を持ったからです。具体的な提案内容としてraspberry pi zeroと温度センサを用いて物理的に異常検知とその原因特定を行うというものです。pythonを用いて不具合検知をプログラムで作ろうという趣旨です。どのように不具合や異常を判断するかというと、閾値を設けます。あらかじめ設定した閾値を超えるものは異常だと判断するプログラムを作ります。
 この場合は温度センサを用いるので異常な温度値をあらかじめ閾値として決めておく必要がある。今回の提案の評価ではプログラムがきちんと作動するかの動作チェックの面が強いので閾値は適当に決めるものとする。また、温度センサに限らず他のセンサでも活用できると考えています。

使用する物

  • raspberry pi zero
  • 温度センサ(adt7410)

 今回の実装で使うこれらの道具は私が参考にしているサイトの影響が強いです。この道具じゃないとダメというわけではないです。私が参考にしているサイトを下記に載せます。

http://make.bcde.jp/

実装

今回実装したプログラムを下記に示す。

aaaaa.py
i2c = smbus.SMBus(1)
address = 0x48
now = datetime.datetime.now()
while True:
    block = i2c.read_i2c_block_data(address, 0x00, 12)
    temp = (block[0] << 8 | block[1]) >> 3
    if(temp >= 4096):
        temp -= 8192
    aiueo = (temp / 16.0)
    if(10<aiueo):
        print("Temperature:%6.2f" % aiueo),
        print(now),
        print("danger too hot")

    elif(17>aiueo):
        print("Temperature:%6.2f" % aiueo),
        print(now),
        print("danger too cold")

    else:
        print("Temperature:%6.2f" % aiueo),
        print(now)

    time.sleep(3)

評価

今回実装したプログラムはちゃんと動いたので成功したと言えます。閾値を超えたならちゃんと警告がでるようにできています。その出力結果を下記の図に示す。
hot.png

cold.png

今回の出力に当たって閾値を意図的に変更して無理やりにこの警告文を出しているので異常検知の性能として期待できないといえます。
 今後の課題としてどうやって閾値を決めるのかが問題です。なぜなら、閾値が決まらなければ異常検知を判断できないのでこのアルゴリズムや考え方次第でこの異常検知のプログラムの性能が決まると言っても良いからです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1