第2回アキハバラIoTツアーズ@おてら

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

秋も日増しに…ってか冬じゃん!!寒いよ!!

寒いのが苦手な私には既に辛い、おてらです。

 

去る11月26日(土)にギークナビ主催の「第2回アキハバラIoTツアーズ」が開催されました!

私の製作物を中心に当日を振り返ります!

今回のテーマ

今回上司から課せられたテーマは「漢のIoT

 

えっ…?漢…?

mig

 

…………(漢って何も浮かばないや)

 

 

11月26日(土)天気は快晴、ただ寒い。

前回集合時間に送れそうだったので今回は余裕を持って行くべく、意気揚々と家を出て最寄り駅へ。

すると無常にも遅延している中央線。

またしても前回の二の舞になってしまうのか!?

 

▼前回の上司(イメージ)
hayakushiro

 

遅延のおかげで集合時間の10:00に間に合わないかと思いましたが、意外と中央線は頑張ってくれて(?)10:00ジャストに会場入りすることが出来ました。

よかった…魔○ブウ(純粋悪)が生み出されずに済んだ…。

 

と、冗談はさておき、10:30頃までには他の企業からの参加者の方々も来られ、会場は満員となりました。

ご参加頂いたみなさまありがとうございました!

 

はじめに

今回私がIoTデバイスを作成するにあたって1つ考えていたのは、なるべく電子工作要素を少なくしたいということです。

ラズパイにセンサーを取り付けたりするとジャンパワイヤなどで配線したり色々と手間ですし、ぶっちゃけそういうの苦手だからです。

 

というわけで今回は検知した情報をワイヤレスで取得できるというハイテクなセンサーを利用しました。

使用したセンサー

使用したセンサーはこちら。

モノワイヤレス社のTWE-LITE 2525 A(トワイライト・ニコニコ・エー)です。

twelite-2525a

ラズパイと大きさを比較するとこんなサイズ感です。

raspi_and_2525a

こちらは加速度センサーが内蔵された無線タグで、ボタン電池1つでセンサーが稼動し始め様々な状態を検知することが出来る優れものです。

ただ、これ1つでは状態を検知するだけですので検知した情報をデバイス側で受信する必要があります。

受信の為に必要なのがMONOSTICKという製品なのでこちらも購入しました。

monostick

TWE-LITE 2525 Aで検知したデータをMONOSTICKで受信してあれやこれやするという感じですね。

いずれもmarutsu秋葉原2号店さんで購入しました。

作成したもの

今回作成しようと思ったのはその名も「家の鍵かけたっけ?」です。

出かける際に以下のような体験をしたことは誰にでもあると思います。

  1. 家の鍵をかける
  2. 出かける
  3. ふと「家の鍵をかけたっけ?」と不安になる
  4. 鍵をかけたかどうか思い出せず、確認しに戻る
  5. 鍵の状態を確認し、再度出かける
  6. 3に戻る

という地獄の無限ループに!!

この悲しき地獄の無限ループに終止符を打つためには、外出先でも自宅の施錠状態が分かればいいですね。

最近は施錠したかどうか分かるキーカバーなどが既に販売されていますが、1人暮らしじゃない場合、自分が外出してる間に奥さんや子どもが帰宅すると当然鍵は空くので整合性が取れなくなる可能性があります。

つまり外出先からアルタイムで施錠状態を知るためにはインターネットを経由するしか(恐らく)ないのです。

 

というわけでこれが実現できれば地獄の無限ループは以下のように改善されます。

  1. 家の鍵をかける
  2. 出かける
  3. ふと「家の鍵をかけたっけ?」と不安になる
  4. スマホから施錠状態をチェック
  5. 無事、施錠出来ていることを確認
  6. 心置きなく外出する

まぁ当然施錠出来ていなければ全力で戻る必要があります

 

考えた仕組み

TWE-LITE 2525 Aを自宅のドアの内側の鍵に取り付けます。

一般的にドアの内側の鍵の状態は、以下のようになると思います。

水平状態 施錠されている
垂直状態 施錠されていない

よって、

  • 水平状態 ⇒ 垂直状態 = 鍵が開いた
  • 垂直状態 ⇒ 水平状態 = 鍵がかかった

と判断し、それぞれの状態変化が起こったタイミングでラズパイからAWS IoTを経由して現在の状態(施錠されているか、施錠されていないか)をDynamoDBに格納します。

