Intel XDK IoT Editionを使って温湿度センサを動かしてみる [edison]
前回,EdisonでArduino IDEから動かしてみた.
今回は,Intel XDK IoT Editionを使って温湿度センサを動かしてみる.
というわけで,まず,Intel XDK IoT Editionのインストール.
インストール手順とか,Intel XDK IoT Editionの使い方等は,詳しく書かれているサイトがいくつもあるので,そちらを参照下さいな.
たとえば...
Edisonを開封してからnode.jsでIOポート制御するまで - Qiita
Intel EdisonでIntel XDK for IoTを使う - Qiita
[Edison]Intel XDK IoT Edisonをつかってプログラムのビルドをしてみる | Developers.IO
あたりが参考になるかと.
で,温湿度センサを動かしてみる.温湿度センサは前回使った,AM2321だ.接続(回路図)等は前回から変わってない.
というわけで,早速コードを示そう.
適当なProjectを作って,package.jsonとmain.jsを以下のようにしてやる.
まず,package.json
次に,main.js
そしたら,ビルドして,Edisonにアップロードして実行してやる.
そうすると,コンソールに温度と湿度が5秒おきに出力されるようになる.
AM2321はI2Cの通信シーケンスに癖があるのだが,とりあえず上記のコードで動作させることができるようだ.
MRAAライブラリがあるので,Arduinoで動かしたときと同じぐらい簡単.
お試しあれ.
今回は,Intel XDK IoT Editionを使って温湿度センサを動かしてみる.
というわけで,まず,Intel XDK IoT Editionのインストール.
インストール手順とか,Intel XDK IoT Editionの使い方等は,詳しく書かれているサイトがいくつもあるので,そちらを参照下さいな.
たとえば...
Edisonを開封してからnode.jsでIOポート制御するまで - Qiita
Intel EdisonでIntel XDK for IoTを使う - Qiita
[Edison]Intel XDK IoT Edisonをつかってプログラムのビルドをしてみる | Developers.IO
あたりが参考になるかと.
で,温湿度センサを動かしてみる.温湿度センサは前回使った,AM2321だ.接続(回路図)等は前回から変わってない.
というわけで,早速コードを示そう.
適当なProjectを作って,package.jsonとmain.jsを以下のようにしてやる.
まず,package.json
{ "name": "TemperatureHumiditySensor", "description": "", "version": "0.0.0", "main": "main.js", "engines": { "node": ">=0.10.0" }, "dependencies": { "sleep": "*" } }
次に,main.js
var mraa = require('mraa'); console.log('MRAA Version: ' + mraa.getVersion()); var sleep = require('sleep'); function crc16(buf, length) { var crc = 0xFFFF; for (var j = 0; j < length; j++) { crc ^= buf[j]; for (var i = 0; i < 8; i++) { if (crc & 0x01) { crc >>= 1; crc ^= 0xA001; } else { crc >>= 1; } } } return crc; } function Am2321(bus, address, bufsize) { this.x = new mraa.I2c(bus); this.x.address(address); this.buff = new Buffer(bufsize); this.wakeupSensor = function() { this.x.writeReg(0, 0); } this.sendCommand = function() { get_command = new Buffer([0x03, 0x00, 0x04]); this.x.write(get_command); sleep.usleep(1500); } this.receiveData = function() { this.buff = this.x.read(8); } this.checkCrc = function() { var crc = this.buff[6] + this.buff[7] * 256; return crc == crc16(this.buff, 6); } this.checkRecieveData = function() { return (this.buff[0] == 0x03) && (this.buff[1] == 0x04); } this.getHumidity = function() { var high = this.buff[2]; var low = this.buff[3]; return (high * 256 + low) / 10; } this.getTemperature = function() { var temperature = 0; var high = this.buff[4]; var low = this.buff[5]; if (high & 0x80) { temperature = -1 * (high & 0x7F) * 256 + low; } else { temperature = high * 256 + low; } return temperature / 10; } } var sensor = new Am2321(6, 0x5C, 8); periodicActivity(); function periodicActivity() { sensor.wakeupSensor(); sensor.sendCommand(); sensor.receiveData(); if (sensor.checkCrc() == true) { if (sensor.checkRecieveData() == true) { var humidity = sensor.getHumidity(); var temperature = sensor.getTemperature(); console.log("%d %%, %d C", humidity, temperature); } } setTimeout(periodicActivity,5000); }
そしたら,ビルドして,Edisonにアップロードして実行してやる.
そうすると,コンソールに温度と湿度が5秒おきに出力されるようになる.
AM2321はI2Cの通信シーケンスに癖があるのだが,とりあえず上記のコードで動作させることができるようだ.
MRAAライブラリがあるので,Arduinoで動かしたときと同じぐらい簡単.
お試しあれ.
タグ:XDK