조도 센서를 이용한 조도 측정 > 스마트기기시스템

본문 바로가기

[실습] 조도 센서를 이용한 조도 측정

필기자
2025-04-02 10:09 486 0

본문

 
 
조도 센서를 이용한 조도 측정

목 적
  • 라즈베리파이에 조도 센서 사용법을 이해한다.
목 차
1. 조도 센서 모듈 설치
2. 조도 디지털 모드 센서 모듈 구동


1. 조도 센서(SSBH-011) 모듈 설치
  • 조도 센서
    • 조도 센서는 빛의 강도를 측정할 수 있는 센서
    • 아날로그 및 디지털 출력을 제공하여 라즈베리파이와 같은 마이크로컨트롤러와 쉽게 통합할 수 있음.
    • 환경 모니터링, 스마트 홈 시스템, 자동화 시스템 등 다양한 분야에서 사용됨.
  • 기본 사양
    • 전원 공급: 3.3V ~ 5.5V DC
    • 출력 방식: 아날로그 출력(AO), 디지털 출력(DO)
    • 감도 조절: 내장된 가변 저항을 통해 감도 조절 가능
    • 빛의 강도 측정 범위: 보통 0 ~ 2000 루멘 (lm) (센서에 따라 다를 수 있음)
  • 아날로그(AO) 출력
    • 빛의 강도에 따라 연속적으로 변하는 전압 신호를 출력함.
    • 라즈베리파이에는 아날로그 입력 불가능.
    • MCP3208 모듈 등의 아날로그-디지털 변환기(ADC)를 활용 함.
  • 디지털(DO) 출력
    • 디지털 출력(DO)은 센서가 감지한 특정 조건에 따라 디지털 신호(HIGH 또는 LOW)를 출력하는 방식
    • 조도가 설정된 임계값을 초과할 때 LOW 신호, 반대는 HIGH 신호를 출력함.
      • 어두워졌을 때 자동으로 동작하는 장치(예: 가로등, 야간 조명)에 특히 유용.
      • 어두워지면 HIGH 신호가 바로 릴레이나 다른 제어 장치를 활성화시킬 수 있음.
    • 센서 모듈에 있는 파란색 가변 저항(트리머)을 사용하여 임계값을 설정할 수 있음.
    • 시계 방향: 임계값을 높임 (더 높은 조도에서 LOW 출력)
    • 반시계 방향: 임계값을 낮춤 (더 낮은 조도에서 LOW 출력)
  • 디지털(DO) 출력 GPIO 연결
    • GND  : Ground 접지(핀 14)
    • VCC : 5V Power(핀 2)
    • DO : GPIO 17(핀 11)
    • AO : 사용하지 않음

20250415141559_11119dc3dc970f88dfde85abf43e8231_v2gb.png

3531074919_pt4K0uTr_663416bebd6ab111f1728f31fd1cc62c4afc74b0.png

2. 조도 디지털 모드 센서 모듈 구동
  • 라즈베리파이 가상환경에서 파이썬 코딩
    • VSCode에서 light_sensor_digital.py 파일 생성
    • 조도 센서에서 빛의 강도 데이터를 읽어 주기적으로 출력하는 코드 실습
20250416105933_0fd1cf29e08b1daf969476e28323e046_t180.png


import RPi.GPIO as GPIO
import time
# GPIO 핀 번호 설정 (조도 센서의 DO 핀 연결)
SENSOR_PIN = 17  # GPIO 17 (핀 번호 11)
# GPIO 설정
GPIO.setmode(GPIO.BCM)  # GPIO 번호 모드를 BCM 모드로 설정
GPIO.setup(SENSOR_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)  # 내부 풀다운 저항 사용
print('조도 센서 값 읽기 시작...')
try:
    while True:
        sensor_value = GPIO.input(SENSOR_PIN)
        if sensor_value == GPIO.HIGH:
            print('조도가 낮습니다.')
        else:
            print('조도가 높습니다.')
        time.sleep(1)
        '''
        센서는 현재 조도 증가 → LOW, 조도 감소 → HIGH 출력
        조도가 없을 때, 즉 어두워 졌을 때 감지를 목표
        '''
except KeyboardInterrupt:
    print("프로그램 종료")
finally:
    GPIO.cleanup()
  • GPIO.setmode(GPIO.BCM)
    • 라즈베리파이의 GPIO 핀 번호 모드를 BCM(Broadcom SOC channel) 모드로 설정함.
    • BCM 모드는 핀 번호가 아닌 GPIO 번호를 사용함.
  • GPIO.setup(SENSOR_PIN, GPIO.IN)
    • SENSOR_PIN(여기서는 GPIO 17)을 입력 모드로 설정함.
    • 이는 조도 센서의 디지털 출력(DO) 핀이 이 핀에 연결되어 있음을 의미함.
  • GPIO.input(SENSOR_PIN)
    • 지정된 GPIO 핀의 현재 값을 읽음.
    • 값이 HIGH(1)이면 조도가 임계값을 미만인 것이고, LOW(0)이면 임계값 이상임을 나타냄.
  • GPIO.cleanup()
    • GPIO 설정을 정리함.
    • 이를 통해 GPIO 핀이 다른 프로그램에서 재사용될 때 문제가 발생하지 않도록 함

 
3531074919_nbEFDydr_a239b0658079884ea02811d541cecedf6b31b2fb.gif


 

댓글목록0

등록된 댓글이 없습니다.
게시판 전체검색