注目キーワード

【Arduino】Raspberry Pi Pico W でたくさんのLEDを光らせる!Arduinoプログラミング!

すけろく
Raspberry Pi Pico Wが、Arduinoでプログラミング
できることは分かった。
げんろく
そうだな。
意外とArduinoのライブラリで動く。
すけろく
ああ。
ここらへんで、たくさんのLEDでも光らせてみないか?
げんろく
よし、LEDストラップを光らせてみるか!
今回は記事では、「Raspberry Pi Pico W」をArduinoでプログラミングします。
M5Stack社が販売している「M5Stack用NeoPixel互換 LEDテープ」(LEDストラップ)を、Raspberry Pi Pico Wから制御して、いろんなパターンで光らせてみます。
Raspberry Pi Pico W でLEDストラップを光らせた様子
Raspberry Pi Pico W でLEDストラップを光らせた様子
Raspberry Pi Pico W」は、Raspberry Pi財団が独自に開発したARM Cortex M0+デュアルコアのRP2040マイコンを搭載した開発基板です。
同じチップが搭載されている「Raspberry Pi Pico」の機能に加えて、Wi-Fiや、Bluetooth(今後サポートか?)といった通信機能が搭載されています。
MicroPythonでのプログラミングが主ですが、Arduino IDEでもプログラムを書き込むことができます。
この記事ではArduino IDEを使ったプログラミング例を紹介します。
この記事の前提となる「Raspberry Pi Pico W」のはじめかたについては、次の記事で紹介しています。
関連記事

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

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

ピンヘッダ実装済み
created by Rinker
ノーブランド品
¥2,210 (2024/04/26 14:07:05時点 Amazon調べ-詳細)
ピンヘッダを自分ではんだ付けするもの
created by Rinker
Raspberrypi
¥1,635 (2024/04/26 05:52:43時点 Amazon調べ-詳細)

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

今回は、この「Raspberry Pi Pico W」から、次のLEDストラップをコントロールして光らせるプログラミングを行います。
M5Stack用NeoPixel互換 LEDテープ 10 cm
10㎝の長さのLEDストラップです。LEDが15個実装されています。
商品には10㎝の他にも、20㎝、50㎝、100㎝、200㎝があります。10㎝のものはかなり短めのものです。両端にGroveコネクタ(HY2.04P)のメスがついているものになります。
(写真は10㎝以上の長さの商品のイメージです。)

LEDストラップの仕組み

今回使用するLEDは、制御用信号の線に信号を送ることで、LEDの光の色などを調整することができます。

LEDの仕組みについては、次の記事に詳しく紹介していますので、ぜひご覧ください。

LEDのしくみについての紹介は、こちら!

関連記事

この記事では、M5StickCとLED搭載の冷却ファンを使ったLED発光制御の方法について紹介します。 前回は、M5StickCで冷却ファンを使った回転速度制御をおこないましたが、今回はLEDです。 使用するLEDは、複数のLEDを1個[…]

今回使う「Raspberry Pi Pico W」と「M5Stack用NeoPixel互換 LEDテープ」(LEDストラップ)のケーブル接続は、次のような構成にします。
もちろん「Raspberry Pi Pico W」の他のGPIOを使っても構成できます。
Raspberry Pi Pico W とLEDストラップの結線図
Raspberry Pi Pico W とLEDストラップの結線図
今回使う「Raspberry Pi Pico W」と「M5Stack用NeoPixel互換 LEDテープ」(LEDストラップ)のケーブルの対応は、次のような構成にします。
Raspberry Pi Pico W 側 M5Stack用NeoPixel互換 LEDテープ側 5V電源
GND(ー) GND(-) GND(-)
Vin(+) Vin(+)
LED制御信号用(G16) LED制御信号(PWM)

回路を作るのに準備したものは次の通りです。

created by Rinker
サンハヤト
¥1,544 (2024/04/25 14:26:50時点 Amazon調べ-詳細)
安心のサンハヤト。両端に「+」と「ー」のラインがあります。
電圧の違う回路を扱う場合に便利なブレッドボードです。
最初はこれが一枚あるとよいと思います。
ブレッドボードとマイコンなどをつなぐ配線材です。
オス(pin)ーオス(pin)、オス(pin)ーメス(コネクタ)、メス(コネクタ)ーメス(コネクタ)がセットになっています。100mmの線になります。いろいろな色があるので配線をわかりやすく分けられます。
電子回路の試作を行う際に使用するツールです。
いろんな長さのものがセットになり、保管用のボックスもついています。
電源アダプター用のDCジャック、UEBなどが入力として使えます。
ブレッドボードに差し込んで使用します。3.3V と5Vを切り替えて使えます。
電圧とブレッドボードへの差し込み方向を間違えないようにしましょう!
100V電源を5V4Aに変換する電源アダプターです。
PSE認証付きのものを購入しましょう!

LEDストラップは、Groveコネクタで接続しますが、「Raspberry Pi Pico W」側は、Groveコネクタは持っていません。

そこで、購入することができる、「Groveケーブル(200mm)」を2つに切断し、ブレッドボード用にコネクタ(QIコネクタ)を付けました。

ピンヘッダをつければ、ブレッドボードに接続できます。

Groveコネクタをブレッドボード対応!
Groveコネクタをブレッドボード対応!

ケーブルの作成に使った商品はこちらです

created by Rinker
Seeedstudio
¥699 (2024/04/25 20:53:40時点 Amazon調べ-詳細)

ケーブルとコネクタの種類や作成方法は、次の記事を確認してください!

関連記事

