HomeBright: 립모션(Leap Motion)과 아두이노 우노로 구현하는 스마트 홈 조명 제어
부품 및 소모품
| 부품 | 수량 | 비고 |
| 아두이노 우노 (Arduino UNO) | 1 | |
| 립모션 컨트롤러 (Leap Motion Controller) | 1 | |
| LED (일반) | 4 | 각 방 조명 시뮬레이션용 |
| 점퍼 와이어 | 10 | |
앱 및 온라인 서비스
- 아두이노 IDE
- Node.js
- Cylon.js (아두이노, 립모션, LED 드라이버 지원)
프로젝트 소개
이 앱은 립모션(Leap Motion)과 아두이노 우노를 사용하여 홈 오토메이션 시스템을 구현합니다. 집 평면도를 립모션 좌표계에 매핑하여 특정 방을 결정하고, 손바닥 위치로 대상 방의 조명을 제어하며, 손바닥을 올리거나 내리며 해당 방의 조명 밝기를 조절합니다.
실행 지침
- Node.js 설치
- Leap Motion SDK 설치
- 아두이노 및 립모션용 Cylon.js 설치 (아래 유용한 링크 참조)
- 또는
package.json을 사용하여 필요한 모든 노드 모듈 한 번에 설치
실행 방법
node homebright-console.js
(코드 섹션 참조)
유용한 링크
코드
homebright-console.js (JavaScript)
LED 조명을 제어하는 사이클론(Cylon) 로봇 스크립트
"use strict";
var cylon = require("cylon");
cylon.robot({
connections: {
leapmotion: { adaptor: "leapmotion" },
arduino: { adaptor: "firmata", port: "COM7" } // 포트는 환경에 맞게 수정
},
devices: {
leapmotion: { driver: "leapmotion" },
livingroom: { driver: "led", pin: 6, connection: "arduino" },
dininghall: { driver: "led", pin: 9, connection: "arduino" },
bedroom: { driver: "led", pin: 10, connection: "arduino" },
studyroom: { driver: "led", pin: 11, connection: "arduino" }
},
work: function(my) {
my.leapmotion.on("hand", function(hand) {
// 손 움켜쥐기 강도 0.5 초과면 끄기, 아니면 켜기
var on = hand.grabStrength > 0.5 ? false : true;
var x = hand.palmPosition[0]; // X 좌표 (좌우)
var z = hand.palmPosition[2]; // Z 좌표 (앞뒤)
var value = 0;
if (on) {
value = hand.palmPosition[1]; // Y 좌표 (높이) = 밝기
}
console.log(value);
// 평면도 매핑: X/Z 부호로 방 결정
if (x > 0 && z > 0) {
// 거실 (제1사분면)
my.livingroom.brightness(value);
} else if (x > 0 && z < 0) {
// 식당 (제4사분면)
my.dininghall.brightness(value);
} else if (x < 0 && z > 0) {
// 서재 (제2사분면)
my.studyroom.brightness(value);
} else {
// 침실 (제3사분면)
my.bedroom.brightness(value);
}
});
}
}).start();
package.json (JavaScript)
노드 패키지 설정 파일 - npm install로 설치
{
"name": "homebright-console",
"version": "1.0.0",
"dependencies": {
"cylon": "1.2.0",
"cylon-gpio": "0.27.0",
"cylon-i2c": "0.23.0",
"cylon-leapmotion": "0.20.0",
"serialport": "1.7.4",
"firmata": "0.5.5",
"cylon-firmata": "0.23.0"
}
}
회로도