초급 예제

누구나 쉽게 따라해볼 수 있는 쉬운 예제들입니다. 가볍게 도전~!

[LCDX적외선 감지 센서] 가까이오면 꺼지는 눈 지킴이 TV 만들기

2017-11-01 10:08:59

[이전 프로젝트 제작 가이드] 아침이 오면 알려주는 스마트 침대 만들기 (조도센서+피에조센서)

 

 

 

 

1. 개요

어렸을 때 재밌는 만화나 영화를 볼 때 조금 더 실감나고 크게 보기 위해 TV 속에 들어갈만큼 가까이서 본 적이 있으신가요? 

 

이럴 때면 어김없이 부모님께서는 한 마디 하곤 했습니다.

 

'TV가까이서 보면 나중에 커서 눈 나빠진다!!'

 

<출처 : http://www.wonderbaby.org>

 

 

 

 

 

 

 

 

TV를 가까이서 보게 되면 눈의 피로가 빠르게 누적되는 것은 물론 초점이 계속 바로 앞에서 맺히기 때문에

나중에는 멀리 있는 것을 잘 보지못하는 근시안이 생길 수 있습니다.

 

하지만 최근들어서 TV를 보는 거리는 시력 악화에 큰 영향을 미치지 않는다는 연구 결과가 있습니다.

 

어느 이론이 사실일지는 모르겠지만 중요한 건 가까이서 보는 것은 결코 시력에 도움이 되지 않는 사실입니다.

 

<어두운 곳에서 가까이서 TV를 보는 행위는 정말 좋지 않습니다!>

 

 

 

 

 

 

 

 

사실 TV를 가까이서 보게되는 원인은 '집중'하기 때문입니다. 집중을 하게 되면, 시야에 내가 보고자 하는 것을 채워놓고자 하기 때문이죠.

 

즉, 사람이 TV를 가까이서 보는 것은 어쩌면 자연스런 행위일지 모릅니다 :) 

 

 

 

 

 

 

 

 

 

그래서!

 

TV에 가까이 다가갔을 때 TV가 자동으로 꺼지게금 제어한다면, TV를 가까이서 보는 것을 예방할 수 있지 않을까요?

 

스마트 홈 키트에서는 적외선 장애물 감지 센서와 LCD를 이용해 '가까이 오면 꺼지는 눈 지킴이 TV'를 구현해 볼 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

적외선 장애물 감지 센서와 LCD의 활용 용도는 아래와 같습니다.

 

 

- 적외선 장애물 감지 센서

  스마트 홈 키트에 구성되어 있는 장애물 감지 센서는 센서 상단의 가변 저항을 통해 측정할 거리 조정이 가능합니다. 

  적외선 장애물 감지 센서를 이용해 TV에 앞에 사람이 있는지 없는지의 유무를 판단합니다. 

 

 

- LCD

  TV의 역할을 합니다. 적외선 장애물 감지 센서에 장애물이 감지되면 화면을 OFF하고, 적외선 장애물 감지 센서에 장애물이 감지되지 않으면, 화면을 ON합니다.

 

 

 

 

 

 

 

2. 준비물

 

NO 부품명 수량 상세설명
MDF 외관  
2 우드락 가구 2 TV
3 오렌지보드 BLE 1 블루투스 4.0 포함 보드
4 적외선 장애물 감지 센서 1  
5 피에조 부저 1  
6 LCD 1 I2C
7 브레드보드 1  
8 점퍼케이블    

 

부품명 MDF, 우드락 외관 오렌지보드 BLE 적외선 장애물 감지 센서 피에조 부저
파트

 

부품명 LCD 브레드보드 점퍼케이블
파트
 

 

 

TIP / 조도센서와 피에조 부저의 사용 방법을 알아보도록 하겠습니다. 

적외선 장애물 감지 센서 사용법 알아보기

> LCD 사용법 알아보기

 

 

