特許の出願を行いました。

7-8. IoT冷蔵庫試作品

やること

冷蔵庫を開けた「時間」と「時刻」をクラウドに送るデバイスを作製して、お家の冷蔵庫をIoT化します。

参考にさせていただいたサイト

ラズパイで100均のドア開閉センサー検知

ラズパイで100均のドア開閉センサー検知
100円ショップのダイソーで100円で売っていた「LEDセンサーライト」からセンサー部を取り出し、ラズパイで検知できるようにしました。ドアの開閉を検知してスマホで表示しています。

Raspberry PiのGPIO概要

ツール・ラボ » 第22回 Raspberry PiのGPIO概要
ものづくり関連のいろいろなツールなどの情報を集めたサイトです。

使うもの

  • Raspberry Pi 2 Model B
  • ドアセンサースイッチ(リードスイッチ)

ラズパイ3には標準で無線LANモジュールがついていますが、ラズパイ2にはありませんので、USB無線LANアダプタを付けました。また、初期設定のときに大きなモニターを引っ張り出してくるのが面倒なので、5インチモニターも買ってしまいました。本体と同じくらいのサイズの3.5インチモニターも持ってはいるのですが、字が潰れて見えないので、5インチがおすすめです。

秋月電子でリードスイッチ(250円)も買いましたが、参考サイトによれば100円ショップの商品を分解しても手に入るようです。

リードスイッチの接続

GPIOピンの一番端、GNDとGPIO 21に繋ぎます。リードスイッチには極性がありませんので、向きは考えなくて大丈夫です。

プログラム

0.1秒間隔でリードスイッチの状態を取得し、

  • 継続して閉じている
  • 閉じていたけど開いた → タイム測定開始
  • 継続して開いている
  • 開いていたけど閉じた → タイム測定終了、タイム表示

の4条件で分岐して処理を行います。

import time
import RPi.GPIO as GPIO

#GPIO 21pinを入力モードとし、pull up設定とします
GPIO.setmode(GPIO.BCM)
GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#
new_state = GPIO.input(21)
old_state = new_state
start_time = time.time()

while True:
    try:
        #最新の状態を取得
        new_state = GPIO.input(21)

        if new_state == 0 and old_state == 0:
            print('Close')
        if new_state == 1 and old_state == 0:
            start_time = time.time()
            print('Close -> Open')
        if new_state == 1 and old_state == 1:
            print('Open')
        if new_state == 0 and old_state == 1:
            end_time = time.time()
            open_time = round(end_time - start_time, 1)
            print('Open -> Close  {}s'.format(open_time))
        
        old_state = new_state
        #待機
        time.sleep(0.1)
    except:
        break

GPIO.cleanup()
print('end')

冷蔵庫に取り付ける

テープで仮止めしました。磁石は約1cm以内で閉じた判定になるようですので、十分に近づけます。

動作確認

プログラムを実行します。

python3 main.py

0.1秒間隔でCloseが流れていきます。

冷蔵庫を開けて閉じると、きちんと判定されました。

もう少し長く開けてみます。

まとめ

あとは「時間」と「時刻」をサーバーに送ることができれば完成です!

タイトルとURLをコピーしました