Submit Search
Upload
Mac から Python で BLE ペリフェラルを操作する
•
4 likes
•
4,394 views
Takuya Nishimoto
Follow
広島版 IoT 縛りの勉強会 IoTLT 広島 Vol.3 2016年9月15日 西本卓也
Read less
Read more
Technology
Report
Share
Report
Share
1 of 14
Download now
Download to read offline
Recommended
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
Chica Matsueda
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
アップルの特許に見るUI特許のポイント
アップルの特許に見るUI特許のポイント
kurikiyo
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
例外設計における大罪
例外設計における大罪
Takuto Wada
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
Recommended
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
MediaPipeを使ったARアプリ開発事例 ~カメラをかざして家䛾中で売れるも䛾を探そう~
Chica Matsueda
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
アップルの特許に見るUI特許のポイント
アップルの特許に見るUI特許のポイント
kurikiyo
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
Windowsフォームで大丈夫か?一番良いのを頼む。
Windowsフォームで大丈夫か?一番良いのを頼む。
Yuya Yamaki
例外設計における大罪
例外設計における大罪
Takuto Wada
忙しい人の5分で分かるDocker 2017年春Ver
忙しい人の5分で分かるDocker 2017年春Ver
Masahito Zembutsu
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
Takahiro Miyaura
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
VirtualTech Japan Inc.
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
Yamashita Takeshi
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
TAKUYA OHTA
FlutterでBLEを いい感じにする
FlutterでBLEを いい感じにする
chigichan24
MagicOnion入門
MagicOnion入門
torisoup
インフラエンジニアがUnityをやるべきたった一つの理由
インフラエンジニアがUnityをやるべきたった一つの理由
axsh co., LTD.
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
Minoru Yokomichi
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
Takahiro Miyaura
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話
Masaki Yamamoto
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
コールバックと戦う話
コールバックと戦う話
torisoup
こわくない Git
こわくない Git
Kota Saito
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
0円でできる自宅InfiniBandプログラム
0円でできる自宅InfiniBandプログラム
Minoru Nakamura
221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
Takuya Nishimoto
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
Takuya Nishimoto
More Related Content
What's hot
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
Takahiro Miyaura
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
uchan_nos
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
VirtualTech Japan Inc.
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
Yamashita Takeshi
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
NVIDIA Japan
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
TAKUYA OHTA
FlutterでBLEを いい感じにする
FlutterでBLEを いい感じにする
chigichan24
MagicOnion入門
MagicOnion入門
torisoup
インフラエンジニアがUnityをやるべきたった一つの理由
インフラエンジニアがUnityをやるべきたった一つの理由
axsh co., LTD.
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
日本マイクロソフト株式会社
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
Minoru Yokomichi
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
Takahiro Miyaura
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話
Masaki Yamamoto
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
コールバックと戦う話
コールバックと戦う話
torisoup
こわくない Git
こわくない Git
Kota Saito
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
0円でできる自宅InfiniBandプログラム
0円でできる自宅InfiniBandプログラム
Minoru Nakamura
What's hot
(20)
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
GMOインターネット様 発表「OpenStackのモデルの最適化とConoHa, Z.comとGMOアプリクラウドへの適用」 - OpenStack最新情...
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Flutterアプリ開発におけるモジュール分割戦略
Flutterアプリ開発におけるモジュール分割戦略
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
IT エンジニアのための 流し読み Windows 10 - Windows Hello for Business
FlutterでBLEを いい感じにする
FlutterでBLEを いい感じにする
MagicOnion入門
MagicOnion入門
インフラエンジニアがUnityをやるべきたった一つの理由
インフラエンジニアがUnityをやるべきたった一つの理由
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
あなたのチームの「いい人」は機能していますか?
あなたのチームの「いい人」は機能していますか?
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
OpenXR + XR Interaction Toolkit使ったHoloLensコンテンツ開発検証 ~ (私が)完全に理解できたらちゃんと作れて、いろ...
nfcpy 0.10.0 でハマった話
nfcpy 0.10.0 でハマった話
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
コールバックと戦う話
コールバックと戦う話
こわくない Git
こわくない Git
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
0円でできる自宅InfiniBandプログラム
0円でできる自宅InfiniBandプログラム
More from Takuya Nishimoto
221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
Takuya Nishimoto
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
Takuya Nishimoto
220126 python-datalake-spark
220126 python-datalake-spark
Takuya Nishimoto
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
Takuya Nishimoto
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
Takuya Nishimoto
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython
Takuya Nishimoto
210728 mpy
210728 mpy
Takuya Nishimoto
210630 python
210630 python
Takuya Nishimoto
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
Takuya Nishimoto
210428 python
210428 python
Takuya Nishimoto
200918 hannari-python
200918 hannari-python
Takuya Nishimoto
200429 python
200429 python
Takuya Nishimoto
200325 flask
200325 flask
Takuya Nishimoto
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
Takuya Nishimoto
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
Takuya Nishimoto
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
Takuya Nishimoto
191114 iotlt-nishimoto
191114 iotlt-nishimoto
Takuya Nishimoto
191030 anna-with-python
191030 anna-with-python
Takuya Nishimoto
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp
Takuya Nishimoto
More from Takuya Nishimoto
(20)
221217 SwiftはPythonに似ている
221217 SwiftはPythonに似ている
220427-pydata 統計・データ分析 特集
220427-pydata 統計・データ分析 特集
220126 python-datalake-spark
220126 python-datalake-spark
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211020 すごい広島 with OSH 2021.10
211020 すごい広島 with OSH 2021.10
210917 オープンセミナー@広島のこれまでとこれから
210917 オープンセミナー@広島のこれまでとこれから
210911 これから始める電子工作とMicroPython
210911 これから始める電子工作とMicroPython
210728 mpy
210728 mpy
210630 python
210630 python
210526 Power Automate Desktop Python
210526 Power Automate Desktop Python
210428 python
210428 python
200918 hannari-python
200918 hannari-python
200429 python
200429 python
200325 flask
200325 flask
200208 osh-nishimoto-v2
200208 osh-nishimoto-v2
191208 python-kansai-nishimoto
191208 python-kansai-nishimoto
191101 nvda-sightworld-nishimoto
191101 nvda-sightworld-nishimoto
191114 iotlt-nishimoto
191114 iotlt-nishimoto
191030 anna-with-python
191030 anna-with-python
190916 nishimoto-nvda-pyconjp
190916 nishimoto-nvda-pyconjp
Recently uploaded
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Recently uploaded
(8)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Mac から Python で BLE ペリフェラルを操作する
1.
Python で BLE (Bluetooth Low Energy) 2016年9月15日 西本卓也 @24motz 広島版
IoT 縛りの勉強会 Vol.3 http://ja.nishimotz.com/iotlt_hiroshima https://github.com/nishimotz/BluefruitLE_samples 1
2.
CR2032 ボタン電池 • 230mAh, 3V で
6ヶ月 = BLE のユースケース • http://rbs.ta36.com/?p=20398 2
3.
Generic Access Profile • Peripheral = デバイス(ITAG) • Central = デバイスと接続するアプリ(Python) •
Broadcaster = ビーコン • Observer = ビーコン受信アプリ 3
4.
Key Finder + リモコン機能 • ITAGを紛失するとスマートフォンが警告 • スマートフォンを紛失するとITAGが警告 •
ITAGのボタンを押すと • 位置情報を記録 • ダブルクリックでボイスレコーダー実行 • アプリ iTracing → 更新されていない • 互換アプリはある(Androidのみ確認) • いつの間にか静かに接続が切れていたり • 夜中に突然警告が鳴ったり 4
5.
ITAGの中身 5
6.
状態遷移モデル 6 スタンバイ アドバタイズ スレーブ LED点滅 電源オフ 3秒押し 5秒押し ボタン押しを送信 警告を受信 警告(LED点滅とブザー) 切断 ボタン押し ボタン押し 接続 警告停止
7.
Centralの状態遷移モデル 7 スタンバイ デバイスの一覧を取得 スキャン イニシエイト マスター 特定のデバイスに接続要求 スレーブの機能を利用(このまま数ヶ月でも)
8.
LightBlue for Mac • BLEデバイスのリストが見える •
スタンバイ → スキャン → スタンバイ状態 • 機器を選ぶと Service, Characteristic が見える • イニシエイト → マスター状態 • GATT = Generic Attribute Profile • 16進数(GUID/UUID)で指定 • ベース部分は共通 • BATTERY SERVICE = 180f • 0000180f-0000-1000-8000-00805f9b34fb 8
9.
ITAGで確認できること • 180f = BATTERY SERVICE • 2a19 = BATTERY LEVEL •
0x64 = 100 • 1802 = IMMEDIATE ALERT SERVICE • 2a06 = ALERT LEVEL • 0x02 を書き込むと警告 • 0x00 で停止 • ffe0 = 未定義Service • ffe1 = 未定義Characteristics • subscribe するとボタン押しで 0x01 が notify される 9
10.
BluefruitLE Python Library • Adafruit
が公開 • MacとLinux(Raspberry Pi)に対応 • Linux PyBluez • Core Bluetooth PyObjC • Adafruit のデバイスで使う例しかない • やってみたら ITAG を叩ける 10
11.
メインループ import Adafruit_BluefruitLE, uuid BATTERY_SERVICE = uuid.UUID('0000180f-…) BATTERY_LEVEL = uuid.UUID('00002a19-…') def main(): #デバイスのスキャン、接続、値の読み書き provider = Adafruit_BluefruitLE.get_provider() provider.initialize() provider.run_mainloop_with(main) 11
12.
デバイスのスキャン adapter = provider.get_default_adapter() adapter.power_on() adapter.start_scan() device = provider.find_device() adapter.stop_scan() print(device.name) 12
13.
接続して値の読み取り device.connect() device.discover([BATTERY_SERVICE], [BATTERY_LEVEL]) service = device.find_service(BATTERY_SERVICE) c = service.find_characteristic(BATTERY_LEVEL) v = c.read_value() print(ord(v[0])) device.disconnect() 13 書き込み:write_value() 通知待ち:start_notify()
14.
まとめ • IMMEDIATE_ALERT は
hello world • Bluefruit LE Python は Central 専用 • データ収集 • Peripheral の調査やデバッグ • RasPi を Central として運用 • MacでPythonが独自ビルド版の場合は • pip install pyobjc • リファレンスがないのでソースを読んで理解 • スマートフォンアプリ開発 14
Download now