광 센서 조도센서 - gwang senseo jodosenseo

신한카드2,3개월 (5만원↑)
7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22개월 (100만원↑, SK pay 결제 시)
KB국민카드2,3개월 (5만원↑)
8,9,10,11,12,13,14,15,16개월 (100만원↑, SK pay 결제 시)
현대카드2,3개월 (1만원↑)
8,9,10,11,12,13,14,15,16,17,18,19개월 (100만원↑, SK pay 결제 시)
삼성카드2,3개월 (5만원↑)
7,8,9,10,11,12,13,14,15개월 (100만원↑, SK pay 결제 시)
하나카드2,3,4,5,6,7,8개월 (5만원↑)
롯데카드2,3개월 (5만원↑)
6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22개월 (100만원↑, SK pay 결제 시)
아두이노, 아두이노우노, 아두이노키트, 싸이피아, SCIPIA, 스타터키트, R3키트, 아두이노실습, arduino, 포토레지스터, CDS센서, 광센서, 조도센서, Photoresistor 0 Comments

포토레지스터(Photoresistor)는 일명 CDS센서라고도 불리우며 빛의 양을 측정하는 광센서로서 조도센서의 역할을 합니다. 빛에 따라 저항값이 변하며 빛을 받으면 내부 저항값이 감소하며 빛이 없으면 내부 저항값이 급격히 증가하는 특성을 보입니다.

CDS센서는 무극성소자로서 극성없이 사용가능하고 저항 1개와 결합하여 간단히 회로구성이 가능합니다. 빛의 양에 따라 수K옴에서 수십K옴사이로 변화합니다. 여기서는 CDS센서를 이용하여 조도가 낮아지면 LED가 점등하는 실험을 합니다.

일반적인 CDS센서는 아래와 같은 모습을 하고 있습니다.

광 센서 조도센서 - gwang senseo jodosenseo

아래는 CDS센서의 저항을 측정한 사진으로 빛을 충분히 받을 때는 1K대의 저항값을 나타내고 있습니다.

광 센서 조도센서 - gwang senseo jodosenseo

아래는 빛을 가렸을 때 저항값을 측정한 것으로 저항값이 급격히 증가하였음을 보여주고 있습니다.

광 센서 조도센서 - gwang senseo jodosenseo

아래는 결선도입니다. CDS센서와 10K옴 저항을 직렬로 연결한 후 CDS센서측에 5V를 연결하고 10K옴 저항측에 GND를 연결합니다. CDS센서와 10K옴 저항연결부는 아두이노 우노보드의 A2(아날로그핀 2)에 연결합니다.

회로에 대해 간단히 설명하면 CDS센서는 빛에 반응하는 가변 저항으로 보면 직렬로 연결된 10K저항사이에 저항값에 따른 0~5V 사이의 전압분배가 일어납니다. 전압은 저항값에 비례하므로 CDS센서가 빛을 받으면(CDS센서의 내부 저항값은 낮아집니다) A2에 입력되는 전압은 높아지고, CDS센서가 빛을 받지 못하면(CDS센서의 내부저항값은 높아집니다) A2에 입력되는 전압은 낮아지게 됩니다.

아두이노(Arduino)의 센서들을 알아보는 시간으로 앞선 포스팅에서 아두이노를 이용해 온실(식물) 재배 환경을 측정하는 시스템을 만들 때 사용했던 광센서, 조도센서(Light sensor)에 대해 알아보겠습니다.

 

광센서는 보통 일조량을 측정하거나 빛을 감지할 때 사용하곤 해서 일상생활에서는 쉽게 접하기는 사실 어려울 수도 있을 거 같습니다. 그러나 가시광선 영역 외 사람 눈으로 보기 어려운 자외선 및 적외선 파장대를 사용하는 기기의 빛을 감지하거나 빛을 이용한 통신을 할 때도 광센서를 사용하는 등 알게 모르게 생활 속 다양한 곳에서 다양한 종류의 광센서가 사용되고 있습니다. 

 

지난 포스팅에서 광센서는 재배온실의 환경을 측정하거나 식물에게 필요한 광량을 정밀하게 측정하기 위해 사용하는 것으로 소개드렸습니다. 이처럼 이번 포스팅에서는 태양의 빛의 세기인 조도(Lux)를 측정하는 아두이노용 광센서를 소개해드리고 사용방법에 대해 알아보겠습니다.

 

아두이노(Arduino)를 활용한 온실(식물) 재배 환경 측정

