
【ESP32】BLE通信、ESP32からiOSでデータ受信
はじめに 今回は BLE通信を使って、ESP32から送られたデータをiOS端末で受信 します。ESP32をペリフェラル、iOSをセントラルとして扱い、ESP32側で読み取った値を Notify で送る構成です。 この形にしておくと、ESP32につないだセンサの値をiPhoneアプリ側で受け取り、画面に表示できます。Wi-Fiを使わずに近距離で値を渡したいときの入口として、前回のLチカ記事と合わせて読むと流れを追いやすいです。 先に要点 ESP32側は BLE Server としてサービス、キャラクタリスティック、Notify を用意します iOS側は CoreBluetooth で対象サービスをスキャンし、キャラクタリスティックを見つけて通知を登録します 値を受け取る処理は didUpdateValueFor characteristic で行います UUID が一致しないと接続後に値を受け取れないので、ESP32側とiOS側で同じ値を使います 前回のおさらい はじめに前回のおさらいです。BLE通信をはじめるには、 アドバタイジング で目的の サービス を持つ ペリフェラル を見つけ、 キャラクタリスティック を取得する必要がありました。よってペリフェラルの サービスUUIDとキャラクタリスティックUUIDの2つ以上が必要 になります。 前回は、iOSからESP32へデータを送信してLチカを実現させました。よってキャラクタリスティックの属性には Write が必要でした。 今回は、ESP32のデータをiOSで受信したいので Notify属性を使ってデータを受信 します。 ところで、この記事で扱うiOSとESP32は次のような関係になります。混乱しないよう気をつけてください。 iOS ESP32 セントラル ペリフェラル マスタ スレイブ クライアント サーバ ESP32のUUIDをそれぞれ次のように決めました。 項目 値 SERVICE UUID 4fafc201-1fb5-459e-8fcc-c5c9c331914b CHARACTERISTIC UUID beb5483e-36e1-4688-b7f5-ea07361b26a8 これらの値はESP32のサンプルの値を使用してます。必要あればこちらのジェネレータでUUIDを生成して書き換えてください。 https://www.uuidgenerator.net/ BLE通信でESP32のデータをiOSで受信するプログラム 概要 ESP32のGPIO32へ可変抵抗を取り付け、読み取ったアナログ値をiOSでBLE経由で受信する プログラムを作っていきます。 可変抵抗は両側をGNDと3.3Vに接続し、真ん中の端子をGPIOへ繋いでください。BLE通信を開始したらNotify通知を設定し、抵抗値をiOSで受け取りUILabeで表示させます。 ESP32(ペリフェラル) ESP32(ペリフェラル)のArduinoで書いたプログラムです。前回のBluetooth Lチカとそれほど変わりません。ESP32でデータを通知するにはキャラクタリスティックにデータをセットして通知します。 pCharacteristic->setValue(str); pCharacteristic->notify(); なお、ここでは文字列をセットしましたが、int型などもセットできるようです。 ...








