blog

Tessel で遊ぶ シリーズTesselで遊ぶ:気候モジュールのサンプルコードを動かしてみる

    • Ryuichi Nonaka
    この記事は書かれてから1年以上経過しており、内容が古い場合があります。

    前回のTesselで遊ぶ:HELLO, (PHYSICAL) WORLD!でTesselの概要をなんとなく理解し、動作させる環境を用意しました。今回は気候センサモジュールをつなげてサンプルコードを動かしてみたいと思います。

    モジュールの接続について

    モジュールの接続には注意点があります。モジュールポートは4つあり、それぞれA,B,C,Dとポート名が付いています。ポートを介したモジュールへのアクセスはJavascriptで指定することができます。モジュールを接続する際、モジュールの向き(裏表)と接続の際にはMicro-USBを抜いて電源が入っていない状態にしてください。

    モジュールの向きはTesselメインボードとモジュールの裏面に書かれているTesselのロゴマークが同じ向きにあるよう接続します。今回はサンプルの通りにモジュールポートAを使います。

    気候センサを動かしてみる

    今回はわかりやすそうな気候センサのサンプルを動かしてみます。気候モジュールをモジュールポートAに接続し、PCとMicro−USBケーブルで接続します。

    接続が終わったら前回作成したサンプルディレクトリの中に今回のサンプルを作るためのディレクトリを作ります。

    $ mkdir climate
    $ cd climate
    

    nodeモジュールのインストール

    ドキュメントにあるとおり、気候センサのセンサには種類があり種類によって使用するnodeモジュールが異なります。モジュールの基板の裏側を確認しclimate-si7020climate-si7005かを確認します。私の購入したモジュールはclimate-si7020でした。以下のコマンドでnodeモジュールをインストールします。

    $ npm install climate-si7020
    npm WARN package.json start.tessel@1.0.0 No description
    npm WARN package.json start.tessel@1.0.0 No repository field.
    npm WARN package.json start.tessel@1.0.0 No README data
    climate-si7020@0.1.1 node_modules/climate-si7020
    

    一階層上のディレクトリにnode_modulesというフォルダが作られそこにnodeモジュールがインストールされます。

    サンプルコードを動かす

    サンプルコードを動かしてみます。先ほど作成したclimateフォルダにclimate.jsというファイルを作ります。公式のページに記載されているコードはclimate-si7005向けに書かれているため、nodeモジュールを読み込んでいる部分を書き換えてやる必要があります。該当箇所はvar climatelib = require('climate-si7005');console.log('Connected to si7005');です。

    // Any copyright is dedicated to the Public Domain.
    // http://creativecommons.org/publicdomain/zero/1.0/
    
    /*********************************************
    This basic climate example logs a stream
    of temperature and humidity to the console.
    *********************************************/
    
    var tessel = require('tessel');
    // if you're using a si7020 replace this lib with climate-si7020
    var climatelib = require('climate-si7020');
    
    var climate = climatelib.use(tessel.port['A']);
    
    
    climate.on('ready', function () {
      console.log('Connected to si7020');
    
      // Loop forever
      setImmediate(function loop () {
        climate.readTemperature('f', function (err, temp) {
          climate.readHumidity(function (err, humid) {
            console.log('Degrees:', temp.toFixed(4) + 'F', 'Humidity:', humid.toFixed(4) + '%RH');
            setTimeout(loop, 300);
          });
        });
      });
    });
    
    climate.on('error', function(err) {
      console.log('error connecting module', err);
    });
    

    サンプルを実行する

    サンプルを実行するとTerminalに温度(華氏)と湿度のログが流れます。

    $ tessel run climate.js
    TESSEL! Connected to TM-00-04-f000da30-00714741-323565c2.
    INFO Bundling directory /Users/nukos/Projects/start.tessel
    INFO Deploying bundle (37.50 KB)...
    INFO Running script...
    Connected to si7020
    Degrees: 85.9916F Humidity: 33.7987%RH
    Degrees: 85.9530F Humidity: 33.7987%RH
    Degrees: 85.9337F Humidity: 33.7758%RH
    Degrees: 85.9916F Humidity: 33.7758%RH
    Degrees: 85.9723F Humidity: 33.7835%RH
    Degrees: 85.9916F Humidity: 33.7835%RH
    Degrees: 85.9916F Humidity: 33.7835%RH
    

    Degrees: 85.9723Fは温度(華氏:F)、Humidity: 33.7835%RHは相対湿度です。華氏(°F)を摂氏(°C)にするには°C = (5 / 9) * (°F - 32)の計算式で求められます。サンプルコードを以下のように摂氏を求めて変数に代入しログを出力するように変更します。

          climate.readHumidity(function (err, humid) {
            var c = (5 / 9) * (temp - 32);
            console.log('Degrees(c):', c.toFixed(2) + 'C');
            console.log('Degrees:', temp.toFixed(4) + 'F', 'Humidity:', humid.toFixed(4) + '%RH');
            setTimeout(loop, 300);
          });
    
    $ tessel run climate.js
    TESSEL! Connected to TM-00-04-f000da30-00714741-323565c2.
    INFO Bundling directory /Users/ryuichi/Projects/start.tessel
    INFO Deploying bundle (37.50 KB)...
    INFO Running script...
    Connected to si7020
    Degrees(c): 30.06C
    Degrees(f): 86.1074F Humidity: 32.8298%RH
    Degrees(c): 30.08C
    Degrees(f): 86.1460F Humidity: 32.8298%RH
    

    このように摂氏で温度を取得できるようになりました。体感の室温とはかなり異なりますね。この点の違いについては追々勉強するとしてこれでモジュールを使うことができました。

    今回はここまで。次回はチュートリアルの通りにWi-FIに接続してみたいと思います。

    次回:Tesselで遊ぶ:Wi-Fiにつないでみる

    参考

    シリーズ

    1. Tesselで遊ぶ:HELLO, (PHYSICAL) WORLD!
    2. Tesselで遊ぶ:気候モジュールのサンプルコードを動かしてみる
    3. Tesselで遊ぶ:Wi-Fiにつないでみる
    4. Tesselで遊ぶ:主なコマンドとスクリプトをフラッシュメモリへ書き込む
    5. Tesselで遊ぶ:Tesselからツイートできなかった話

    コメント・フィードバック