「Raspberry Pi Pico W」でBluetooth通信を使用して、遠隔操作やデータ取得する方法をサンプルプログラムを使用して詳しく紹介します。
パソコンは「Windows11」、開発環境は「ArduinoIDE」を使用してC言語で行います。
Bluetooth通信の動作確認には「ArduinoIDE」のシリアルモニタを使用しますが、自作のPythonアプリで遠隔操作したり、受信データをCSVデータとして記録してExcelで確認する方法も応用編として紹介しています。
「Raspberry Pi Pico」の基本的な使い方は、以下のリンクで詳しく紹介しています。

1.Raspberry Pi PicoW/Pico2Wとは
・基本仕様
・端子配列
2.動作確認の準備
・開発環境ArduinoIDEのインストール
・ライブラリの準備
・PicoW/Pico2Wの初期設定
3.Bluetooth通信の使い方
・ライブラリの使い方
・パソコンとのペアリング方法
4.動作確認1:Bluetooth通信で遠隔データ取得
・動作紹介
・サンプルプログラム
・ArduinoIDEのシリアルモニタで動作確認
5.動作確認2:Bluetooth通信で遠隔操作
・動作紹介
・サンプルプログラム
・ArduinoIDEのシリアルモニタで動作確認
6.応用編:自作Pythonアプリで動作確認
・動作確認1:遠隔データ取得、CSV保存データをExcelで確認
・動作確認2:パソコンからON/OFFボタンでLチカ
7.まとめ
1.Raspberry Pi PicoW/Pico2Wとは
「Raspberry Pi PicoW/Pico2W」とは、イギリスを拠点とする慈善団体によって若者のプログラミング学習を目的に開発されたもので、OSを搭載してパソコンのように使える他の「Raspberry Piシリーズ」とは異なり、OSを搭載する機能はありません。
その代わり、電源投入ですぐに使用でき、スイッチやLEDランプ、モーター、各種センサー、通信機器を接続して、それらを制御するプログラムを簡単に作成して動作確認できるため、組み込み(制御)系プログラミングの学習に最適です。
「PicoW/Pico2W」には通信機能があり、Wi-Fiでインターネット経由のデータ収集や、Bluetoothでのデータ通信、遠隔操作等のアイデアを簡単に試すことができます。
メイン処理装置のマイコン(マイクロコントローラ)には同財団で開発された「RP2040(PicoW)/RP2350(Pico2W)」が使用されており、USBコネクタや電源回路、スイッチ、LED等と合わせて1枚の基板に実装されています。
このようにマイクロコントローラーと周辺回路が実装された基板をマイコンボードと呼びます。
以下写真左が「PicoW」、右が「Pico2W」で端子配列や使い方は同じで、「Pico2W」は処理速度等の機能がアップしています。


「PicoW」の「技適」については以下のリンクで詳しく紹介しています。

・基本仕様
Pico2WとPicoWの違い
「Pico2W」と「PicoW」の違いは以下表のようになります。
項目 | Pico2W | PicoW |
---|---|---|
コントローラ | RP2350 | RP2040 |
CPU | デュアルコア Arm Cortex-M33 または Hazard3(RISK-V)を選択して使用可能 最大150MHz | デュアルコア Arm Contrex M0+プロセッサ 最大133MHz |
メモリ Flash / SRAM | 4MB / 520kB | 2MB / 264kB |
共通仕様
共通仕様は以下表のようになります。
項目 | 詳細 |
---|---|
電源電圧(VBUS) | DC5V±10% |
USB | Micro USB Type-B |
入出力 | 多機能GPIO x 26 |
通信機能 | UART x 2 / I2C x 2 / SPI x 2 |
無線通信機能 ※Pico Wのみ | Wi-Fi (2.4 GHz)/Bluetooth |
その他機能 | ADC(12bitアナログコンバータ) x 3 PWM x 16 |
動作温度範囲 | -20℃〜85℃(自己発熱含む) ※最大温度は推奨70℃ |
寸法 | 21 x 51 (mm) |
・端子配列
「Pico2W」端子配列は以下のようになります。(公式サイトより抜粋)

