Raspberry Piで取得したセンサーデータをリアルタイムに可視化する(導入編)

Posted: / Tags: Raspberry_Pi Node.js



Raspberry Piを買ったは良いもののLチカで止まってる、なんて人は少なくないんじゃないでしょうか?

センサーデータがうまく取得できなかったり、通信の部分がよくわからなかったり、色々な理由があるかと思います。

そこで今回は、Raspberry Piでセンサーデータを取得して、Milkcocoaを使ってリアルタイムにブラウザ上にグラフ化する過程を、導入部分からひとつひとつ説明したいと思います。

今回は導入編ということで、以下の流れで説明してきます。

  1. Raspberry Piのインストール
  2. Raspberry Piを持ち運べるようにする
  3. Node.jsのインストール
  4. Milkcocoaのインストール
  5. Milkcocoaのメソッドの動作テスト

Raspberry Piのインストール

こちらの記事を参考にしながらインストールして下さい。

インストールには以下の機材が必要になります(全部持っていない場合は、ちょっと初期コスト高めですが...)

  • HDMI端子があるディスプレイとそれをつなげるHDMIケーブル(最安で1万円くらい)
  • USBキーボード(最安で1,000円くらい)
  • ルーターとそれをつなげるLANケーブル
  • MicroUSB充電器(Android機を充電するやつ)
  • MicroSDカードとそれを読めるPC(16GBで1,000円くらい)

持ち運べるようにしたい場合は以下も必要です。

  • USB無線LAN子機(最安で750円くらい)
  • モバイルバッテリー

Raspberry Piを持ち運べるようにする

上記の機器と繋いだままで問題なく使えるんですが、センサーを付ける以上いろいろな場所に置きたいので、あらゆるしがらみから解放してあげます。

以下の3つを行います。

  • USB無線LAN子機を付けてセットアップする
  • モバイルバッテリーを付けてみる
  • PCからRaspberry Piにsshで接続する

USB無線LAN子機を付けてセットアップする

こちらの記事を参考に、購入&セットアップして下さい(私はPLANEXの方を買って、ちゃんと動いています)。

ただ、最後のファイル(/etc/network/interfaces)は、記事の書き方では動かなかったので、私がやって動いたやり方を以下に書きます。

まず、/etc/network/interfacesの中身を見ます。

$ cat /etc/network/interfaces

すると以下のようなコードが出てくるんじゃないかと思います(わかりやすいようにコメントを入れています)。

auto lo

iface lo inet loopback
# Ethernet(LANケーブルで繋いでいるネットワーク)の設定
iface eth0 inet dhcp

# 無線LANの設定
allow-hotplug wlan0
iface wlan0 inet manual

wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

ここで、(LANケーブルを繋いでいることを確認して)以下のコマンドでEthernetのIPアドレスを確認します。

$ ifconfig
#出力#
eth0      Link encap:Ethernet  HWaddr b8:27:eb:4f:3f:e3
          inet addr:192.168.1.38  Bcast:192.168.1.255  Mask:255.255.255.0
          ...以下略

IPは私の場合、192.168.1.38だと確認できました。確認できたら、先ほどの/etc/network/interfacesを以下のように書き換えます。

$ sudo vim /etc/network/interfaces
auto lo

iface lo inet loopback
#iface eth0 inet dhcp

# EthernetのIPを固定する
iface eth0 inet static
address 192.168.1.38
netmask 255.255.255.0
gateway 192.168.1.1

auto wlan0
allow-hotplug wlan0
# 今度は無線LANのIPを自動設定する
iface wlan0 inet dhcp

#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

iface default inet dhcp

私は、上記のコードで問題なく動作しています。同じ要領で無線LANのIPをstaticにすることはできませんでした。。運が悪かっただけかもしれませんので、試してみてもいいかもしれません。

これで、LANケーブルのしがらみから解放されました。

モバイルバッテリーを付けてみる

こちらのまとめを参考に、既に持っているor新しく買ったモバイルバッテリーを繋いで、起動するか確認してみて下さい。

私はRaspberry Piを置きたい場所にコンセントがあって、そちらを利用しているので「このバッテリーは動きました」という動作確認の報告が出来ません、悪しからず。。

とりあえずこれで、コンセントのしがらみから解放されました。

PCからRaspberry Piにsshで接続する

残りはディスプレイとキーボードですが、作業用のパソコンでssh接続をすれば解決します。

ssh接続をする前に、先ほどの無線LANの方のIPアドレスをifconfigで確認します。

#Raspiで#
$ ifconfig
#出力#
wlan0     ...
          inet addr:192.168.1.6  Bcast:192.168.1.255  Mask:255.255.255.0
          ...以下略

IPが192.168.1.6だとわかったので、作業用パソコンから(作業用パソコンがRaspberry Piと同じネットワークに接続していることを確認して)ssh接続をします。

#作業用パソコンで#
$ ssh pi@192.168.1.6

パスワードを聞かれるので'raspberry'を入力したら、接続できるかと思います。

これで、ディスプレイとキーボードのしがらみから解放されて持ち運べるようになりました。

Node.jsのインストール

Raspberry Piのハード側の準備が完了したので、ソフト側を導入していきます。

Node.jsは、こちらの方法でインストールできるかと思います。

私は、バージョン10.18をインストールして問題なく使えています。

wget http://nodejs.org/dist/v0.10.18/node-v0.10.18-linux-arm-pi.tar.gz
...以下略

Milkcocoaのインストール

npm installでMilkcocoaをインストールします。

プロジェクトディレクトリをつくって、そこにインストールします。

$ mkdir -p work/milkgraph
$ cd work/milkgraph
$ npm install milkcocoa

インストールが終わったら、JSファイルを作ってAPIを導入します。

$ vim test.js
// test.js
var MilkCocoa = require('milkcocoa');
var milkcocoa = new MilkCocoa('https://{your-app-id}.mlkcca.com');

これでAPIを使う準備が終わりました。

Milkcocoaのメソッドの動作テスト

準備が終わったので、Milkcocoaのメソッドが動くかどうかテストをしましょう。

// test.js
var MilkCocoa = require('milkcocoa');
var milkcocoa = new MilkCocoa('https://{your-app-id}.mlkcca.com');
var ds = milkcocoa.dataStore('test');

ds.push({message:'Hello World!'});

ds.on("push", function(data){
  console.log(data.value.message);
});

これを実行して、コンソールに'Hello World!'が表示されたら成功です。

$ node test.js
Hello World!

次回はセンサーデータの取得方法を説明します。

今回は、Raspberry PiでMilkcocoaを使い始めるまでを説明しました。次回は、照度センサーのデータを取得してデータストアに保存するまでを説明したいと思います。

以下のキットを使用するので、早めに準備しておきたい方は買っておくと良いかと思います。

ハック ラズベリーパイ Raspberry Pi 電子工作入門キット。