miinsun
[토탈 솜루션/RaspberryPi] 움직임 감지 센서로 조명 제어하기 본문
진행 중인 프로젝트의 모션 센서 제어 부분을 맡았다.
📌 기능을 구현하기 위한 준비물
- 라즈베리 파이(초기 설정된)
- GPIO 확장 보드
- MF선
- 모션감지센서
- 3색 LED >> 3색 LED가 조명을 대체한다.
그 외에 기능 확장을 위해서 서브모터가 있으면 좋을 것이다..
요구 사항은 다음과 같다.
- 스마트 홈을 구축한다고 하였을 때, 거실이나 각각의 방에 움직임이 감지된다면 조명이 자동으로 켜져야 한다.
- 1시간 이상 움직임이 감지되지 않을 시에는 자동으로 조명이 꺼지도록 제어할 수 있어야 한다.
💬 요구사항을 바탕으로 기능을 만들어보자
움직임 센서는 1초에 한 번씩 계속해서 움직임을 감지한다.
움직임이 감지되면 그 이후로 1시간 동안 LED 등을 켜둔다.
1시간이 지나면 반복해서 움직임 센서가 입력을 받는다.
💻 MotionInput.c
# GPIO핀을 액세스하기 위해 RPI, GPIO 라이브러리를 불러옵니다.
import RPi.GPIO as GPIO
import time # 시간 관련 함수를 사용하기 위한 라이브러리
GPIO.setmode(GPIO.BCM) # 코블러에 표기된 번호 그대로 핀을 사용
# 13번 핀은 LED와 연결된다. 13번 핀을 신호 출력 모드로 설정
GPIO.setup(13, GPIO.OUT)
# 25번 핀은 모션센서와 연결된다.25번 핀을 신호 입력모드로 설정
# 모션센서는 3V이상의 전압이 입력될 경우 True로 인식, 0V 전압이 입력될 경우 False로 인식
GPIO.setup(25, GPIO.IN)
def inputValue(): #신호 입력 함수
setMsg = 0;
if GPIO.input(25) == True: # 움직임이 감지될 시
setMsg = 1;
if GPIO.input(25) == False: # 움직임이 감지되지 않을 시
setMsg = 0;
return setMsg;
def outputValue(): #신호 출력 함수
try:
while True: # ctrl + c로 끝마칠 때까지 무한 반복한다.
getMsg = inputValue() # getMsg로 입력을 받고
if getMsg == 0: # 신호가 없으면
print("Sensor Off!!")
GPIO.output(13, True) # LED 등을 끝다.
time.sleep(1) # 1초 대기
elif getMsg == 1: # 신호가 있으면,
print("Sensor On!!")
GPIO.output(13, False) # LED등을 킨다.
time.sleep(3600) # 1시간 대기
except KeyboardInterrupt:
GPIO.cleanup()
outputValue()
25번 핀에 모션센서를 연결하고, 13번 핀에 LED를 연결했다.
1시간 이상 대기가 사실상 힘드니, 10초로 변경해 줘도 된다. timesleep(10)으로 수정 작동을 멈출 때는 ctrl + c를 하면 된다.
'Project > 2020 토탈솜루션' 카테고리의 다른 글
[토탈 솜루션] Total IOT Solution 머신 러닝 모델링 (0) | 2021.12.06 |
---|---|
[토탈 솜루션] Total IOT Solution 머신러닝 알고리즘 구상 (0) | 2021.12.06 |
[토탈 솜루션] 움직임 센서를 이용한 조명 제어 + 소켓 통신 (0) | 2021.12.06 |
[토탈 솜루션]Java와 Python로 간단한 서버, 클라이언트 구현하기 (0) | 2021.11.25 |
Comments