BeagleBone Blackで温度測定
ただ温度を測定するだけではおもしろくないので、
BeagleBone Blackで部屋の温度を測定し、時系列でログに残し、
外気温や電気代(冷暖房費)との関係を調べてみたいと思っています。
進めるにあたりこちらのページを参考にさせていただいています。
・BBBとBoneScriptとGroveモジュールで温度を表示しよう
http://marutsuparts.blog74.fc2.com/blog-entry-1057.html
BeagleBone自体の入門としては、こちらの記事をまず読むことをおすすめします。
・BeagleBone Black の購入とセットアップをしよう
http://marutsuparts.blog74.fc2.com/blog-entry-1050.html
・BeagleBone Black で お手軽に開発をしよう
http://marutsuparts.blog74.fc2.com/blog-entry-1051.html
BeagleBoneでは、JavaScriptにて端末を操作することができます。
またまだβ版とはいえ、「Cloud9 IDE」というWebアプリでの開発ツールが提供されているのが斬新でした。
ブログサイトの問題か、上記ページのサンプルコードが非常に読みづらかったため、
必要な箇所のみ以下に転記させていただきます。
ledblink.jsのコード
var b = require('bonescript'); leds_out = function(status){ b.digitalWrite('USR0', status); b.digitalWrite('USR1', status); b.digitalWrite('USR2', status); b.digitalWrite('USR3', status); } var state = b.HIGH; blink = function(){ if (state == b.HIGH){ state = b.LOW; } else{ state = b.HIGH; } leds_out(state); } // setup b.pinMode('USR0', b.OUTPUT); b.pinMode('USR1', b.OUTPUT); b.pinMode('USR2', b.OUTPUT); b.pinMode('USR3', b.OUTPUT); setInterval(blink, 1000);
BeagleBone本体の4つのLEDが1秒ごとにチカチカするのが確認できました。
続いて本題のこちら
・BBBとBoneScriptとGroveモジュールで温度を表示しよう
http://marutsuparts.blog74.fc2.com/blog-entry-1057.html
こちらもサイトのソースコードが見づらいため
以下に転記させていただきます。
また私の環境ではなぜか、ファイル名を指定の「grove_temp_sensor_test.js 」にしたところ
うまく動かなかったため、「temp.js」としました。
var b = require('bonescript'); var getTemperature = function(){ var AN0 = "P9_39"; var B = 3975; var R0 = 10000; var Rs = 10000; var Vref = 1.8; var Ts = 25 + 273.15; var a_val = b.analogRead(AN0); var V = a_val * 1.8; // 0 to 1 : 0 to 1.8(V) var R = R0 * V / (Vref - V); var T = 1 / ( 1 / Ts - Math.log(R / Rs) / B ) - 273.15; console.log("V = " + V); console.log("R = " + R); console.log("Temperature: " + T); } var timer = setInterval(getTemperature, 1000);
実際の画面はこちら、
画面下部にTemperatureとして温度が取得できているのがわかります。
このサンプルのケースでは、setIntervalにより1秒毎に更新されます。
今はコンソールに出力するだけですが、定期的にログファイルに残すことで、目的とすることが実現できそうです。