코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2017-11-01 10:08:59
[이전 프로젝트 제작 가이드] 아침이 오면 알려주는 스마트 침대 만들기 (조도센서+피에조센서)
어렸을 때 재밌는 만화나 영화를 볼 때 조금 더 실감나고 크게 보기 위해 TV 속에 들어갈만큼 가까이서 본 적이 있으신가요?
이럴 때면 어김없이 부모님께서는 한 마디 하곤 했습니다.
<출처 : http://www.wonderbaby.org>
TV를 가까이서 보게 되면 눈의 피로가 빠르게 누적되는 것은 물론 초점이 계속 바로 앞에서 맺히기 때문에
나중에는 멀리 있는 것을 잘 보지못하는 근시안이 생길 수 있습니다.
하지만 최근들어서 TV를 보는 거리는 시력 악화에 큰 영향을 미치지 않는다는 연구 결과가 있습니다.
어느 이론이 사실일지는 모르겠지만 중요한 건 가까이서 보는 것은 결코 시력에 도움이 되지 않는 사실입니다.
<어두운 곳에서 가까이서 TV를 보는 행위는 정말 좋지 않습니다!>
사실 TV를 가까이서 보게되는 원인은 '집중'하기 때문입니다. 집중을 하게 되면, 시야에 내가 보고자 하는 것을 채워놓고자 하기 때문이죠.
즉, 사람이 TV를 가까이서 보는 것은 어쩌면 자연스런 행위일지 모릅니다 :)
TV에 가까이 다가갔을 때 TV가 자동으로 꺼지게금 제어한다면, TV를 가까이서 보는 것을 예방할 수 있지 않을까요?
스마트 홈 키트에서는 적외선 장애물 감지 센서와 LCD를 이용해 '가까이 오면 꺼지는 눈 지킴이 TV'를 구현해 볼 수 있습니다.
적외선 장애물 감지 센서와 LCD의 활용 용도는 아래와 같습니다.
- 적외선 장애물 감지 센서
스마트 홈 키트에 구성되어 있는 장애물 감지 센서는 센서 상단의 가변 저항을 통해 측정할 거리 조정이 가능합니다.
적외선 장애물 감지 센서를 이용해 TV에 앞에 사람이 있는지 없는지의 유무를 판단합니다.
- LCD
TV의 역할을 합니다. 적외선 장애물 감지 센서에 장애물이 감지되면 화면을 OFF하고, 적외선 장애물 감지 센서에 장애물이 감지되지 않으면, 화면을 ON합니다.
2. 준비물
NO | 부품명 | 수량 | 상세설명 |
1 | MDF 외관 | 1 | |
2 | 우드락 가구 | 2 | TV |
3 | 오렌지보드 BLE | 1 | 블루투스 4.0 포함 보드 |
4 | 적외선 장애물 감지 센서 | 1 | |
5 | 피에조 부저 | 1 | |
6 | LCD | 1 | I2C |
7 | 브레드보드 | 1 | |
8 | 점퍼케이블 |
부품명 | MDF, 우드락 외관 | 오렌지보드 BLE | 적외선 장애물 감지 센서 | 피에조 부저 |
파트 |
부품명 | LCD | 브레드보드 | 점퍼케이블 |
파트 |
TIP / 조도센서와 피에조 부저의 사용 방법을 알아보도록 하겠습니다.
TIP / MDF 및 가구 제작 방법에 대해 알아보도록 하겠습니다.
#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
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!