編集履歴一覧に戻る
tukumoyuukiのアイコン画像

tukumoyuuki が 2024年10月29日17時44分46秒 に編集

コメント無し

本文の変更

**概要** ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 家の鍵をかけ忘れがないか鍵の状態を確認 鍵の傾きを検知して、スマホで確認できる **概要図** ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ![キャプションを入力できます](https://camo.elchika.com/04b385b146a08258952db1315be463aafbd7324a/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35343033306463332d633332642d343262332d393065622d3662366637386530623937352f36306338303261642d316530632d343035392d626534332d353337313065336662626565/) **詳細** ------------------------------------------------------------------ ・9軸センサ(mpu-9250)とraspiを接続し、x軸、y軸、z軸の加速度を取得し、設定したセンサ値から鍵の状態を確認し、施錠ができていない場合LINE Notifyに通知が送られる。また、バッテリーの残量が少なくなった場合にもアプリに通知される。 **使用した物品**[](url) ・9軸センサ(mpu-9250) ・モバイルバッテリー ・rasberry pi ・スマホ(LINE Notify)

+

---------------------------------------------------------------------------------------------------------------- 動作確認

-

-

```arduino:Lチカの例

+

鍵が閉まっている時の傾き↓ ![キャプションを入力できます](https://camo.elchika.com/c866f129af64d2041491aa944c5ab8777d1bc2f3/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35343033306463332d633332642d343262332d393065622d3662366637386530623937352f32383838643939332d346335642d343632652d613338322d646266383130616232623437/) 鍵が開いている時の傾きと設定しておいた傾きと通知 ![キャプションを入力できます](https://camo.elchika.com/7231af42301777a771f7157ec4bfe430159e5252/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35343033306463332d633332642d343262332d393065622d3662366637386530623937352f33623333633139352d373339362d346335662d386466362d343030306463353831393661/) LINENotifyへ通知↓ ![キャプションを入力できます](https://camo.elchika.com/e648becb5e43b77bfd5d2c92c65d227dc035f630/687474703a2f2f73746f726167652e676f6f676c65617069732e636f6d2f656c6368696b612f76312f757365722f35343033306463332d633332642d343262332d393065622d3662366637386530623937352f39353066336464392d646563352d343131662d393661312d626639613964393364326161/) ```arduino:ソースコード

import smbus import time import requests # LINE Notifyの設定

-

LINE_NOTIFY_TOKEN = 'IiJX63KbBbacoG0AF1bnJnICNsoI1YhbecN0MYbv16h'

+

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)

+

``` **まとめ**

-

**プログラム**