아두이노(Arduino)의 기본적인 몇 가지만 습득하면 정말 다양한 분야에서 활용 가능합니다. Micro-controller에 맞게 주로 외부기기나 센서를 제어하는데 탁월한 능력을 가지고 있기 때문에 홈 IoT나 ��

it-g-house.tistory.com

 


 

1. bh1750 조도센서

 

광 센서 조도센서 - gwang senseo jodosenseo
아두이노용 bh1750 조도센서

 

아두이노에서 사용할 광센서를 검색하면 일반적으로 bh1750 조도센서를 많이 찾아볼 수 있습니다. 그중 위의 사진처럼 CY-30 또는 GY-302 모듈이 가장 많이 검색되는데 모두 Cds 타입의 조도 센서입니다.

 

Cds는 황화 카드뮴(Cadmium Sulfide) 약자로 빛에 반응하는 화합물로 빛을 Cds에 비추었을 때 내부의 전기전도도가 높아지는 광도전 효과(果, photoconductive effect)가 나타납니다. 빛이 많이 들어오면 저항이 작아지고 적게 들어오면 저항이 커지는 성질을 이용하여 빛의 유무를 측정할 수 있는 광도전소자에 많이 이용됩니다. CdS 광도전소자는 가시광선 대역에서 특히 높은 감도를 나타내기 때문에 가시광선 영역대의 빛의 세기(조도, Lux)를 측정하는 광센서로 사용됩니다. 

 

광 센서 조도센서 - gwang senseo jodosenseo
황화카드뮴 조도 센서

 

보통 Cds 조도센서라고 하면 위 사진과 같은 제품을 많이 보셨을 거라 생각되고 이런 단품으로 생각이 됩니다. 그러나 아두이노에서 사용하려면 모듈 제품이 필요하고 실질적으로 실외나 사용 환경에 따라서 모듈의 회로까지 보호할 수 있는 형태면 더욱 좋습니다. 그래서 저는 bh1750fvi 모듈을 사용하고 오늘 포스팅에도 이 모듈을 가지고 진행하려고 합니다.

 

 

광 센서 조도센서 - gwang senseo jodosenseo
아두이노(Arduino) bh1750fvi 조도센서
광 센서 조도센서 - gwang senseo jodosenseo
bh1750fvi 조도센서
광 센서 조도센서 - gwang senseo jodosenseo
아두이노(Arduino) bh1750fvi 조도센서

사진에서 볼 수 있듯이 외부환경으로부터 회로를 보호하고 태양의 직사광선을 확산시켜주는 덮개가 있어 실외에서 사용하기에도 적합합니다. 혹시 아두이노용으로 사용할 수 있는 더 괜찮은 조도센서가 있다면 추천 부탁드립니다 ^^

 

 

 


 

2. 아두이노(Arduino)와 bh1750 조도센서 배선

 

2-1. I2C 통신

 

bh1750 조도센서는 I2C 통신을 합니다. I2C (Inter-Integrated Circuit)은 실제로는 I²C (아이 스퀘어 씨)가 올바른 표기이지만 다들 I2C(아이 투 씨)라고 많이들 표기합니다.

 

I²C 는 풀업 저항이 연결된 직렬 데이터(SDA)와 직렬 클럭(SCL)이라는 두 개의 양 방향 오픈 컬렉터 라인을 사용합니다. 즉, 데이터(SDA)와 데이터의 전송 타이밍(SCL)을 위한 두 개의 선으로 통신을 하는 방식입니다. 

 

I²C는 빠른 속도를 요구하지 않는 간단한 저비용 주변 장치들에 적합하며, 특히 아두이노 같은 Micro-controller에서  단지 2개의 입출력 핀 소프트웨어만을 이용하여 여러 장치들을 제어할 수 있다는 장점이 있습니다. 또한 일반적으로 더 적은 전력을 소모하기 때문에 휴대전화나 이동형 장치들에서 사용하기에 편리합니다 (위키백과).

 

 

광 센서 조도센서 - gwang senseo jodosenseo
아두이노(Arduino) I2C 통신

 

인터넷 상에서 'I2C 통신'이라고 검색을 하면 위와 같은 그림을 많이 볼 수 있습니다. 통신을 위해서 하나의 Master와 하나 이상의 Slave가 구성되는데 Master는 MCU, 아두이노가 되며, Slave는 device, 외부기기 및 센서가 됩니다.

 

