製作品 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/
-
chumuchomu
さんが
2024/09/20
に
編集
をしました。
(メッセージ: 初版)
-
chumuchomu
さんが
2024/09/20
に
編集
をしました。
-
chumuchomu
さんが
2024/09/30
に
編集
をしました。
-
chumuchomu
さんが
2024/10/23
に
編集
をしました。
-
chumuchomu
さんが
2024/10/23
に
編集
をしました。
-
chumuchomu
さんが
2024/10/23
に
編集
をしました。
-
chumuchomu
さんが
2024/10/23
に
編集
をしました。
-
chumuchomu
さんが
2024/10/23
に
編集
をしました。
-
chumuchomu
さんが
2024/10/30
に
編集
をしました。
ログインしてコメントを投稿する