chumuchomuのアイコン画像
chumuchomu 2024年09月20日作成 (2024年10月30日更新) © MIT
製作品 製作品 閲覧数 53
chumuchomu 2024年09月20日作成 (2024年10月30日更新) © MIT 製作品 製作品 閲覧数 53

IoT置き配通知

概要

・置き配の荷物をLINENotifyを利用し確認出来るシステム
・荷物が置かれた時と取られた時に画像送信される。

アイデア詳細

今回の制作したシステムの動作は以下の通り

・超音波距離センサーを利用して荷物が置かれた時と取られた時に画像とメッセージをLINENotifyに送信する
・誤動作防止のために、荷物が置かれた時はセンサーが一定時間反応した場合に画像送信する。
・盗難へ対策として、カメラを荷物と人が映るように設置することで、
荷物が本人以外が取った際にLINENotifyで人物を確認出来る。

設置イメージ

キャプションを入力できます

キャプションを入力できます

キャプションを入力できます

使用パーツ

今回の制作に使用したものは以下の通り

・Raspberry Pi 4
・Raspberry Pi Camera
・超音波距離センサー(hc-sr04)

実際の配置イメージ

配置イメージ
キャプションを入力できます
センサに荷物が反応したとき
キャプションを入力できます
荷物が取られた時
キャプションを入力できます

LINE Notifyの動作画面

キャプションを入力できます

ラズパイ側の動作画面

荷物が置かれた時は一定時間反応したら画像の送信を行う。
キャプションを入力できます
荷物が取られた場合はすぐに画像の送信を行う。
キャプションを入力できます

プログラム

#coding: utf-8 import RPi.GPIO as GPIO import time import requests from picamera import PiCamera #GPIOの設定 GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) TRIG = 15 ECHO = 14 GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) #カメラの設定 camera = PiCamera() camera.resolution = (1024, 768) #LINE Notifyにメッセージを送信する関数 def send_line_notify(image_path, message): token = ' aaa ' # トークンをここに入力 headers = {'Authorization': 'Bearer ' + token} with open(image_path, 'rb') as f: data = {'message': message} files = {'imageFile': f} requests.post('https://notify-api.line.me/api/notify', headers=headers, data=data, files=files) #距離を測定する関数 def get_distance(): GPIO.output(TRIG, False) time.sleep(2) GPIO.output(TRIG, True) time.sleep(0.00001) GPIO.output(TRIG, False) start_time = time.time() stop_time = time.time() while GPIO.input(ECHO) == 0: start_time = time.time() while GPIO.input(ECHO) == 1: stop_time = time.time() time_elapsed = stop_time - start_time distance = (time_elapsed * 34300) / 2 return distance try: previous_state = 'far' #初期状態を「遠い」に設定 close_time = 0 #20cm未満の時間をカウントする変数 while True: distance = get_distance() print(f"距離: {distance:.2f} cm") #距離が20cm未満の場合 if distance < 20: close_time += 1 # 1秒カウント if close_time >= 10: # 10秒以上経過したら if previous_state == 'far': print("[撮影] 距離が近いです。") image_path = "photo.jpg" camera.capture(image_path) print("[保存完了] photo.jpg") #LINE Notifyに画像を送信 send_line_notify(image_path, '荷物が届きました') print("[LINE Notifyに送信完了]") previous_state = 'close' # 状態を「近い」に更新 else: close_time = 0 # 距離が遠くなったらカウントをリセット if previous_state == 'close': print("[距離が遠くなりました]") image_path = "photo_far.jpg" # 遠くなったときの画像名 camera.capture(image_path) print("[保存完了] photo_far.jpg") #LINE Notifyに再度画像を送信 send_line_notify(image_path, '荷物が取られました') print("[LINE Notifyに送信完了]") previous_state = 'far' # 状態を「遠い」に更新 time.sleep(1) # 1秒待つ except KeyboardInterrupt: print("プログラムが中断されました") finally: GPIO.cleanup()

Raspberry Pi 4と超音波距離センサー(hcーrs04)の接続方法

キャプションを入力できます

今後の課題

現段階ではプログラムの作成、動作までしかできていないためPCとラズパイをつないで動作させているためバッテリーを使用して動作させる。
また、カメラを今回は一つしか使用していないため、二つ使用することで荷物が取られた際に[荷物]と[取った人物]を映しやすくし、防犯対策を上げれるシステムを作れる。

参考文献

・LINE Notify
https://notify-bot.line.me/ja/
・ラズベリーパイで超音波距離センサーの使い方
https://raspi-school.com/ultrasonic-sensor/
・Raspberry Pi Zeroで作るカメラ付きIoTポスト
https://elchika.com/article/b1f3d90f-f0e8-4ac6-901a-13c2f8cd6bfc/

ログインしてコメントを投稿する