Developer Blog

[blog-5] 水分センサ値などを Parse.com(外部クラウド)に送信 IoT型(ARDUINO)

[概要]

センサ値を、Parse.com(外部クラウド)に送信 保存する。
表示系アプリで、センサ値の表示を行う。

*) [blog-1]などで、RasPi+mbed(Raspberry Pi 2+ mbed LPC1114F28)
の記事を記載しましが、ARDUINO版の内容です。
parse for IoT(parse for Internet of Thing)が、ARUDUINO YUN 以外が非対応の為
手元の[ARDUINO UNO+ EtherNet] で、接続できないか検討した内容で、
直接接続する方法ではないのですが、中継する転送APIをクラウド(フロントエンド)に
設置し、送信登録する内容となってます。

*) Parse.comについてはこちらに補足記事
http://kuc-arc-f.com/agri/?blog=blog-parse-0407
#
[ Download ]

http://kuc-arc-f.com/agri/?download=blog-5

[ 説明 ]
# ハード仕様
ARDUINO UNO R3
EtherNetシールド
Baseシールド(通常のブレッドボードでも可)
水分センサ
*) そのた
ワイヤ (配線)、USBケーブル など
設定用PCも必要。

[ 流れ ]
#送信系
マイコン(ARDUINO+EtherNet) からHTTP通信で、
中継クラウドの転送APIに送信
転送APIから、Parseへ送信して、センサ値を登録

送信する間隔=約5分

#表示系
web系アプリで、Parse.com – javascript SDK で実装し、
HTMLファイルを開くと、API経由で、Parse.com側のデータベースから
指定条件のデータ抽出し、センサ値(グラフ、表)を表示する

[ Setup ]
http://kuc-arc-f.com/agri/?doc=blog5-1-a

#テストの様子

2番目にbaseシールドで、3番目にEtherNetシールド、1番目:ARDUINO UNO R3
3段シールド構成ですが、デバイス接続の回路は、ブレッドボードなどの基盤から
接続して構いません。
*)左側コップですが、現地(農園など)の土壌に差し込んでもらえばと。思います

[ コスト ]
マイコン側:約 11,000 en[JPY] から
(DCアダプタ, 実際の配線長さなど除く)

クラウド側: Parse.com の無料プラン (有料プランの場合は各プラン料金分は追加)
*) [blog05]-PDF コスト表 http://kuc-arc-f.com/agri/public/pdf/parts-pdf-blog5.pdf

 

python ライブラリ インストール

sudo apt-get install python-pip

通信関係ライブラリ
sudo pip install requests

[blog-4] 栽培の自動化、Parse.com(外部クラウド)連携し 自動かん水も可能

[blog-4] 栽培の自動化、Parse.com(外部クラウド)連携し 自動かん水も可能

[概要]

自動かん水可能、Parse.com(外部クラウド)を活用
水分センサ値の表示可能
流量、供給判定値の設定がクラウド上で可能

*) Parse.comについてはこちらに補足記事
http://kuc-arc-f.com/agri/?blog=blog-parse-0407

#
[ Download ]
http://kuc-arc-f.com/agri/?download=blog-4

 

[ 説明 ]
[blog-1] (センサ値収集系)を拡張し、実行系(かん水)処理を追加しています。
http://kuc-arc-f.com/agri/?blog=blog-1
中継サーバ(Raspberry)に、データ蓄積なしで、クラウド側に全て保存
現地にデータベースなどの設定必要なしの為、比較的設定がカンタンです。

*)外部クラウドで、サービス中止の可能性もありますので、ブログ扱いとしてます。
長期的に使用する場合は、
[TYPE-D] (現地サーバ設定型)など参考頂ければと思います。
http://kuc-arc-f.com/agri/?product=product-post-4

# ハード仕様
Raspberry Pi 2
mbed LPC1114FN28 (マイクロ コンピュータ)
水分センサ
*) そのた
ブレッドボード、ワイヤ (配線)、USBケーブル など
設定用PCも必要。

 