2.動作確認の準備
動作確認のためには、開発環境のインストールとPicoの初期設定が必要なため、以下から詳しく紹介していきます。
・開発環境ArduinoIDEのインストール
開発環境「ArduinoIDE」のインストールやライブラリの準備方法は以下のリンクで詳しく紹介しいるので、インストールがまだの方はインストールしておいてください。

「 Raspberry Pi Picoシリーズ」を「ArduinoIDE」で使用するにはボード情報の追加等の初期設定が必要です。これについても以下のリンクで詳しく紹介しています。

・ライブラリの準備
今回使用するライブラリは「SerialBT」で、個別にインストールする必要はありません。
「SerialBT」を使用するためにはプログラムの先頭に以下のように記述するだけです。
#include <SerialBT.h> // Bluetooth通信用ライブラリ
・PicoW/Pico2Wの初期設定
「ArduinoIDE」をインストールして、ボード情報の設定が完了したら、以下のように「PicoW/Pico2W」を使用するための初期設定を行います。
まずは、下画像のように「PicoW/Pico2W」を基板上の「BOOTSEL」ボタンを押しながら、パソコンとUSBケーブルで接続しておきます。

次に「ArduinoIED」を起動します。(既に起動している場合もこのまま進めてください。)

「ArduinoIED」が起動したら上画像のように[ファイル]→[新規スケッチ]をクリックします。

上画像のように新規ウインドウで「ArduinoIDE」が起動します。

Bluetooth通信を有効にするために、上画像のように[ツール]→[IP \Bluetooth Static〜]をクリックして[IPv4 + Bluetooth]を選択してください。

次に上画像のように使用するボードの選択を行います。
[ツール]→「ボード:(ここは環境によって異なります)」→[Raspberry Pi Pico/RP2040/RP2350]をクリックしてご自身が使用するボード(今回の場合はRaspberry Pi Pico 2W)を選択します。

次に上画像のように通信ポートの設定を行います。
[ツール]→[ボード:”(ここは環境によって異なります)”]をクリックすると、上画像のように[UF2 Board]が表示されているため、これをクリックします。
以上の作業は初回のみの作業です。

1度書き込みを行ってから「ポート」を確認すると、上画像のように「COM番号(Generic RP2350〜)」のように表示されるようになるため、2回目以降の書き込みは、このCOM番号を選択して書き込みを行う必要があります。

初回書き込み時にはファイルの保存を求められるため、上画像のように事前に保存しておくとスムーズに作業が進められます。
以上で初期設定は完了です。
3.Bluetooth通信の使い方
・ライブラリの使い方
今回使用する「SerialBT」ライブラリの基本的な使用方法は以下になります。
// 初期設定
SerialBT.setName("Pico_BT"); // ペアリング時に表示するデバイス名を設定(初期化の前に設定)
SerialBT.begin(9600); // 通信速度を指定してBluetooth通信を初期化して開始
// Bluetoothデータ送受信処理
SerialBT.available(); // 受信データがあればtrue
SerialBT.read(); // 受信データを1文字読み取る
SerialBT.print("送信データ"); // データを文字列で送信(printfも使用可)
・パソコンとのペアリング方法
この下で紹介するサンプルプログラムを書き込んだら、「PicoW/Pico2W」とBluetooth通信を行うために、パソコンとのペアリングを行う必要があります。
サンプルプログラムを書き込んでから、動作確認を行うためには以下の手順でペアリングを行ってください。

まずは上画像のように、Windowsアイコンを「右クリック」して、表示されるメニューの中から[設定]をクリックします。

上画像のように「設定」画面が表示されたら[Bluetoothとデバイス]をクリックします。

上画像のように表示されたら[デバイスの追加]の「+」部をクリックします。

上画像のようなウインドウが表示されるので[Bluetooth]をクリックします。

ここで紹介するサンプルプログラムでは、Bluetoothデバイス名を「Pico_BT」と設定しているため、上画像のように「Pico_BT」が認識されて表示されたら、これをクリックします。

