HomeBright: Leap MotionとArduino UNOで実現するジェスチャー制御スマート照明
必要なパーツと材料
| パーツ | 数量 | 備考 |
|---|---|---|
| Arduino UNO | 1 | |
| Leap Motion Controller | 1 | 手のトラッキング用 |
| LED (汎用) | 4 | 各部屋の照明を模擬 |
| ジャンパーワイヤー | 10本 |
使用するアプリとオンラインサービス
- Arduino IDE
- Node.js
- Leap Motion SDK
- Cylon.js (Arduino、Leap Motion、LEDドライバー対応)
プロジェクトの概要
Leap MotionとArduino UNOを組み合わせ、手のジェスチャーで部屋ごとの照明明度を制御するホームオートメーションシステムを構築します。住宅の平面図をLeap Motionの座標系にマッピングし、手のひらの位置で対象の部屋を特定、手のひらの高さ (Z軸) で明るさを調整します。
セットアップ手順
- Node.jsをインストール
- Leap Motion SDKをインストール
- Cylon.jsのArduinoおよびLeap Motionモジュールをインストール (詳細は「参考リンク」参照)
- または
package.jsonを使って必要なNodeモジュールを一括インストール:npm install
実行方法
node homebright-console.js
参考リンク
- Leap Motion Developer Portal
- Cylon.js Arduino Documentation
- Cylon.js Leap Motion Documentation
- Cylon.js LED Driver Documentation



ソースコード
homebright-console.js (メインロジック)
"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) {
// 握り具合でON/OFF (grabStrength > 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);
// 座標平面の象限で部屋を判定
if (x > 0 && z > 0) {
// 右奥: リビングルーム
my.livingroom.brightness(value);
} else if (x > 0 && z < 0) {
// 右手前: ダイニングホール
my.dininghall.brightness(value);
} else if (x < 0 && z > 0) {
// 左奥: スタディルーム
my.studyroom.brightness(value);
} else {
// 左手前: ベッドルーム
my.bedroom.brightness(value);
}
});
}
}).start();
package.json (依存パッケージ定義)
{
"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"
}
}
回路図


注意点: このプロジェクトではArduinoにStandardFirmataスケッチを書き込み、Node.js側からCylon.js経由で制御します。Leap Motionの座標系と部屋のマッピングはプロジェクトの規模に合わせて調整してください。より実用的なシステムにするには、照明器具へのリレーやPWM制御、複数のLeap Motionによる広範囲カバー、認証機能の追加などが考えられます。
製造プロセス
- Bluetooth操作のArduinoスパイボットを自作する
- FlickMote:ジェスチャー操作のIRリモコンでスマートホームを制御
- 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
- 12メートル先から見える大型LEDマスタークロック(アラーム機能付き)を自作しよう
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduinoプロジェクトのための最適化電源ソリューション
- Arduino三目並べ:MAX7219 LEDマトリクスと段ボールケースで自作
- スマートArduino四足歩行ロボットの製作:ステップバイステップガイド
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- Arduino Nano R3で本格的なCNCマシンを自作する
- Earth Analyzer: 農業支援のための高度IoT環境監視ローバー