[ 流れ ]
#送信系
#センサ値
マイコン(mbed ) からシリアル通信で、サーバ(Raspberry) にセンサ値を送信
Raspberry側で、シリアルポートを監視するサービスを起動しておき、
センサ値が送信されたら、Parse.com(クラウド)側へ、転送。
#実行系(かん水)
定期実行、クラウド側マスタ値(流量、供給判定値)を取得し
給水必要な場合は、リレー制御し、電磁弁から給水

#表示系
web系アプリで、Parse.com – javascript SDK で実装し、
HTMLファイルを開くと、API経由で、Parse.com側のデータベースから
指定条件のデータ抽出し、センサ値(グラフ、表)を表示する


マスタ設定画面(流量など)

[ Setup ]

http://kuc-arc-f.com/agri/?doc=blog-4-a

[ コスト ]

mbed版 約 12,000 en[JPY] から
[type-d] とほぼ同じです。(電磁弁、配線など除く)
*) [type-d]-PDF コスト表 http://kuc-arc-f.com/agri/public/pdf/parts-pdf-typ-d.pdf

[テストの様子]


リレー回路テスト、クラウド側から給水指示が出ます。管理画面で設定した開閉時間で動作

[ blog-3 ] Parse for Internet Of Things (Parse for IoT)を試してみる。 (コラム)

[概要]

コラム記事 的な内容で、
センサなどのデバイス連携部分まで実装してませんので、あくまで最近のIot動向記事程度の内容です。
*)栽培の自動化、に直結した内容はないのですが、
raspberryなどの超小型PCから、クラウド連携する機能の開発で今後活用できそうに見えますので。
メモです

[内容、調べた理由など]
最近、Parse for Internet Of Thingsの記事を見かけましたので調査してみました。
実態は、Parseが開発したIot向けのSDKのようです。
先日のfacebook F8 カンファレンスの内容の一部かと思います
*)調べた、まとめ記事
http://jp.techcrunch.com/2015/03/26/20150325everything-you-need-to-know-from-todays-facebook-f8-announcements/

まず推奨デバイスが、ARDUINO YUN との事で、手元にないので(安価でない気もします)
探したpraseのブログ記事の
http://blog.parse.com/2015/03/25/connecting-hardware-with-the-cloud-parse-for-iot/

embedded系の記事で、raspberryで使えそうなSDKで、Cのコード見つけましたので、試してみました。
https://parse.com/apps/quickstart#embedded/raspberrypi

数行書けば、クラウドにデータ保存、push通知も可能みたいな内容みたいです。
*)
[blog-2] プッシュ通知で、水分センサ値から給水要求を受ける、で
http://kuc-arc-f.com/agri/?blog=blog-2
Parse活用した、マイコンからのセンサ値のデータ保存、モバイルへpush通知機能を実装してますので、
参考頂ければと思います。

[ Iot: 試した内容 ]
# setup (事前にアプリの登録が必要)
Quick Start https://parse.com/apps/quickstart#embedded/raspberrypi
での手順に従って、install します。サンプルProjectも取得しておきます、

# test
記載されている、Save an Object の下のコードをコピペし、ビルド実行すると
parseに登録されました。クラス「TestObject」

# push
push関係のコード追加し、
./quickstart を起動すると、待機状態になるようで

[Test]ボタンを押すと、push通知されました。
*) [Test Your Changes!]の下

[blog-2] プッシュ通知で、水分センサ値から給水要求を受ける (Android版)


給水要求が、pushされた画面 (マイコンId, 送信時刻)

[概要]

[blog-1]のParse.comを使ったセンサ値収集系の仕組みに
Push 通知する機能追加 (モバイル連携)
現地に設置した水分センサから、定期監視で規定値より下のアナログ値が検出された場合、
給水要求のpush通知がクラウド経由でモバイルに自動送信されます。(農作物からみて水分を補給して欲しい意味で)

