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
re:Invent 2025の見どころと便利アイテムをご紹介 / Highlights and Useful Items for re:Invent 2025
yuj1osm
0
650
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
790
猫でもわかるAmazon Q Developer CLI 解体新書
kentapapa
1
300
Boxを“使われる場”にする統制と自動化の仕組み
demaecan
0
180
Amazon Athena で JSON・Parquet・Iceberg のデータを検索し、性能を比較してみた
shigeruoda
1
300
設計に疎いエンジニアでも始めやすいアーキテクチャドキュメント
phaya72
26
17k
NOT A HOTEL SOFTWARE DECK (2025/11/06)
notahotel
0
2.4k
Spec Driven Development入門/spec_driven_development_for_learners
hanhan1978
0
180
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
2
250
OTEPsで知るOpenTelemetryの未来 / Observability Conference Tokyo 2025
arthur1
0
420
abema-trace-sampling-observability-cost-optimization
tetsuya28
0
460
GTC 2025 : 가속되고 있는 미래
inureyes
PRO
0
150
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Automating Front-end Workflow
addyosmani
1371
200k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
950
Speed Design
sergeychernyshev
32
1.2k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3k
Designing Experiences People Love
moore
142
24k
Embracing the Ebb and Flow
colly
88
4.9k
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