今回使ったもの
- 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)