YOGYUI

DFRobot PT550 Analog Ambient Light Sensor 본문

Hardware/Sensor

DFRobot PT550 Analog Ambient Light Sensor

요겨 2021. 1. 29. 10:29
반응형

DFRobot Analog Ambient Light Sensor V2

1. Hardware

DFRobot 제품

DFRobot에서 만든 조도 센서이며, 1 ~ 6000 럭스 사이의 조도를 감지할 수 있다 (Analog Voltage Output)

DFRobot 공식 소개 페이지: SKU:DFR0026

(Photo Diode = PT550, 데이터시트, 중국어...)

Specification, 출처: DFRobots

  • SPI나 I2C 등 별도의 시리얼 통신을 구현할 필요는 없지만, ADC가 필요하다

  • 전압 출력값(Volt)과 실제 조도(Lux) 사이의 관계식을 제공하지 않는다
    (정밀한 조도 측정용으로 사용하기에는 적절하지 않다)

전압 - 조도 관계는 직접 측정하세요...라고 한다, 출처: DFRobot

2. Prototyping

ADC를 쉽게 사용할 수 있는 Arduino를 사용해 테스트해보자(Arduino Micro)

ADC 값을 디스플레이하기 위해 14-Seg LED Display도 함께 사용하도록 한다 (참고)

Schmatics

DFR0026과 Arduino Micro와의 핀맵

DFR0026 Color Description Arduino Micro
1 Green S A0
2 Red VCC +5V
3 Black GND GND

아두이노 코드 구현

// test.ino
#include "Adafruit_LEDBackpack.h"

Adafruit_AlphaNum4 led = Adafruit_AlphaNum4();

int pin = 0;
int value = 0;

void setup() {
  led.begin(0x70);
  led.clear();
  led.writeDisplay();
}

void writeValue(int v) {
  int v1, v2, v3, v4;
  int temp = v;
  v1 = int(temp / 1000);
  temp -= v1 * 1000;
  v2 = int(temp / 100);
  temp -= v2 * 100;
  v3 = int(temp / 10);
  v4 = temp % 10;
  
  led.writeDigitAscii(0, v1 + 0x30);
  led.writeDigitAscii(1, v2 + 0x30);
  led.writeDigitAscii(2, v3 + 0x30);
  led.writeDigitAscii(3, v4 + 0x30);
  led.writeDisplay();
}

void loop() {
  while (true) {
    value = analogRead(pin);
    writeValue(value);
    delay(500);
  }
}

Arduino Micro의 내장 ADC의 resolution은 10-bit이므로 0~5V 범위의 아날로그 입력 값을 0 ~ 1023 정수값으로 변환

 

단순한 Threshold 기반 홈 오토메이션에 쓰기에 가격도 적당하고 쓰기도 간편하다

단, 실제 Lux값을 다른 기기를 쓰지 않고는 얻을 수 없기에 HomeKit에는 사용하지 않기로 한다

 

끝~

반응형