tukumoyuuki が 2024年09月30日16時32分36秒 に編集
コメント無し
本文の変更
**概要** ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
鍵のかけ忘れがないかセンサ
家の鍵をかけ忘れがないか鍵の状態を確認 鍵の傾きを検知して、スマホで確認できる
**概要図** ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- **詳細** ------------------------------------------------------------------ ・9軸センサ(mpu-9250)とraspiを接続し、x軸、y軸、z軸の加速度を取得し、設定したセンサ値から鍵の状態を確認し、施錠ができていない場合LINE Notifyに通知が送られる。また、バッテリーの残量が少なくなった場合にもアプリに通知される。
**使用した物品** -
**使用した物品**[](url)
・9軸センサ(mpu-9250) ・モバイルバッテリー ・rasberry pi ・スマホ(LINE Notify)
- ```arduino:Lチカの例 import smbus import time import requests
# LINE Notifyの設定 LINE_NOTIFY_TOKEN = 'IiJX63KbBbacoG0AF1bnJnICNsoI1YhbecN0MYbv16h' LINE_NOTIFY_API = 'https://notify-api.line.me/api/notify'
# I2C busのセットアップ bus = smbus.SMBus(1) MPU9250_ADDR = 0x68
# 通知送信用関数 def send_line_notify(message): headers = {'Authorization': f'Bearer {LINE_NOTIFY_TOKEN}'} data = {'message': message} response = requests.post(LINE_NOTIFY_API, headers=headers, data=data) if response.status_code == 200: print("通知が送信されました") else: print("通知の送信に失敗しました") # 初期化 def init_MPU9250(): bus.write_byte_data(MPU9250_ADDR, 0x6B, 0) # ウェイクアップ # 加速度センサーの値を読み込む def read_MPU9250(): acc_x = bus.read_byte_data(MPU9250_ADDR, 0x3B) # X軸加速度データ acc_y = bus.read_byte_data(MPU9250_ADDR, 0x3D) # Y軸加速度データ acc_z = bus.read_byte_data(MPU9250_ADDR, 0x3F) # Z軸加速度データ return acc_x, acc_y, acc_z # 閾値を設定 THRESHOLD_X = 7 # 適宜調整 THRESHOLD_Y = 195 # 適宜調整 THRESHOLD_Z = 240 # 適宜調整 # 加速度が設定した範囲内かを判定する関数 def check_acc_threshold(acc_x, acc_y, acc_z): if abs(acc_x - THRESHOLD_X) < 5 and abs(acc_y - THRESHOLD_Y) < 5 and abs(acc_z - THRESHOLD_Z) < 5: return True return False # MPU9250の初期化 init_MPU9250() # メインループ notified = False while True: acc_x, acc_y, acc_z = read_MPU9250() print(f"Acc: X={acc_x}, Y={acc_y}, Z={acc_z}") if check_acc_threshold(acc_x, acc_y, acc_z): if not notified: send_line_notify(f"鍵かけ忘れが検出されました: X={acc_x}, Y={acc_y}, Z={acc_z}") notified = True else: notified = False # 状態が変わったら通知をリセット time.sleep(1) **プログラム**