Posted at

MilkcocoaとArduino Unoで温度データを計測して可視化する方法

More than 3 years have passed since last update.

Milkcocoaアドベントカレンダー5日目。

よくIoT始めるなら何から始めると良いですか?と聞かれることがあるのですが、Arduinoから始めることをオススメしています。

理由としては

1. 安価

2. 手軽

3. サンプルが豊富

ですよ!

今回はMilkcocoaとArduinoUnoを使って、リアルタイムに部屋の温度を計測して可視化してみようと思います。


Milkcocoaとは

WebアプリケーションからIoTデバイスまで簡単に繋がるバックエンド。最近FreeBoard連携したので使ってみる。今回はArduino Unoを使って部屋の温度を測ります。

スクリーンショット 2015-10-26 16.52.07.png


使ったもの

合計4000円超えないくらいですかね。

フレームワークはjohnny-fiveを使いました。

http://johnny-five.io/

スクリーンショット 2015-11-22 19.21.44.png


Arduino IDEからStandardFirmataを書き込む

Arduino IDEからArduino UnoにStandardFirmataを書き込みましょう。まずはArduino IDEを起動させてください。

ツールからボードとポートの設定を行います。

ボードはArduino/Genunio UnoをポートはArduinoをPCに接続するとdev/tty.hogehogeと表示されるはずです。そちらを選択してください。

スクリーンショット 2015-11-08 10.56.30.png

次にファイルからスケッチの例からFirmataを選択し、StandardFirmataをクリックするとスケッチが出てきます。

スクリーンショット 2015-11-08 11.00.40.png

こちらをコンパイルしてArduino Unoに書き込みましょう。


johnny-fiveとMilkcocoaをinstallする

johnny-fiveとMilkcocoaをinstallしましょう。

npm install johnny-five

npm install milkcocoa

また、Milkcocoaを利用するには管理画面からアプリケーションを作る必要があります。

後々アプリケーションのidを書く必要があるので、一緒に作成しておいてください。

スクリーンショット 2015-11-23 16.49.56.png


ブレッドボードに挿す

画像の通り挿していきましょう。

注意事項として、LM35DZにはちゃんと向きがあります。平べったい方と丸みのある方を前後逆に挿すととても熱くなります。 注意してください。


コードを書く

こちらのコードをコピペして先ほど作ったアプリケーションのidをあなたのapp idのところに書いて保存してください。


temperature-lm35.js


var five = require("johnny-five");
var MilkCocoa = require('milkcocoa');

var milkcocoa = new MilkCocoa("あなたのapp id.mlkcca.com");

five.Board().on("ready", function() {
var temperature = new five.Temperature({
controller: "LM35",
pin: "A0",
freq : 3000 //ここで速さを決めます。
});

temperature.on("data", function() {
console.log(this.celsius + "°C", this.fahrenheit + "°F");
milkcocoa.dataStore('temp').push({'data':this.celsius});

});
});



temperature-lm35.jsを実行

それでは実行してみましょう。

node temperature-lm35.js

スクリーンショット 2015-11-22 19.35.54.png

できましたか?


Milkcocoaの管理画面を見てみる

Milkcocoaの管理画面からデータストアを見てみるとtempというストレージが作成されています。

スクリーンショット 2015-11-23 16.56.09.png

開いてみると値とTimestampが保存されています。

スクリーンショット 2015-11-23 16.56.46.png


FreeBoardで可視化

する予定だったのですが、お家にセンサーを忘れちゃいました。後で追記します。

簡単に可視化できるので試してみてください。

スクリーンショット 2015-11-15 11.36.58.png


一連の流れ


  1. Arduino IDEからStandardFirmataを書き込む

  2. johnny-fiveとMilkcocoaをnpm install

  3. Milkcocoaでアプリケーションを作成

  4. ブレッドボードにジャンパーワイヤーとLM35DZを挿す

  5. temperature-lm35.jsを実行する

  6. FreeBoardで可視化する


まとめ

いかがでしたでしょうか。Arduino IDEから書き込むときにボードとポートの指定さえ間違わずNode.jsで何か作ったことあるひとだったらつまらずやれちゃうのかなと思います。MilkcocoaでIoTどんどんやっていきましょー!