帰宅時に自動で家のライトを点灯:ArduinoとiPhoneで実現するスマート照明
必要なパーツと用品
| パーツ | 数量 |
|---|---|
| Arduino Yun | 1 |
| LED(汎用) | 1 |
| 抵抗 221 Ω | 1 |
| ブレッドボード | 1 |
| ジャンパーワイヤー | 1 |
| Apple iPhone | 1 |
使用するアプリとオンラインサービス
- Arduino Web Editor
- Blynk
プロジェクト概要
概要
家に近づくと自動的に家のライトが点灯し、決して暗闇の中で家に入ることがない——そんな夢を叶えるデバイスです。GPSを使用して、家に近づくとライトが点灯し、家の中にいる間は点灯し続けます。
機能
このプロジェクトはBlynkを使用して動作します。Blynkはモバイルデータを必要とするため、外出先で動作させるにはモバイルデータを有効にする必要があります。Blynkアカウントとアプリが必要です。
動作はシンプルです:Blynkがスマートフォンの位置情報を監視し、そのデータをArduino Yunに送信。Arduino Yunはスマホの位置情報と自宅の位置(ユーザーが手動で設定)を比較。スマホが自宅の範囲内に検出されると、Arduino YunがLEDを点灯させます。
デバイスはユーザーのスマホ位置を常時監視し、自宅範囲内にいるかどうかをチェックし続けます。コードの概要は以下の通り:
If(isInParameter):ユーザーが自宅の範囲内にいるかチェック。真ならTurnLEDOn関数でLED点灯。Else:範囲外ならTurnLEDOffでLED消灯。
Arduino Yunは自宅の座標に基づいて自動的に自宅の範囲(パラメータ)を設定します。設定地点を中心に約60メートル四方の正方形を作り、その内側にユーザーがいればLEDオン、外ならオフという仕組みです。
メリット
このプロジェクトを運用するユーザーは以下のメリットを得られます:
- 帰宅時にライトを簡単に点灯可能
- 家族に「もうすぐ着く」と通知できる
プロジェクトの構築
ステップ1:必要な機材
- Arduino Yun ×1
- ブレッドボード ×1
- 抵抗(220Ω) ×1
- スマートフォン ×1
- ジャンパーワイヤー
ステップ2:回路の接続
物理回路はLEDと抵抗のみのシンプルな構成です。回路図は以下の通り:
ステップ3:自宅の位置情報(緯度・経度)を取得
以下の画像で手順を解説:
ステップ4:Blynkのセットアップ
Blynkアカウントが必要です。App StoreまたはGoogle PlayからBlynkアプリをダウンロードし、以下の手順で設定:
ステップ5:コードの理解
このプロジェクトのコードは3つの主要セクションで構成されます:
- 位置情報の読み取り
- 位置のプロット(範囲判定)
- LED制御
位置情報の読み取り
BLYNK_WRITE(V0) // 位置情報を変数に格納
{
latitude = param[0].asFloat();
longitude = param[1].asFloat();
// デバッグ用 - 以下の行をアンコメントして手動テスト可能
// latitude = 67.357899;
// longitude = -8.259199;
}
BlynkのバーチャルピンV0から位置情報を読み取り、変数に格納します。デバッグ用に固定座標を指定することも可能です。
位置のプロット(範囲判定)
if (latitude <= maxLat && latitude >= minLat && // スマホが自宅パラメータ内かチェック
maxLng >= longitude && minLng <= longitude) {
geolocation = 1;
} else {
geolocation = 0;
}
設定した自宅位置を中心に自動的に正方形の範囲が形成され、スマホがその内側にあるか判定します。
LED制御
if (geolocation == 1) // スマホが範囲内ならLEDオン
{
digitalWrite(pinLED, HIGH);
}
else {
digitalWrite(pinLED, LOW);
}
ユーザーが自宅に近づいているか、または自宅にいればLED点灯、離れていれば消灯します。
変数の設定
以下の値を設定してください:
- Blynkセットアップでメールで受け取ったAuth Tokenを
auth[]変数に入力 - 自宅の緯度・経度を
myLocationLatとmyLocationLngに入力 - デバッグしない場合は
proDebugを0に設定(シリアル出力抑制)。デバッグする場合、Blynk_WRITEループ内の指示に従って固定位置情報を使用可能
使用ライブラリ
- Bridge - Arduino LLC著作権、GNU LGPL、パブリックドメイン
- Blynk - MITライセンス
最終ステップ
Arduino YunをPCに接続してコードをアップロードします。このプロジェクトはArduino Yunが必要ですが、コードを少し修正すれば、内蔵WiFiを持つ任意のマイクロコントローラーや、WiFiモジュールを接続したArduinoでも動作可能です。外出先での動作にはモバイルデータが必要です。
背景
長年実現したかったプロジェクトです。基本アイデアは「ユーザーが家に近づくと家のライトが点灯する」というもの。実際の家のライトではなくLEDで代用していますが、リレーを追加してArduinoの同じピンに接続し、家の照明配線に割り込ませれば実用化可能です。まずはテストして配線と動作を確認してください。グッドラック!
コード
lightsOnEnter
完全なコード
lightsOnEnter(ESP8266版)
Yúnの代わりにESP8266を使用するためのコード適応版。5V動作のArduinoボードならどれでも実行可能。
回路図
schematics_J7lseyIN3G.fzz
製造プロセス
- Arduino MegaでPWM制御:プッシュボタン付きLEDフェード制御チュートリアル
- Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
- Arduinoでアイアンマンを自作:部品・センサー・手順ガイド
- ArduinoとBluetoothで作るスマート紛失防止タグ「Find Me」
- Arduino Cloud連携でどこからでも家の温度を監視
- Arduino駆動3Dプリントロボットアームの製作:ステップバイステップガイド
- DIY Arduino加湿器コントローラー:リレーを用いた安全な高電圧制御
- Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
- ゲーム用カスタムArduinoジョイスティックハンドルの製作
- ArduinoとTEA5767で作る高性能FMラジオ受信機
- Arduino 101で作る万歩計:DHT11温湿度センサー&LCD表示付き