RP2040-zeroとWS2812 LEDで遊ぼう

RP2040-zeroもどきのピンアサイン

近年、手軽に扱えるマイクロコントローラーとして注目を集める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もどきのピンアサイン
      RP2040-zeroもどきのピンアサイン

      表面からのアクセス:

      • 電源系: 5V, GND, 3.3V
      • GPIO: 合計で20個のGPIOピンにアクセス可能です。各GPIOピンは、デジタル入出力はもちろん、PWM、SPI、I2Cなど多様な機能に対応しています
      • WS2812: GPIO16番に割り当たっているLEDです。
    • 裏面の特徴:
      RP2040-zeroもどき裏側ピンアサイン

      • 裏面には、追加のパッド端子が設けられてきます。

      • GPIO: 合計で9個のGPIOピンにアクセス可能です。各GPIOピンは、パッド端子なので、うまく使うのは難しそう

このようなピンアサインにより、限られたボードサイズながら多機能なプロジェクトに対応できるのが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の設定やその他の応用例についても詳しく紹介していく予定です。

2025-04-05DIY&修理

Posted by 納戸 工房