[ Download ]

http://kuc-arc-f.com/agri/?download=blog-2

[ 説明 ]
# ハード仕様
Raspberry Pi 2
mbed LPC1114FN28 (マイクロ コンピュータ)
水分センサ
*) そのた
ブレッドボード、ワイヤ (配線)、USBケーブル など
設定用PCも必要。

# push機能について
Parse.comの モバイルpush機能を使いますが、
執筆時点での無料プランでのPush制限数は、100万の受信者(端末)/月
ですので、個人(小規模)で使用する場合は、使える範囲かと思います。

[ 流れ ]
#送信系
データ送信系
[blog-1] と同じですが、
マイコン(mbed ) からシリアル通信で、サーバ(Raspberry) にセンサ値を送信
Raspberry側で、シリアルポートを監視するサービスを起動しておき、
センサ値が送信されたら、Parse.com(クラウド)側へ、転送。

#push関係
一定時間(約60分)に、Push通知するか判定行い、
センサ上限値をより低いセンサがあれば、送信処理開始。

#表示系
[blog-1] と同じ,過去のセンサ実績が表示可能

 

[ Setup ]
http://kuc-arc-f.com/agri/?doc=blog-2-a

[ コスト ]
ハード面は、[blog-1] と同じですが、
mbed版 約 11,000 en[JPY] から
[type-d] の給水系機能(リレー回路、電磁弁)なしの費用とほぼ同等
*) [type-d]-PDF コスト表 http://kuc-arc-f.com/agri/public/pdf/parts-pdf-typ-d.pdf

クラウド側、parse有料プランの場合は、各契約したプラン料金が加算されます。

[ blog-1-b ] ARDUINO setup

# マイコン
# センサ値の取得送信機能のダウンロード http://kuc-arc-f.com/agri/?download=blog-1
ARDUINO version – [ ARDUINO sketch ] ダウンロードし、解凍。

mc-typ-06/mc-typ-06.ino を開き
マイコンID設定、1台目は 1 でよいです。

String MC_ID =”1″;

ARDUINO SDkコンパイル
*) [type-C]のセンサ接続手順とほぼ同じ、ご参考下さい
ARDUINO SDKインストール http://kuc-arc-f.com/agri/?blog=bog-0306c1-sdk
マイコン(ARDUINO) セットアップ http://kuc-arc-f.com/agri/?doc=03-c-2-1-arduino-1
周辺デバイスの接続 http://kuc-arc-f.com/agri/?doc=03-c-2-7-valve

[blog-1] 水分センサ値などを Parse.com(外部クラウド)に送信/実績表示する

[概要]

センサ値を、Parse.com(外部クラウド)に送信 保存する。
表示系アプリで、センサ値の表示を行う。

*) Parse.comについてはこちらに補足記事
http://kuc-arc-f.com/agri/?blog=blog-parse-0407

#
[ Download ]
http://kuc-arc-f.com/agri/?download=blog-1

 

[ 説明 ]

# ハード仕様
Raspberry Pi 2
mbed LPC1114FN28 (マイクロ コンピュータ)
水分センサ
*) そのた
ブレッドボード、ワイヤ (配線)、USBケーブル など
設定用PCも必要。

======== update : 2015-04-08 ==============
ARDUINO 版を追加しました。( ARDUINO UNO R3 – 手順書など)
http://kuc-arc-f.com/agri/?blog=blog-1-b

 

[ 流れ ]
#送信系
マイコン(mbed ) からシリアル通信で、サーバ(Raspberry) にセンサ値を送信
Raspberry側で、シリアルポートを監視するサービスを起動しておき、
センサ値がプッシュされたら、Parse.com(クラウド)側へ、転送。

#表示系
web系アプリで、Parse.com – javascript SDK で実装し、
HTMLファイルを開くと、API経由で、Parse.com側のデータベースから
指定条件のデータ抽出し、センサ値(グラフ、表)を表示する

