Raspberry Piで取得したセンサーデータをリアルタイムに可視化する(導入編)
Raspberry Piを買ったは良いもののLチカで止まってる、なんて人は少なくないんじゃないでしょうか?
センサーデータがうまく取得できなかったり、通信の部分がよくわからなかったり、色々な理由があるかと思います。
そこで今回は、Raspberry Piでセンサーデータを取得して、Milkcocoaを使ってリアルタイムにブラウザ上にグラフ化する過程を、導入部分からひとつひとつ説明したいと思います。
今回は導入編ということで、以下の流れで説明してきます。
- Raspberry Piのインストール
- Raspberry Piを持ち運べるようにする
- Node.jsのインストール
- Milkcocoaのインストール
- 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/interfacesauto 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を使い始めるまでを説明しました。次回は、照度センサーのデータを取得してデータストアに保存するまでを説明したいと思います。
以下のキットを使用するので、早めに準備しておきたい方は買っておくと良いかと思います。