はじめに
スマホに自作の周辺機器をつなげたいとは、電子工作経験者なら誰でも思うことではないでしょうか。
思いつく限りの方法を並べてみることにしました
2020/12/13更新
キーボードとして振る舞わせる手法や、MIDIデバイスとして振る舞わせる手法を忘れていた。
もしかしてMIDI強い?
有線
USBシリアル・バルク
概要
USB端子を使って通信する。
プロトコルとしては
など
利点
- 安定した通信
- 電力供給ができる
欠点
- 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など
利点
- 製品として出たものも多い
- それなりに安定して通信できる
- 接続が簡単
- 機種依存性が低い
- ローコスト
欠点
- 通信速度が低く単純なデータのやり取りにしか使えない
- 他の有線方式ほど安定した通信ではない
- 音声端子を備えないスマートフォンの登場(変換プラグで通信できることは多い)
- 電源が別途必要
- イヤホン刺すと耳にストレスが掛かる
有線LAN
有線LANで通信する。スマホの端子にLAN変換アダプタを挿す。
Arduino Ethernetシールドなどを使って通信する
iOSの場合カメラコミュニケーションキット + USB-Ethernetデバイスを経由することで通信可能。
利点
- 安定で高速な通信
- iPhoneは対応、Androidも一部対応
欠点
- DHCPサーバー機能が必要な場合もある
- USB Hostが使えないスマホもたくさんある
- アダプタが必要
- TCP/IPを扱う必要がある
- 値段が張りやすい
無線
Bluetooth LE (BLE)
BLE GATTで通信する。
ESP32や、nRFなど手軽に利用できるため最近の電子工作では割と鉄板。
利点
- それなりに安定して通信できる
- 無線でつながる
欠点
- 技適が必要で安くはない(とはいえ最近は安いモジュールも多い)
- 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などが定番。
利点
- 安定して通信できる
- 扱いがとても簡単
- 無線でつながる
欠点
- 技適が必要で安くはない
- 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などがある。
利点
- かざすという動作を利用できる
- 短時間でそれなりの量の通信ができる
欠点
- モジュールに種類がなく高価
- NFCを搭載していない機種、安定して利用できない機種が多い
- iPhoneは最新のiOSのNFC機能に対応した機種でしか利用できない
変則
可聴音
マイクとスピーカーを利用して通信する
Zeetleなど。
大体の場合は、設置された装置からスマホに音を聞かせてIDとして利用することが多い。
利点
- 安価に通信できる
- かなり機種依存しにくい
欠点
- 非常に安定しない
- うるさい
- データ量が多く確保できない
超音波
マイクとスピーカーを利用して通信する
山の手線トレインネット、来店ポイントサービスなど。
インドでは決済手段として使用されている様子。
大体の場合は、設置された装置からスマホに音を聞かせてIDとして利用することが多い。
利点
- 安価に通信できる
- かなり機種依存しにくい
- 人の耳に聞こえないので(耳の周波数特性が良い一部の人を除き)うるさくない
欠点
- 非常に安定しない
- データ量が多く確保できない
QRコード
QRコードを表示してカメラに読み取らせる
決済手段や空港の券として利用されていることで有名。
利点
- 高速
- スマホに渡すだけであれば画面があれば良い
- かなり機種依存しにくい
- それなりのデータ量を転送できる
- データ欠損などが起きづらい
欠点
- 機器側で読み取るのは少し辛い
- スマホとの位置関係が厳しい
点滅光通信
点滅する光に情報を埋め込んで読み取る。
LinkRayなど
大体の場合は、設置された装置からスマホのカメラを使用してIDとして利用することが多い。
利点
- かなり機種依存しにくい
- 位置関係に依存しにくい
欠点
- 個人で利用できる仕組みではない事が多い(色情報を使うパターンだと作れるかも?)
- スマホを発信元とするのは厳しい
組み合わせ
超音波+無線
無線で通信し、スマホのマイク近くに置いた装置から超音波を鳴らしてスマホに伝える
超音波式自撮り棒といわれるものがこれを使用しているらしい
超音波+赤外線
個人の用途であればこれが案外ありなのでは?という気がしている
赤外線通信を直接スマホが読み取れない問題を、超音波変換で解決し、
変換プラグが必要な問題も超音波で解決する。