[ Setup ]

http://kuc-arc-f.com/agri/?doc=blog-1-a

[ コスト ]

mbed版  約 11,000 en[JPY] から
[type-d] の給水系機能(リレー回路、電磁弁)なしの費用とほぼ同等
*) [type-d]-PDF コスト表 http://kuc-arc-f.com/agri/public/pdf/parts-pdf-typ-d.pdf

Parse.comについて

試しで、BaaS (Backend as a Service) のParse.com を使用してみました。
バックエンドで、モバイルのSDKなど充実してそうなのサービスですが。
執筆時点で
無料プランですと制限はありそうです、
同時アクセス30、データベース 20GB, その他

小規模の利用であれば、使える範囲はありそうです。

*) 正式インフラを準備するまでの間とか

[ 利点など、試す理由 ]
クラウド上のデータベース環境を利用できる。
バックエンドの処理の開発が不要(DB作成の作業なども)
APIが豊富で、使いやすく見える
*) 残念ながらpython用は存在しないようで、REST API使いました。

*) 応答速度は速くはないと思います(無料プランなので、当然かもですが)

参考サイトさま(執筆時点)
http://akiyoko.hatenablog.jp/entry/2014/07/19/205349
http://dev.classmethod.jp/cloud/parse-introduction-1/

python mysqlライブラリのインストール

Raspberry にssh経由でログインします

pythonライブラリ関係セットアップ
sudo apt-get install python-pip

python-mySQL ライブラリを追加
sudo apt-get install python-mysqldb

通信関係ライブラリ
sudo pip install requests

 

mbed LPC1114FN28 使い方レビュー編

左は[mbed LPC1114FN28]
右は単体の[LPC1114FN28]
*)大きさは自分の 人差し指の半分ぐらい。
下にピンでているので、ブレッドボードなどに差し込んで利用できます。

概要、購入した理由

低コスト小型で、
ブレッドボードのピッチ間隔に合う為、
差し込んで回路を作成する事ができそうです。

単体マイコンチップ[LPC1114FN28] はアキバなどで 150[en]以下
程度で入手できそうですし、一般的な青mbed[mbed NXP LPC1768]
ほど機能は充実してないが、
安価で回路を構築するには手ごろなマイコンかと思います。

#Lチカ

初期段階で、Lチカできました。(書き換え前)
LED1(dp14) にLED, 抵抗を結線すると点滅できます

#
書込み方法
不明でしたので、結局は販売店さんに問合せました。
参考 http://mag.switch-science.com/2014/06/06/led_blinky_at_mbed_lpc1114fn28/

winですと、USB差し込んで。
1)MBEDフォルダにcopyするだけ。
書込み後は自動で閉じて。再度フォルダ開きます。
2)リセットボタン(BLスイッチ)を押すと、実行されます。

*) どちらかというと、単体[LPC1114FN28]の記事は多少ありました。
スイッチ回路などを作成して、書込み可能モードに変更後
書込む例などです。

#オンラインコンパイラの使い方。(流れ)
1) https://developer.mbed.org/ でアカウント作成。
2) ドライバのインストール(windows)
3) コンパイラ画面で、コード記述してビルド
4) bin形式のファイルが生成されるので、書き込む。

#そのた (詳しく無い為の感想レベル)
1) 不明な点、デバック機能
シリアル入力などの、入力系のテスト方法不明
SDKを見ると、ARDUINOが使い安い気もします。
シリアルモニタをありますし、コマンド入力も可能
*)tera Termなどで可能かのしれませんが、不明。

2) 拡張性を考えると、ARDUINOシールのような
差し込んで拡張できる、手軽さの部品はさほど多くない気がします。
回路組める人は、配線してある程度の事はできると思うのですが
素人は難しい面がありそうです。

参考記事
http://developer.mbed.org/users/ytsuboi/notebook/getting-started-with-mbed-lpc1114-ja/





Copyright 2015, KUC architect fukuoka

developer