そしてEC2でブラウザ上から状態が確認できるようにWebサーバを立て、そこからリアルタイムでDynamoDBに格納されている現在の状態を取得し、今まさに鍵がかかっているのかいないのかが分かるようにする、という感じです。

構成図

製作開始

TWE-LITE 2525 Aの準備

公式サイトによるとセンサー類が購入時のままだと取得されるデータが使いづらいようなので、用途に合わせて設定を書き換える必要があるようです。

 

流れとしては、

  1. MONOSTICKを設定モードにする
  2. OTA設定を行いTWE-LITE 2525 Aに反映させる
  3. MONOSTICKを親機モードにする

と至ってシンプルなのですが、公式サイトの情報が色んなところに散らばってるので意外と手こずりました。

設定モードにする

以下の手順を行う前に、TWE-LITE 2525 Aから電池を抜いておいてください。

まずは以下のURLより設定上書き用のデータをダウンロードします。

https://mono-wireless.com/jp/products/TWE-Lite-2525A/firmware_update.html

ダウンロードしたzipファイルを解凍すると以下の3つのファイルがあります。(2016/12/5時点)

  • Samp_Monitor_EndDevice_Input_JN5164_CNFMST_1_6_1.bin
  • Samp_Monitor_EndDevice_Input_JN5164_LITE2525A_1_6_1.bin
  • Samp_Monitor_Parent_JN5164_1_6_1

今回は真ん中以外の2つを使います。

 

続いてダウンロードしたファームをMONOSTCKに書き込むためのソフトウェア「TWE-LITE用プログラマ」をダウンロードします。

http://mono-wireless.com/jp/tech/misc/LiteProg/

ダウンロードしたらMONOSTICKをパソコンに接続し、TWE-LITE用プログラマを起動します。
COMポートにMONOSTICKが認識されていれば、先ほどダウンロードしたファームをTWE-LITE用プログラマ経由で書き込みます。

設定およびTWE-LITE 2525 Aへ反映

書き込んだらTeratermを起動し、シリアル接続をする。この時、[設定] > [シリアルポート] > [ボー・レート] > [115200] に設定する。
最後にEnterキーを押すと接続できます。

ここで動作モードや感度などを調整していきます。

鍵に取り付けたセンサーの状態変化を検知することが重要なので、3軸の加速度の値が取れればいいかなと思い、

p: set Sensor Parameter (0)

を設定しました。
が、最終的に公式サイトにあったセンサーがのどの面が上を向いているかを判別するターンモードでいいのではないかという結論に至り、

p: set Sensor Parameter (64)

を設定することにしました。
加速度モードでも同じようなことはできると思います。

公式サイトの設定に従い、無線タグアプリ(App_Tag)の親機を選択します。

o: set Option Bits (0x00000001)

Shiftキー+SキーでSaveしたら準備OK。

 

続いてMONOSTICKにTWE-LITE 2525 Aを近づけてボタン電池を挿入するとセンサー側に書き込まれます。

この時「SUCCESS」の表示が出なければ正常に書き込まれていないので再度電池を抜いてやり直してみてください。

親機モードに変更

一旦ターミナルを切断し、TWE-LITE用プログラマで「Samp_Monitor_Parent_JN5164_1_6_1」を書き込みます。

書き換えたらMONOSTICKを一度抜き差しし、再度Teratermで接続します。設定は先ほどと同様です。

 

成功すれば何やら値が返ってきていると思います。

これでセンサーと受信機の設定が完了です。

 

TWE-LITE 2525 Aはモノがいいだけにこの辺の設定が少々わずらわしいのが非常にもったいないと感じました。
もう少し簡単に設定変更が出来れば非常に嬉しいです。あと公式のドキュメントが散在しているのを何とか設定の一例として始めから終わりまでが流れとして1ページに記載してあると非常にありがたいと思いました。

 

プログラミング

公式サイトにラズパイで使う際のPythonのサンプルプログラムがあったのでPythonで書くことにしました。

Python自体はあまり書いたことがなくまさに勉強中ですが機械学習やビッグデータの解析などの分野でPythonは注目されているので自分も少しは書けるようになりたいと思っています。

 

すこし話がそれましたが、公式サイトにあったサンプルプログラムは少し複雑だったのでひとまずセンサーから取得した値を表示させるだけのものに。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import serial
import os

ser1 = serial.Serial("/dev/ttyUSB0", 115200)

