0
0

More than 1 year has passed since last update.

ラズパイでQULIOもどき(施錠通知)を作ろう!(2023/1/4更新:画像は送れないです💦)

Last updated at Posted at 2023-01-01

突然何を思い立った!?

いや、自分旅行出かけるの好きなんですよ。別に長期連休でなくても小旅行したりと家を空ける時間が長い日があるわけです。ふと思うわけですよ、しかも出発して10分くらい後に。あれ、鍵かけたっけ??それはそれは不安に駆られるわけです。でも戻って確認したところで鍵かかってる訳ですよ。何が気になるって今鍵の状態どうなってるんだろ?が分からないから気になるんですよね。だったら自分だけに届く施錠通知があればいいんじゃね?なんなら高齢でちょっとオトボケ入った両親も使えたら便利じゃね?ってことで。

作りたいもの

・鍵を掛けたら鍵の状態を撮影、「鍵を掛けた!」とテキストでLineに通知を飛ばしたい

何で作りますか

取り敢えず家に転がっていた二つ
・ラズパイzero W
・ pi camera
・マグネットセンサ
これさえあればGPIOでマグネットセンサのON・OFFで鍵の状態を検知、鍵の状態が変化したらpi cameraで写真を撮るという作りたいものが達成できそう。
※Raspberry Pi Zero Wの性能が低すぎて画像を撮影して送るだけで大遅延するため早々に断念。

開発環境

OS:Windows 11 Pro 21H2
Raspberry Pi Zero W
PCスペックは皆さんが使用しているマシンより間違いなく性能低いです。

準備しよう!

まずは光の如くRaspbrrypi OSをインストール
以下からリンクからDLサイトへ飛び、
https://www.raspberrypi.com/software/

「Download for Windows」をクリック
image.png

DLしたセットアップファイルを実行、「Install」をクリック
image.png

インストールが終わったらチェックを外さず「Finish」をクリック
image.png

Raspberry PiのイメージをDL・書き込みしてくれるソフトが起動
image.png

OSは「RASPBERRY PI OS(32-BIT)」を選択、ラズパイに突っ込むmicroSDカードをPCに接続しストレージを選択、最後に「書き込む」ボタンをクリックする。
image.pngimage.png

書き込みが終わったらmicroSDをラズパイに突っ込む

LineNotifyのトークンを発行する!

LineNotifyにアクセスする
https://notify-bot.line.me/ja/
image.png

ログインボタンを押し、自分が使用しているLineIDでログインする
image.png

ID名隣の▽をクリックして「マイページ」をクリック
image.png

「トークンを発行する」をクリック
image.png

後でわかりやすいように「トークン名」を入力し、通知を送信する相手を指定する。
今回はとりあえず1:1で通知を受け取る設定。
image.png

「発行する」ボタンをクリックするとトークンが表示される。
一度だけの表示なのでどこかしら控えておくこと。
image.png

回路を作る!

適当に以下のイメージで回路を構成する。
プルアップ抵抗ってなんぞやみたいな人はググってください。
Untitled Sketch_回路図.png

コードを書く!

ラズパイにmicorUSBとHDMI端子、USBキーボード・マウスを接続して起動
ラズパイOSが起動したらメニューから「Thonny Python IDE」を起動
以下のコードを打ち込む
トークンは先ほどLineNotifyで発行したトークン(文字列)に置き換えること!
(urlは固定でOK)

keyopenstatus_lite.py
from gpiozero import Button
import requests
import urllib.parse as parse
import os
import time

token = 'LineNotifyトークン'
url = 'https://notify-api.line.me/api/notify'

button = Button(13)
opn = 1
opnd = 1
cnt = 0

while True:
        if button.is_pressed:
            if opn == 1:
                pass
            else:
                print('close')
                ms_data = "鍵が掛かっています。"
                send_data = {'message': ms_data}
                headers = {'Authorization':'Bearer ' + token}
                res = requests.post(url,data=send_data,headers=headers)
                time.sleep(1)
                opn = 1
        else:
            if opn == 0:
                pass                 
            else:
                print('opne')
                ms_data = "鍵が開いています。"
                send_data = {'message': ms_data}
                headers = {'Authorization':'Bearer ' + token}
                res = requests.post(url,data=send_data,headers=headers)
                time.sleep(1)
                opn = 0

動作確認

磁石をセンサに近づけたり、遠ざけたりしてコンソールに「open」と「close」の値が返ってきていればOK。

仕上げにヘッドレス動作させるため起動時に「keyopenstatus_lite.py」を自動実行する設定

コマンドライン.cmd
sudo raspi-config
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart

エディタが起動したら以下を打ち込み、保存して閉じる。

@python3 /保存してあるディレクトリ/keyopenstatus_lite.py

コマンドに戻り自動ログイン設定を行う。

コマンドライン.cmd
sudo raspi-config

設定画面が開くので「1.System Options」を選択しEnterキーを押す
2022-12-25-133012_1920x1080_scrot__.png

次に「B4 Desktop Autologin」を選択しEnterキーを押す
2022-12-25-133140_1920x1080_scrot__.png
Escキーで戻りコマンド画面を閉じる。

ケースを作る

適当に3D図面を書いて

印刷設定を行い
insatsu__.png

印刷が終わったらラズパイとセンサ類を収めて、玄関に取り付ける。
※防犯上よろしくないので周辺はぼかしてます。悪しからず。
IMG_3615.JPG

完成!

動作時の様子を動画に収めました。gifなんで粗々ですけどね・・・
無題の動画 ‐ Clipchampで作成 (2).gif
無題の動画 ‐ Clipchampで作成 (3).gif

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0