ブログ

Armadillo-IoTでマグネットセンサーの状態をHerokuに送信してWebブラウザで確認

at_kazutaka.bito
2015年5月8日 10時19分

Armadillo-IoT+Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュール DA00で、 マグネットセンサーの接点のオープン/クローズ状態を取得して、Herokuに通知する仕組みを作ってみた。 ここでは、株式会社日本アレフのマグネットセンサーAD-1001/AD-1011を使用する。 このマグネットセンサーは、  マグネットが近いと、接点がクローズ  マグネットが遠いと、接点がオープン になるようだ。

1.Armadillo-IoT 絶縁デジタル入出力/アナログ入力アドオンモジュールを使用するための準備

フォーラムのArmadillo IoTの運用にあたってによると 現時点(2015.5.7)では、このスレッドに添付されているパッチlinux-2.6.26-at25_support-didoad-addon.patch を当てる必要があるので、上記スレッドを参考にパッチを適用して、イメージをArmadillo-IoTに書き込む。

将来的にパッチが必要なくなれば、この手順はとばす。

2.Armadillo-IoTの絶縁デジタル入出力/アナログ入力アドオンモジュールにマグネットセンサーを接続

ここでは、絶縁デジタル入出力/アナログ入力アドオンモジュールをArmadillo-IoTのCON1に接続したものとして説明する。 Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル18.6.3.3. CON2 デジタル入出力インターフェースより、 マグネットセンサーを絶縁デジタル入出力/アナログ入力アドオンモジュールの端子台のデジタル入力DI1(CON2の5,6ピン)に接続する。

3.マグネットセンサーのオープン/クローズ状態を確認する

絶縁デジタル入出力/アナログ入力アドオンモジュールのデジタル入力の確認方法は、 Armadillo IoTの運用にあたってを参考。 上記手順2でDI1に接続したので、

[armadillo ~]# cat /sys/class/gpio/DI1_CON1/value

で確認できる。

Armadillo-IoT ゲートウェイスタンダードモデル製品マニュアル図18.28 CON2 デジタル入力部より、 マグネットが近いと接点がクローズ状態となるため、DI1はLowレベルになり、

[armadillo ~]# cat /sys/class/gpio/DI1_CON1/value
0

となる。 マグネットが遠いと接点がオープン状態となるため、DI1はHighレベルになり、

[armadillo ~]# cat /sys/class/gpio/DI1_CON1/value
1

となる。

4.マグネットセンサーの状態をHerokuに送って、Webブラウザで見る

上記手順3に、/sys/class/gpio/DI1_CON1/valueをポーリングして、 マグネットが近い--->/sys/class/gpio/DI1_CON1/valueが"0"-->"close"という文字をHerokuに送信 マグネットが遠い--->/sys/class/gpio/DI1_CON1/valueが"1"-->"open"という文字をHerokuに送信 という仕組みを追加する。 Herokuへの送信中はArmadillo-IoTの側面の緑LED(led3)を点灯するようにもする。

まず、 Armadillo-IoTからHerokuに送信した文字をWebブラウザで見るを一通り実行して Armadillo-IoTからHerokuに送信した文字がWebブラウザで見えることを確認する。 (下記文中の"***.herokuapp.com"は自分で作成したHerokuのURLに読み替える。)

Armadillo-IoTに下記スクリプトを作成する。 (ここでは、send_magnetというファイル名とする)

#!/bin/sh
VAR1=0
VAR2=close
while :
do
  VAR1=`cat /sys/class/gpio/DI1_CON1/value`
  if [ 0 -eq $VAR1 ] ; then
    VAR2=close
  else
    VAR2=open
  fi
  echo 1 > /sys/class/leds/led3/brightness
  wget -O- -q --post-data="data=$VAR2" https://***.herokuapp.com/series
  echo 0 > /sys/class/leds/led3/brightness
  sleep 1
done

上記スクリプト(send_magnet)に実行権限を付けて実行する。

[armadillo ~]# chmod +x send_magnet
[armadillo ~]# ./send_magnet

Webブラウザで、https://***.herokuapp.comにアクセスすると、Armadillo-IoTが送信した マグネットセンサーの状態(open/close)が表示される。 注意)Webブラウザの表示の更新には再読み込みが必要。 補足)Armadillo-IoTからHerokuに送信した文字をWebブラウザで見るのHerokuで動作しているアプリ(app.js)により、 Armadillo-IoTにはHerokuが受け取った文字列が返信されて、標準出力に見える。