RaspberryPi pico wでmicro-ROSを動かす(Bluetooth編 その1)
前回までのあらすじ
micro-ROSの通信部をシリアル→Wi-Fiに変更し、エージェントとの通信を試みた。いろいろと手を尽くしたが、残念ながらエージェントとの通信は成功しなかった。
Wondows11 + WSL + Dockerのネットワーク環境は魔境のようだった。
今回のテーマ
Wi-Fiでの接続はあきらめ、もう一つの無線通信手段である、Bluetooth(Serialプロファイル)にて接続を試みる。
エージェントはシリアルでの動作となる。
ソフト変更
以下のサイトを参考にカスタム仕様へ変更していく
platformio.iniの変更
board_microros_transportオプションをカスタムに指定する
board_microros_transport = custom
このオプションの指定で、いずれかの定義が1となる
MICRO_ROS_TRANSPORT_ARDUINO_SERIAL
MICRO_ROS_TRANSPORT_ARDUINO_WIFI
MICRO_ROS_TRANSPORT_ARDUINO_CUSTOM
MICRO_ROS_TRANSPORT_ARDUINO_WIFI_NINA
カスタム通信モジュールの実装
Bluetoothシリアルでの通信モジュールは提供されていないので、
シリアル通信モジュールを参考に実装する。
micro_ros_transport.hの変更
micro_ros_transport.cppの変更
main.cppの変更
変更点は以下の通り
Bluetoothシリアルを使用するためのヘッダファイルSerialBT.hをインクルードする
Bluetoothシリアル初期化処理SerialBT.begin()をコールする
set_microros_wifi_transports()→set_microros_bt_serial_transportsに変更する
コード(抜粋)
Bluetoothシリアルを使用するためのヘッダファイルをインクルード
#if (MICRO_ROS_TRANSPORT_ARDUINO_CUSTOM==1)
#include <SerialBT.h>
#endif
setup()関数内でコールされているセットアップ関数をBluetoothシリアルのものに切り替える。
なお、コンパイルオプションMICRO_ROS_TRANSPORT_ARDUINO_CUSTOMで切り替えられるようにしている
#if (MICRO_ROS_TRANSPORT_ARDUINO_SERIAL==1)
set_microros_serial_transports(Serial);
#elif (MICRO_ROS_TRANSPORT_ARDUINO_WIFI==1)
set_microros_wifi_transports(ssid, psk, agent_ip, agent_port);
#elif (MICRO_ROS_TRANSPORT_ARDUINO_CUSTOM==1)
SerialBT.begin(115200); // BlueTooth-Serial用
set_microros_bt_serial_transports(SerialBT);
#endif
Bluetoothライブラリの追加
platformio.iniに以下のビルドフラグを追加する
build_flags = -DPIO_FRAMEWORK_ARDUINO_ENABLE_BLUETOOTH
ビルドする
この記事が気に入ったらサポートをしてみませんか?