「安心・安全・安定・信頼」できるインターネットサービスを
株式会社クルウィット
井澤 志充
IoTタグで遊んでみよう
2016/06/15 (Sat)
Kanazawa.rb #46
@ITBP武蔵
「安心・安全・安定・信頼」できるインターネットサービスを
じこしょうかい
• (株)クルウィットの取締役  兼  北北陸陸⽀支社⻑⾧長  
• 博⼠士(情報科学)  
• ネットワーク関連の委託研究・⾃自社サービス開発など
2
• 井澤  志充  (いざわゆきみつ)
@Yukimitsu_Izawa
「安心・安全・安定・信頼」できるインターネットサービスを
IoTとは
モノのインターネット(Internet  of  Things、IoT)は、
様々な「物」がインターネットに接続され、情報交換する
ことにより相互に制御する仕組みである。  
それによる社会の実現も指す。「物のインターネット」と
も呼ぶ。  
Wikipediaより
3
「安心・安全・安定・信頼」できるインターネットサービスを
モノ?
• モノ  =  IoTデバイス  
• パソコン,  スマホ,  タブレット,  raspberry  pi,..  
• 家電(  TV,  デジタルオーディオプレイヤー,  HDDプレ
イヤー,..)  
• 家の付帯設備  (鍵,  インターフォン,  電球,..)  
• 電⼦子⼯工作(  arduino,  BLEデバイス,..)
4
「安心・安全・安定・信頼」できるインターネットサービスを
IoTデバイスのI/O
• 状態取得(Observe)  
• 環境情報:  温度度湿度度、気圧、照度度、  
• モーション情報:  振動、傾斜、移動、  
• 位置情報:  存在位置、近接、通過、  
• スイッチ状態:  ⽞玄関の施錠状態、ドアの開け閉め、  
• 状態変更更(Control)  
• 家電のOn/Off  
• 照明制御  
• シャッター駆動  
• 施錠/解錠
5
「安心・安全・安定・信頼」できるインターネットサービスを
一昔前のコンピューティングというと
• PCでWord,  Excelでファイルを作成・編集  
• PCの中に閉じた世界  
• FAのような制御  
• 現実世界にあるゴツいものを操作・制御
6
物理的な視点でみると両極端な世界
「安心・安全・安定・信頼」できるインターネットサービスを
むかしむかし
• 能登半島の某川に設置された⽔水⾨門の制御をしたことがあ
りました。  
• ⽔水⾨門扉の開度度,  ⾨門の外側と内側の⽔水位や塩分濃度度を取
得。  
• i-‐‑‒mode(!)端末から確認できるようにするシステムでし
た。  
• ちょっと書き込むとマジで⾨門扉が開閉する。  
• ヘタに開閉すると川周辺流流域の⽥田畑に塩害が発⽣生
7
「安心・安全・安定・信頼」できるインターネットサービスを
こんなやつ
8
「安心・安全・安定・信頼」できるインターネットサービスを 9
「生まれて初めてのIoTプログラミングは水門でした!」
普通はそんなもので遊べない。
つまり……
「安心・安全・安定・信頼」できるインターネットサービスを
多様多種なIoTデバイスの台頭によって
ぼくらが「プログラミング」という⼿手段で介⼊入
できる世界が拡張された。
10
「安心・安全・安定・信頼」できるインターネットサービスを
なんかたのしそうじゃね!?
11
「安心・安全・安定・信頼」できるインターネットサービスを
今日のコンセプト
• 電⼦子⼯工作の世間⼀一般のイメージは…  
• 回路路図読めない  
• ハンダ付けむずかしそう  
• 抵抗読めない  
• 燃えそう  
• 爆発しないの?
12
→今⽇日は「半⽥田付けしないIoT遊び」を⽬目指します
「安心・安全・安定・信頼」できるインターネットサービスを
今日の課題
• 侵⼊入検知システムを作ってみよう
13
「安心・安全・安定・信頼」できるインターネットサービスを
完成予想図
14
振動検知
通
知
Twitterに投稿
「安心・安全・安定・信頼」できるインターネットサービスを
センサーネットワーク
• 今回はセンサーネットワークには無線プロトコルのひと
つであるZigBeeを利利⽤用します。
15
「安心・安全・安定・信頼」できるインターネットサービスを
ZigBeeとは
• 近距離離無線通信プロトコル  
• 規格:  IEEE  802.15.4  
• 速度度:  250Kbps(2.4GHz帯の場合)  
• 短距離離低速だが低消費電⼒力力
16
「安心・安全・安定・信頼」できるインターネットサービスを
子機・親機・中継機
• ZigBeeでは最⼤大で65536機が同⼀一ネットワーク上に配置
可能  
• グループ分け/ID⼿手段としては  
• 無線channel  #  
• application  ID  
• device  ID
17
「安心・安全・安定・信頼」できるインターネットサービスを
TWE-Liteを使ってみる
• モノワイヤレス株式会社製(東京コスモス電機株式会社か
ら分離離)  
• Energy  Harvest  環境での駆動を想定して設計  
• ボタン電池駆動可能  
• 技適OK  
• Analog  I/O  
• digital  I/O
18
http://mono-wireless.com/jp/products/TWE-001Lite.html より
「安心・安全・安定・信頼」できるインターネットサービスを
TWE-Lite製品シリーズ
• TWE-‐‑‒Lite  (SMD)  
• TWE-‐‑‒Lite  DIP  (DIP)  
• アンテナバリエーションいろいろ  
• TWE-‐‑‒Lite  2525a  (IoTタグ)  
• MonoStick  (USB)
19
http://mono-wireless.com/jp/products/ より
今回はこの2つを使います
「安心・安全・安定・信頼」できるインターネットサービスを
今回の構成
• センサー  
• TWE-‐‑‒Lite  2525a  ×  n個  
• 親機  
• Mono  Stick  ×  1個  
• Raspberry  Pi2に挿して使う
20
「安心・安全・安定・信頼」できるインターネットサービスを
TWE-Lite2525a
• All-‐‑‒in-‐‑‒One  
• TWE-‐‑‒Lite  +  3軸加速度度センサ  +  アンテナ  +  電池ホルダ  
• 設定もOTA(Over  the  Air)通信で簡単  
• ⾊色々な検知モード  
• 動き始め,静⽌止,⾃自由落落下  
• シングルタップ,ダブルタップ  
• シェイク,ターン,スピン  
• ねこったー  (参考⽂文献:ハルロック)
21
「安心・安全・安定・信頼」できるインターネットサービスを
MonoStick
• TWE-‐‑‒Lite  +  USBシリアルドングル  
• PCからはFTDIのUSBシリアルに⾒見見える  
• 親機として使うほか、TWE-‐‑‒Lite  2525aの設定時にOTA
送信機としても使う
22
「安心・安全・安定・信頼」できるインターネットサービスを
センサーの設定方法
• ファームを公式サイトから落落としてくる  
• TWE-‐‑‒Lite  R(ライター)  でセンサーファームを書き込む  
•                               〃            MonoStickにOTA⽤用ファームを書き込
む  
• シリアル経由でMoniStickにOTA⽤用の設定をする  
• OTA経由でセンサーへ設定をする
23
「安心・安全・安定・信頼」できるインターネットサービスを
ファームのダウンロード
• 公式サイトからアプリをダウンロードする。  
• https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒
Lite-‐‑‒2525A/firmware_̲update.html  
• ver  1.6.1  (2016/4/28  リリース)  
• Samp_̲Monitor_̲LITE2525A_̲1_̲6_̲1.zip  
• Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲CNFMS
T_̲1_̲6_̲1.bin  
• Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲LITE25
25A_̲1_̲6_̲1.bin  
• Samp_̲Monitor_̲Parent_̲JN5164_̲1_̲6_̲1.bin
24
「安心・安全・安定・信頼」できるインターネットサービスを
ファームウェア
• Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲CNFMST
_̲1_̲6_̲1.bin  
• 2525aへの設定書き込み⽤用のファーム  
• Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲LITE252
5A_̲1_̲6_̲1.bin  
• 2525aのファーム  
• Samp_̲Monitor_̲Parent_̲JN5164_̲1_̲6_̲1.bin  
• 親機動作⽤用のファーム
25
「安心・安全・安定・信頼」できるインターネットサービスを
書き込み機
• USBアダプター  TWE-‐‑‒Lite  R  
• https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒Lite-‐‑‒
R/index.html
26
https://mono-wireless.com/jp/products/TWE-Lite-R/index.htmlより
「安心・安全・安定・信頼」できるインターネットサービスを
書き込みソフト
• Windows⽤用  TWE-‐‑‒Lite  プログラマ  
• https://mono-‐‑‒wireless.com/jp/tech/misc/LiteProg/
index.html
27
「安心・安全・安定・信頼」できるインターネットサービスを
TWE-Lite Rでファームの書き込み
• 書き込み機をちょっと拡張
28
+ =
ライター L型ピンヘッダ
「安心・安全・安定・信頼」できるインターネットサービスを
TWE-Lite Rでファームの書き込み
• TWE-‐‑‒Lite2525aの場合
29
「安心・安全・安定・信頼」できるインターネットサービスを
TWE-Lite Rでファームの書き込み
• TWE-‐‑‒Lite  プログラマで書き込む  
• Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲LIT
E2525A_̲1_̲6_̲1.bin  
30
「安心・安全・安定・信頼」できるインターネットサービスを
MonoStickへOTA用ファームの書き込み
• MonoStickを直接WindowsPCに接続して書き込む  
• Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲CN
FMST_̲1_̲6_̲1.bin
31
「安心・安全・安定・信頼」できるインターネットサービスを
OTA設定方法(1)
• MonoStickにシリアル経由でOTA⽤用の設定を書き込む
32
←動き始め,静止モード
←動き始め検知加速度
「安心・安全・安定・信頼」できるインターネットサービスを
• 設定項⽬目については公式サイト参照のこと  
• https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒
ZERO/Samp_̲monitor/interactive.html
33
「安心・安全・安定・信頼」できるインターネットサービスを
OTA設定方法(2)
• 2525aにOTAで設定を書き込む  
• MonoStickのすぐ側で2525aに電池を差し込むと、無
線経由で設定が書き込まれる。
34
「安心・安全・安定・信頼」できるインターネットサービスを
親機の設定方法
• MonoStickに親機⽤用のファームを書き込む  
• Samp_̲Monitor_̲Parent_̲JN5164_̲1_̲6_̲1.bin
35
「安心・安全・安定・信頼」できるインターネットサービスを
接続済み親機のシリアル出力例
• 待機状態(Time  Sequenceのみ表⽰示)
36
「安心・安全・安定・信頼」できるインターネットサービスを
接続済み親機のシリアル出力例
• センサーからの発報があると
37
「安心・安全・安定・信頼」できるインターネットサービスを
• プロトコルについては公式サイト参照のこと  
• https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒
Lite-‐‑‒2525A/manual_̲settings.html
38
「安心・安全・安定・信頼」できるインターネットサービスを
フォーマット
例例:  
::rc=80000000:lq=132:ct=00E5:ed=8102161F:id=A
:ba=2920:a1=0928:a2=0506:x=-‐‑‒038:y=0052:z=00
95
39
「安心・安全・安定・信頼」できるインターネットサービスを
rubyで監視
• Raspberry  Pi2  に  MonoStickを挿して親機とする  
• Rubyプログラムとしては以下の処理理を実施する  
• Serial  portを監視  
• ⼊入ってきたデータ(⾏行行単位)をみて、センサーデータ
だったらparseする  
• parseした内容に応じてTwitterにツイート
40
「安心・安全・安定・信頼」できるインターネットサービスを
サンプルプログラム
41
# coding: utf-8
require 'serialport'
require 'twitter'
require 'optparse'
class SensorAlert
def initialize(serial_device, msg_q)
@msg_q = msg_q
@sensor_stats = {}
@sp = SerialPort.new(serial_device, 115_200, 8, 1, 0)
rescue => e
puts e.to_s
exit 1
end
def line_parser(line)
return nil if !line.match(/^::/) || line.match(/^::ts/)
if line =~ /^::rc/
line.chomp.split(':').inject({}) { |a, e| a.merge! Hash[*e.split('=')] }
end
end
「安心・安全・安定・信頼」できるインターネットサービスを
サンプルプログラム
42
def read_serial
@sp.gets
end
def main_loop
loop do
next unless line_hash = line_parser(read_serial)
@sensor_stats[line_hash['id']] ^= true
@msg_q.push sprintf("センサーID:%sが%sになりました。n(%s)",
line_hash['id'],
@sensor_stats[line_hash['id']] ? 'On' : 'Off',
Time.now.to_s)
end
end
end
「安心・安全・安定・信頼」できるインターネットサービスを
サンプルプログラム
43
class TwitterUpdate
CONSUMER_KEY = 'XXXXXXXXXXXXXXXXX'
CONSUMER_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN_KEY = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
ACCESS_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
def initialize(queue)
@queue = queue
@client = Twitter::REST::Client.new do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.access_token = ACCESS_TOKEN_KEY
config.access_token_secret = ACCESS_SECRET
end
end
def main_loop
loop do
@client.update(@queue.pop)
end
end
end
「安心・安全・安定・信頼」できるインターネットサービスを
サンプルプログラム
44
# parsing options
params = ARGV.getopts('d:')
unless params['d']
puts '-d required.'
exit 1
end
device_name = params['d']
unless FileTest.chardev?(device_name)
puts "Error device file #{device_name}"
exit 1
end
q = Queue.new
Thread.new do
twitter = TwitterUpdate.new(q)
twitter.main_loop
end
sa = SensorAlert.new(device_name, q)
sa.main_loop
「安心・安全・安定・信頼」できるインターネットサービスを
デモ
※ドアにくっつけて使っている気分になってください。  
@twelite2525a  のツイートを確認します。
45
「安心・安全・安定・信頼」できるインターネットサービスを
まとめ
• IoTタグを使うと、⼿手軽にIoTプログラミングを楽しめ
る。  
• Rubyのserialport  gemが便便利利。
46
「安心・安全・安定・信頼」できるインターネットサービスを
Disclaimer of Warranty
• 本システムはあくまで実験⽬目的です。  
• 本システムを⽤用いたことで利利⽤用者が何らかの損害を被っ
てもなんら保証がないことをご理理解ください。  
• デバイスがあるだけでは安全ではありません。  
• ホームセキュリティ会社が売っているのは「デバイス」
ではなくて「運⽤用」なんです。  
• 発報したら誰かが駆けつけるというところがサービス
のキモ。
47
「安心・安全・安定・信頼」できるインターネットサービスを
参考文献
• 加速度度センサー内蔵無線タグ  TWE-‐‑‒Lite-‐‑‒2525A  
• https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒
Lite-‐‑‒2525A/  
• 加速度度センサTWE-‐‑‒Lite-‐‑‒2525AのOTA(無線)による設
定変更更⼿手順  
• http://hanzomemo.blogspot.jp/2015/08/twe-‐‑‒
lite-‐‑‒2525aota.html  
• TWE-‐‑‒Lite-‐‑‒2525A.2を動かすまでの⼿手順。  
• http://www.lopple.jp/?p=864
48
「安心・安全・安定・信頼」できるインターネットサービスを
• Thank  You!  
• If  you  have  any  comments,  
• please  send  to:  
• Mail:  izawa@izawa.org  /  izawa@clwit.co.jp  
• Twitter:  @Yukimitsu_̲Izawa
49

IoTタグで遊んでみよう