今回使ったもの
- Arduino UNO
- 人感センサSE-10
- 抵抗器:330Ω,10kΩ
- 赤色LED
- ピンヘッダ (3pin):SE-10をブレッドボードに繋ぐため
- Raspberry Pi
配線図
fritzingで配線図を描いてみる。SE-10側に10kΩ、LEDに330Ωの抵抗を繋ぐ。
ソースコード
Arduino
センサが反応すると1を出力。反応後5秒間LEDが点灯し、その間は不感時間とする(チャタリング防止のため)。
const int ledPin = 13;
const int pirPin = 2;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(pirPin) == LOW) {
digitalWrite(ledPin, HIGH);
Serial.println("1");
delay(5000); //不感帯を5秒に設定
} else {
digitalWrite(ledPin, LOW);
}
delay(100);
}
Python
要pySerial。ArduinoのUSBデバイス名は/dev/ttyACM0。これはdmesg等で確認できる。
センサが感知すると、時刻と共に出力される。
# coding: UTF-8
from serial import *
from sys import exit
from datetime import datetime
# ArduinoのUSBデバイス名
port = '/dev/ttyACM0'
# シリアルポートを開く
try:
ser = Serial(port, 9600)
print('open port: %s' % port)
except:
print('cannot open port: %s' % port)
exit(1)
# 読み出しと出力
while True:
# 1ライン単位で読み出し、末尾の改行コードを削除
line = ser.readline().rstrip()
try:
print(datetime.now(),line)
except Exception as e:
print(e.message)
0 件のコメント:
コメントを投稿