注目キーワード

【Arduino】Raspberry Pi Pico W へBluetoothシリアル通信して、LEDをコントロールする!Arduinoプログラミング!

すけろく
Raspberry Pi Pico WのBluetoothを
使ってみたいの~
げんろく
うむ。そうだな。
そろそろ試してみてもよかろう。
すけろく
しかしどんなことができるかの?
げんろく
Serial通信をBluetooth経由でやってみるのはどうだ?
せっかくなのでLEDを遠隔で操作してみよう。
今回は記事では、「Raspberry Pi Pico W」をArduinoでプログラミングします。
Raspberry Pi Pico W」に搭載されているBluetooth機能を使って、パソコンからワイヤレスで、シリアル通信で命令を出せるようにします。
前の記事で紹介した、たくさんのLEDがついたLEDストラップを光らせるプログラムをもとに、Bluetooth経由でのシリアル通信で、LEDの光らせ方を制御してみます。
Raspberry Pi Pico W」は、Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアのRP2040マイコンを搭載した開発基板です。
同じチップが搭載されている「Raspberry Pi Pico」の機能に加えて、Wi-Fiや、Bluetooth(今回試用します。)といった通信機能が搭載されています。
MicroPythonでのプログラミングが主ですが、Arduino IDEでもプログラムを書き込むことができます。

この記事ではArduino IDEを使ったプログラミング例を紹介します。

動作確認は以下のArduino IDEで行っています。
● Arduino IDE バージョン: 2.1.0
この記事で使ったLEDの光らせ方は、次の記事で紹介しています。
関連記事

すけろく Raspberry Pi Pico Wが、Arduinoでプログラミング できることは分かった。 げんろく そうだな。 意外とArduinoのライブラリで動く。 […]

あわせて読みたい「Raspberry Pi Pico W」のはじめかた
関連記事

すけろく ついに、国内でもRaspberry Pi Pico Wを手に入れたぞ! げんろく Wi-Fiモジュールがついているので、 国内の技適取得が必要だったからな。 すけろ[…]

記事内でご紹介する「Raspberry Pi Pico W」はこちら!

ピンヘッダ実装済み
created by Rinker
ノーブランド品
¥2,210 (2024/04/20 13:18:02時点 Amazon調べ-詳細)
ピンヘッダを自分ではんだ付けするもの
created by Rinker
Raspberrypi
¥1,650 (2024/04/20 04:28:42時点 Amazon調べ-詳細)

Arduino、C/C++、MicroPythonに対応している組み込み開発キットです。
正確なタイマ機能、温度センサーなどを備えたモデルです。ディスプレイ等がないため、消費電力を抑えた構成をとることができます。いろいろ遊べますよ~

 

今回の目標は、「Raspberry Pi Pico W」をパソコンにBluetoothで接続します。

Bluetooth接続を使って、「Raspberry Pi Pico W」へLED制御用のコマンドをシリアルで与えます。

難しい言葉でいうと、「Serial over Bluetooth」といったところでしょうか。

 動作イメージ

 

 処理の流れ

処理の流れは次の通りです。

  1. Raspberry Pi Pico Wを起動します
  2. パソコンの「Bluetoothデバイスの追加」でRaspberry Pi Pico Wを追加します
  3. 接続後、COMポートとして認識されます
  4. パソコンのArduino IDEから認識されたCOMポートを選択し、シリアルモニタを起動します
  5. シリアルモニタからLEDの制御コマンドを入力して実行します
  6. Raspberry Pi Pico WからLEDに制御信号が送られ、発光パターンが変化します

Raspberry Pi Pico W でBluetooth シリアル接続を使うには

Raspberry Pi Pico WにBluetoothシリアル接続を行うためには、Arduino のライブラリ「SerialBT」を使用します。

今回使用するRaspberry Pi Pico W用のボードマネージャが、Arduinoのライブラリに対応しているので利用できます。

接続情報の設定

Raspberry Pi Pico W 側でBluetooth シリアル接続を有効にするためには、次の設定が必要です。

ライブラリ定義 説明
#include <SerialBT.h>
Bluetooth シリアル接続を定義したライブラリを
インクルードします。
Arduino スケッチの最初に記載します。
関数 説明
SerialBT.begin();
Bluetooth シリアル接続を開始します。
Arduino スケッチの「Setup」関数に記述します。

Bluetoothシリアル通信のやり取り

Bluetoothシリアル接続での入出力を行うために使用する主な関数は次のとおりです。

他にもありますので、ぜひ確認してみてください。

関数 説明
SerialBT.available()
シリアル通信で受信しているデータがある場合に、
「True」になります。
データがある場合の判断に使います。
SerialBT.read()
シリアル通信で受信したデータを読み込みます。
出力先はcharになります。
SerialBT.readString()
シリアル通信で受信したデータをString(文字列)として
読み込みます。
出力先はStringになります。今回、こちらの関数を使ってパソコンから送信された
文字列を取得します。
SerialBT.write(char c)
シリアル通信で相手側へ文字を送信します。

