現代のスマホに周辺機器をつなげる通信手段

#はじめに
スマホに自作の周辺機器をつなげたいとは、電子工作経験者なら誰でも思うことではないでしょうか。
思いつく限りの方法を並べてみることにしました

2020/12/13更新
キーボードとして振る舞わせる手法や、MIDIデバイスとして振る舞わせる手法を忘れていた。
もしかしてMIDI強い？

#有線
##USBシリアル・バルク
###概要
USB端子を使って通信する。

プロトコルとしては

+ [FTDIのシリアル変換IC](https://lipoyang.hatenablog.com/entry/20171003/p1)
+ [生のUSBでバルク転送](http://blog.kshoji.jp/2012/12/android-usb-host.html)
+ [Android Open Accessory (AOA, ADK)](http://www.kumikomi.net/archives/2012/02/co04adk.php?page=2)
+ [microbridge](https://www.suke-blog.com/usb_host_library_2-0_with_adb/)

など

###利点
+ 安定した通信
+ 電力供給ができる

###欠点
+ Androidしか使えない
+ USB Hostが使えないスマホもたくさんある
+ 端子も種類がある
+ USBの上に乗るプロトコルもいくつかある
+ 値段が張りやすい


##USB HID
###概要
USB端子を使って通信する。HIDでキーボードを模擬する  
(Androidだとゲームパッドも行けると思う)  
iOSの場合、カメラコミュニケーションキットを経由する。  

参考: https://kougaku-navi.hatenablog.com/entry/20110423/1303589571

###利点
+ 安定した通信
+ 電力供給ができる
+ バーコードリーダーでおなじみ
+ iOSやAndroidで動く

###欠点
+ USB Hostが使えないスマホもたくさんある
+ 単方向(マイコン→スマホ)
+ 入力にフォーカス当ててないと使えない
+ タッチで文字入力できなくなる事が多い

##USB MIDI
###概要
USB-MIDIデバイスを使って通信する。MIDIは31250bpsのUART相当。  
iOSの場合カメラコミュニケーションキット + USB-MIDIデバイスを経由することで通信可能。

照明制御アプリなどある模様。
https://news.mynavi.jp/article/20101130-a024/

###利点
+ 安定した通信
+ iOSやAndroidで動く

###欠点
+ USB Hostが使えないスマホもたくさんある


##Lightning
###概要
Lightning端子で通信する

###利点
+ 安定した通信
+ 電力供給ができる

###欠点
+ iPhoneでしか使えない
+ MFi認証が必要なので個人にはまず無理

##音声端子
###概要
音声端子に可聴音を載せて通信する
[softmodem](http://micutil.com/Softmodem/top.html)など

###利点
+ 製品として出たものも多い
+ それなりに安定して通信できる
+ 接続が簡単
+ 機種依存性が低い
+ ローコスト

###欠点
+ 通信速度が低く単純なデータのやり取りにしか使えない
+ 他の有線方式ほど安定した通信ではない
+ 音声端子を備えないスマートフォンの登場(変換プラグで通信できることは多い)
+ 電源が別途必要
+ イヤホン刺すと耳にストレスが掛かる

##有線LAN
有線LANで通信する。スマホの端子にLAN変換アダプタを挿す。
Arduino Ethernetシールドなどを使って通信する
iOSの場合カメラコミュニケーションキット + USB-Ethernetデバイスを経由することで通信可能。

###利点
+ 安定で高速な通信
+ iPhoneは対応、Androidも一部対応

###欠点
+ DHCPサーバー機能が必要な場合もある
+ USB Hostが使えないスマホもたくさんある
+ アダプタが必要
+ TCP/IPを扱う必要がある
+ 値段が張りやすい


#無線
##Bluetooth LE (BLE)
BLE GATTで通信する。
[ESP32や、nRFなど手軽に利用できるため最近の電子工作では割と鉄板。](https://qiita.com/hktechno/items/45ce4678e45c4e8331df)

###利点
+ それなりに安定して通信できる
+ 無線でつながる

###欠点
+ 技適が必要で安くはない(とはいえ最近は安いモジュールも多い)
+ Androidにおいて搭載していない、安定していない端末がそれなりに多い
+ 省電力だが通信速度は早くない

##BLE MIDI
###概要
BLE-MIDIデバイスとして通信する。MIDIは31250bpsのUART相当。  

参考: http://morecatlab.akiba.coocan.jp/lab/index.php/2019/05/ble-midi-01/

###利点
+ 安定した通信
+ iOSやAndroidで動く

###欠点
+ ???

##Bluetooth SPP
Classic BTの仮想シリアルポートを使って通信する。
[RN42](http://akizukidenshi.com/catalog/g/gK-07378/)などが定番。

###利点
+ 安定して通信できる
+ 扱いがとても簡単
+ 無線でつながる

###欠点
+ 技適が必要で安くはない
+ Androidにおいて搭載していない、安定していない端末がそれなりに多い
+ iPhoneでは利用できない(MFi認証が必要)

##Bluetooth HID
Classic BTでキーボードやゲームパッド扱いにする

###利点
+ 安定して通信できる
+ 扱いがとても簡単
+ 無線でつながる
+ バーコードリーダーでおなじみ
+ iOSやAndroidで動く

###欠点
+ 技適が必要で安くはない
+ Androidにおいて搭載していない、安定していない端末がそれなりに多い
+ 単方向(マイコン→スマホ)
+ 入力にフォーカス当ててないと使えない
+ タッチで文字入力できなくなる事が多い

##Wi-Fi(IEEE802.11)
Wi-Fi経由で接続する。ほぼすべての機種と接続できる利点がある。
ESP8266、ESP32が多い。

HTTP, TCP, UDPその他色々。
Network MIDIというのもある。

###利点
+ 安定して通信できる
+ 扱いがとても簡単
+ 無線でつながる
+ 機種依存しにくい

###欠点
+ 技適が必要で安くはない(ESP8266は安い)
+ インターネット接続が切れることが多い
+ インターネット接続を維持するための機能に邪魔されることが多い
+ 大変に電力を消費する

##NFC
NFCのRead/Write機能で通信する。
[Felica Plug](https://www.switch-science.com/catalog/321/)などがある。

###利点
+ かざすという動作を利用できる
+ 短時間でそれなりの量の通信ができる

###欠点
+ モジュールに種類がなく高価
+ NFCを搭載していない機種、安定して利用できない機種が多い
+ iPhoneは最新のiOSのNFC機能に対応した機種でしか利用できない

#変則
##可聴音
マイクとスピーカーを利用して通信する
[Zeetle](https://www.zeetle.jp/howto/)など。
大体の場合は、設置された装置からスマホに音を聞かせてIDとして利用することが多い。

###利点
+ 安価に通信できる
+ かなり機種依存しにくい

###欠点
+ 非常に安定しない
+ うるさい
+ データ量が多く確保できない

##超音波
マイクとスピーカーを利用して通信する
山の手線トレインネット、来店ポイントサービスなど。
インドでは決済手段として使用されている様子。
大体の場合は、設置された装置からスマホに音を聞かせてIDとして利用することが多い。

###利点
+ 安価に通信できる
+ かなり機種依存しにくい
+ 人の耳に聞こえないので(耳の周波数特性が良い一部の人を除き)うるさくない

###欠点
+ 非常に安定しない
+ データ量が多く確保できない

##QRコード
QRコードを表示してカメラに読み取らせる
決済手段や空港の券として利用されていることで有名。

###利点
+ 高速
+ スマホに渡すだけであれば画面があれば良い
+ かなり機種依存しにくい
+ それなりのデータ量を転送できる
+ データ欠損などが起きづらい

###欠点
+ 機器側で読み取るのは少し辛い
+ スマホとの位置関係が厳しい

##点滅光通信
点滅する光に情報を埋め込んで読み取る。
[LinkRay](https://panasonic.biz/cns/LinkRay/)など
大体の場合は、設置された装置からスマホのカメラを使用してIDとして利用することが多い。

###利点
+ かなり機種依存しにくい
+ 位置関係に依存しにくい

###欠点
+ 個人で利用できる仕組みではない事が多い(色情報を使うパターンだと作れるかも？)
+ スマホを発信元とするのは厳しい

#組み合わせ
#超音波+無線
無線で通信し、スマホのマイク近くに置いた装置から超音波を鳴らしてスマホに伝える
超音波式自撮り棒といわれるものがこれを使用しているらしい

#超音波+赤外線
個人の用途であればこれが案外ありなのでは？という気がしている
赤外線通信を直接スマホが読み取れない問題を、超音波変換で解決し、
変換プラグが必要な問題も超音波で解決する。