電子工作ではんだ付けとともに欠かせないのが、「ケーブル作り」。 電子部品やコンピュータ、モーターなどの各部品はいろいろな形状のコネクタを持っています。そこで、ケーブルの端を接続するものの規格に合わせることが必要になります。 また[…]

実際にブレッドボード上で接続させたイメージは、次のようになりました。

Raspberry Pi Pico W とLEDストラップの接続イメージ
Raspberry Pi Pico W とLEDストラップの接続イメージ
ブレッドボードと透過型ディスプレイをまとめて固定しているホルダーが気になった方、
「ブレッドボードホルダー」については、こちらの記事もどうぞ!
関連記事

すけろく ぬぉーーー! げんろく どうした? イライラしておるの~ すけろく ブレッドボードとマイコンで回路を作っているのだが マイコンに配線すると、ブレッドボード側が外れて[…]

LED制御で使用できるArduino向けライブラリ

LEDをArduinoで使いたときには、次のライブラリを利用できます。

Adafruit NeoPixel Library

Adafruit 社が販売しているLEDストリップなどを制御するためのArduinoライブラリです。
Adafruit社の製品で使用されているLEDは「WS2812B」や「SK6812」が使われているものがあり、今回のようなものも同様に制御できます。

 GitHubのライブラリページはこちら(Adafruit NeoPixel Library)

FastLED

adafruit(Neopixel、DotStar、LPD8806)、Sparkfun(WS2801)、aliexpressなどで販売されているものなど、さまざまなLEDチップセットを簡単かつ効率的に制御するためのライブラリです。

LEDへの書き込みに加えて、このライブラリには、RGB値を操作するための高性能8ビット計算用の関数や、ピンやSPIハードウェアへのアクセスを抽象化するための低レベルクラスが含まれています。

 GitHubのライブラリページはこちら(FastLED)

上記の2つのライブラリは、Arduino IDEのライブラリマネージャでダウンロード、設定ができます。

ライブラリのインストールは、次の記事で紹介しています。

関連記事

本記事は、Arduino IDE 1.8.xバージョンのライブラリ管理方法を紹介した記事です。 Arduino IDEは、より新しいバージョン「2.0.x」が発表されています。     機能がよりリッチになった「Ardu[…]

今回は、「FastLED」を使用します。

ただし、本記事の執筆時点(2023年4月)で以下の点に注意してください。

Arduino IDEでインストールできる、最新の「FastLED 3.5.0」では、Raspberry Pi Pico W のRP2040チップには対応していない。

しかし、GitHub上の最新ソースでは、「Raspberry Pi Pico W」のRP2040 チップへの対応がされています。

以下の手順でライブラリを更新することで、使用できますので安心してください。

 

 FastLEDのRaspberry Pi Pico W(RP2040)対応

前提条件

Arduino IDE 2,0のライブラリ管理機能から「FastLED 3.5.0」を一度インストール済みであること

所要時間:10分程度

左のボタンを押して、FastLEDのGitHub
へ移動します。

画面右上にある「Code」ボタンを押して、
「Download Zip」をクリックします。

ダウンロードが完了すると
「FastLED-master.zip」というファイルが
保存されます。

「FastLED-master.zip」を右クリックして、
「すべて展開」を選択して解凍します。
5
「FastLED-master」フォルダが作成され、
その中にソースコードを含むファイルが
配置されます。「FastLED-master」の配下にある
「FastLED」ー「FastLED」の
ファイル、フォルダを全選択し、
「コピー」します。
6
Arduino IDEのライブラリフォルダを開き
「FastLED」フォルダを開きます。
先ほどコピーした内容を、
「FastLED」フォルダにペーストします。


※ファイルの上書き確認画面が表示されます。
「すべて上書き」をしてください。
※Arduino IDEのライブラリフォルダは通常、
以下の場所にあります。
C:\Users\”ユーザ名”\Documents\Arduino\libraries\FastLED

7
上書きした「FastLED」フォルダ内の
「Src」フォルダにある
「led_sysdefs.h」を、メモ帳で開きます。

#elif defined(ARDUINO_ARCH_RP2040)

8
「led_sysdefs.h」に左の記述があることを
確認し、ファイルを閉じます。
以上で、「FastLED」のRaspberry Pi Pico W(RP2040)対応手順は完了です。

Raspberry Pi Pico W でLEDストラップを光らせてみる

では実際にLEDストラップを光らせるプログラムを書き込んでいきましょう。

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

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

 Arduino IDE スケッチ例

 Raspberry Pi Pico Wへの書き込み 

2回目以降

  1.  Raspberry Pi PicoをパソコンにUSB接続します。
  2.  Arduino IDEで前述のプログラムを記載して、 「ファイル」メニューから「名前を付けて保存」で任意の名前を付けて保存します。
  3. 「ツール」メニューから「ボード」情報を確認し、次のものを選択します。
    「Raspberry Pi Pico/RP2040」-「Raspberry Pi Pico W」
  4. 「シリアルポート」にマイコンを接続したCOMポートが指定されているかも確認します。
  5. 「ツール」メニューから「シリアルモニタ」を選択してシリアルモニタを起動します。(転送速度は「9600」です)
  6. 「スケッチ」メニューから「マイコンボードに書き込む」を選択します。

プログラム実行結果

5V電源をオンにし、書き込みが完了すると、以下のようにLEDストラップが光ります。

Raspberry Pi Pico W でLEDストラップを光らせた様子
Raspberry Pi Pico W でLEDストラップを光らせた様子

編集後記

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

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/26 14:07:05時点 Amazon調べ-詳細)
ピンヘッダを自分ではんだ付けするもの
created by Rinker
Raspberrypi
¥1,635 (2024/04/26 05:52:43時点 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のデバッグができるぞ! やっとできたプログラムを動かしてみると […]