ドングル型マイコン基板 WaveShare RP2040-One

コンピュータ、組み込み

WaveShare の RP2040搭載の小型基板 RP2040-Oneを入手しました。
RP2040-Zeroほとんど一緒ですが、コネクタがType A(Male)のドングルタイプになっています。

RP2040-Zero と RP2040-One

主な仕様比較

比較項目RP2040-ZeroRP2040-One
外観
接続Type CTYPE A(Male)
フラッシュMemory2MB4MB
ADC44
I2C22
SPI21
GPIO※120
背面パッドパターンx9
20
背面パッドパターンx9
ボタンBOOT
RESET
BOOT
RESET
LEDGP16 WS2182GP16 WS2182
価格\650~\800\1,400~\1,700
※1 ピンヘッダで使用できるピン数

メーカーサイト

その他のRP2040搭載基板の一覧

RP2040-One

ピン配置

作成したピン配置表

公式のピン配置表

外観

直接パソコンやUSBハブに接続することができます。
ブレッドボードに挿して使用することもできます。
当方もTypeAコネクタの基板についてはいまだにピンヘッダをつけられずにいます。

使ってみて

普段はマイコン基板側がTypeCやMicroBが多いのですが、TypeAとして使えるドングルタイプは強度的な安心感はあります。

まだどのように使うと効果的なのか想像力が足りていませんが、創作ネタが出てきたら記事に使用と思います。

RP2040-Zero 互換基板

RP2040-Oneドングル型のZero。
背面のGPIOパッドも使えます。
RP2040-TinyUSBコネクタと本体を分離したモデル。
本体基板と離れた位置にリセットボタンやコネクタを設置できます。
背面のパッドはありません。
RP2040-MatrixRP2040-ZeroにWS2812bを25個実装したモデル。
リセットボタンやBOOTボタンが背面に移動したため使いにくいですが
煌びやかな演出ができます。
Pico bit RP2040Waveshare製ではないコンパチブル基板です。
RP2040-Zeroと遜色なく使うことができますが、入手性が良くない。
Super Mini RP2040Waveshare製ではないコンパチブル基板です。
リセットボタンがなく一部機能劣化があります。
MCUが上面にあるので、背面のパッドを使う場合は作業性が良いです。
ESP32-C3-ZeroESP32 C3搭載基板です。
後方のエッジスルーホールがなくなっていますが、
電源ピン周りは互換があります。
ESP32-S3-Zero記事準備中です。
ESP32 S3搭載基板です。
ピン周りはESP32 C3と同様のようです。
Zero規格では最速の基板です。

準備

使い方はRaspberrpPi Picoと同じですので、こちらのリンクを参照してください。

ライブラリ

Arduino IDEのボードマネージャからRP2040-One用のライブラリのインストールとボードの選択をします。
どちらも同じライブラリを使用します。
“変更する設定”にてメモリサイズを変更してください。

検索RP2040
ボードライブラリRaspberry Pi RP2040 Boards(x.x.x)※1
選択するボードRaspberry Pi RP2040 Boards(x.x.x) > Generic RP2040
変更する設定Tools > Flash Size > xxMB(no FS)※2
※1 x.x.x 動作確認は2.5.2
※2 RP2040-Zero は 2MB(no FS), RP2040-One は 4MB(no FS)

WS2812を制御するためのライブラリにはAdafruit NeoPixelライブラリを使用します。

検索neopixel
ライブラリ名Adafruit NeoPixel by Adafruit(x.x.x)※
※x.x.x Jul/2022 では 1.10.5

特別な機能のスケッチ

WS2812

スケッチの説明

Adafruit のAdafruit NeoPixel by Adafruitを使用します。

サンプルスケッチ

/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence//【スケッチの説明】

【スケッチの説明】
NeoPixel搭載RP2040基板で使用できます。
実装 W2812を点灯させます。
1秒間隔で、赤->緑->黄->青->紫->水->白 の順で点灯させます。

【バージョン情報】
 2022/7/6 : 新規
 2022/12/18 : RP2040-Zero用にBuilt In LEDのピン番号を変更 23 -> 16(RP2040-One共通)
 2022/12/25 : カラーパターン修正。(赤->緑->黄->青->紫->水->白で変化するように修正)
**********************************************************************/

#include <Adafruit_NeoPixel.h>

#define DIN_PIN 16            // NeoPixel の出力ピン番号はGP16
#define LED_COUNT 1           // LEDの連結数
#define WAIT_MS 1000          // 次の点灯までのウエイト
#define BRIGHTNESS 64        // 輝度
Adafruit_NeoPixel pixels(LED_COUNT, DIN_PIN, NEO_RGB + NEO_KHZ800);

void setup()
{
  pixels.begin();             //NeoPixel制御開始
}

void loop()
{
  pixels.clear();
  
  //pixels.Color(Red, Green, Blue)で、パレット情報を作成する。
  //赤点灯
  pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, 0));
  pixels.show();
  delay(WAIT_MS);

  //緑点灯
  pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, 0));
  pixels.show();
  delay(WAIT_MS);

  //赤 + 緑 で 黄点灯
  pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, BRIGHTNESS, 0));
  pixels.show();
  delay(WAIT_MS);

  //青点灯
  pixels.setPixelColor(0, pixels.Color(0, 0, BRIGHTNESS));
  pixels.show();
  delay(WAIT_MS);

  //赤 + 青 で 紫点灯
  pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, 0, BRIGHTNESS));
  pixels.show();
  delay(WAIT_MS);

  //緑 + 青 で 水点灯
  pixels.setPixelColor(0, pixels.Color(0, BRIGHTNESS, BRIGHTNESS));
  pixels.show();
  delay(WAIT_MS);

  //赤 + 緑 + 青 で 白点灯
  pixels.setPixelColor(0, pixels.Color(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS));
  pixels.show();
  delay(WAIT_MS);
}

1秒ごとに、LEDの色を変化させます。
赤->緑->黄->青->紫->水->白

結果

1秒ごとに色の変化が確認出来ました。
最大輝度はかなり明るいので、直視すると残影が残ります。

関連リンク

コメント

タイトルとURLをコピーしました