今注目のInternet of Thingsを実現するセンサーデバイスのインターフェースとしてArduinoを使い、電子工作の基礎から実装までを紹介する連載。今回は、観葉植物の土が乾いたことを土壌温度センサーで検知し自動的にメールを送信するシステムをJavaScriptで作ります。
連載「Arduinoで始めるWeb技術者のためのIoT入門」の第3回目です。前回の「電子回路を作る基礎を学びNode.jsでボードを操ろう」では、電子回路を設計・作成するための知識とJavaScriptでLEDを点滅させる方法をお伝えしました。
今回は、いよいよインターネット越しのサービスと連携させて、IoTの世界に踏み込みます。今回からArduinoを始めるという方は、これまでの連載を読み返しておいてください。
応用例として、観葉植物の土が乾いたことを検知し、自動的にメールを送信するシステムを作ります。
実装の過程で次のことができるようになります。
今回は、Arduinoボード以外に土壌温度センサーとして「Grove」のモジュールを利用します。
Groveシリーズのセンサーは、Arduinoに最適な抵抗を含む回路をビルトインしています。このおかげで、センサーをつなぐだけで適切な給電と値の読み出しができ、非常に便利です。1500円程度で全てそろいます。
回路作成といっても、今回はパーツをつなぎ合わせるだけで完成します。30秒もかからないでしょう。
前回の「Lチカ」同様、Node.jsのjohnny-fiveモジュールを駆使します。あらかじめ下記コマンドを実行しておいてください。
npm install johnny-five
最初のコードは、1秒ごとに湿度を読み込み、コンソール出力するだけです。
var j5 = require('johnny-five'), arduino = new j5.Board(); arduino.on('ready', function(){ var sensor = new j5.Sensor({ pin : 'A0', freq: 1000 }); sensor.on('data', function(){ console.log('data: ', this.raw); }); });
5〜8行目でSensorコンストラクターの引数にpinとfreqを与えています。pinにはセンサーがつながっているピンを指定し、freqにはセンサー値を読み取る周期をミリ秒で指定します。
10〜12行目で、センサーの値が読み込まれると、Sensorのインスタンスのrawプロパティにセットされ、dataイベントが発火します。
センサーを水に出し入れして、値が変化することを確認しましょう。これで土台ができました。ここからがIoTの面白い部分です。
Copyright © ITmedia, Inc. All Rights Reserved.