while 1:
  if ser1.inWaiting() > 0:
    sys.stdout.write(ser1.readline())
  sys.stdout.flush()

これを実行すると以下のように値が取れているのが分かります。

python read2525.py
::rc=80000000:lq=105:ct=0019:ed=810F196F:id=0:ba=3000:a1=1377:a2=0718:x=0001:y=0000:z=0000
::ts=127
::rc=80000000:lq=120:ct=001A:ed=810F196F:id=0:ba=3000:a1=1377:a2=0721:x=0001:y=0000:z=0000
::ts=128
::rc=80000000:lq=198:ct=001B:ed=810F196F:id=0:ba=3000:a1=1370:a2=0718:x=0001:y=0000:z=0000
::rc=80000000:lq=204:ct=001C:ed=810F196F:id=0:ba=3000:a1=1379:a2=0721:x=0001:y=0000:z=0000
::ts=129

ターンモードにしているので、Y軸とZ軸の値は基本的に0のままで、Xの値が変わります。

どの向きでいくつの数字になるのかは公式サイトを参照してください。

http://mono-wireless.com/jp/products/TWE-Lite-2525A/howtouse-turn_mode.html

 

つまり水平状態の時は1、垂直状態の時は5が返されるのでそれで判別します。

 

 

 

といったところまで出来るようになったところでほぼタイムアップ!!><

 

ちなみにここまであたかも自分1人の力で作り上げてきた感満載で記事を書いていましたが、ほぼほぼ強力な助っ人に助けていただいています。

その強力な助っ人というのはそう、第1回アキハバラIoTツアーズで当日ラズパイを購入したにも関わらず持ち前のエンジニア力で優勝を掻っ攫っていったI氏です!

お昼ご飯を一緒に食べに行った際に、お互いに作ろうとしているものを話したら「大分被ってますね」ということで今回急遽一緒に製作することになりました。

 

私もI氏もTWE-LITE 2525 Aを触るのは当然初めてだったのでそこの設定にかなり時間をかけすぎてしまいました。

その後、私がセンサーから取得した値を加工してAWS IoTを経由してDynamoDBに格納させるスクリプトを作り、I氏にEC2でWebサーバ側の構築をお願いしました。

 

しかしリアルタイムで取った値をDynamoDBに渡すプログラムの作成が思うように上手く行かず、時間だけが過ぎていく状況に…。

 

I氏の提案でMilkcocoaを使おうということになりました。

Milkcocoaを使えばWebページにアクセスした際に条件に応じたページを表示させる動作が簡単にできる、とのことで色々挑戦してみましたが、こちらも元になるデータを送信するスクリプトがそもそも出来なかったので上手く使えず…。

 

そして訪れるタイムアップの瞬間…。

 

 

結果発表へ

その後、アキハバラIoTツアーズといえばお馴染み、めいどりーみんさんに会場を移し結果発表!

ちなみにお店に着いた瞬間メイドさんによるライブの真っ最中でした。

 

前回に引き続き入店早々ネコ耳を付けられる我々。今回は他の企業様にもご参加いただいていましたが、そちらの方々も容赦なくメイドさんの洗礼を受けておりました!

 

常にいてつくはどうを放つ上司の乾杯で結果発表がスタートです。

何だか今回のメイドさんは常にアストロンどころか常にパルプンテな感じがした気がしますが、飲み食いもそこそこに早速結果発表へ。

気になる優勝は誰の手に!?

結果発表に関しては全体の記事でまとめられると思うので私の記事ではこの辺までにさせて頂きます~。

 

まとめ

今回は前回を上回るレベルで準備不足でした…。

プログラミングに関しても完全に足を引っ張ってしまいインターネットに繋げることすら出来なかったのでIoTどころかタダのTで終わってしまいました。

ただ今回購入した無線タグたちは本当に優秀で(若干初期設定の大変さはありますが)、今後もIoTデバイスを作る際には大活躍間違いないと思いますので使いこなせるようにどんどんいじってみたいと思います。

「IoTに興味はあるけど電子工作とか苦手だ~」という方には非常にオススメです。私がそのクチですので。

 

また来年第3回アキハバラIoTツアーズも行う予定でおりますので、その時こそパーフェクトな状態で終わりたいと思います!三度目の正直!

またお会いしましょう!(∩’-‘⊂)

 

SNSでもご購読できます。

コメント

コメントを残す