Slave는 여러개 동시에 연결을 하여 통신할 수 있는데 이때 Slave 간 구별을 위해 각 Slave마다 개별 주소(address)가 필요합니다. 실제 아두이노 프로그램이나 라이브러리에 포함된 내용을 보게 되면 I2C통신을 하는 센서나 외부기기는 address가 부여되어 있습니다.

 

더 자세한 내용은 I2C통신으로 검색하여 찾아보시면 정말 다양한 정보가 있으니 참고 부탁드리며, 여기에서는 오늘 사용하려는 bh1750 광센서가 I2C 통신을 한다. 그래서 두 개의 선 (SDA, SCL)이 필요한데, SCL (직렬 클럭)이 데이터 전송 타이밍을 맞춰주는 방식으로 통신을 한다. 또한 각 Slave에는 address가 부여하여 구분을 하기 때문에 아두이노의 하나의 SDA, SCL 포트에 여러 개의 센서 및 외부기기를 병렬로 연결하여 사용할 수 있다! 정도만 기억하시면 됩니다.

 

2-1. 아두이노와 조도센서 배선

 

bh1750 센서에는 VCC/SCL/DAT/GND/ADD 로 총 5개의 연결 단자가 있습니다. 각각 아두이노의 적합한 pin에 연결하시면 됩니다. VCC는 5V, GND는 GND, ADD는 연결하지 않거나 GND에 연결하고, 앞서 소개해드린 SCL과 DAT (SDA)는 각각 아날로그 핀 (Analog pin) 5번과 4번에 연결하시면 됩니다. 

 

광 센서 조도센서 - gwang senseo jodosenseo
아두이노(Arduino)와 조도센서(Light sensor) 배선

 

 

 


 

2. 프로그램 코딩

 

먼저 라이브러리를 다운받습니다. 다운로드한 라이브러리는 스케치에서 추가해주시고, 혹시 라이브러리를 처음 사용하시는 분은 아래 링크 참조하셔서 스케치에서 라이브러리를 추가하는 방법을 알아두시면 유용합니다.

 

BH1750-master.zip

0.27MB

 

아두이노(Arduino) 홈 IoT 입문 - 온습도 센서(DHT11) 사용하기

아두이노(Arduino)를 사용한 홈 IoT (사물인터넷)의 가장 기본은 각 종 센서를 동작시키고 센싱 값을 읽는 것이라고 할 수 있습니다. 구상하는 대부분의 프로젝트는 어떤 조건이 만족하면 원하는 명

it-g-house.tistory.com

#include <BH1750.h>

BH1750 lightMeter;

void setup(){

  Serial.begin(9600);
  lightMeter.begin();
  }

void loop() {

  float lux = lightMeter.readLightLevel();
  Serial.print("Light: ");
  Serial.print(lux);
  Serial.println(" lx");
  delay(1000);
  }

코드는 라이브러리를 사용하기 때문에 생각보다 간단합니다. 라이브러리에 속해있는 명령어 lightMeter.begin(); 명령어가 setup에서 실행되고, 변수 lux에 lightMeter.reaLightLevel(); 명령어로 측정된 조도 값을 저장한 뒤 Serial.print 명령어로 출력하는 순서입니다. 

 

프로그램 코딩 후 컴파일/업로드를 진행하면 시리얼 모니터로 조도센서에 의해 측정된 조도 값이 1초 간격으로 나타나는 것을 확인할 수 있습니다.


여기까지 아두이노(Arduino) 센서 중 조도센서(Light sensor) bh1750 모듈의 사용 방법을 알아보았습니다. 이와 함께 I2C통신 방식에 대해서도 간단하게 설명드렸습니다. 추후 기회가 생기면 통신방식에 대해서 정리해보는 포스팅을 하도록 하겠습니다.

 

앞서 소개해드렸듯이 조도센서는 일상생활에서 알게모르게 많이 사용되기도 하고 특히 식물 재배 환경에서는 햇빛의 광량을 측정할 수 있기 때문에 아주 유용합니다. 식물에게 일일적산광량 (DLI, Day Light Integral) 매우 중요한 개념이고, 개화에 있어서 광량 및 주기 또한 큰 영향을 미치기 때문에 꼭 측정하는 항목이기도 합니다.

 

광이 식물에 영향을 미치는 부분은 아두이노 블로그에서는 다루지는 않도록 하겠습니다. ㅎㅎ 그럼 오늘도 긴 글 읽어주셔서 감사합니다. 궁금하신 부분이나 다양한 의견 댓글로 남겨주시면 감사하겠습니다.