自動でついて、時間も記録するライト

このエントリーをはてなブックマークに追加

これは何?

Home IoT Kit 製作例

このプロジェクトでただのライトをもっと賢くします。
人が近づくと自動でついて、さらにその時間をDropboxに記録します。

用意するもの

  • obniz
  • obnizの電源
  • PIR センサー (of IoT Home Kit)
  • サーボモーター (of IoT Home Kit)

手順

まず、サーボモーターを操作したいライトのスイッチに設置します。

スイッチの形はそれぞれなので、ONOFFできるようにしておきます。

できたら、PIRセンサーとサーボモーターを写真のようにobnizにつなぎ、obnizを電源につなぎます。

できたらプログラムを書いて実行しましょう。
サンプルプログラムには手動で動かすためのプログラムも用意しています。obnizのスイッチを左に動かすことでモーターを動かすことができます。それでちゃんと電気をつけられるか確認しましょう。

そして、時間を記録するためにDropboxのAPIキーを設定します。設定方法はレッスンにあります。

試してみましょう!

センサーに近づくと自動でライトがつくと思います。
そして、dropboxにファイルが作られて、そのファイルに時間が記録されるはずです!

今回はHTMLでプログラムを行いましたが、nodejsにするとずっと動かすのが簡単になります。

さらに、使われている時間を出したり、いなくなったら電気を消したりなど、いろいろな工夫をしてみましょう。

Program

<html>
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css">
  <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>

  <script src="https://unpkg.com/obniz@1.7.0/obniz.js"></script>
  <script src="https://unpkg.com/dropbox@4.0.3/dist/Dropbox-sdk.min.js"></script>
  
</head>
<body>

<div id="obniz-debug"></div>

<script>

var dbx = new Dropbox.Dropbox({ accessToken: '<YOUR ACCESS TOKEN HERE>' });
  
var obniz = new Obniz("OBNIZ_ID_HERE");

obniz.onconnect = async function () {
  
  var servo = obniz.wired("ServoMotor", {signal:2, vcc:1, gnd:0});
  servo.angle(90.0);
  
  var sensor = obniz.wired("HC-SR505", { vcc:11, signal:10, gnd:9});
  sensor.onchange = function(detected){
    if (detected) {
      turnon();
    }
  }
  
  obniz.switch.onchange = function(state) {
    if (state === "left") {
      turnon();
    }
  }
  
  async function turnon() {
    await obniz.wait(500);
    servo.angle(40.0);
    await obniz.wait(500);
    servo.angle(90.0);
    
    dbx.filesUpload({path: '/obniz.txt', contents: "[ON] " + new Date() + "\n", mode: 'overwrite' })
    .catch(function(error) {
      alert(error);
    });
  }
}

</script>
</body>
</html>