GROVE PI+で第5回、第9回で温度センサーで温度を取得することを行いました。言語としては、pythonを
使用しましたが、今回はJavaScriptからセンサーのデータを取得します。
なお、今回は、「センサーでできるおもしろまじめ電子工作」を参考にさせていただきました。
必要ライブラリのインストール
・標準のRaspberryPiのOSにもNode.jsは入っていますが、バージョンが古いので最新のものと入れ替えます。
(1)古いnode.jsをアンインストールします
$ sudo apt-get autoremove nodejs
(2)nvmのインストール
・nvmをインストールするためのディレクトリを作成します
$ cd /home/pi
$ sudo mkdir .nvm
$ sudo chmod 777 .nvm
・gitからnvmを取得します
$ git clone https://github.com/creationix/nvm.git .nvm
・/home/pi/.profileに以下の行を末尾に追加します
source /home/pi/.nvm/nvm.sh
・上記の変更を有効化します
$ source .profile
・nvmのバージョンを確認し、使用可能になっていることを確認します
(2018/9/10時点では、0.33.11と表示されました)
$ nvm --version
(3)Node.jsのインストール
・Node.jsのインストールできるバージョンを確認します
$ nvm ls-remote
・Node.jsをインストールします。上記コマンドで最新バージョンが10.0.0なので指定します
$ nvm install v10.10.0
(4)node-grovepiモジュールのインストール
・JavaScriptでgrovepiを使用するためのライブラリをインストールします
$ npm install node-grovepi
プログラミング
以下のコードを入力します(temp_test.js)
'use strict';
var GrovePi = require('node-grovepi').GrovePi;
var Board = GrovePi.board;
var DHTDigitalSensor = GrovePi.sensors.DHTDigital;
var pinID = 2; // D2 ピン
var deviceID = DHTDigitalSensor.VERSION.DHT22;
var unit = DHTDigitalSensor.CELSIUS;
var board = new Board({
onInit: function(res) {
if (res) { console.log('start reading from sensor'); }
var tempHumidity = new DHTDigitalSensor(pinID, deviceID, unit);
setInterval(function(){
var arr = tempHumidity.read();
console.log('temperature:', arr[0], 'humidity:', arr[1]);
}, 2000);
},
debug: true,
onError: function(err) {
console.log(err)
}
});
board.init();
動作確認
ターミナルでsshで接続し、実行します。
$ node temp_test.js
info GrovePi.board GrovePi is initing
start reading from sensor
temperature: 26.2 humidity: 77.7
temperature: 26.2 humidity: 74
temperature: 26.2 humidity: 74
temperature: 26.2 humidity: 74
・・・・
JavaScriptで温度を取得することができました!