일시 : 2018.01.11
내용 : I2C light (조도센서)
//
I2C light (조도 센서)
주변의 빛을 감지하는 센서
조도 측정 범위는 0 ~ 65535 룩스(lx)
내부에 16비트 A/D(아날로그 디지털 변환기)가 내장 -> 디지털 출력
아날로그는 전압값(0~3.3V) -> 디지털 값(0~65535) Low, High
디지털 출력 방식은 I2C 표준
스마트폰의 자동 밝기 조절 모드
이 기능을 활용한 앱 Pocketmode (주변의 밝기를 감지해 벨소리 조절. 예를 들어 스마트폰이 주머니나 가방같은 어두운 곳에 있을 때는 벨소리를 크게)
SMBus
System Management Bus
마더보드에 있는 저속도 장치들과 통신하는데 사용하는 간단한 I2C 버스 (마더보드에서 전원부와 CPU간 시스템 통신을 위해 사용)
SMBus 장치는 제조자 정보를 제공, 시스템에 장비 모델과 부품번호를 알려줌, 여러가지 오류 보고 및 이벤트에 대한 상태 저장 등
I2C에다 Intel이 규격을 조금 변경하여 packet 형식으로 변경(I2C기반으로 확장된 것)
smbus 설치 $sudo apt-get install python-smbus
#!/usr/bin/python
import smbus2 as smbus
import time
# Define some constants from the datasheet
DEVICE = 0x23 # Default device I2C address 슬레이브 주소
POWER_DOWN = 0x00 # No active state
POWER_ON = 0x01 # Power on
RESET = 0x07 # Reset data register value
# Start measurement at 4lx resolution. Time typically 16ms.
CONTINUOUS_LOW_RES_MODE = 0x13
# Start measurement at 1lx resolution. Time typically 120ms
CONTINUOUS_HIGH_RES_MODE_1 = 0x10
# Start measurement at 0.5lx resolution. Time typically 120ms
CONTINUOUS_HIGH_RES_MODE_2 = 0x11
# Start measurement at 1lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_HIGH_RES_MODE_1 = 0x20
# Start measurement at 0.5lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_HIGH_RES_MODE_2 = 0x21
# Start measurement at 1lx resolution. Time typically 120ms
# Device is automatically set to Power Down after measurement.
ONE_TIME_LOW_RES_MODE = 0x23
bus = smbus.SMBus(1) # Rev 2 Pi uses 1 , 채널번호
def convertToNumber(data):
# Simple function to convert 2 bytes of data
# into a decimal number
return ((data[1] + (256 * data[0])) / 1.2)
def readLight(addr=DEVICE):
data = bus.read_i2c_block_data(addr, ONE_TIME_HIGH_RES_MODE_1, 2) #마지막인자는 바이트수
return convertToNumber(data)
def main():
while True:
print "Light Level : " + str(readLight()) + " lx"
time.sleep(0.5)
if __name__=="__main__":
main()
'2017 멀티캠퍼스 > Raspberry Pi' 카테고리의 다른 글
#13 라즈베리파이 FND (0) | 2018.01.30 |
---|---|
#12 라즈베리파이 온습도 센서 (0) | 2018.01.30 |
#10 라즈베리파이 Ultrasonic (초음파 센서) (0) | 2018.01.30 |
#9 라즈베리파이 PWM (0) | 2018.01.30 |
#8 라즈베리파이 Piezo 센서 (0) | 2018.01.30 |