上画像のような「PIN」番号の確認画面が表示されますが、番号の確認はできないため、そのまま[接続]をクリックすれば問題ありません。

上画像のような画面が表示され、「Pico_BT」の下に「接続済み」と表示されればペアリング完了です。

このウインドウをしばらく表示させていると、上画像のように「未接続」となりますが、ペアリングは完了しているので問題ありません。
以上でペアリング作業は完了です。
ペアリング完了後に「PicoW/Pico2W」のプログラムを書き換えた場合は再度ペアリングの必要があるため、以下の手順でペアリングを行います。

書き込み後にパソコン側から「Bluetooth通信」接続が実行された時に、以下のようにWindowsの画面右下に[デバイスの追加]ウインドウが表示されたらこれをクリックします。

上画像のようなウインドウが表示されたら、番号の確認はできないので[はい]をクリックすれば問題ありません。

ウインドウが切り替わり、上画像のようにデバイス名の下に「接続成功」と表示されたらペアリング完了です。
4.動作確認1:Bluetooth通信で遠隔データ取得
動作確認1では「PicoW/Pico2W」で測定したデータをBluetooth通信で受信して、パソコン上で確認する方法を紹介します。
・動作紹介
サンプルプログラムを書き込むと、「PicoW/Pico2W」基板上のLEDが1秒ごとに点灯/消灯を繰り返し、基板内部の温度データが1秒ごとにBluetooth通信で送信されます。
データの確認には「ArduinoIDE」のシリアルモニタを使用します。
シリアルモニタを起動すると、下画像のように、1秒ごとに受信した温度データが確認できます。

・サンプルプログラム
サンプルプログラムは以下になります。
コピペで貼り付けて書き込んでください。コピーは下の黒塗り部右上のアイコンクリックでもできます。
#include <SerialBT.h> // Bluetooth通信用ライブラリ
// 変数宣言
const int ledPin = LED_BUILTIN; // LEDの端子番号を取得
bool ledState = HIGH; // LED状態格納用(HIGH 点灯/LOW 消灯)
// 初期設定 ----------------------------------------------------------
void setup() {
Serial.begin(9600); // USBシリアル通信を初期化
SerialBT.setName("Pico_BT"); // Bluetoothデバイス名を設定
SerialBT.begin(9600); // Bluetooth通信を初期化
pinMode(ledPin, OUTPUT); // LED端子を出力設定
}
// メイン ------------------------------------------------------------
void loop() {
// Pico内蔵の温度センサの値を取得
float temp = analogReadTemp(); // 温度データアナログ値を取得
String tempStr = "Temp: " + String(temp) + "°C"; // 送信データ成形
// Bluetooth通信で温度データを送信
SerialBT.print("BT:"); // Bluetooth通信なら「BT:」付
SerialBT.println(tempStr); // 温度データ送信
// USBシリアル通信でも温度データを送信
Serial.print("SR:"); // USBシリアル通信なら「SR:」付
Serial.println(tempStr); // 温度データ送信
// LED点滅処理(正常動作確認用)
ledState = !ledState; // LEDの状態を反転
digitalWrite(ledPin, ledState); // LED状態出力
delay(1000); // 1秒待機(データ送信間隔)
}
・ArduinoIDEのシリアルモニタで動作確認
サンプルプログラムを書き込んで、動作確認を行う手順は以下のようになります。

まずは上画像のように「ArduinoIDE」の開発画面にサンプルプログラムを貼り付けて[書き込みアイコン(→部)]をクリックして書き込みを開始します。

書き込みが完了したら、上画像のように[ツール]→[ポート:”(ここは環境によって異なります)”]をクリックして表示される[COM番号(Generic RP2350,〜)]をクリックしてチェックマークがついていることを確認してください。

次に上画像のように虫眼鏡の[シリアルモニタアイコン]をクリックします。

