初心者も簡単ブログにコピペだけ!1クリック高単価7〜42円。登録無料最短1分でスタート。

超小型サーバーRaspberryPi2に繋いだセンサーの値をphpとpythonを使ってWEBに表示する方法。

Iotが流行り出す前にいろいろ勉強を兼ねてRasberryPi2でリアルタイムセンサー出力とコントローラーWEB版を作成。

RaspberryPi2はケース付きで¥5,980程度で購入できます。BMP180センサーは千円程度です下記画像リンクから詳細を確認できます。ケース付きでは下記が最安値ではないかと思います。

RaspberryPiはHDDの代わりにmicroSDを使用します。下記がオススメです。read95MB/秒で¥1,293です。下記のリンクが最安値だと思います。

いきなりですが、今回の成果物のハードコピーです。こんなのを作ります。上段ヘッダー部分に現在のログインユーザー名などを表示しています。

一応、RaspberrypiのCPUとメモリの情報も表示するにしてみました。

その下のnavでセンサーのビュー、ホストコントローラー画面、センサーディテクトを表示する画面です。

 

センサー値画面

raspictl

 

ホストコントロール画面

hostctl

 

センサーディテクト画面

sensordetect

Raspberrypi2にインストールするものは下記の通り。

  1. Apache Web Server
  2. i2c-tool
  3. php
  4. python(ディストリビューションraspbianは初めから入ってます。)
  5. node.js,ejs,express,npm,i2c(今回は使用しませんが次回使用します。今回はスルーでOK。)

Raspberrypiの設定は下記の通り。

  1. i2cを有効にする。
  2. gpioを有効にする。(ついでです)
  3. Serial通信を有効にする。(ついでです)
  4. php.ini safeモード無効(ホストコントロールでexec()する為)

 

 

使用したセンサーBMP180。

BMP180センサーから気圧、温度、高度を取得できます。精度は個人使用なら問題無い精度です。

(※気象関係のセンサーは室内で使用してください。

屋外で使用する場合は気象庁へ届け出が必要です。)

raspberry pi2にBMP180を接続します。(i2c)

raspberry pi2につながったセンサーの値を取得はpythonスクリプトを使用しました。
下記スクリプトをphpのexec関数などで実行して出力された値をawk,cutなどで欲しい値を抜き出してHTMLにレスポンスを返します。
シェルのコードについては調べてください。


#!/usr/bin/python
bmp = BMP085(0x77)
temp = bmp.readTemperature()
pressure = bmp.readPressure()
altitude = bmp.readAltitude()
print "Temperature: %.2f C" % temp
print "Pressure: %.2f hPa" % (pressure / 100.0)
print "Altitude: %.2f" % altitude

接続例:右上の穴の空いた小さな基盤がBMP180です。接続する端子は4つで3V,SDA,SCL,GNDそれぞれ画像のように接続します。(左下部分)

ショート防止でアセテート絶縁テープで導電体を覆っているのでみずらくてすみません。

その他にもジャンパーなどが繋がっていますが、今回は無視してください。(シャットダウンスイッチと通電状態をしらべる為の配線も入ってます。)

thumb_IMG_0283_1024

 

肝心のRaspberrypi2とは下記のようになっています。

raspberrypi2にはヒートシンクをつけて常時稼働している状態でCPU温度は38度から42度くらいで超省エネです(室温25度前後時)。

リボンケーブルでブレッドボードが隠れてますが、ご容赦ください。

thumb_IMG_0284_1024

 

HTML、CSS、Javascript部分の概要

phpでpythonスクリプとをexecして出力をawk,cutなどで加工してjavascriptでDOM操作とCSSを変更して実現していますが、自分用なので結構適当に作ってます。メーターのグラデーション部分はpositionで真っ白なバーをグラデーションバーの上に重ねて表現しています。

次回はいつになるかわかりませんが、node.jsとsocket.ioを使って今回の値をリアルタイムで表示するWebアプリを作りたいと思いますが、本業が優先なので1ヶ月後くらいになるかもしれないです。サンプルのコード一式はこのページにてダウンロードできるようにしますが、今しばらくお待ち下さい。


初心者も簡単ブログにコピペだけ!1クリック高単価7〜42円。登録無料最短1分でスタート。