커뮤니티
- 제 목 라즈베리파이 동작 감지기 ( Motion Sensor ) 제어
- 작성자 네오즈 조회 : 7,961 좋아요 : 0 댓글 : 0
- 작성일 2019-09-27 오후 12:18:22
-
1. 동작검지기 테스트 회로 구성
동작이 감지되면 적색 Led가 동작, 아니면 녹색 Led를 동작 한다.
( PIR 동작 검지기 1EA, 적색LED, 녹색LED 각 1EA, 220Ω 저항 2EA )
Red Led : GPIO 23번 연결, Green Led : GPIO 24번 연결, Motion Sensor : GPIO 18번 연결
2. 동작검지기 테스트 Python 코드
코드 작성 및 실행 방법은 " 라즈베리파이 GPIO 포트 ( LED, 버튼 ) 제어 " 가이드 참조
동작이 검지되면 적색LED가, 아니면 녹색 LED가 점등되는 코드.
import RPi.GPIO as GPIO # RPi.GPIO에 정의된 기능을 GPIO라는 명칭으로 사용 GPIO.setmode(GPIO.BCM) # GPIO 이름은 BCM 명칭 사용 GPIO.setup(23, GPIO.OUT) # GPIO 23 출력으로 설정 GPIO.setup(24, GPIO.OUT) # GPIO 24 출력으로 설정 GPIO.setup(18, GPIO.IN ) # GPIO 18 입력으로 설정 GPIO.output(23, False) # GPIO 23에 LOW 출력( 적색 LED 소등 ) GPIO.output(24, False) # GPIO 24에 LOW 출력( 녹색 LED 소등 ) print "PIR Sensor Test" # 메세지 화면 출력 try: # try:행과 아래except KeyboardInterrupt: 이하 생략가능 while True: # 무한 반복 구간 - C언어의 while(1)에 해당 if GPIO.input(18) == 0: # GPIO 18 입력(센서 출력)이 LOW이면 GPIO.output(23, False) # GPIO 23에 LOW 출력( 적색 LED 소등 ) GPIO.output(24, True ) # GPIO 24에 HIGH 출력( 녹색 LED 점등 ) else: # GPIO 18 입력(센서 출력)이 HIGH이면 GPIO.output(23, False) # GPIO 23에 HIGH 출력( 적색 LED 점등 ) GPIO.output(24, True ) # GPIO 24에 LOW 출력( 녹색 LED 소등 ) except KeyboardInterrupt: # Ctrl-C 입력 시 GPIO.cleanup() # GPIO 관련설정 Clear
3. 동작검지기 테스트 C 코드#include <stdio.h> // stdio.h 파일 포함( printf() 사용하기 위해 ) #include <wiringPi.h> // wiringPi.h 파일 포함 #define PIR 1 // 1번핀(GPIO 18) 대신 PIR 사용을 위한 정의 #define LED1 4 // 4번핀(GPIO 23) 대신 LED1사용을 위한 정의 #define LED2 5 // 5번핀(GPIO 24) 대신 LED2사용을 위한 정의 int main(void) { printf("PIR Sensor Test\n"); // 메시지 화면 출력 wiringPiSetup( ); // wiringPi 라이브러리 사용설정 // ( pinMode(), digitalWrite() 등의 사용을 위해 ) pinMode(PIR, INPUT ); // 1번핀(GPIO 18) 입력 설정 pinMode(LED1, OUTPUT); // 4번핀(GPIO 23) 출력 설정 pinMode(LED2, OUTPUT); // 5번핀(GPIO 24) 출력 설정 while(1) // 무한 반복 구간 { if( digitalRead(PIR) == 0 ) // 1번핀(GPIO 18) 입력이 LOW이면 - 센서출력이 LOW { digitalWrite(4, 0); // 4(23)번핀에 LOW 출력( 적색 LED 소등 ) digitalWrite(5, 1); // 5(24)번핀에 HIGH 출력( 녹색 LED 점등 ) } else // 센서 출력이 HIGH { digitalWrite(4, 1); // 4(23)번핀에 HIGH 출력( 적색 LED 점등 ) digitalWrite(5, 0); // 5(24)번핀에 LOW 출력( 녹색 LED 소등 ) } } return 0; }