프로젝트 대표사진

라즈베리파이 동작 감지기 ( Motion Sensor ) 제어

라즈베리파이를 활용한 동작감지기 ( motion sensor ) 제어
라즈베리파이 동작 감지기 ( Motion Sensor ) 제어 작성자 : 네오즈

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;
}

 

※ e4ds make에 등록된 자료는 e4ds와 지식 제공자(기업포함) 이외에는 상업화 용도로 사용할 수 없습니다. 영리 목적 이외의 사용 시 출처를 밝혀야 합니다.