MasaApps360
日本語
Periphery

iPhoneからBLEキャラクタリスティックを読み書きし、通知を受け取る方法

Periphery のインスペクターで機器を開くと、各キャラクタリスティックが対応する操作のボタンを表示します。読む で値を取得し、書く で16進数として入力したバイトを送信し、通知する で 停止通知 をタップするまでライブの更新を受信します。値は ヘックス、小数、ASCII、バイナリ のいずれかで表示できます。ノートパソコンなしで自作のファームウェアを手早くテストできます。

5 分で読めます · 更新日 2026-10-06

BLEのサービス・キャラクタリスティック・プロパティを1分で

BLE機器はデータをサービスにまとめ、それぞれのサービスがキャラクタリスティックを持ちます。キャラクタリスティックは電池残量やデータチャンネルのような1つの値で、そのプロパティが何をしてよいかを示します。読み取る、書き込む、変化を通知してもらう、のいずれかです。Periphery はそれらのプロパティを各行の小さなタグで示します。Rは読み取り、Wは書き込み、Nは通知またはインジケートです。

キャラクタリスティックを読み取る方法

  1. スキャン をタップし、目的の機器をタップします。Periphery が接続し、そのサービスを一覧表示します。
  2. Rタグの付いたキャラクタリスティックを見つけて 読む をタップします。
  3. 値がそのキャラクタリスティックの下に表示されます。フォーマット ピッカーで ヘックス、小数、ASCII、バイナリ を切り替えられます。

キャラクタリスティックにバイトを書き込む方法

  1. Wタグの付いたキャラクタリスティックで 書く をタップします。16進数を入力 シートが開きます。
  2. バイトを16進数のペアで入力します。例えば01 FF。スペースは省略できます。
  3. 入力欄の下の行を確認します。送信されるバイト数か、テキストが正しい16進数でないという警告が表示されます。
  4. 送信 をタップして書き込むか、キャンセル で書き込まずに閉じます。

キャラクタリスティックが応答付き書き込みに対応していれば、Periphery はそれを使い、機器からの確認を待ちます。応答なし書き込みのみに対応している場合はバイトが確認なしで送信されるため、値を読み直したり通知を確認して届いたかどうかを確かめてください。

通知を受信する方法

  1. Nタグの付いたキャラクタリスティックで 通知する をタップします。
  2. 機器が新しい値を送るたびに、キャラクタリスティックの下の表示が置き換えられます。
  3. 停止通知 をタップすると受信をやめます。インスペクターを離れると接続が切れ、すべての受信が終わります。

実例:1つの値、4つの表示形式

テスト用のボードに送るような3バイトを返すキャラクタリスティックがあるとします。各表示形式でどのように見えるかを示します。

同じ3バイトを各形式で表示
形式表示
Hex01 41 42
Decimal1 65 66
Binary00000001 01000001 01000010
ASCII最初のバイトだけは印字できず、残りの2つはAB という文字として表示

16進数で5Aを返すBattery Level(2A19)キャラクタリスティックは、Decimalでは90になり、これは90%を意味します。Manufacturer Nameのようなテキストのフィールドは、ASCIIで読むのが最も読みやすいです。

Proでテストセッションをログに残す

Periphery Proがあると、接続中のすべての読み取り・書き込み・通知が、タイムスタンプ、方向、キャラクタリスティックUUID、生のバイトとともに自動で保存されます。ログ タブを開くと各セッションとそのパケット数が確認でき、セッションをスワイプして エクスポート でプレーンテキストとして共有したり、削除 で削除したりできます。パケットが1つもないセッションは、インスペクターを離れると自動的に破棄されます。Proがない場合、何も記録されません。

コツとよくある間違い

  • ボタンはそのキャラクタリスティックが許可する操作にしか表示されません。読む ボタンがないのはプロパティが設定されていないからで、アプリが隠しているわけではありません。
  • BLEの複数バイトの数値はたいていリトルエンディアンです。16進数の34 12は0x1234であり、0x3412ではありません。
  • ペアリングや暗号化が必要なキャラクタリスティックでは、読み書きが失敗することがあります。iOSがペアリングを処理するので、その確認を受け入れて再試行してください。
  • 通常、1つの携帯機器やアプリしか同時に接続を保持できません。まず自分のテスト用アプリや別の携帯機器の接続を切ってください。

よくある質問

notifyとindicateの違いは何ですか?
どちらも、こちらが読み取らなくても機器が新しい値を送ってくれる仕組みです。indicateはさらに確認応答を求めます。Periphery はどちらもNタグで示し、同じNotifyボタンでどちらにも受信を開始します。
16進数の代わりにテキストを書き込めますか?
直接はできません。書き込みシートは16進数のバイトしか受け付けません。ABというテキストを送るには、そのASCIIコードである41 42を入力してください。
Connecting…と表示されてからエラーになるのはなぜですか?
機器が10秒以内に接続を受け入れなかったためです。範囲外にある、すでに別の携帯機器に接続している、あるいはそもそも接続を受け付けていない可能性があります。
ディスクリプタは読めますか?
Peripheryのインスペクターはキャラクタリスティックの単位で動作し、読み取り・書き込み・通知を扱います。ディスクリプタの値は別の行として表示されません。

Periphery のその他のガイド