SlideShare a Scribd company logo
1 of 22
Download to read offline
iOS ✖️ BLE
簡単プロトタイピング
with Swift ✖️ BLE-Serial ✖️ mbed
山本 恭大
Takahiro YAMAMOTO
株式会社ニコンシステム
1
自己紹介
• 山本 恭大
• お仕事
• 株式会社ニコンシステム
• カメラ用アプリのMac版の開発
2
今日の発表は業務とは
関係なし
背景
スマホエンジニア枠で参加したハッカソン
このアイデア、
なんかデバイス作った方が盛り上がるよね?
OK!
じゃあ、俺作るわ(ドヤ顔)
完成度が低いっす。
プレゼンで誤魔化して
でも、結局
どんまい
とか
周辺デバイスも作れないかな?
いや、
今回はアプリだけで勝負しよう
最初から諦めてたり。。。
くやしい!!
https://www.apple.com/watch/
http://ja.wikipedia.org/wiki/Google_Glass
プロトタイプしたいもの
7
ウェアラブルデバイスとか、
スマホから周辺デバイス制御したり、
センサのデータ取り出したい
mbed
iPhone
BLE
http://ja.wikipedia.org/wiki/IPhone
http://www.robotsfx.com/robot/BLESerial.html
http://ja.wikipedia.org/wiki/Mbed
BLE意外と大変
9
10
mbed
iPhone
http://ja.wikipedia.org/wiki/IPhone
GATT
ATT
L2CAP
GAP
BLEプロトコルスタック
link layer
LE physical
Bluetooth SIG
英語,200pくらいの資料
http://ja.wikipedia.org/wiki/Mbed
大変!!
なら、そこは作らない
mbed
iPhone
12
ライブラリ
BLE-Serial
BLEプロトコル
ブラックボックス
UART
http://ja.wikipedia.org/wiki/Mbed
http://ja.wikipedia.org/wiki/IPhone
BLE-Serial
http://www.robotsfx.com/robot/BLESerial.html
・UARTで読み書きするだけでBLE通信
・BLEの知識不要
・BLEの大変な部分は全てモジュール側が担当
・¥4200(税込)
13
ライブラリ
・coreBluetoothラッパーライブラリ
14
coreBluetooth
・有名どころ
  ・YmsCoreBluetooth
  ・LGBluetooth
英語、objective-c
ラッパーライブラリ
BLESerial用ライブラリ
ライブラリ
https://github.com/TakahiroYamamoto/BLE-Serial
swift日本語で作ってみた
15
ライブラリ
• API
• connect
• disconnect
• readBlock
• write
以上!!
16
デモ
コード(iOS側)
19
@IBAction func prev(sender:AnyObject) //前進ボタン
{
var communicator : BLECommunicator = BLECommunicator.sharedInstance
communicator.write("a")
}
@IBAction func back(sender:AnyObject) //後退ボタン
{
var communicator : BLECommunicator = BLECommunicator.sharedInstance
communicator.write("z")
}
@IBAction func rotate(sender:AnyObject) //回転ボタン
{
var communicator : BLECommunicator = BLECommunicator.sharedInstance
communicator.write("r")
}
@IBAction func stop(sender:AnyObject) //停止ボタン
{
var communicator : BLECommunicator = BLECommunicator.sharedInstance
communicator.write("o")
}
if(SciByteRx(&data) > 0){
{
if(data == ‘a’)//前進処理
{
//前進
}
else if(data == ‘z’)//後退
{
//後退
}
else if(data == ‘r’)//回転
{
//回転
}
else
{
//停止
}
}
}
コード
デバイス側
コード
GetEncoder(&right_b,&left_b);
char str[256];
sprintf(str,"r:%d,l:%d",right_b - right , left_b - left);
communicator.readBlock = {string in
}
iOS側
デバイス側
まとめ
• iOSと周辺デバイスをBLEの知識なしで繋げます!
• ライブラリ使ってもらえたら嬉しいです
• プルリクとかもらえたらもっと嬉しいです
• 温泉ハッカソン誰か一緒に出ませんか?
• http://spajam.jp/2015/

More Related Content

Viewers also liked

iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクトiOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
Shuichi Tsutsumi
 
Search APIs in Spotlight and Safari
Search APIs in Spotlight and SafariSearch APIs in Spotlight and Safari
Search APIs in Spotlight and Safari
Yusuke Kita
 

Viewers also liked (13)

20150707 wwdc21cafe
20150707 wwdc21cafe20150707 wwdc21cafe
20150707 wwdc21cafe
 
WWDC 2015 情報共有会
WWDC 2015 情報共有会WWDC 2015 情報共有会
WWDC 2015 情報共有会
 
