Submit Search
Upload
Bluetooth Low Energy入門講座 -part2
•
19 likes
•
8,808 views
E
edy555
Follow
BLEデバイスをLinuxから使って、基礎的なインターネット連携をしてみようという実習講座の資料です。(第二部)
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 46
Download now
Download to read offline
Recommended
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
edy555
フリスクでBleアプリ
フリスクでBleアプリ
Tomohiro Goya
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Shinji Kobayashi
Winストアアプリでble接続
Winストアアプリでble接続
エンジニア勉強会 エスキュービズム
20140922 ble bootcamp
20140922 ble bootcamp
akihiro uehara
Dpdk環境の話
Dpdk環境の話
Masaru Oki
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
Kenichiro MATOHARA
Tremaで試すFirewall
Tremaで試すFirewall
M Hagiwara
Recommended
Bluetoothl-Low-Energy入門講座-part1
Bluetoothl-Low-Energy入門講座-part1
edy555
フリスクでBleアプリ
フリスクでBleアプリ
Tomohiro Goya
BlueZで遊んでみる - BLE大阪勉強会
BlueZで遊んでみる - BLE大阪勉強会
Shinji Kobayashi
Winストアアプリでble接続
Winストアアプリでble接続
エンジニア勉強会 エスキュービズム
20140922 ble bootcamp
20140922 ble bootcamp
akihiro uehara
Dpdk環境の話
Dpdk環境の話
Masaru Oki
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
技適なBluetooth GNSS/GPSレシーバーをRaspberryPiで作りたい
Kenichiro MATOHARA
Tremaで試すFirewall
Tremaで試すFirewall
M Hagiwara
Lagopusで試すFirewall
Lagopusで試すFirewall
Tomoya Hibi
Running lagopus on Xeon D
Running lagopus on Xeon D
Masaru Oki
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
npsg
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
M Hagiwara
Lagos running on small factor machine
Lagos running on small factor machine
Lagopus SDN/OpenFlow switch
自宅実験環境 Aug 2014
自宅実験環境 Aug 2014
Masaru Oki
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
シスコシステムズ合同会社
Dpdk pmd
Dpdk pmd
Masaru Oki
Getting Started with Jetson Nano
Getting Started with Jetson Nano
NVIDIA Japan
DPDK QoS
DPDK QoS
Masaru Oki
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Tomoya Hibi
Xeon d
Xeon d
Masaru Oki
Kernel vm-2014-05-25
Kernel vm-2014-05-25
Hirochika Asai
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
Tomoya Hibi
VPP事始め
VPP事始め
npsg
Linux packet-forwarding
Linux packet-forwarding
Masakazu Asama
Rps・rfs等最新linux kernel事例
Rps・rfs等最新linux kernel事例
Takuya ASADA
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
Takeshi Take
CPU製品出荷状況と消費電力の見える化
CPU製品出荷状況と消費電力の見える化
Naoto MATSUMOTO
Interrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
170622 02
170622 02
openrtm
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
More Related Content
What's hot
Lagopusで試すFirewall
Lagopusで試すFirewall
Tomoya Hibi
Running lagopus on Xeon D
Running lagopus on Xeon D
Masaru Oki
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
npsg
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
M Hagiwara
Lagos running on small factor machine
Lagos running on small factor machine
Lagopus SDN/OpenFlow switch
自宅実験環境 Aug 2014
自宅実験環境 Aug 2014
Masaru Oki
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
シスコシステムズ合同会社
Dpdk pmd
Dpdk pmd
Masaru Oki
Getting Started with Jetson Nano
Getting Started with Jetson Nano
NVIDIA Japan
DPDK QoS
DPDK QoS
Masaru Oki
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Tomoya Hibi
Xeon d
Xeon d
Masaru Oki
Kernel vm-2014-05-25
Kernel vm-2014-05-25
Hirochika Asai
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
Tomoya Hibi
VPP事始め
VPP事始め
npsg
Linux packet-forwarding
Linux packet-forwarding
Masakazu Asama
Rps・rfs等最新linux kernel事例
Rps・rfs等最新linux kernel事例
Takuya ASADA
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
Takeshi Take
CPU製品出荷状況と消費電力の見える化
CPU製品出荷状況と消費電力の見える化
Naoto MATSUMOTO
Interrupt Affinityについて
Interrupt Affinityについて
Takuya ASADA
What's hot
(20)
Lagopusで試すFirewall
Lagopusで試すFirewall
Running lagopus on Xeon D
Running lagopus on Xeon D
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
WAN SDN 実践入門! ~ OpenDayLightのPCEP/BGPに触れてみる ~
OpenFlowで覚えるネットワーク
OpenFlowで覚えるネットワーク
Lagos running on small factor machine
Lagos running on small factor machine
自宅実験環境 Aug 2014
自宅実験環境 Aug 2014
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
【Interop tokyo 2014】 Internet of Everything / SDN と シスコ技術者認定
Dpdk pmd
Dpdk pmd
Getting Started with Jetson Nano
Getting Started with Jetson Nano
DPDK QoS
DPDK QoS
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Lagopusで試すL3ルーティング + α (Lagopusの設定方法いろいろ)
Xeon d
Xeon d
Kernel vm-2014-05-25
Kernel vm-2014-05-25
Lagopus + DockerのDPDK接続
Lagopus + DockerのDPDK接続
VPP事始め
VPP事始め
Linux packet-forwarding
Linux packet-forwarding
Rps・rfs等最新linux kernel事例
Rps・rfs等最新linux kernel事例
自作仮想化基盤 「n0stack」の紹介
自作仮想化基盤 「n0stack」の紹介
CPU製品出荷状況と消費電力の見える化
CPU製品出荷状況と消費電力の見える化
Interrupt Affinityについて
Interrupt Affinityについて
Similar to Bluetooth Low Energy入門講座 -part2
170622 02
170622 02
openrtm
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
Naotaka Jay HOTTA
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
fumoto kazuhiro
20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka
beyond Co., Ltd.
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
Akira Hatsune
Sohu邮箱的python经验
Sohu邮箱的python经验
Ryan Poy
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
h2so5
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Preferred Networks
20201127 .NET 5
20201127 .NET 5
Takayoshi Tanaka
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
Kohei KaiGai
自宅サーバーを立てる話
自宅サーバーを立てる話
naba0123
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
DNA Data Bank of Japan center
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
Mori Shingo
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Katsutoshi Nagaoka
Node-redでプロトタイピング
Node-redでプロトタイピング
Makoto SAKAI
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
shigeki_ohtsu
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
Dai Utsui
Azure Batch Renderingではじめるクラウドレンダリング
Azure Batch Renderingではじめるクラウドレンダリング
Microsoft
Similar to Bluetooth Low Energy入門講座 -part2
(20)
170622 02
170622 02
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
ネットワークコマンド入力に対応したツール事例
ネットワークコマンド入力に対応したツール事例
20191120 beyondstudy#21 kitaoka
20191120 beyondstudy#21 kitaoka
LEGO MINDSTORMS EV3 API
LEGO MINDSTORMS EV3 API
Sohu邮箱的python经验
Sohu邮箱的python经验
DXライブラリでMMO作ったよ!
DXライブラリでMMO作ったよ!
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
Kubernetes meetup-tokyo-13-customizing-kubernetes-for-ml-cluster
20201127 .NET 5
20201127 .NET 5
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
PL/CUDA - Fusion of HPC Grade Power with In-Database Analytics
自宅サーバーを立てる話
自宅サーバーを立てる話
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
NGS解析を始めた時にぶつかりがちな小さい壁あれこれ
Node予備校 vol.1 名古屋
Node予備校 vol.1 名古屋
AWSとGCPを使用したインフラ環境
AWSとGCPを使用したインフラ環境
Node-redでプロトタイピング
Node-redでプロトタイピング
node-gypを使ったネイティブモジュールの作成
node-gypを使ったネイティブモジュールの作成
Gmo media.inc 第9回西日本ossの普及を考える会
Gmo media.inc 第9回西日本ossの普及を考える会
Azure Batch Renderingではじめるクラウドレンダリング
Azure Batch Renderingではじめるクラウドレンダリング
Bluetooth Low Energy入門講座 -part2
1.
食関連産業IT化(機械化)講座 応用編 Bluetooth
Low Energy入門講座 モノとアプリをつなげる基本技術 第二部 実習 北海道ソフトウェア技術開発機構 2013年11月12日~13日
2.
2日目の内容 • 午前
– コードによるデータの取得 – 各方法の説明 • 午後 – インターネットへのアップロード
3.
コードによる制御
4.
コード制御の実装方法 • 自動化やデータ処理を行ないたい
• プログラムによる制御をする必要がある • 3案 – gatttool+python – libbluetooth+socket(C言語) – btle.js (BLEのnode.js実装: JavaScript)
5.
TI社のサンプル • TI社提供のサンプルコード
– iOS用 – Android用 – http://www.ti.com/tool/sensortag-sw
6.
実装方法 • python+gatttool
– gatttoolコマンドを使用、簡便 • libbluetooth+socket – C言語 – 正統派だが面倒 • btle.js – BLEのnode.js実装: JavaScript – Webとの連携に良いかも
7.
gatttool+スクリプト • gatttoolを利用してデバイスを制御
• スクリプト言語としてpythonを利用 – 前述のgatttoolをサブプロセスとしてstdio経由 で使用する • サンプル – ble-python ディレクトリ – IR Temperatureの取得 – これを実際に動作させてみる
8.
python超入門 • ブロック
– Cでいう { ... } – コロン“:”で始まりインデントを下げる – インデントにはタブを使わない(ほうが良い) • 関数呼び出しには括弧が必須 – エラーにならないので注意 • 関数定義はdef文
9.
ble-python(0) • 準備
– BDアドレスを調べておく $ sudo hcitool lescan LE Scan ... 90:59:AF:0A:A8:A4 (unknown) 90:59:AF:0A:A8:A4 SensorTag
10.
ble-python(1) • ソース:
sensortag-temp.py • BDアドレスを修正 def main(bdaddr='90:59:AF:0A:A8:A4'): tool = connect(bdaddr) while True: try: tmpr = read_data(tool) print tmpr except: print "Error:", sys.exc_info() time.sleep(5)
11.
ble-python(2) • 実行手順
– 必要に応じてボタンを押す $ sudo python sensortag-temp.py Preparing to connect. You might need to press the side button... 15.3 15.6 15.3
12.
ble-python(3) • データをどうやって取っているか
– コマンドを送って、反応を受け取る tool.sendline('char-read-hnd 0x25') tool.expect('descriptor: .*') rval = tool.after.split() #print rval objT = floatfromhex(rval[2] + rval[1]) ambT = floatfromhex(rval[4] + rval[3]) tmpr = calcTmpTarget(objT, ambT) – どんな応答を受け取っているかprintで確認
13.
ble-python(4) • 他のセンサを使用するよう修正
– UUIDを変更して別のセンサ値を取得してみる – 参考: http://processors.wiki.ti.com/index.php/SensorTag_User_Guide • 初期化部分 – イネーブルして一度取得 tool.sendline('char-write-cmd 0x29 01') tool.expect('¥[LE¥]>') tool.sendline('char-read-hnd 0x25') tool.expect('descriptor: .*')
14.
ble-python(5) • 初期化部分
– イネーブル対象を変更 tool.sendline('char-write-cmd 0x29 01') tool.expect('¥[LE¥]>') tool.sendline('char-read-hnd 0x25') tool.expect('descriptor: .*') • データ取得部分 tool.sendline('char-read-hnd 0x25') tool.expect('descriptor: .*') rval = tool.after.split() #print rval
15.
ble-python(6) • 温度
• 加速度 • 方位(地磁気) • ボタン • 気圧 • ジャイロ
16.
socket+C言語 • 別実装の方法として参考提示
• サンプル – ble-cディレクトリ
17.
socket+C言語: コンパイル •
ライブラリのインストール(済) $ sudo apt-get install libbluetooth-dev • コード中のアドレスを修正 – test.c line:186 str2ba("90:59:AF:0A:A8:A4", &opts.dst); • コンパイル $ make
18.
socket+C言語: 実行 •
コマンド入力後、センサーのボタンを押す • その後Enterを入力 $ ./test push side button bt_io_connect: 3 write WRITE_CMDwrite: 4 write READ_REQwrite: 3 read responseread: 5 opcode: 11 ad fe c8 0a temperature: 17.554379
19.
socket+C言語: 解説 •
講習の範囲を超えるので簡単に • ユーティリティとしてbtio.c/hを使用 – 後述のbtle.jsの一部、bluz由来 • ソケットを作成 – PF_BLUETOOTH – PROTO_L2CAP • ATTのデータフォーマットで入出力 • root権限でなくても動作する
20.
btle.js • Node.js向けBLEモジュール
– beetle juiceと発音するそうです – bluezのコードをベースに、glib等ライブラリ依 存を削除 – githubで公開 • https://github.com/jacklund/btle.js – npmでインストール可能
21.
Node.jsとは • 趣旨から外れるので一言だけ説明
– サーバサイドJavaScript – イベントドリブン – 高負荷にも耐えるWebアプリケーションサーバ として知られる
22.
btle.js(0) • インストール(済)
– node.jsの最新版をインストール – npmでbtle.jsをインストール $ sudo apt-get install libbluetooth-dev $ sudo apt-get install python-software-properties python $ sudo apt-get install g++ make $ sudo add-apt-repository ppa:chris-lea/node.js $ sudo apt-get update $ sudo apt-get install nodejs npm $ npm install -g node-gyp $ npm install btle.js
23.
btle.js(1) • アドレスの修正
// Connect btle.connect('90:59:AF:0A:A8:A4', function(err, device) { • 実行 $ node btle-test.js Temperature, 65230, 2944 Temperature, 65220, 2944 – Notificationを受信して生データを表示
24.
btle.js(2) • アトリビュートの読み出し版
$ node btle-read2.js connecting SensorTag... connected Temperature: 17.475821408366528 Got close – 温度への変換を実装 – 少し遅延を入れている
25.
btle.js(3) • HTTPサーバ版
$ node btle-http2.js connecting SensorTag... connected – ブラウザから参照する http://localhost:1337/
26.
noble • noble:
もうひとつのnode.js ble実装 – というか決定版 – https://github.com/sandeepmistry/noble – 各種デバイス対応やペリフェラルも存在
27.
noble+sensortag • インストールはこれだけ
$ sudo npm install sensortag $ sudo npm install async • 実行 $ cd node_modules/sensortag $ sudo node test.js
28.
インターネット連携
29.
インターネット連携 • やること:センサーから取得したデータをサ
ーバにアップロードする • クラウドサービスを利用する
30.
xively.com • 「Public
Cloud for the Internet of Things」 • モノのインターネットのためのクラウド • データの蓄積 • グラフ化 • WebAPI (REST) • 各種プラットフォーム用ライブラリあり • Developer Accountは無料で取得可能
31.
xively.com
32.
33.
実例:室温記録
34.
xivelyのはじめ方 1. アカウントを作成
2. フィードを作成 3. APIキーを取得 4. データをアップロード
35.
xively: アカウント作成 •
(作成済みのアカウントを共有します)
36.
xively:手順 • ログイン
• デバイス(フィード)作成 • Feed IDとAPI Keyを取得 • スクリプトに設定 • 実行
37.
xively:デバイス追加
38.
xively:Feed IDとAPI Key
39.
xively:スクリプト • Feed
IDとAPIキーを転記 XIVELY_API_KEY = "eIpXlvKHd9CdtdD5SK9TgzaiZ9osxOX2a05MK18epQdAb0iy" XIVELY_FEED_ID = 813879821 • Bluetoothアドレスを転記 def main(bdaddr='90:59:AF:0A:A8:A4'): • インターバルを調整
40.
xively:実行 • 実行すると、データ取得&アップロードを
継続 $ python ./sensortag2xively.py Preparing to connect. You might need to press the side button... (datetime.datetime(2013, 11, 9, 14, 11, 29, 172604, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>), 20.7) (datetime.datetime(2013, 11, 9, 14, 11, 30, 828813, tzinfo=<DstTzInfo 'Asia/Tokyo' JST+9:00:00 STD>), 21.1) ....
41.
xively:コンソール
42.
xively:フィード表示 • Xivelyのサイトでグラフ表示
– https://xively.com/feeds/813879821
43.
xively:データ取得 • REST
APIにより蓄積データを参照可能 – https://xively.com/dev/docs/api/quick_reference/historical_data/ – JSON, XML, CSV • CSVで一日分のデータを取得する例 $ wget --header "X-ApiKey: eIpXlvKHd9CdtdD5SK9TgzaiZ9osxOX2a05MK18epQdAb0iy" 'https://api.xively.com/v2/feeds/813879821/datastreams/tmpr. csv?start=2013-11-09T00:00:00Z&duration=24hours' -O tmpr.csv
44.
xively:グラフイメージ取得 • グラフイメージの取得
– see https://xively.com/dev/docs/api/data/read/single_datastream/ https://api.xively.com/v2/feeds/{feed id}/datastreams/{stream id}.png
45.
xively:JSによるグラフ作成 • インタラクティブなグラフを含むページ作成
– http://xively.github.io/channel-viz/
46.
まとめ • BLEの仕組みの理解
• Linuxからの利用 • Xivelyへのアップロード
Download now