ラズパイ3×ドアセンサーパート2 ~リードセンサー編~

  • HOME
  • SPI ブログ
  • ラズパイ3×ドアセンサーパート2 ~リードセンサー編~

会議室利用状況を作ってみようとのことでラズパイとドアセンサーを使用ときのメモです。
脱コボラー+IoT初心者ですので、ご意見いただけると光栄です。

<パート1 ~人感センサー編~>
<パート2 ~リードセンサー編~>
<パート3 ~Lチカ編~>

各種パーツ

・ Raspberry Pi 3 Model B
・ ドアセンサー(リードセンサー)スイッチ
・ ジャンパーワイヤ(メス – メス)×2
・ USBアダプター(Micro-B)

回路作成

以下の通り回路を作成する
GND: 25番ピン
OUT: 22番ピン(GPIO25)

サンプルプログラム

プルアップ/ダウン
ドアセンサープログラムを実行して気付いたこと。
人感センサー編のプログラムをまねて実行した。

python:readSensor.py
# coding: utf-8
import RPi.GPIO as GPIO
import time
from datetime import datetime

GPIO.setmode(GPIO.BCM) # GPIO番号設定
GPIO.setup(25, GPIO.IN) # 入力設定

while True:
	nowTime = datetime.now().strftime('%Y/%m/%d %H:%M:%S')
	# 0 -> 閉じている, 1 -> 開いている
	print(nowTime+' ['+str(GPIO.input(25))+']')
	time.sleep(1)

sudo python readSensor.py
しかし、リードセンサーが開いている(離れている)時、出力結果は0,1の繰り返し。
GPIOにはプルアップ/ダウンの設定があるらしく、スイッチOFF時には電位が不定になってしまうらしい
前回の人感センサーではあまり差がなかったので気づかなかった。

ということで以下のように変更

python:title
# coding: utf-8
import RPi.GPIO as GPIO
import time
from datetime import datetime

GPIO.setmode(GPIO.BCM) # GPIO番号設定
#GPIO.setup(25, GPIO.IN)
GPIO.setup(25, GPIO.IN, pull_up_down=GPIO.PUD_UP) # 入力設定

while True:
	nowTime = datetime.now().strftime('%Y/%m/%d %H:%M:%S')
	# 0 -> 閉じている, 1 -> 開いている
	print(nowTime+' ['+str(GPIO.input(25))+']')
	time.sleep(1)

次は問題なく出力されました!

所感

GPIOにそんな落とし穴があったとは!
確かにドアにはラッチとやらがついてるからそんなイメージなのかな。
次はリードセンサーと人感センサーを利用したLチカ!
こちらは入力値ではなく出力値が必要みたい!わくわく

最新ブログ一覧