15.2K Views
September 03, 23
スライド概要
iOSDC2023
9/3 Track D 13:00〜
登壇資料
作って学ぶBluetoothの基本攻略 〜スマートキーアプリを作ってみよう〜 iOSDC Japan 2023 Day2 - Track D 13:00〜 oka yuji
完成イメージ
自己紹介 • oka yuji(おか ゆうじ) • @oka̲yuuji • 工業高校教諭(電気・電子・情報) → NRIネットコム株式会社 → サイボウズ株式会社
トークの概要 話すこと ・Bluetoothの基本的な話 ・できる限り分かりやすく噛み砕いて話します ・スマートキーを作成しながら解説 ・体験的に学べるように話します
トークの概要 話さないこと ・マイコン側の詳細な話 ・アーキテクチャに関する話
アジェンダ • Bluetoothについて • スマートキーの開発 • 材料 • 実装 • 最後に
Bluetooth
Bluetoothの概要 Bluetoothとは? https://www.apple.com/jp/shop/buy-iphone/ https://www.apple.com/jp/ios/ iphone-14-pro health/ https://www.apple.com/jp/shop/buy-watch/ https://www.apple.com/jp/ apple-watch healthcare/
Bluetoothの概要 Bluetoothとは? https:// www.apple.com/jp/ shop/buy-watch/ apple-watch https://www.apple.com/jp/shop/buy-iphone/ iphone-14-pro https://www.apple.com/jp/shop/ buy-ipad https://www.apple.com/ jp/shop/product/ MQD83J/A/airpods-pro
Bluetoothの概要 Bluetoothとは? https://www.apple.com/jp/shop/buy-iphone/ iphone-14-pro
Bluetoothの概要 Bluetoothとは? 無線通信規格 近距離無線通信規格 Wi-Fi Bluetooth NFC
Bluetoothの概要 近距離無線通信規格について 無線通信規格の一つ 厳密に〇〇m〜〇〇mは近距離無線通信規格みたいな明確なものはない ただ10m〜100mぐらいを近距離と定義しているものが多い 近距離無線通信規格として分類される
https://www.bluetooth.com
https://ja.wikipedia.org/wiki/Bluetooth
Bluetoothの概要 Bluetoothとは? iPhone 3G iPhone 4S Bluetooth 2.0 Bluetooth 4.0 → BLE(Bluetooth Low Energy) iPhone 8 Bluetooth 5.0 iPhone 14 Bluetooth 5.3
Bluetoothの概要 Bluetoothとは? iPhone 3G iPhone 4S Bluetooth 2.0 Bluetooth 4.0 → BLE(Bluetooth Low Energy) iPhone 8 Bluetooth 5.0 iPhone 14 Bluetooth 5.3
Bluetoothの概要 Bluetoothとは? iPhone 3G iPhone 4S Bluetooth 2.0 Bluetooth 4.0 → BLE(Bluetooth Low Energy) iPhone 8 Bluetooth 5.0 iPhone 14 Bluetooth 5.3
https://www.bluetooth.com/ja-jp/learn-about-bluetooth/tech-overview/
Bluetoothの概要 Bluetoothとは? Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR) → Bluetooth Classic 音楽ストリーミングやファイル転送など、連続的で高帯域幅 のデータストリームが必要なアプリケーションに最適 BLEに比べ消費電力が高い https://www.bluetooth.com/jajp/learn-about-bluetooth/techoverview/
Bluetoothの概要 Bluetoothとは? Bluetooth Low Energy (LE) → BLE Bluetooth 4.0から導入 エネルギー効率を大幅に向上 電力消費を大幅に抑えつつ、他のデバイス との接続を維持することができる https://www.bluetooth.com/ja-jp/learn-about-bluetooth/techoverview/
Bluetoothの概要 Bluetoothの特徴 ・近距離で安定したワイヤレス通信を行うことができる ・複数同時接続が可能 ・BLEやBluetooth Classicなど用途に特化した規格がある ・ペアリング機能でセキュリティを高めることできる などなど
Bluetoothの概要 Bluetoothの特徴 ・素早い接続でのデータのやりとり ・ほぼ電力が無い環境 ・長距離間での通信
BLEの通信接続
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
BLEの基本 ペリフェラル側の実装 ・アドバタイズを行う ・セントラルから値を受け取る ・受け取った値によって鍵の開閉を行う →鍵の開閉にサーボモータを使用 ・受け取った値が正常に受け取れていることをセントラルに通知する
BLEの基本 セントラル側の実装 ・スキャンし特定のペリフェラルを見つけたら接続する ・鍵の開閉を行う為、値を送る ・送った値の結果を受け取る ・接続の解除も任意のタイミングでできる
BLEの基本 実装の流れ Advertise スキャン・接続 接続・GATT通信 Characteristic(Write) Characteristic(Notify) 鍵の開閉
材料
材料 サーボモータとは •制御ができる類のモータ •回転速度や回転位置の制御も可能 →産業ロボットや精密機械の制御で幅広く使用
材料 ESP32とは • BluetoothやWi-Fiを搭載したMCU(Micro Controller Unit) • 言語 Arduino、C、MicroPyhon • 開発環境(Editor) ESP-IDF Arduino IDE • 価格 安価で1000円前後 VSCode
材料 ESP32とは •他のマイコンに比べて小さい •標準でBluetoothとWi-Fiモジュールを搭載 •セットアップなど不要 •低消費電力 •安価
材料 ESP32とは •他のマイコンに比べて小さい •標準でBluetoothとWi-Fiモジュールを搭載 •セットアップなど不要 •低消費電力 •安価
材料 • • • • • • • • ESP-WROOM-32 サーボモータ(SG92R) ブレッドボード 取り付け用金具 クリップ 結束バンド 両面テープ モバイルバッテリー などなど
実装
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
実装 Core Bluetooth
実装 Core Bluetooth
BLEManagerの実装 実装イメージ
BLEManagerの実装 実装イメージ
BLEManagerの実装 実装イメージ
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
BLEManagerの実装 実装コード
CBCentralManagerDelegate
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBCentralManagerDelegateの実装 実装コード
CBPeripheralDelegate
CBPeripheralDelegateの実装 実装コード
CBPeripheralDelegateの実装 実装コード
CBPeripheralDelegateの実装 実装コード
CBPeripheralDelegateの実装 実装コード
動作確認
BLEの通信接続 Peripheral Central Advertise スキャン・接続要求 接続・GATT通信 Service Characteristic Characteristic 切断 Advertise ・ ・ ・ ・・・
Peripheralの実装 主要箇所の解説
Peripheralの実装 主要箇所の解説
Peripheralの実装 主要箇所の解説 • NimBLEAdvertisementData • setSecurityAuth(false, false, false) • NimBLEService • NimBLECharacteristic
Peripheralの実装 主要箇所の解説
Peripheralの実装 主要箇所の解説
Peripheralの実装 主要箇所の解説
Peripheralの実装 主要箇所の解説 •servo.write(0); •servo.write(90);
配線・組み立て
完成
最後に 所感 • 日常的に使用するものを自分で作るのは楽しい • 全部で3000円以下で揃えらる • Bluetoothに関してはCentralとPeripheralの関係が分かれば、簡単な実装な らサクッとできる
最後に 改善点 • このままでは待機時の消費電力が大きい • 3Dプリンターなどでカバーを作って隠蔽する • 外出中にも鍵の施錠をチェックしたり制御できるようにする
ご静聴ありがとうございました
その他 参考資料 • Online UUID Generator https://www.uuidgenerator.net/ • Core Bluetooth https://developer.apple.com/documentation/corebluetooth • ESP32を使用してスマートキーを自作する https://tech.nri-net.com/entry/smartkey̲with̲esp32 • WOKWI https://wokwi.com/
その他 参考資料 • 秋月電子 https://akizukidenshi.com/catalog/g/gM-08761/ https://akizukidenshi.com/catalog/g/gM-08914/ • Bluetooth SIG https://www.bluetooth.com/ja-jp/ • GitHub https://github.com/oka-yuji/SmartKeySamplerWithESP32 • iOS BLE Core Bluetoothプログラミング 著:堤 修一, 松村 礼央
その他 免責事項 • 公開している資料やコードについてはあくまで個人で楽しむ範囲を想定した もので、全て自己責任のもと、ご利用ください。 • トークを中心に作成した資料となりますので一部正確性に欠ける表現もあり ます。 • スライドの資料は2023年8月頃に作成されたもので、将来的に内容に変更が 生じる場合があります。