プログラムの構成

Bluetoothシリアル接続を行い、パソコンから入力された文字列を取得する場合のプログラムの構成例は次の通りです。

Raspberry Pi Pico W をBluetoothシリアル接続してみる

では実際にプログラムを書き込んでいきましょう。

プログラム作成前に確認するポイント

プログラム作成前に、以下の点を押さえておいてください。

たくさんのLEDを発行制御するための方法

たくさんのLEDを発行制御するための方法は、次の記事で紹介しています。

LEDとRaspberry Pi Pico Wの接続方法も紹介していますので、事前に行ってください。

この記事で使ったLEDの光らせ方は、次の記事で紹介しています。
関連記事

すけろく Raspberry Pi Pico Wが、Arduinoでプログラミング できることは分かった。 げんろく そうだな。 意外とArduinoのライブラリで動く。 […]

Arduino IDEでプログラミングする

Arduino IDEを起動して、「ファイル」メニューから「新規ファイル」を選択し、表示されるスケッチに以下のように記述します。

 Arduino IDE スケッチ例

 Raspberry Pi Pico Wへの書き込み 

  1.  Raspberry Pi Pico WをパソコンにUSB接続します。
  2.  Arduino IDEで前述のプログラムを記載して、 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  3. 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
    「Raspberry Pi Pico/RP2040」-「Raspberry Pi Pico W」
  4. 「ツール」メニューからボートの設定部分にある「IP/Bluetooth Stack」の設定を次のものにします。
    「IPv4 + Bluetooth」
  5. 「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
    この時指定するCOMポートは、USBで優先接続したプログラム書き込み用のCOMポートです。
    注意しましょう。
  6. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

Raspberry Pi Pico WとのBluetoothシリアル接続

書き込みが完了後、以下の手順で、「Raspberry Pi Pico W」に接続します。

 


Raspberry Pi Pico W に電源を供給します。

パソコンのBluetoothデバイスを表示します。
Windowsの場合
「設定」の「Bluetoothとデバイス」です。


「デバイスの追加」を選択します。

「Bluetooth」を選択します。

 [PicoW Serial xx:xx:xx:xx~]というデバイスを選択します。

デバイスの認証番号が表示されますが、「接続」を押します。

Raspberry Pi Pico WがBluetoothデバイスとして認識されたことを確認します。

Arduino IDEを起動して、「ツール」の「ポート」設定に、追加されたCOMポートを設定します。
※2つのCOMポートが追加されることがありいますが、使用できるのはどちらか一方です。

Arduino IDEで「ツール」から「シリアルモニタ」を起動します。
10
シリアルモニタの上部にある入力ボックスに、命令を入力します。
※命令の種類は、後述するものを参照してください。

以上で、接続手順は完了です。

使用できる命令

今回作成したプログラムで実行できる命令は次の通りです。

命令は、小文字、大文字どちらでも対応できます。半角英字で入力してください。

命令 実行内容
OFF LEDをすべてOFFにします。
COUNT:RED
LEDを順番に点灯します。(色:赤)
COUNT:PURPLE LEDを順番に点灯します。(色:紫)
COUNT:BLUE LEDを順番に点灯します。(色:青)
COUNT:GREEN LEDを順番に点灯します。(色:緑)
SINGLE:RED 全てのLEDを点灯します。(色:赤)
SINGLE:PURPLE 全てのLEDを点灯します。(色:紫)
SINGLE:BLUE 全てのLEDを点灯します。(色:青)
SINGLE:GREEN 全てのLEDを点灯します。(色:緑)
RAINBOW 全てのLEDでグラデーションになるように点灯します。
ANIMATION グラデーションが動くように点灯します。

実行結果

次のようにLEDの点灯制御ができます。

 

編集後記

いかがだったでしょうか。

Bluetoothシリアル接続で命令を出せることで、Bluetoothの通信可能範囲であれば、ワイヤレスで制御することができますね!

Raspberry Pi Pico W」のプログラミングといえば、「microPython」と考えていましたが、Arduino IDEでプログラムできるとうれしいですね。

LEDストラップも無事光らせることができました。

これで、他のマイコンと同じArduino IDEでLEDを使ったプログラムの開発ができます!

Raspberry Pi Pico W」と同じRP2040というチップを搭載している機器にも使えるので応用ができそうです。

記事は、以上になります。

最後までご覧いただきありがとうございました。

記事内でご紹介する「Raspberry Pi Pico W」はこちら!

