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
620
IoTタグで遊んでみよう
2016/06/18 Kanazawa.rb #46 @ ITBP武蔵
いざわゆきみつ (Yukimitsu Izawa)
June 18, 2016
Tweet
Share
Other Decks in Technology
See All in Technology
いま、あらためて考えてみるアカウント管理 with IaC / Account management with IaC
kohbis
1
240
AIは変更差分からユニットテスト_結合テスト_システムテストでテストすべきことが出せるのか?
mineo_matsuya
3
1.5k
自治体職員がガバクラの AWS 閉域ネットワークを理解するのにやって良かった個人検証環境
takeda_h
0
250
歴代のWeb Speed Hackathonの出題から考えるデグレしないパフォーマンス改善
shuta13
3
260
僕たちが「開発しやすさ」を求め 模索し続けたアーキテクチャ #アーキテクチャ勉強会_findy
bengo4com
0
2.5k
九州の人に知ってもらいたいGISスポット / gis spot in kyushu 2025
sakaik
0
190
Amazon Qで2Dゲームを作成してみた
siromi
0
160
✨敗北解法コレクション✨〜Expertだった頃に足りなかった知識と技術〜
nanachi
1
770
Amazon S3 Vectorsは大規模ベクトル検索を低コスト化するサーバーレスなベクトルデータベースだ #jawsugsaga / S3 Vectors As A Serverless Vector Database
quiver
2
950
[kickflow]20250319_少人数チームでのAutify活用
otouhujej
0
150
サイボウズフロントエンドの横断活動から考える AI時代にできること
mugi_uno
2
340
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
Optimizing for Happiness
mojombo
379
70k
Code Reviewing Like a Champion
maltzj
525
40k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
Into the Great Unknown - MozCon
thekraken
40
2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Speed Design
sergeychernyshev
32
1.1k
Building Adaptive Systems
keathley
43
2.7k
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