코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2018-04-12 09:45:26
어렸을 때 재밌는 만화나 영화를 볼 때 조금 더 실감나고 크게 보기 위해 TV 속에 들어갈만큼 가까이서 본 적이 있으신가요?
이럴 때면 어김없이 부모님께서는 한 마디 하곤 했습니다.
<출처 : http://www.wonderbaby.org>
TV를 가까이서 보게 되면 눈의 피로가 빠르게 누적되는 것은 물론 초점이 계속 바로 앞에서 맺히기 때문에
나중에는 멀리 있는 것을 잘 보지못하는 근시안이 생길 수 있습니다.
하지만 최근들어서 TV를 보는 거리는 시력 악화에 큰 영향을 미치지 않는다는 연구 결과가 있습니다.
어느 이론이 사실일지는 모르겠지만 중요한 건 가까이서 보는 것은 결코 시력에 도움이 되지 않는 사실입니다.
<어두운 곳에서 가까이서 TV를 보는 행위는 정말 좋지 않습니다!>
사실 TV를 가까이서 보게되는 원인은 '집중'하기 때문입니다. 집중을 하게 되면, 시야에 내가 보고자 하는 것을 채워놓고자 하기 때문이죠.
즉, 사람이 TV를 가까이서 보는 것은 어쩌면 자연스런 행위일지 모릅니다 :)
TV에 가까이 다가갔을 때 TV가 자동으로 꺼지게금 제어한다면, TV를 가까이서 보는 것을 예방할 수 있지 않을까요?
스마트 홈 키트에서는 적외선 장애물 감지 센서와 LCD를 이용해 '가까이 오면 꺼지는 눈 지킴이 TV'를 구현해 볼 수 있습니다.
적외선 장애물 감지 센서와 LCD의 활용 용도는 아래와 같습니다.
- 적외선 장애물 감지 센서
스마트 홈 키트에 구성되어 있는 장애물 감지 센서는 센서 상단의 가변 저항을 통해 측정할 거리 조정이 가능합니다.
적외선 장애물 감지 센서를 이용해 TV에 앞에 사람이 있는지 없는지의 유무를 판단합니다.
- LCD
TV의 역할을 합니다. 적외선 장애물 감지 센서에 장애물이 감지되면 화면을 OFF하고, 적외선 장애물 감지 센서에 장애물이 감지되지 않으면, 화면을 ON합니다.
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> // I2C LCD를 사용하기 위한 라이브러리 호출하기
LiquidCrystal_I2C TV(0x3F, 16, 2); // I2C LCD를 TV라는 이름으로 선언
int piezoPin = 2; // 피에조 부저의 +극을 오렌지보드 2번에 연결
int irPin = 9; // 적외선 장애물 센서를 오렌지보드 9번에 연결
int Flag;
int notes[] = {6900, 4906, 6900, 4906, 6900};
// 가까울 시 울릴 경보의 멜로디 작성
void setup()
{
// 시리얼 통신을 위해 통신속도(Baudrate)를 9600으로 설정
Serial.begin(9600);
pinMode(piezoPin, OUTPUT); // 피에조 핀을 출력핀으로 설정
pinMode(irPin, INPUT); // 적외선 장애물 센서 핀을 입력핀으로 설정
TV.init(); // I2C LCD의 기본 설정
TV.backlight(); // I2C LCD의 백라이트를 켜줌
TV.setCursor(0, 0); // I2C LCD의 커서위치를 0, 0으로 설정(첫번째 줄, 첫번째 칸)
TV.print("Looking TV...."); // I2C LCD에 "Looking TV...." 메세지 출력
}
void loop()
{
// 적외선 장애물 감지 센서 값 측정 후 시리얼 모니터에 출력
int IRVal = digitalRead(irPin);
Serial.println(IRVal);
// 거리가 가까울 경우
if (IRVal == 0) {
if (Flag == 0) {
// 경보 멜로디를 출력
for (int i = 0; i < 5; i++) {
tone(piezoPin, notes[i], 150);
delay(150);
}
Flag = 1;
}
// TV를 끔
TV.noBacklight();
}
// 거리가 멀 경우
else {
// TV를 킴
TV.backlight();
Flag = 0;
}
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 == 1) {
// 경보 멜로디를 출력
for (int i = 0; i < 5; i++) {
tone(piezoPin, notes[i], 150);
delay(150);
}
// TV를 끔
TV.noBacklight();
}
else {
// TV를 킴
TV.backlight();
}
적외선 감지 센서에 물체가 인식이 되면(사람이 가까이 오면) 멜로디를 출력하는 코드입니다.
센서 중간에 있는 민감도 조절하는 감도조절부 가변저항을 돌려서 적당한 거리를 인식하게 맞추고 사용하세요.
(자세한 내용은 https://kocoafab.cc/tutorial/view/729 에서 소프트웨어 코드 설명 부분을 참고하세요)
적외선 장애물 감지 센서 감도 조절 방법
kocoafabeditor
김주안 2018-06-02 20:51:38
적외선 센서 말고 초음파 센서를 이용해도 원리가 같다고 생각하는데 굳이 적외선 센서를 이용하는 이유가 있나요?
초음파 센서를 이용하면 위의 코딩을 변형해야 하나요?