IoT
KinomaCreate

Kinoma Create で温度計を作る

More than 3 years have passed since last update.

手元にアナログ出力の温度センサー LM61CIZ があったので、この値を表示してみる。
スタートアップメニューから辿れるサンプルプログラムのなかに、analog-temperature というそれらしき物がある。

ホーム画面の Front Pins でピンを設定して、センサーをつなぐ。左から、Power, Analog, Groundとする。
kinoma1.jpg
が、実行してみると動くがどうも値がずれている。使っているセンサーが違うので、あたりまえといえばあたりまえ。プログラムを変更するしかない。

温度計を表示するプログラムは、analog-temperatureというサンプルプログラムがここにある。
http://kinoma.com/develop/samples/
リンクをクリックしても他のサンプルプログラムと違い、GitHub に飛ばされるだけだが。
https://github.com/Kinoma/KPR-examples/tree/master/analog-temperature

というわけで、早速開発環境の Kinoma Studio をインストールして変更してみる。開発環境 Eclipse をベースに作られているようなので、僕にはなじみ深い。
Eclipseと同じ要領で、プロジェクトをインポートする。

基本的には3つのファイルで構成されているようだ。

ファイル名 説明
application.xml プログラムの名前とかのメタ情報の記述
src/main.xml 名の通り、メインファイル。xmlの中にjavascriptが埋め込まれている。
src/analog.js いまいち何をしてるかよくわからない。

というわけで、main.xml を覗いて、センサー値を取って、計算しているところを探す。

main.xml
<container id="MainContainer" top="0" left="0" bottom="0" right="0">
        <skin color="white"/>
        <label left="0" right="0" string="'- - -'">
            <style font="46px" color="black"/>
            <behavior>
                <method id="onAnalogValueChanged" params="content,result"><![CDATA[
                    //Converts voltage result to temperature. 
                    var temp = 100 * ( result * 2.8 ) - 50;
                    content.string = temp.toFixed(2) + " °C";
                ]]></method>
            </behavior>
        </label>
    </container>

result というのが、センサーの値のようだ。マニュアルによると、アナログ値のセンサーの値は 0から1 の間の値をとるそうだ。で?何ボルトなの?おそらく、ベース電圧の3.3Vが 1 の値をとるのだろう。3.3倍するとボルト数が得られる。さらに、1000倍して ミリボルト数が得られる。

(ミリボルト数) = result*3.3*1000

このセンサーは、測定範囲が、-30°Cから100°Cで、1°Cあたり10mV上昇するとのこと。0°Cのとき 600mv になる。すなわち、以下の式で求められる。

((result*3.3*1000)-600)/10 ---簡略化---> (result * 3.3 * 100) - 60;

さらに、小数点以下一桁だけ表示させる様に変更。

main.xml
                    var temp = (result * 3.3 * 100) - 60; 
                    content.string = temp.toFixed(1) + " °C";    

Kinoma Studio では、同一のネットワークに繋がっている Kinoma Create を自動的に探して表示してくれる。bento と名前をつけた Kinoma Create の横の 'Run >' ボタンをクリックすると、リモートでプログラムを実行できる。

kinoma.png

動いた!

kinoma1.jpg

だけど、表示がたまにチラチラして、19.0 になることがある。
分解能がたりないのか?

kinoma2.jpg

動いたから、とりあえずいいや。