10分で安価な環境センサをWebに繋げる

10分で安価な環境センサをWebに繋げる

じぇーけーそふと
じぇーけーそふと (ID1705) 公認maker 2015/05/01
0

以前の記事でmbed IoT Starter Kitのサンプルを動かしてみましたが、今回は違うセンサを繋げてみました。
プログラムの変更は簡単でしたので紹介します。

まず繋げたセンサはBME280という温度、湿度、気圧を計測できるチップをモジュール化した温湿度・気圧センサモジュールです。
インターフェースはI2CでもSPIでも繋げられるので、ほぼどんなマイコンでも繋げられると思います。

センサモジュールはブレッドボードに取り付けられる形状になっています。
ピンヘッダは取り付けられていないので、ハンダ付けが必要になります。


マイコンはmbed LPC1768 通称 青mbedを使いました。mbed IoT Starter Kitのサンプルプログラムは青mbedにも対応してます。
センサと同じくスイッチサイエンスで購入できるmbed用イーサネット接続キットで青mbedをインターネットに繋げます。
すべてブレッドボードで配線しました。

センサと通信するプログラムはコンポーネントを調べたらすでにサンプルプログラムとライブラリありました。
mbedのコンポーネントはカテゴリごとに部品やサービスと繋げるためのサンプルプログラムやライブラリが調べられるのでとても便利です。
今回のセンサもComponents » Sensors » Environmentalのカテゴリの中にありました。
センサと青mbedの接続もここを参考にしました。

前の記事と同じEthernet IoT Starter Kitのサンプルプログラムをベースにセンサのライブラリをインポートして、センサの定義を変更しました。

main.cppの頭に以下を追加

#include "BME280.h"

LPC1768.hの27行目を次の様に変更

//LM75B sensor(p28, p27);
BME280 sensor(p28, p27);

main.cppのpublish関数の以下の部分を変更

//sprintf(buf,
//     "{\"d\":{\"myName\":\"IoT mbed\",\"accelX\":%0.4f,\"accelY\":%0.4f,\"accelZ\":%0.4f,\"temp\":%0.4f,\"joystick\":\"%s\",\"potentiometer1\":%0.4f,\"potentiometer2\":%0.4f}}",
//            MMA.x(), MMA.y(), MMA.z(), sensor.temp(), joystickPos, ain1.read(), ain2.read());

    sprintf(buf,
     "{\"d\":{\"myName\":\"IoT mbed\",\"Temperature\":%2.2f,\"Humidity\":%2.2f,\"Pressure\":%04.2f}}",
            sensor.getTemperature(), sensor.getHumidity(),sensor.getPressure());

変更はこれだけです。

あとは青mbedをネットに繋げた状態でプログラムを動かして、IBMのWebサイトでmbedのMACアドレスを入力すれば温度(Temperature)、湿度(Humidity)、気圧(Pressure)としてセンサの値が表示されます。

たいした事はやっていませんが、だいたい10分ぐらいで新しいセンサをネットに繋ぐ事ができました。

サンプルプログラムとライブラリのおかげで手軽にできましたが、すべてオープンソースなコードベースなので自由に応用ができます。

次はWebサービスにアップした情報を元に何か制御してみたいと思います。

参考にしてくれた記事

記事が登録されていません。
この記事を参考にして、新しく記事を投稿しよう!

違反について