tukumoyuuki が 2024年10月30日13時34分25秒 に編集
コメント無し
本文の変更
**概要** ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 家の鍵をかけ忘れがないか鍵の状態を確認 鍵の傾きを検知して、スマホで確認できる **概要図** ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------  **詳細** ------------------------------------------------------------------ ・9軸センサ(mpu-9250)とraspiを接続し、x軸、y軸、z軸の加速度を取得し、設定したセンサ値から鍵の状態を確認し、施錠ができていない場合LINE Notifyに通知が送られる。また、バッテリーの残量が少なくなった場合にもアプリに通知される。 **使用した物品**[](url) ・9軸センサ(mpu-9250) ・モバイルバッテリー ・rasberry pi ・スマホ(LINE Notify) ---------------------------------------------------------------------------------------------------------------- 動作確認 -
鍵が閉まっている時の傾き↓
鍵が閉まっている時の傾き(例)↓

鍵が開いている時の傾きと設定しておいた傾きと通知
鍵が開いている時の傾き(例)と設定しておいた傾きと通知
 LINENotifyへ通知↓  ```arduino:ソースコード import smbus import time import requests # LINE Notifyの設定 LINE_NOTIFY_TOKEN = '*********************************' 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) ``` **まとめ**