ピンヘッダ実装済み
created by Rinker
ノーブランド品
¥2,210 (2024/04/20 13:18:02時点 Amazon調べ-詳細)
ピンヘッダを自分ではんだ付けするもの
created by Rinker
Raspberrypi
¥1,650 (2024/04/20 04:28:42時点 Amazon調べ-詳細)

Arduino、C/C++、MicroPythonに対応している組み込み開発キットです。
正確なタイマ機能、温度センサーなどを備えたモデルです。ディスプレイ等がないため、消費電力を抑えた構成をとることができます。いろいろ遊べますよ~

Raspberry Pi Pico Wの他の記事はこちらからどうぞ!

すけろく うーむ。 どうしたものか。 げんろく どうした。 暗い顔をして。 すけろく カーモデルのウィンカー点滅を再現したくてな。 明滅回路を作ろうか悩んでおる。 げんろく ん!? そんなときは、メインプロセッサと切り離して 動作するPIOの出番ではないのか! この記事では、「Raspberry Pi  Pico/W」に実装されている「PIO(Programmable I/O」を実際に使ってみます […]

すけろく Raspberry Pi Pico/WのPIO機能を使ってUARTの送信には成功した。 しかし、まだ受信側ができていないのぉ。 げんろく そうだな。 今度は受信側を試してみるか。 すけろく どうせなら、パソコンから送った文字を返すような やり取りができるといいな。 げんろく よし。 UART送受信を実装してみよう。 この記事では、「Raspberry Pi  Pico/W」に実装されてい […]

すけろく Raspberry Pi Pico/WのPIO機能については前回調べた。 今度は実際に使ってみたいの~ げんろく そうだな。 実際にプログラムする際の注意事項などを見ていこう。 すけろく Arduino IDEでも使用できるのか? げんろく ああ。 使えるぞ! Arduino IDEで使う場合を例にやっていこう。 この記事では、「Raspberry Pi  Pico/W」に実装されている […]

すけろく Raspberry Pi Pico/Wには、PIOという機能があるらしいな。 げんろく そうだ。 UARTなどのインタフェース不足や、実装されていない機能を GPIOに対してプログラムできる機能だ。 すけろく Raspberry Pi Pico/Wをもっと知るために PIOを調べてみたい。 げんろく よし! PIOについて少し調べてみるか! この記事では、「Raspberry Pi  P […]

すけろく うーむ。 げんろく どうした浮かない顔して。 すけろく これまで、Raspberry Pi Pico / Wをいろいろ確認してきたが 外付けのボタンの認識ってやったかぇ? げんろく たしかに!まだ取り上げていない基本的なものがあるな よし、今回はボタン押下時の状態を Raspberry Pi Pico / Wで認識してみよう。 この記事では、「Raspberry Pi  Pico W」を […]

すけろく 宅内で使っているリモコンは、どういった仕組みで テレビなどをつけているのかな~? げんろく 赤外線を使って信号を送っているのだ。 すけろく しかし、たくさんある機器のリモコンが混信しないのは どういった仕組みなのかぇ? げんろく よし、今回は赤外線リモコンの通信を 調査してみるか! この記事では、「Raspberry Pi  Pico W」を使って、「赤外線リモコンの通信内容を分析する」 […]

すけろく うーむ。 対応付けが難しいな。 げんろく どうした? Raspberry Pi Picoで悩んでいるようだな。 すけろく Raspberry Pi PicoやPico Wの GPIOピンの情報がボード上にプリント されていないから資料との対応付けがやりづらくてな。 げんろく そうか。そういう課題があるのだな。 よし、解決するグッツを作って提供してみよう! 皆さんは、「Raspberry […]

すけろく うーむ。 モーターを毎回同じくらい回転させることはできんのかな。 げんろく DCモーターや、サーボモーターだと、 回転量を正確に制御することは難しいぞ。 すけろく では、何か解決策はあるのかぇ? げんろく ステッピングモーターというものがある。 モーターの回転をステップとして制御できる。 今回はこのあたりを動かしてみるか。 この記事では、「Raspberry Pi  Pico W」を使っ […]

すけろく 以前の記事で、Raspberry Pi Pico Wを Picoprobe経由でデバッグすることができた。 しかし、シリアルの入出力がArduino IDEで 読み込めないのだ。 げんろく そうだな。 Raspberry Pi PicoやRaspberry Pi Pico Wでは、 シリアル出力用の「Serial.println」では、 Picoprobe経由で取得できない。 すけろく […]

すけろく ん~。 このエラーの時の変数の値が知りたいな~ げんろく どうした? プログラムがうまく動かないのか? すけろく そうなのだ。 Raspberry Pi Pico Wでもデバック機能が使えると いいのだが。。。 げんろく ちなみに、Arduino IDE 2.1.0 のデバッグ機能で Raspberry Pi Pico / Wのデバッグができるぞ! やっとできたプログラムを動かしてみると […]