MasaのITC Life

夢は起業家!全てにおいて凡人だけど頑張ることだけはいっちょ前!

IoT 電子工作

【IoT】RaspberryPiで緊急ボタン!押されたらGmailで通知!(python)

投稿日:2019年9月21日 更新日:



緊急時の連絡手段は多くの場合、

携帯電話を使うかと思います。

しかし年齢や身体的障害などによって、

携帯を利用していない方はいます。



もし緊急連絡手段を持たない人が外出する際、

誰かが同行すると思いますので

緊急事態に対応可能です。



一方で家にそういった方が一人しかいない状況で、

万が一のことがあったらどうでしょうか。



ということで今回は、

緊急時の連絡手段として、

緊急ボタンを作りました。



仕様は簡単で、

ボタンを押したらGmailに

通知が来るというものです。

ソースも単純なので簡単に作れます。



まず作成に使った道具はこちらです。



  • Raspberry Pi 3 ModelB
  • ゲームスイッチ(モーメンタリ型の1回路2接点)
  • 抵抗(1kΩ)×2
  • ジャンパー(オス-メス)×3



Raspberry Pi 3を使いましたが、

Raspberry Pi Zeroの方が、

消費電力が低く、モバイルバッテリーで

動かしても長持ちするので、

Zeroがある方は、そちらの方が良いかと思います。



私は持ち合わせておりませんでしたので、

ラズパイ3で代用しました。



緊急ボタンということで、

出来るだけ大きいボタンを選びました。



秋月電子で買える一番大きいのを選んだら、

画像のようなスイッチになりました。

お値段は150円ほどでした。



それからこのスイッチの定格電流が3Aなので、

壊れるのを防ぐために電流抑制抵抗を挟みます。

1kΩ使いましたが、もっと低い抵抗値でも大丈夫です。



秋月電子・ゲームスイッチ
http://akizukidenshi.com/catalog/g/gP-07248/



Rapberry Piとスイッチの接続は、

3.3Vピン, GND, GPIO18の3ピンを使いました。



ピンの確認方法はRapberry Piのターミナル上で

pinout もしくは gpio readallと叩いてください。




回路はこのように組んでいます。

スイッチ&抵抗とスイッチ&ジャンパー線の接続は、



ハンダ付けが望ましいですが、

実験程度であれば、絶縁テープで

ぐるぐる巻きにしても良いかと思います。



秋月で買ったゲームスイッチの場合だと、

下にでっぱている端子(COM)を3.3Vにつなげます。



モーメンタリ型1回路2接点スイッチなので、

ボタンを押したときだけ、

GPIO18ピンと繋がります。



ボタンを押してないときは、

3.3VとGND間がつながっています。



ソースは以下になっています。

言語はpythonを使っています。


実行の流れとしては、

最初にメールを組み立ててます。



それからwhileで無限ループしている間に、

緊急ボタンが押されたときだけ、

あらかじめ作っておいたメールを送信します。



一応、MIMEも使っているので、

画像の添付なども可能です。



webカメラ等で押されたときの状況を、

キャプチャしてメール本体に添付する

といったこともありかと思います。



変更しやすいように、コード初めに

アドレスやメール内容を指定します。



create_mail関数でメールを組み立てます。

出来上がったメールを

戻り値としてmsgを返します。



send_mail関数で、

googleのSMTPサーバにログインして、

実際に送信します。



メールの仕組みを勉強すると分かるのですが、

25番ポートを使用するとOP25Bによって、

所属ドメインを抜けることが出来ません。

つまり送信できないということです。



そこで、SMTPのサブミッションポートである587番ポートを使います。


実際にGmailを送信してみる



それでは届いたメールを

実際に見てみましょう。

こんな感じで通知が届きます。


チャタリング制御をしていので、

一度だけ押したつもりでも、

たまに2,3通届くことがあります。



ちなみに今回のように、

自作プログラムでgmailを送信する場合は、

デフォルト設定ではログインできません。



セキュリティ規制を緩める必要があります。

送信側のアカウントに入って、

Gmailの設定を一か所だけ変更します。


https://myaccount.google.com/security?pli=1


アカウント設定からセキュリティ設定に移動し、

「安全性の低いアプリのアクセス」を

"オン" に変更します。

デフォルトでは、"オフ" になっています。



これで上手く送信できると思います!

最後まで読んでいただきありがとうございました。


-IoT, 電子工作

Copyright© MasaのITC Life , 2023 All Rights Reserved Powered by STINGER.