Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
IoTタグで遊んでみよう
Search
いざわゆきみつ (Yukimitsu Izawa)
June 18, 2016
Technology
1
590
IoTタグで遊んでみよう
2016/06/18 Kanazawa.rb #46 @ ITBP武蔵
いざわゆきみつ (Yukimitsu Izawa)
June 18, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
組み込みLinuxの時系列
puhitaku
4
1k
データの信頼性を支える仕組みと技術
chanyou0311
6
1.6k
20241108_CS_LLMMT
shigashiyama
0
250
メールサーバ管理者のみ知る話
hinono
1
100
利きプロセススケジューラ
sat
PRO
4
2.6k
Microsoft MVPになる前、なってから/Fukuoka_Tech_Women_Community_1_baba
nina01
0
180
End of Barrel Files: New Modularization Techniques with Sheriff
rainerhahnekamp
0
280
Windows Autopilot Deployment by OSD Guy
tamaiyutaro
0
310
Intuneお役立ちツールのご紹介
sukank
3
750
音声×Copilot オンコパの世界
kasada
1
110
フロントエンド メタフレームワーク 選定の際に考えたこと
yuppeeng
0
600
TinyGoを使ったVSCode拡張機能実装
askua
2
200
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
The Cult of Friendly URLs
andyhume
78
6k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Into the Great Unknown - MozCon
thekraken
32
1.5k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Adopting Sorbet at Scale
ufuk
73
9.1k
Raft: Consensus for Rubyists
vanstee
136
6.6k
Producing Creativity
orderedlist
PRO
341
39k
Optimizing for Happiness
mojombo
376
69k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Facilitating Awesome Meetings
lara
49
6.1k
Transcript
「安心・安全・安定・信頼」できるインターネットサービスを גࣜձࣾΫϧΟοτ Ҫᖒ ࢤॆ *P5λάͰ༡ΜͰΈΑ͏ 2016/06/15 (Sat) Kanazawa.rb #46 @ITBPଂ
「安心・安全・安定・信頼」できるインターネットサービスを ͜͡͠ΐ͏͔͍ • (株)クルウィットの取締役 兼 北北陸陸⽀支社⻑⾧長 • 博⼠士(情報科学)
• ネットワーク関連の委託研究・⾃自社サービス開発など 2 • 井澤 志充 (いざわゆきみつ) @Yukimitsu_Izawa
「安心・安全・安定・信頼」できるインターネットサービスを *P5ͱ モノのインターネット(Internet of Things、IoT)は、 様々な「物」がインターネットに接続され、情報交換する ことにより相互に制御する仕組みである。 それによる社会の実現も指す。「物のインターネット」と も呼ぶ。
Wikipediaより 3
「安心・安全・安定・信頼」できるインターネットサービスを Ϟϊʁ • モノ = IoTデバイス • パソコン, スマホ,
タブレット, raspberry pi,.. • 家電( TV, デジタルオーディオプレイヤー, HDDプレ イヤー,..) • 家の付帯設備 (鍵, インターフォン, 電球,..) • 電⼦子⼯工作( arduino, BLEデバイス,..) 4
「安心・安全・安定・信頼」できるインターネットサービスを *P5σόΠεͷ*0 • 状態取得(Observe) • 環境情報: 温度度湿度度、気圧、照度度、 •
モーション情報: 振動、傾斜、移動、 • 位置情報: 存在位置、近接、通過、 • スイッチ状態: ⽞玄関の施錠状態、ドアの開け閉め、 • 状態変更更(Control) • 家電のOn/Off • 照明制御 • シャッター駆動 • 施錠/解錠 5
「安心・安全・安定・信頼」できるインターネットサービスを ҰੲલͷίϯϐϡʔςΟϯάͱ͍͏ͱ • PCでWord, Excelでファイルを作成・編集 • PCの中に閉じた世界 •
FAのような制御 • 現実世界にあるゴツいものを操作・制御 6 ཧతͳࢹͰΈΔͱ྆ۃͳੈք
「安心・安全・安定・信頼」できるインターネットサービスを Ή͔͠Ή͔͠ • 能登半島の某川に設置された⽔水⾨門の制御をしたことがあ りました。 • ⽔水⾨門扉の開度度, ⾨門の外側と内側の⽔水位や塩分濃度度を取 得。
• i-‐‑‒mode(!)端末から確認できるようにするシステムでし た。 • ちょっと書き込むとマジで⾨門扉が開閉する。 • ヘタに開閉すると川周辺流流域の⽥田畑に塩害が発⽣生 7
「安心・安全・安定・信頼」できるインターネットサービスを ͜Μͳͭ 8
「安心・安全・安定・信頼」できるインターネットサービスを 9 ʮੜ·ΕͯॳΊͯͷIoTϓϩάϥϛϯάਫͰͨ͠ʂʯ ී௨ͦΜͳͷͰ༡ͳ͍ɻ ͭ·Γ……
「安心・安全・安定・信頼」できるインターネットサービスを ଟ༷ଟछͳ*P5σόΠεͷ಄ʹΑͬͯ ぼくらが「プログラミング」という⼿手段で介⼊入 できる世界が拡張された。 10
「安心・安全・安定・信頼」できるインターネットサービスを なんかたのしそうじゃね!? 11
「安心・安全・安定・信頼」できるインターネットサービスを ࠓͷίϯηϓτ • 電⼦子⼯工作の世間⼀一般のイメージは… • 回路路図読めない • ハンダ付けむずかしそう
• 抵抗読めない • 燃えそう • 爆発しないの? 12 →今⽇日は「半⽥田付けしないIoT遊び」を⽬目指します
「安心・安全・安定・信頼」できるインターネットサービスを ࠓͷ՝ • 侵⼊入検知システムを作ってみよう 13
「安心・安全・安定・信頼」できるインターネットサービスを ༧ਤ 14 ৼಈݕ ௨ Twitterʹߘ
「安心・安全・安定・信頼」できるインターネットサービスを ηϯαʔωοτϫʔΫ • 今回はセンサーネットワークには無線プロトコルのひと つであるZigBeeを利利⽤用します。 15
「安心・安全・安定・信頼」できるインターネットサービスを ;JH#FFͱ • 近距離離無線通信プロトコル • 規格: IEEE 802.15.4
• 速度度: 250Kbps(2.4GHz帯の場合) • 短距離離低速だが低消費電⼒力力 16
「安心・安全・安定・信頼」できるインターネットサービスを ࢠػɾػɾதܧػ • ZigBeeでは最⼤大で65536機が同⼀一ネットワーク上に配置 可能 • グループ分け/ID⼿手段としては •
無線channel # • application ID • device ID 17
「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUFΛͬͯΈΔ • モノワイヤレス株式会社製(東京コスモス電機株式会社か ら分離離) • Energy Harvest 環境での駆動を想定して設計
• ボタン電池駆動可能 • 技適OK • Analog I/O • digital I/O 18 http://mono-wireless.com/jp/products/TWE-001Lite.html ΑΓ
「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUFγϦʔζ • 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
「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUFB • All-‐‑‒in-‐‑‒One • TWE-‐‑‒Lite + 3軸加速度度センサ +
アンテナ + 電池ホルダ • 設定もOTA(Over the Air)通信で簡単 • ⾊色々な検知モード • 動き始め,静⽌止,⾃自由落落下 • シングルタップ,ダブルタップ • シェイク,ターン,スピン • ねこったー (参考⽂文献:ハルロック) 21
「安心・安全・安定・信頼」できるインターネットサービスを .POP4UJDL • 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
「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUF3ͰϑΝʔϜͷॻ͖ࠐΈ • 書き込み機をちょっと拡張 28 + = ϥΠλʔ Lܕϐϯϔομ
「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUF3ͰϑΝʔϜͷॻ͖ࠐΈ • TWE-‐‑‒Lite2525aの場合 29
「安心・安全・安定・信頼」できるインターネットサービスを 58&-JUF3ͰϑΝʔϜͷॻ͖ࠐΈ • TWE-‐‑‒Lite プログラマで書き込む • Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲LIT E2525A_̲1_̲6_̲1.bin
30
「安心・安全・安定・信頼」できるインターネットサービスを .POP4UJDL05"༻ϑΝʔϜͷॻ͖ࠐΈ • MonoStickを直接WindowsPCに接続して書き込む • Samp_̲Monitor_̲EndDevice_̲Input_̲JN5164_̲CN FMST_̲1_̲6_̲1.bin 31
「安心・安全・安定・信頼」できるインターネットサービスを 05"ઃఆํ๏ • MonoStickにシリアル経由でOTA⽤用の設定を書き込む 32 ←ಈ͖࢝Ί,੩ࢭϞʔυ ←ಈ͖࢝ΊݕՃ
「安心・安全・安定・信頼」できるインターネットサービスを • 設定項⽬目については公式サイト参照のこと • https://mono-‐‑‒wireless.com/jp/products/TWE-‐‑‒ ZERO/Samp_̲monitor/interactive.html 33
「安心・安全・安定・信頼」できるインターネットサービスを 05"ઃఆํ๏ • 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
「安心・安全・安定・信頼」できるインターネットサービスを SVCZͰࢹ • 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
「安心・安全・安定・信頼」できるインターネットサービスを %JTDMBJNFSPG8BSSBOUZ • 本システムはあくまで実験⽬目的です。 • 本システムを⽤用いたことで利利⽤用者が何らかの損害を被っ てもなんら保証がないことをご理理解ください。 •
デバイスがあるだけでは安全ではありません。 • ホームセキュリティ会社が売っているのは「デバイス」 ではなくて「運⽤用」なんです。 • 発報したら誰かが駆けつけるというところがサービス のキモ。 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:
[email protected]
/
[email protected]
• Twitter: @Yukimitsu_̲Izawa 49