UI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つUI/UX に影響の大きい watchOS 2 の新機能 3つ
UI/UX に影響の大きい watchOS 2 の新機能 3つ
 
iOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクトiOSエンジニア in ハードウェア・プロジェクト
iOSエンジニア in ハードウェア・プロジェクト
 
Contents blocker on iOS9
Contents blocker on iOS9Contents blocker on iOS9
Contents blocker on iOS9
 
Search APIs in Spotlight and Safari
Search APIs in Spotlight and SafariSearch APIs in Spotlight and Safari
Search APIs in Spotlight and Safari
 
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
Audio Unit Extensions 〜オーディオエフェクトのアプリ間共有〜
 
とにかく明るいCore Spotlight
とにかく明るいCore Spotlightとにかく明るいCore Spotlight
とにかく明るいCore Spotlight
 
Core Graphics on watchOS 2
Core Graphics on watchOS 2Core Graphics on watchOS 2
Core Graphics on watchOS 2
 
Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9Core Image Tips & Tricks in iOS 9
Core Image Tips & Tricks in iOS 9
 
watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話watchOS 2 新機能の細かい話
watchOS 2 新機能の細かい話
 
iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編iOS 9 の新機能 Core Image 編
iOS 9 の新機能 Core Image 編
 
How to make workout app for watch os 2
How to make workout app for watch os 2How to make workout app for watch os 2
How to make workout app for watch os 2
 

Similar to I os*ble簡単プロトタイピング

福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
Atsushi Harada
 
Smartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポートSmartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポート
Masaru Kimura
 
ストアアプリの手書き機能で遊んでみた
ストアアプリの手書き機能で遊んでみた ストアアプリの手書き機能で遊んでみた
ストアアプリの手書き機能で遊んでみた
Makoto Nishimura
 
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
 
Introduction of Swift from Game Development
Introduction of Swift from Game DevelopmentIntroduction of Swift from Game Development
Introduction of Swift from Game Development
Daisuke Yamashita
 

Similar to I os*ble簡単プロトタイピング (20)

春の勉強会 2015
春の勉強会 2015 春の勉強会 2015
春の勉強会 2015
 
ウフル様 littleBits x Node-RED レクチャー資料
ウフル様 littleBits x Node-RED レクチャー資料ウフル様 littleBits x Node-RED レクチャー資料
ウフル様 littleBits x Node-RED レクチャー資料
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~Titanium Mobile ~本当にあったこわい話~
Titanium Mobile ~本当にあったこわい話~
 
Androidが変えたもの
Androidが変えたものAndroidが変えたもの
Androidが変えたもの
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステムAndroid向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
Android向けUnity製ゲーム最適化のためのCI/CDと連携した自動プロファイリングシステム
 
Surface で 謎開発
Surface で 謎開発Surface で 謎開発
Surface で 謎開発
 
Cocoaアプリに無理矢理プラグインを導入する入門
Cocoaアプリに無理矢理プラグインを導入する入門Cocoaアプリに無理矢理プラグインを導入する入門
Cocoaアプリに無理矢理プラグインを導入する入門
 
Smartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポートSmartphone ui:ux」 de na creative seminar vol.1 レポート
Smartphone ui:ux」 de na creative seminar vol.1 レポート
 
ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)ビジュアライゼーションの役割とUI開発のイノベーション(2)
ビジュアライゼーションの役割とUI開発のイノベーション(2)
 
.NET Micro Framework の基礎
.NET Micro Framework の基礎.NET Micro Framework の基礎
.NET Micro Framework の基礎
 
The Composable Architecture [iOS内定者輪読会]
The Composable Architecture [iOS内定者輪読会]The Composable Architecture [iOS内定者輪読会]
The Composable Architecture [iOS内定者輪読会]
 
JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?JS Board で IoT は楽勝か?
JS Board で IoT は楽勝か?
 
ストアアプリの手書き機能で遊んでみた
ストアアプリの手書き機能で遊んでみた ストアアプリの手書き機能で遊んでみた
ストアアプリの手書き機能で遊んでみた
 
基板とブラウザと私
基板とブラウザと私基板とブラウザと私
基板とブラウザと私
 
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
 
Cod2012 デバッグ講座
Cod2012 デバッグ講座Cod2012 デバッグ講座
Cod2012 デバッグ講座
 
20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる20110212 Silverlight から Bing Maps に触れる
20110212 Silverlight から Bing Maps に触れる
 
Introduction of Swift from Game Development
Introduction of Swift from Game DevelopmentIntroduction of Swift from Game Development
Introduction of Swift from Game Development
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

I os*ble簡単プロトタイピング