[48호]블루투스 모듈과 광센서를 이용한 LED 조명등 제어
2017 ICT 융합 프로젝트 공모전 참가상
블루투스 모듈과 광센서를 이용한 LED 조명등 제어
글 | 동서대학교 김지민, 김주호
1. 심사평
칩센 에너지 절약이라는 목표를 위해 가장 쉽게 시뮬레이션해볼 수 있는 것이 조명 제어입니다. 다만 에너지 절약이라는 것이 경제적 관점의 접근이라고 보면, 그 방법을 적용하는 것 또한 경제적 관점에서 접근해야 합니다. 위의 내용을 기반으로 할 때 기존 조명에 블루투스를 적용하고, 조도에 따른 조명 컨트롤을 한다는 것은 새롭다고 보기는 어려운 점이 없지 않습니다. 최근에 블루투스(또는 여타 솔루션)등을 적용한 조명 시스템에는 단순한 on/off 뿐만 아닌 여러 엔터테인먼트적인 요소를 접목하여 기술 적용시의 장점을 극대화하고, 이로 인해 추가적인 비용 부분을 상쇄하게 하는 제품들이 많이 나와 있는데, 이러한 제품들을 참조하였다면 더 재미있고 좋은 작품이 되지 않았을까 합니다.
뉴티씨 현재 가로등에는 낮에는 전등이 꺼지고, 밤에는 전등이 켜지게 되어 있습니다. 전등 제어 뿐만 아니라 여러가지를 덧붙였으면 IoT를 사용하는 상품으로서의 가치도 올라가지 않았을까 싶은 작품입니다.
위드로봇 아이디어가 좀 더 필요할 것 같습니다. 관련된 표준을 검토해 보는 것도 좋을 것 같습니다.
2. 작품 개요
이번 작품의 키워드는 바로 에너지 절약입니다. 일상생활을 살펴보면, 대낮에 건물 내부에 사람이 없음에도 불구하고 조명등이 켜져 있는 것을 볼 수가 있습니다. 이런식으로 대한민국 전체 인구의 50%가 불필요한 전기를 낭비한다면 아까운 전기가 낭비됩니다. 여름철이 되면 에어컨 사용 급증으로 인해 전기공급량이 모자라는 시점에서 조명등으로 인해 불필요하게 낭비되는 전기량을 줄이고자 사람들이 멀리에서도 전등을 제어 할 수 있도록 스마트폰을 이용해서 전등을 제어할 것입니다. 또한 광센서를 이용해서 낮에는 조명등이 소등되며, 밤이 되면 점등되도록 설계할 것입니다.
3. 작품 설명
3.1. 주요 동작 및 특징
스마트폰과 블루투스 모듈을 페어링하고 난 후, 연결이 확인되면, 스마트폰 app (블루투스 컨트롤러) 에다가 데이터 값 1,2,3을 지정해 놓고, 1= led on, 2 = led off, 3 = 가로등 모드로 정합니다. 이 세 가지 모드로 led 조명들을 제어할 수가 있습니다. 주요동작인 블루투스와 광센서의 주요 동작을 자세하게 살펴보면 먼저 스마트폰과 HC-05 블루투스 모듈의 통신확인을 하는 것이 중요합니다. 스마트폰에는 Atmega128의 명령을 받아 수행–> 버튼기능을 가진 bluetooth Controller (스마트폰 APP 실행) –> JMOD-BT-1 블루투스 모듈의 Rx와 Tx를 서로연결 한 후 –> 패어링(마스터인 스마트폰과 통신채널 연결 비밀번호 ‘1234’)후에 -> 버튼 ‘1’을 눌렀을 때 ‘1’의 값이 스마트폰으로 다시 오며, Loop back 이라고 합니다. 마지막으로 광센서의 스펙을 분석하여 가로등이 켜지는 시점을 계산하겠습니다. 먼저 CDS cell의 특성을 보면 빛의 양에 따라 저항의 값이 변하는 센서 입니다. 이 특징을 이용해서 가로등 모드를 구현할 것입니다. 그러기 위해서는 광센서(GL-5537)의 스펙을 살펴보고 기준전압을 구하면 되는데, 기준전압은 = (5/(Cds + R)) R 로 두며 (단, R과 Cds는 직렬연결이며, 기준전압은 Cds와 R 사이에 존재 합니다.) 계산하면 기준전압 = (5/(35K + 10K)) 10K = 1.1111 ….. 이며 이 값은 Atmega128에서 다시 5V 기준값에 대한 1024 비율이므로 (1.11/5) 1024 ·1 = 226이며 Atmega128 ADC에서 측정된 값이 226같거나 작은 값이면 LED를 켜고, 크면 LED를 끄도록 소스 코드를 짜기 때문에 간단한 소스코드가 나옵니다. 밑에 표는 광센서(GL5537)의 데이터 시트입니다.
3.2. 전체 시스템 구성
시스템 블록선도 &주요 부품 사진
3.3. 개발 환경
개발 TOOL 프로그램 : CodevisionAVR Evaluation
개발언어 : C언어
4. 단계별 제작 과정
4.1. 제작과정
1) 아이디어 회의 ▶ 주제 선정 ▶ 개발환경 선정 및 툴 결정(CodevisionAVR Evaluation으로 확정) ▶ 하드웨어 제작(납땜) ▶ 소스코드 작성 및 컴파일 그리고 빌드해서 Atmega128에 프로그램다운 시키기 ▶ 소스코드 오류로 다시 부분수정 ▶ 많았던 소스 코드 내용이 간단해 지면서 동작 성공 ▶ 외관 꾸미기 ▶ 최종 완성
이와 같이 제작을 하였으며 하드웨어 제작과정은 다음과 같았습니다.
5. 기타
5.1. 회로도
#include <mega128.h>
#include <stdio.h>
#include <delay.h>
char mode=0;
float ADC_F;
int ADC_I;
int pwm=0,led=0;
// 100us 주기 타이머 1 A매치 인터럽트
interrupt [TIM1_COMPA] void timer1_compa_isr(void){
if(mode==’3′){
if(pwm<led)PORTA=0×00; // free mode OFF
else PORTA=0xFF; // free mode ON
if(++pwm>127){ pwm=0; delay_us(250); // 변환시간동안 딜레이
ADC_I=ADCW; ADC_F=(float)ADC_I*100.0/1023.0;
led=(char)ADC_F;}
}
}
// usart1 으로 채널 데이터 값 수신
interrupt [USART1_RXC] void usart1_rx_isr(void){
char ch;
ch=UDR1;
if(ch==’1′){ mode=ch; PORTA=0xFF; } //led ON
if(ch==’2′){ mode=ch; PORTA=0×00; } //led OFF
if(ch==’3′){ mode=ch; PORTA=0×00; pwm=led=0; }
//free mode(광센서)
}
void main (){
DDRA=0xFF; //LED PWM 출력 포트
UCSR1A=2; UCSR1B=0×98; UBRR1L=16; //usart 초기화
TCCR1B=9; OCR1A=1599; TIMSK=0×10;
//16000000/(1+1599)=10000 // A매치 인터럽트
ADMUX=0×60; ADCSRA=0xE7; // 프리러닝 ADC0
SREG=0×80;
while(1);
}
5.3. 작품의 최종 완성 사진
5.4. 제작 과정 중 발생한 문제점 및 보안방법
제작과정에서 문제가 생긴 부분은 바로 소스코드 부분입니다. 처음에는 case 문으로 코딩을 하였습니다. 오류가 나지 않고 MCU에 프로그램 다운도 되었지만 문제는 광센서 모드를 누르고 나서 LED Off를 하면 소등이 되어야 하는데 광센서 모드를 빠져나오지 못했습니다. 이는 저희가 설계하려는 목표와 맞지 않았습니다. 해결 방안으로는 학교 도서관에서 CodevisionAVR 관련 서적을 찾아 공부하며 소스코드를 수정하면서 동시에 교수님이나 전공 관련 학생들, cafe회원 분들의 도움을 받았습니다. 결과적으로 if mode를 사용함으로써 문제점을 해결했습니다.
5.5. 기대효과
광센서와 블루투스 모듈을 이용하였으므로 편하고 간편하게 전등을 제어 할 수 있고, 광센서로 인해 불필요한 전등소비가 감소가 돼서 전기 에너지를 조금이나마 줄일 수 있으며, 이렇게 작은 낭비들을 돈으로 환산하면 꽤 큰 비용으로 나타나 낭비를 줄일수 있을 것으로 기대됩니다.
5.6. 참고문헌
1. 알기 쉽게 배우는 AVR ATmega128 신동욱/오창헌 공저
2. 작품 동작 확인 영상 (2016년 7월 29일 촬영) http://cafe.naver.com/modulecircuit/1092