夏休みの子どもの自由研究に最適! 植物からメールをもらおう:Arduinoで始めるWeb技術者のためのIoT入門(3)(1/3 ページ)
今注目のInternet of Thingsを実現するセンサーデバイスのインターフェースとしてArduinoを使い、電子工作の基礎から実装までを紹介する連載。今回は、観葉植物の土が乾いたことを土壌温度センサーで検知し自動的にメールを送信するシステムをJavaScriptで作ります。
JavaScriptでIoT! センサー、Arduino、メールを連携させよう
連載「Arduinoで始めるWeb技術者のためのIoT入門」の第3回目です。前回の「電子回路を作る基礎を学びNode.jsでボードを操ろう」では、電子回路を設計・作成するための知識とJavaScriptでLEDを点滅させる方法をお伝えしました。
今回は、いよいよインターネット越しのサービスと連携させて、IoTの世界に踏み込みます。今回からArduinoを始めるという方は、これまでの連載を読み返しておいてください。
今回やること
応用例として、観葉植物の土が乾いたことを検知し、自動的にメールを送信するシステムを作ります。
実装の過程で次のことができるようになります。
- センサーから値を読み取る
- メールサーバーと連携させ、観葉植物に水やりするタイミングを通知する
- 不要な通知を抑制するために状態管理を導入する
用意するもの
今回は、Arduinoボード以外に土壌温度センサーとして「Grove」のモジュールを利用します。
- Groveベースシールド
- Grove Moisture Sensor(SEN92355P)
- Grove用4ピンケーブル
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.