Arduino環境で使用できる最小クラスの基板 Pimoroni の Tiny 2040を紹介します。
Tiny 2040
特徴
RP2040搭載基板では、SeedstudioのXIAO RP2040、RP2040-CORE-Aに次いで小型の基板。
面積状の際はほとんどないのに、XIAO RP2040より多くのピンを使用できる。
比較項目 | Tiny 2040 |
---|---|
外観 | |
接続 | Micro C |
フラッシュMemory | 8MB |
ADC | 4 |
I2C | 2 |
SPI | 1 |
GPIO※1 | 11 |
ボタン | BOOT RESET |
LED | フルカラーLED 青 GP20 緑 GP19 赤 GP18 |
価格 | \1,400~\1,700 |
[2023/10/15] RP2040-Zero記事から分離しました。
ピン配置
外観
比較 vs Waveshare RP2040-Zero
どちらも最小クラスの基板です。
RP2040 ZeroのほうがGPIOを多く引き出している分大きい。
ピン配置はよく似ていますが、RP2040-Zeroの拡張されたGP14, GP8 以外にGP15がTiny 2040ではGNDなので、置き換えがある場合は配慮が必要です。
フラッシュメモリが8Mあり大きなスケッチやデータが格納できるほか、小型基板でSWDがスルーホールで使用できる優位点があります。
使ってみて
小型の割にピンを多く使える点や、SWDがスルーホールで使用できるためデバッガーを使用したデバッグ作業ができる点がこの基板のメリットです。
リセットボタンやピン番号のシルク表示など、ついててくれると助かるユーティリティが自然に搭載されている上質な基板だと思います。
フルカラーLEDが搭載されていますが、各色要素を個別で制御するタイプなのでスケッチ上は直感的にプログラムできますが行数はかさばり気味です。
ライブラリなく使用できる点は良いですが、使用者の判断が分かれるところだと思います。
入手性は電子部品の通販サイトから購入できるため良い方だと思います。
気軽に使用していきたいところですが、価格があまり安くないので気安く使用しにくい点があります。
RP2040搭載最小基板
XIAO RP2040
RP2040デバッガーの記事
準備
使い方はRaspberrpPi Picoと同じですので、こちらのリンクを参照してください。
ライブラリ
Arduino IDEのボードマネージャからRP2040-Zero, Tiny 2040用のライブラリのインストールとボードの選択をします。
どちらも同じライブラリを使用します。
“変更する設定”にてメモリサイズを変更してください。
検索 | RP2040 |
ボードライブラリ | Raspberry Pi Pico/RP2040 by Earle F. Philhower,III ※1 |
選択するボード | Raspberry Pi RP2040 Boards > Generic RP2040 または Pimoroni Tiny 2040 |
変更する設定 | Tools > Flash Size > 8MB(no FS)※2 |
サンプルスケッチ
フルカラーLED
スケッチの説明
フルカラーLEDを点灯させます。
3色のLEDが1個に集約されたものですが、1色ずつ点灯させ混ぜ合わせることでフルカラーになります。
Tiny 2040 ではLowActiveになっているので、Lowが点灯、HIGHが消灯になります。
PWM制御では0に近いほど明るく、255に近いほど暗くなります。
1秒ごとに、LEDの色を変化させます。
赤->緑->黄->青->紫->水->白
サンプルスケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence//
【スケッチの説明】
Tiny2040基板で使用できます。
Built In LED(フルカラー)を点灯させます。
1秒間隔で、赤->緑->黄->青->紫->水->白 の順で点灯させます。
【バージョン情報】
2022/9/9 : 新規
***********************************************************************/
#define LED_R 18 //赤のピン番号
#define LED_G 19 //緑のピン番号
#define LED_B 20 //青のピン番号
#define WAIT_MS 1000 // 次の点灯までのウエイト
#define BRIGHTNESS 64 // 輝度
void setup()
{
pinMode(LED_R, OUTPUT);
pinMode(LED_G, OUTPUT);
pinMode(LED_B, OUTPUT);
}
void loop()
{
//Tiny 2040のLEDはLow Active なので、LOWで点灯
//赤点灯
Tiny_LED(BRIGHTNESS, 0, 0);
delay(WAIT_MS);
//緑点灯
Tiny_LED(0, BRIGHTNESS, 0);
delay(WAIT_MS);
//赤 + 緑 で 黄点灯
Tiny_LED(BRIGHTNESS, BRIGHTNESS, 0);
delay(WAIT_MS);
//青点灯
Tiny_LED(0, 0, BRIGHTNESS);
delay(WAIT_MS);
//赤 + 青 で 紫点灯
Tiny_LED(BRIGHTNESS, 0, BRIGHTNESS);
delay(WAIT_MS);
//緑 + 青 で 水点灯
Tiny_LED(0, BRIGHTNESS, BRIGHTNESS);
delay(WAIT_MS);
//赤 + 緑 + 青 で 白点灯
Tiny_LED(BRIGHTNESS, BRIGHTNESS, BRIGHTNESS);
delay(WAIT_MS);
}
//Build In LED を点灯させます。
//引数
//R : (0 to 255) 赤の輝度
//G : (0 to 255) 緑の輝度
//B : (0 to 255) 青の輝度
void Tiny_LED(const unsigned char R, const unsigned char G, const unsigned char B)
{
const unsigned char AnalogMax = 255;
analogWrite(LED_R, AnalogMax - R);
analogWrite(LED_G, AnalogMax - G);
analogWrite(LED_B, AnalogMax - B);
}
結果
1秒ごとに色の変化が確認出来ました。
混色はそれほどきれいに混ざりあっていないです。
トラブル
CPU Speed
現象
Tiny 2040のスケッチ書き込み後、フルカラーLEDが半発光状態でシリアル認識されなくなった。
書き込んだスケッチの動作もしない。
原因
CPU Speed に 133MHzを選択すると発生する模様。
因果は不明ですが、125MHz以下を選択すると期待通りの動作をしました。
generic RP2040ライブラリから選択できるCPU Speedの設定を確認してみると以下の結果になりました。
CPU Speed(MHz) | 動作可否 |
---|---|
50 | ○ |
100 | ○ |
125 | ○ |
133 | × |
150(Over Clock) | × |
175(Over Clock) | × |
200(Over Clock) | × |
225(Over Clock) | × |
250(Over Clock) | × |
300(Over Clock) | × |
対応
BOOTボタンを押して再起動し、初期化を行った。
CPU Speedを125MHz以下に設定して動作させた。
BOOTボタンを押して基板の初期化をする方法はこちらの記事の「準備」を参照してください。
コメント