「ArduinoIDE」のウインドウ下に「シリアルモニタ」が表示されます。
通信速度は「9600baud」に設定してください。
シリアルモニタには「SR:」に続けて温度データが1秒ごとに表示され続けますが、これは有線のUSBケーブルで受信したデータです。
Bluetooth通信を行うためにはパソコンとのペアリングを行う必要があります。
ペアリング方法はページ上のこちら→「パソコンとのペアリング方法」を参照してください。

ペアリング後に上画像のように[ポート:」を確認すると、新たなCOM番号が2つ増えています。
私の環境では増えた2つのうち数値の大きいCOM番号が「Bluetooth通信」ポートでしたのでこれを選択します。

「Bluetooth通信」が開始されると上画像のように「SR:」に続けて表示されていた温度データが「BT:」に続けて表示されるようになります。
「Bluetooth通信」でデータ受信の確認ができたら、パソコンと接続ケーブルを外して、「PicoW/Pico2W」単体で電源供給してもデータの受信ができるので、試してみてください。

再度プログラムの書き込みを行う場合は、「PicoW/Pico2W」をパソコンと接続して上画像のように「有線のCOM番号」を選択してから行ってください。
5.動作確認2:Bluetooth通信で遠隔操作
動作確認2ではパソコンから「PicoW/Pico2W」基板上のLEDを「Bluetooth通信」による遠隔操作で「ON/OFF」させる「Lチカ」の動作確認を行います。
また、「PicoW/Pico2W」基板上の「BOOTSEL」ボタンを利用して、ボタンを押すごとにLEDを「点灯/消灯」させるようにして、LEDの状態が変化した時にパソコン側で確認できる、稼働監視も行います。
・動作紹介
今回の動作確認は「ArduinoIDE」を2つ起動して以下のように行います。

左側が有線USB接続のシリアルモニタで、右側がBluetooth接続のシリアルモニタです。
Bluetooth側のシリアルモニタから「PicoW/Pico2W」基板へ「ON」という文字列を送信すると基板上のLEDが点灯します。「OFF」という文字列を送信するとLEDは消灯します。
有線USB接続側のシリアルモニタには「Bluetooth通信」で送信されてきた文字列データ「ON/OFF」が表示され、LED点灯時は「LED ON!」消灯時は「LED OFF!」が表示されます。
基板上の「BOOTSEL」ボタンを押すごとにLEDが点灯/消灯を繰り返し、それぞれのシリアルモニタにはLEDの状態が変化するごとに「LED Change!」が表示されます。
・サンプルプログラム
サンプルプログラムは以下になります。
コピペで貼り付けて書き込んでください。コピーは下の黒塗り部右上のアイコンクリックでもできます。
#include <SerialBT.h> // Bluetooth通信用ライブラリ
// 変数宣言
const int ledPin = LED_BUILTIN; // LEDの端子番号を取得
bool ledState = HIGH; // LED状態格納用(HIGH 点灯/LOW 消灯)
bool buttonState = LOW; // BOOTSELボタン状態格納用
// 初期設定 ----------------------------------------------------------
void setup() {
Serial.begin(9600); // USBシリアル通信の初期化
SerialBT.setName("Pico_BT"); // Bluetoothデバイス名を設定
SerialBT.begin(9600); // Bluetooth通信の初期設定
pinMode(ledPin, OUTPUT); // LED端子を出力設定
}
// メイン ------------------------------------------------------------
void loop() {
// Bluetooth受信データ処理
if (SerialBT.available()) { // Bluetooth受信データがあれば
String receivedData = ""; // 受信データ格納用文字列初期化
while (SerialBT.available()) { // データがなくなるまで繰り返す
char c = SerialBT.read(); // 1文字読み取る
receivedData += c; // 文字列に追加
}
SerialBT.print(receivedData); // 受信データをそのまま返す
Serial.println(receivedData); // 受信したデータをUSBシリアルモニタに表示
if(receivedData == "ON") { // 受信データが「ON」なら
ledState = HIGH; // LED状態HIGH(点灯)
Serial.println("LED ON!"); // USBシリアルモニタ表示
}
if(receivedData == "OFF") { // 受信データが「OFF」なら
ledState = LOW; // LED状態LOW(消灯)
Serial.println("LED OFF!"); // USBシリアルモニタ表示
}
}
// BOOTSELボタンONでLED状態反転、Bluetoothデータ送信
if (BOOTSEL == HIGH && buttonState == LOW) { // BOOTSELボタンがON かつ BOOTSELボタン状態がOFFなら
buttonState = HIGH; // BOOTSELボタン状態をHIGHへ
ledState = !ledState; // LED状態反転
SerialBT.println("LED Change!"); // Bluetoothシリアルデータ送信
Serial.println("LED Change!"); // USBシリアルモニタ表示
}
if (BOOTSEL == LOW) { // BOOTSELボタンがOFFなら
buttonState = LOW; // BOOTSELボタン状態をLOWへ
}
digitalWrite(ledPin, ledState); // LED出力実行
delay(100); // 遅延時間
}
・ArduinoIDEのシリアルモニタで動作確認
動作確認にはArduinoIDEのシリアルモニタを使用しますが、有線のUSB接続のシリアルモニタと無線のBluetooth接続のシリアルモニタの両方を使用したいため、下画像のように「ArduinoIDE」を2つ起動して並べて表示しておくと、両方の通信内容がリアルタイムで確認できます。

「ArduinoIDE」を2つ起動したら、左側にサンプルプログラムをコピペで貼り付けて、下画像のようにポートの設定を確認してから書き込みを行います。

左側の「ArduinoIDE」のポート設定は、上画像のように有線のUSBポート「COM6(番号は環境によります)(Generic RP2350〜)」を選択してください。

右側の「ArduinoIDE」のポート設定は、上画像のように無線のBluetooth通信ポート「COM7(番号は環境によります)」を選択してください。

両方の「ArduinoIDE」で上画像のように[虫眼鏡アイコン]をクリックしてシリアルモニタを起動します。
右側のBluetooth接続のシリアルモニタの「デリミタ(送信メッセージの末尾につけるもの)」は「改行なし」に設定しておいてください。

右側のBluetooth接続のシリアルモニタに「ON」を入力して[Enterキー]を押すと、下画像のように基板上のLED(画像右上)が点灯します。


右側のシリアルモニタに「OFF」を入力して[Enterキー]を押すと、LEDは消灯します。

上画像のように基板上の「BOOTSELボタン」を押すと、基板上のLEDが点灯していれば消灯、消灯していれば点灯します。

「BOOTSELボタン」を押して、基板上のLEDが点灯すると上画像のように「LED Change!」が両方のシリアルモニタに表示され、LEDの状態が変化したことが確認できます。

もう一度「BOOTSELボタン」を押して、基板上のLEDが消灯すると上画像のように「LED Change!」が両方のシリアルモニタに表示され、LEDの状態が変化したことが確認できます。
6.応用編:自作Pythonアプリで動作確認
ここまでは、動作確認に「ArduinoIDE」のシリアルモニタを使用しましたが、毎回文字列データを送信していては実用性がありません。
ここからは簡単なPythonアプリを使用して、受信データを確認したり、パソコン画面上のボタン操作で遠隔操作する方法を紹介します。
・動作確認1:遠隔データ取得、CSV保存データをExcelで確認
動作確認1の応用編として、Pico基板内の温度データを自作のPythonアプリで受信して、CSVデータとして保存して、Excelで確認する方法を紹介します。
使用したPythonアプリは、以前紹介した以下の記事の記録機能付シリアルモニタを使用します。

pythonのインストール方法については以下のリンクで詳しく紹介しています。

受信するデータは数値だけの方が後でExcelでグラフ表示する等で扱いやすいため、サンプルプログラムは「21,22行目」を修正した、以下のものを使用します。
サンプルプログラムは以下になります。
コピペで貼り付けて書き込んでください。コピーは下の黒塗り部右上のアイコンクリックでもできます。
#include <SerialBT.h> // Bluetooth通信用ライブラリ
// 変数宣言
const int ledPin = LED_BUILTIN; // LEDの端子番号を取得
bool ledState = HIGH; // LED状態格納用(HIGH 点灯/LOW 消灯)
// 初期設定 ----------------------------------------------------------
void setup() {
Serial.begin(9600); // USBシリアル通信を初期化
SerialBT.setName("Pico_BT"); // Bluetoothデバイス名を設定
SerialBT.begin(9600); // Bluetooth通信を初期化
pinMode(ledPin, OUTPUT); // LED端子を出力設定
}
// メイン ------------------------------------------------------------
void loop() {
// Pico内蔵の温度センサの値を取得
float temp = analogReadTemp(); // 温度データアナログ値を取得
String tempStr = "Temp: " + String(temp) + "°C"; // 送信データ成形
// Bluetooth通信で温度データの値のみを送信
SerialBT.printf("%.1f\n", temp); // 温度データ送信(デリミタ:改行)
// USBシリアル通信でも温度データを送信
Serial.print("SR:"); // USBシリアル通信なら「SR:」付
Serial.println(tempStr); // 温度データ送信
// LED点滅処理(正常動作確認用)
ledState = !ledState; // LEDの状態を反転
digitalWrite(ledPin, ledState); // LED状態出力
delay(1000); // 1秒待機(データ送信間隔)
}
Pythonアプリのシリアルモニタを使用した動作確認の様子は以下になります。
「シリアルモニタ」のpythonのアプリの使用方法は以下のリンクで詳しく紹介しています。

サンプルプログラムを書き込んだらPythonアプリの「シリアルモニタ」を起動します。

上画像のような「シリアルモニタ」が表示されたら[ポート選択]右の[ドロップダウンリスト]からペアリング済みのBluetooth通信の[COM番号]を選択して[接続ボタン]を押すと、「Pico」からデータが送信されて表示されます。

[記録ボタン]を押すと「pythonアプリ」の実行ファイルがあるフォルダに受信データが「タイムスタンプ」付で「CSV」ファイルに保存されます。

保存された「CSV」ファイルを開いたものは上画像のようになります。

「CSV」ファイルをExcelで開くと上画像のようにセルごとに表示され、グラフの表示等、データ分析に利用することができるようになります。
・動作確認2:パソコンからON/OFFボタンでLチカ
動作確認2の応用編として、パソコン画面の[ON/OFFボタン]でPico基板上のLEDデータの「点灯/消灯」を行う方法を紹介します。
[ON/OFFボタン]は自作のPythonアプリを使用します。
[ON/OFFボタン]を表示させるPythonアプリのサンプルプログラムは以下になります。
コピペで貼り付けて実行してください。コピーは下の黒塗り部右上のアイコンクリックでもできます。
import tkinter as tk
from tkinter import ttk
import serial
import serial.tools.list_ports
class SerialApp:
def __init__(self, root):
self.root = root
self.root.title("Serial Communication")
self.root.geometry("300x130")
# 通信ポートの取得とウィジェットの配置
ttk.Label(root, text="通信ポート").grid(row=0, column=0, sticky="ew")
self.port_combobox = ttk.Combobox(root, state="readonly", values=self.get_serial_ports())
self.port_combobox.grid(row=0, column=1, sticky="ew")
self.port_combobox.bind("<<ComboboxSelected>>", self.port_selected)
# 通信速度の設定
ttk.Label(root, text="通信速度").grid(row=1, column=0, sticky="ew")
self.baud_rate_combobox = ttk.Combobox(root, state="readonly", values=[9600, 115200, 38400])
self.baud_rate_combobox.set(9600) # 初期値
self.baud_rate_combobox.grid(row=1, column=1, sticky="ew")
# ONボタン
self.on_button = ttk.Button(root, text="ON", command=self.send_on, width=20)
self.on_button.grid(row=2, column=0, columnspan=2, pady=(5, 0), padx=10)
# OFFボタン
self.off_button = ttk.Button(root, text="OFF", command=self.send_off, width=20)
self.off_button.grid(row=3, column=0, columnspan=2, pady=(5, 0), padx=10)
self.serial_connection = None
def get_serial_ports(self):
"""利用可能なシリアルポートのリストを取得"""
ports = [p.device for p in serial.tools.list_ports.comports()]
return ports
def port_selected(self, event):
"""選択されたポートに接続"""
selected_port = self.port_combobox.get()
if self.serial_connection and self.serial_connection.is_open:
self.serial_connection.close()
self.serial_connection = serial.Serial(selected_port, int(self.baud_rate_combobox.get()))
def send_on(self):
"""'ON'メッセージを送信"""
if self.serial_connection and self.serial_connection.is_open:
message = "ON"
self.serial_connection.write(message.encode('utf-8'))
def send_off(self):
"""'OFF'メッセージを送信"""
if self.serial_connection and self.serial_connection.is_open:
message = "OFF"
self.serial_connection.write(message.encode('utf-8'))
def on_closing(self):
"""アプリ終了時のクリーンアップ処理"""
if self.serial_connection and self.serial_connection.is_open:
self.serial_connection.close()
self.root.destroy()
if __name__ == "__main__":
root = tk.Tk()
app = SerialApp(root)
root.protocol("WM_DELETE_WINDOW", app.on_closing) # アプリを閉じる際の処理
root.mainloop()
Pythonアプリを使用した動作確認の様子は以下になります。
まずはWindowsで「コマンドプロンプト」を起動して、以下のように上記の「python」プログラム(メモ帳等にコピペで貼り付けてファイル名を拡張子ごとbutton_on_off.pyに変更して保存)を実行します。
以下の例では、上記のファイルをファイル名「button_on_off.py」として[Documents/python]フォルダに保存していた場合の例です。
pythonのインストール方法については以下のリンクで詳しく紹介しています。

実行ファイルが保存されているフォルダへ移動
cd Documents/python
pythonプログラムを実行
python button_on_off.py
実行すると以下のようなpythonアプリが起動します。

アプリが起動したら上画像のように[通信ポート]右の[ドロップダウンリスト]からペアリング済みのBluetooth通信の[COM番号]を選択します。

ペアリングが完了してから[ONボタン]を押すと

「Pico」基板上のLED(上画像右上)が点灯します。

[OFFボタン]を押すと

「Pico」基板上のLED(上画像右上)が消灯します。
7.まとめ
「Raspberry Pi Pico2W」でBluetooth通信を使用して、遠隔操作やデータ取得をする方法をサンプルプログラムを使用して詳しく紹介しました。
「Pico2W」は「PicoW」よりコントローラのクロック速度が「133MHz」から「150MHz」になる等、機能アップしていますが使用方法は同じです。
Bluetooth通信の使い方については、「Arduino」のライブラリ「SerialBT」を使用すれば比較的簡単に、通信を行うことができ、遠隔操作やデータ取得を行うことができます。
Bluetooth通信と言っても通信するデータはシリアル通信(UART)と同じ文字データです。
動作確認は開発環境の「ArduinoIDE」の「シリアルモニタ」で簡単に行うことができます。
「ArduinoIDE」を2つ起動して、1つは有線のUSBシリアルデータを確認しながら、もう1つはBluetooth通信のシリアルデータを確認すると作業効率が良いと思います。
シリアルモニタでの動作確認では文字列データの送信による動作確認となりますが、より実用的に使用するなら、「python」の「pyserialライブラリ」でシリアル通信の制御を行い、「tkinter」でGUIアプリを作成すれば、遠隔操作やデータ取得も比較的容易に行うことができるようになります。
今回は「ArduinoIDE」を使用した「C言語」による動作確認を行いました。
標準で使用できるライブラリ「SerialBT」は使いやすいのですが「PicoW」基板同士でペアリングして通信を行う機能は実装されていないため、他のライブラリに頼る必要がありそうです。
今後は「PicoW」基板同士で通信を行う方法や、「python」を使用してBluetooth通信を行う方法等も紹介できればと思います。

コメント