RP2040-zeroとWS2812 LEDで遊ぼう


近年、手軽に扱えるマイクロコントローラーとして注目を集めるRP2040シリーズ。今回は、その互換機であるRP2040-zeroを使って、基板上のRGB LED(WS2812)を点灯させる方法をご紹介します。RP2040-zeroはAliexpressで数百円程度で入手でき、低コストながら多彩なプロジェクトに活用できます。
RP2040-zeroの特徴
- 安価な互換機: Raspberry Pi Picoと同様のRP2040チップを搭載していますが、価格は数百円程度。Aliexpressで互換機を購入しましたが、Amazonでも販売しています
- オンボードLEDの違い: Raspberry Pi Picoに搭載されているGP25のLEDは搭載されていません。その代わり、基板上にはWS2812というRGB LEDが実装されています。
ピンアサイン
RP2040-zeroは、以下のようなピン配置となっており、用途に応じた柔軟な配線が可能です。
このようなピンアサインにより、限られたボードサイズながら多機能なプロジェクトに対応できるのがRP2040-zeroの魅力です。
WS2812 LEDの制御方法
WS2812は、個別に制御可能なRGB LEDとして人気があります。調べてみると、benevpi氏のpico_python_ws2812bなど、WS2812用のライブラリが多数存在することがわかりました。しかし、実はMicroPythonに標準搭載されているneopixelライブラリを使うだけで、十分にWS2812の制御が可能です。
環境構築について
Thonnyのインストール方法やRP2040-zeroの初期設定については、別の投稿で詳しく説明する予定です。今回は、既に環境が整っている前提で進めます。
コード例:LEDの点滅
以下のコードは、WS2812 LEDを点滅させるサンプルです。コード内で、GPIO16に接続されたLEDを使用しており、500ミリ秒ごとにLEDの点灯・消灯を繰り返します。
from machine import Pin import neopixel import time n = neopixel.NeoPixel(Pin(16), 1) while True: n[0] = (0,8,8) n.write() time.sleep_ms(500) n[0] = (0,0,0) n.write() time.sleep_ms(500)
コードのポイント
- Pinの指定: Raspberry Pi PicoのGP25が搭載されていないため、RP2040-zeroではGPIO16を使用しています。
- neopixelライブラリの活用: MicroPythonに標準搭載のライブラリを使うことで、追加のライブラリを導入せずにWS2812 LEDの制御が可能です。
- ループ処理: 無限ループ内でLEDの点灯と消灯を繰り返し、点滅を実現しています。
まとめ
RP2040-zeroは、安価で入手しやすく、プロジェクトのエントリーポイントとして最適なボードです。内蔵のWS2812 LEDを活用し、MicroPythonのneopixelライブラリを使えば、簡単にLED制御が可能になります。今後は、Thonnyの設定やその他の応用例についても詳しく紹介していく予定です。