家の防犯などに使われているリードスイッチですが、実は意外と身近なところにも使われているくらい安価なものです。今回はリードスイッチを使って、簡単な防犯装置のようなものを作ってみたいと思います。
サンプルプログラムをGitHubで公開しています。詳しくはこちら。automusicフォルダーの中にあります。
ふつうの押すスイッチは指で押すのに対し、リードスイッチは磁石をくっつけることで入力をします。
必要なもの
今回は、前々回も使った20このセンサーが入ったキットの中から、リードスイッチを使っていきたいと思います。
- リードスイッチ
- 磁石(市販のもの、家にあるもので大丈夫です。)
- ジャンパー線
- 電子オルゴール
センサーの準備
まずセンサーを準備します。今回使ったセンサーはこれです。
右からGND,5V,GPIOとなります。今回は、GNDは6番、5Vは2番、GPIOは8番のGPIO14に繋げます。
接続をするときは必ずRaspberryPiの電源を抜いてから行ってください。
プログラムの準備
まず本題に入る前に、試しのプログラムを作ってみましょう。リードスイッチが使えるのか確認します。まずこのコマンドを実行します。reedswitch1.pyがこのコードになります。
~$ nano reedswitch1.py
そうしたら、これを書き込みます。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP) while True: if GPIO.input(14)==1: print("OFF!!") else: print("ON!!") time.sleep(0.5)
そうしたら、control+X もしくは、Ctrl+Xを同時に押して、保存するか聞かれるのでYキーを押して、エンターキーを押すと保存してファイルを閉じることができます。
プログラムの説明
importでGPIOと時間を測ることができるように読み込みます。その後、GPIOの設定をして、GPIOの情報を読み取り、1(接続)ならOFF!!を表示して、それ以外ならON!!を表示します。
実は、リードスイッチは、磁石をくっつけるところを見ればわかる場合もありますが、通常は接続されているのです。そのため、磁石をつけると金属同士が離れ、電気が通らなくなります。そのため、このプログラムでは磁石がくっついた時をON、離れた時をOFFとしています。
プログラムの実行
では実際にプログラムを実行してみましょう。
古いOSをそのまま使っている場合は、pythonをインストールをしないといけないかもしれません。このコマンドでpythonをインストールできます。
~$ sudo apt-get install python
このコマンドでプログラムの実行をすることができます。
~$ sudo python reedswitch1.py
そのままだとOFF!!が表示され、磁石をくっつけるとON!!と表示されるはずです。次に、音が出るようにしましょう。
音が鳴るようにする
今回はこのような電子オルゴールを使います。
これの赤い線をGPIOの15(10番ピン)黒い線をGNDにつなぎます。GNDはどこでもいいです。今回は6番につなぎます。
前のプログラムに付け足します。磁石が離れたときに音楽が流れるようにします。このコードはreedswitch2.pyです。
プログラム全文↓
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(14, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(15, GPIO.OUT) while True: if GPIO.input(14)==1: print("OFF!!") GPIO.output(15,True) else: print("ON!!") GPIO.output(15,False) time.sleep(0.5)
磁石を外すと音楽が鳴ります。終了するときに、磁石をつけた状態でControl+CもしくはCtrl+Cをしないと、音楽がずっと鳴り続けます・・・。
プログラムの実行
~$ sudo python reedswitch2.py
これでプログラムを実行します。リードスイッチから磁石を離すと音楽が鳴り出します。これを箱につければ、箱が開くと音が鳴る仕組みを作ることができます。
お疲れ様でした。