TIP / MDF 및 가구 제작 방법에 대해 알아보도록 하겠습니다. 

MDF 외관 조립하기

스마트 홈 구성하는 우드락 가구 만들기

 

 

 

3. 소프트웨어 코딩

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C TV(0x3F, 16, 2);  //I2C LCD를 TV이름으로 선언

int piezoPin = 2;          //피에조부저를 오렌지보드 D2번에 연결
int irPin = A1;            //적외선장애물센서를 오렌지보드 A1번에 연결

boolean flag = 1;

void setup()
{
  Serial.begin(9600);
  pinMode(piezoPin, OUTPUT);    //D2번핀을 출력핀으로 설정

  TV.init();
  TV.backlight();
  TV.setCursor(0, 0);
  TV.print("Looking TV....");
}

void loop()
{
  int IRval = analogRead(irPin);    //적외선장애물센서 측정

  if (IRval < 100) {          //TV가 켜져있고 거리가 가깝다면 TV를 끈다
    if (flag == 1) {
      flag = 0;
      TV.clear();
      TV.noBacklight();
    }
    tone(2, 1000, 300);       //거리가 가깝다면 피에조부저에서 0.3초 간격으로 알람이 울린다
    delay(600);
  }

  else if (IRval > 900 && flag == 0) {  //TV가 꺼져있고 거리가 멀어지면 TV를 켠다
    flag = 1;
    TV.backlight();
    TV.print("Looking TV....");
    noTone(2);
  }
  delay(100);
}

 

 

 

소프트웨어 코드 설명

LiquidCrystal_I2C TV(0x3F, 16, 2);  // I2C LCD를 TV라는 이름으로 선언

 

LCD를 설정하는 코드입니다. 

 

매개변수 안에는(LCD의 I2C주소, LCD의 열 개수, LCD의 행 개수)를 작성합니다.

 

 

 

LCD의 I2C주소를 찾는 방법은 LCD의 예제를 확인해주세요.

 

LCD사용하기 튜토리얼 링크 : https://kocoafab.cc/tutorial/view/727

 

 

 

 

 

 

 

  if (IRval < 100) {          //TV가 켜져있고 거리가 가깝다면 TV를 끈다
    if (flag == 1) {
      flag = 0;
      TV.clear();
      TV.noBacklight();
    }
    tone(2, 1000, 300);       //거리가 가깝다면 피에조부저에서 0.3초 간격으로 알람이 울린다
    delay(600);
  }

  else if (IRval > 900 && flag == 0) {  //TV가 꺼져있고 거리가 멀어지면 TV를 켠다
    flag = 1;
    TV.backlight();
    TV.print("Looking TV....");
    noTone(2);
  }

 

적외선 감지 센서에 물체가 인식이 되면(사람이 가까이 오면) 멜로디를 출력하는 코드입니다.

센서 중간에 있는 민감도 조절하는 감도조절부 가변저항을 돌려서 적당한 거리를 인식하게 맞추고 사용하세요.

(자세한 내용은 https://kocoafab.cc/tutorial/view/729 에서 소프트웨어 코드 설명 부분을 참고하세요)

 

 

적외선 장애물에 대한 이미지 검색결과

 

 

 

 

 

 

 

적외선 장애물 감지 센서 감도 조절 방법

 

 

 

 

 

 

 

 

 

 

4. 프로젝트 시연 영상

 

 

 

 

[다음 프로젝트 제작 가이드] 햇빛에 따라 움직이는 스마트 블라인드 만들기 (조도센서+서보모터)

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

코코아팹, 오렌지보드, 아두이노, 오픈소스하드웨어, SW교육, SW코딩, 코딩, 코딩 교육, 스마트홈, IoT 홈, IoT, DIY, 키트, kit, kocoafab, ornage board, arduino, opensource hardware, Software, education, physical computing, LCD, 적외선 장애물 감지 센서, IR sensor