Categories: 工作・開発

ESP32の3種無線を1つのスケッチで共存、自動チャンネル探索付きライブラリ公開

HamzaYslmn氏がESP32上でWi-Fi・BLE(Bluetooth)・ESP-NOW(Espressifの独自近距離無線)を同時に動かせるArduinoライブラリ「Esp-WiFi-BLE-Now」をGitHubで公開した。3種類の無線を同一スケッチ内で共存させるには初期化順序や無線チャンネルの管理など複数の落とし穴があるが、このライブラリはそれらをまとめて吸収する薄いラッパーとして設計されている。

最大の工夫はESP-NOWのチャンネル自動探索だ。Wi-Fiに接続していない状態では、ノードがチャンネル1〜13を500msずつ順に切り替えながらスキャンし、他のノードが送る1バイトのピング信号(チャンネル番号を埋め込んだ識別子)を検出した時点でそのチャンネルに固定する。「両方のデバイスを同じチャンネルに手動で合わせる」という従来のESP-NOW特有の手間を省く仕組みだ。Wi-Fi接続中はルーターのチャンネルにESP-NOWが自動追従する。

長距離通信にも対応しており、ESP-NOWはデフォルトでWi-FI規格外のロングレンジPHY(WIFI_PROTOCOL_LR)を使う。これにより標準の1Mbpsモードに比べて約3〜4倍の感度が得られる。さらにlongRange=trueフラグを渡すと送信電力ブースト(ESP-NOWで最大+21 dBm)も加わる。BLEは最大+9 dBmの出力ブーストに対応する。

BLEブロードキャストのペイロード上限は1パケット分の18バイトで、これを超える場合はGATT(NUS経由)またはESP-NOW(最大250バイト)を使う構成を推奨している。ブラウザやスマートフォンからはGATT経由で周辺ESP32のBLEブロードキャストを受信する「NUS GATTリレー」機能も内蔵する。インストールはArduinoライブラリフォルダへの配置のみで、外部依存パッケージは不要だ。

関連情報

FabScene編集部

FabScene編集部