RP2040-SLIMを使ってみた

コンピュータ、組み込み

マイクロファンのRP2040-SLIMを入手しました。
変わった形をした基板ですが、ピンソケットの取り付けを工夫することで手軽に表示モジュールを取り付けることができます。

紹介するもの

RP2040-SLIM

特徴

USBコネクタが付いている前方はスリムな形状。
後方はピンソケットを取り付けることで、OLEDや小型のLCDを配線なく取り付けることができます。

RP2040-SLIM
接続Type C
フラッシュMemory8MB
GPIO30
このうち7本はピンソケットにすることで
表示モジュールを取り付けることができます。
ロジックレベル3.3V
ADC4
UART2
I2C2
SPI2
ボタンBOOT
LEDGPIO25(青)
入手アマゾン \1,500前後

その他のRP2040搭載基板の記事

ピン配置

外観

基板の前方(USBコネクタ側)と後方で幅が変わります。
重複する箇所を除いてすべてピンヘッダを取り付けても良いですが、後方にピンソケットを取り付けることでワイヤー配線なく基板に表示モジュールを取り付けることができます。
購入時にはピンヘッダとピンソケットが付属します。

OLEDを取り付けた状態

ST7735 LCDを取り付けた状態

ILI9341などの中型からILI9488, ILI9486の大型LCDのほとんどは同じピン配置なので使用することができますが、バランスが悪いのでスペーサなどの工夫が必要です。

注意:モニタドライバが同じでもピン配置の違うモジュールがあるので必ずピン配置を確認してから取り付けしてください。

当方では、ロングピンのピンソケットを取り付けることで、ピンソケットとしてもピンヘッダとしても使用できるようにしています。

この作業では、細い箇所のスルーホールと広い箇所のスルーホールが重複する箇所があります。
全部スルーホールにピンヘッダを通してしまうとショートするのですべて使うことはできません。


ロングピンソケットの取り付け記事

使ってみて

アマゾンで購入しています。
AliExpressでの購入に慣れてしまうと少し割高感はありますが、
着荷までが速いので、必要になってから購入すればいいので助かります。

ほとんどの開発基板が矩形の中珍しい形状をしています。
これまでのどれとも互換の無い独自の規格ですが、ブレッドボードが使いやすくなったり、や表示モジュールを手早く使うことができます。

幅の細い箇所はArduinoNanoよりも細いため、ブレッドボードを広く使うことができます。
幅の広い箇所に表示モジュールをワイヤーレスで取り付けができるのは作業性が良いです。

気を付けたいのが、OLEDに使用するI2CはI2C0、LCDに使用するSPIはSPI1を使用しています。
ST7735や他のLCDモジュールのコンストラクタではSPI1を引き数に指定する必要があり、ピン設定するオブジェクトもSPI1を使用します。
(詳しくはLCDのサンプルで)

基板自体に追加のモジュール(LCDやTFカードリーダ)などは付いていませんが、ピン配置が工夫されていて使いやすい基板だと思います。

環境構築、Arduino環境での開発についてはこちらの記事を参照

スケッチ

I2C(SSD1306)

説明

RP2040-SLIMのOLED用ピンソケットを使って、OLEDに文字表示をします。
OLEDの多くのピン配置は、GND, VCC, SCL, SDAの並びなのでRP2040-SLIMにワンタッチで取り付けることができますが、ピン配置の違うモデルもあるのでピン配置をよく確認して作業してください。

掲載以外の図形表示などのサンプルは以下のサンプルを参照してください。
ファイル(F) > スケッチ例 > Adafruit SSD1306 > ssd1306_128x64_i2c

配線

RP2040-SLIMのOLED用ピンはI2C0を使用します。
割り当てるピン番号は以下の表のとおりです。

RP2040-SLIMSSD1306(0.96inch)
3.3VVCC
GNDGND
GPIO21(I2C0 SCL)SCL
GPIO20(I2C0 SDA)SDA
[2023/4/10 配線間違い修正 SCL -> GPIO1, SDA -> GPIO0]
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/

【マイコン基板】
RP2040-SLIM

【スケッチの説明】
SSD1306 OLEDの制御をします。
I2Cは I2C0とI2C1のどちらのサンプルも掲載しますが、
I2C0側はコメントアウトしますので、状況に応じてコメントを外してください。
※コメント検索 [I2C0の場合]

【ライブラリ】
Raspberry Pi Pico / RP2040 > RP2040 > Seeed XIAO RP2040

【準備】
マイコン基板 <-> SSD1306
3V3             <-> VCC
GND             <-> GND
GPIO6(I2C1 SDA) <-> SDA
GPIO7(I2C1 SCL) <-> SCL

【バージョン情報】
2023/8/31 : 新規
**********************************************************************/

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>


#define PIN_SDA 20
#define PIN_SCL 21

#define SCREEN_WIDTH 128                //解像度 128 x 64 で使用します。
#define SCREEN_HEIGHT 64                //SCREEN_HEIGHTは 32 に設定することができます。

#define OLED_RESET     -1               //使用しないので -1を設定する。
#define SCREEN_ADDRESS 0x3C             //I2Cアドレスは 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);     //I2C0の場合
                                        
void setup()
{
  
  //I2C0の場合
  Wire.setSDA(PIN_SDA);
  Wire.setSCL(PIN_SCL);

  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    for(;;);
  }

  display.clearDisplay();               //何か表示されている場合に備えて表示クリア

  display.setTextSize(2);               //フォントサイズは2(番目に小さい)
  display.setTextColor(SSD1306_WHITE);  //色指定はできないが必要
  display.setCursor(20, 0);            //テキストの表示開始位置
  display.print(F("TAMANEGI"));         //表示文字列
  display.setCursor(15, 25);
  display.print(F("OLED 0.96"));
  display.setCursor(25, 45);
  display.print(F("SSD1306"));

  display.display();                    //バッファ転送(表示)
}

void loop()
{
}
結果

SSD1306のサンプルスケッチが動作しました。

SPI(ST7735)

説明

RP2040-SLIMのLCD用ピンソケットを使って、LCD(ST7735)に文字表示をします。
ST7735のピン配置の多くは VCC, GND, CS, RESET, DC, MOSI, SCK, LEDなのでワンタッチで取り付けることができますが、ピン配置の違うモデルもあるのでピン配置をよく確認して作業してください。

掲載以外の図形表示などのサンプルは以下のサンプルを参照してください。
ファイル(F) > スケッチ例 > Adafruit ST7735 and ST7789 Library > graphicstest

配線

RP2040-SLIMのLCD用ピンはSPI1を使用します。
割り当てるピン番号は以下の表のとおりです。

PRP2040-SLIM ST7735(1.8inch)
3.3VVCC
3.3VLED
GNDGND
GPIO9(SPI1 CS)CS
GPIO8Reset
GPIO22AO(DC)
GPIO11(SPI1 TX)SDA
GPIO10(SPI1 SCK)SCK
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/

【マイコン基板】
RP2040-SLIM

【スケッチの説明】
ST7735 LCDの制御をします。
RP2040-SLIMの後方LCD用のピンソケットはSPI1を使用します。

【ライブラリ】
Raspberry Pi Pico / RP2040 > Seeed XIAO RP2040
Adafruit ST7735 and ST7789 Library
Adafruit GFX Library

【バージョン情報】
2023/8/31 : 新規
**********************************************************************/

#include <Adafruit_GFX.h> 
#include <Adafruit_ST7735.h>
#include <SPI.h>

//SPI0の場合
#define TFT_CS          9    // CS
#define TFT_RST         8    // Reset 
#define TFT_DC          22   // DC
#define TFT_MOSI        11   // MOSI
#define TFT_SCK         10   // SCK

//SPI0の場合
Adafruit_ST7735 tft = Adafruit_ST7735(&SPI1, TFT_CS, TFT_DC, TFT_RST);

void setup(void) 
{
  //SPI1の場合
  SPI1.setTX(TFT_MOSI);
  SPI1.setSCK(TFT_SCK);
  

  tft.initR(INITR_BLACKTAB);                  //Init ST7735S初期化
  
  tft.fillScreen(ST77XX_BLACK);               //背景の塗りつぶし

   //テキスト表示
  tft.setRotation(3);                         //画面回転
  tft.setTextSize(3);                         //サイズ

  tft.setCursor(0, 10);                       //カーソル位置                      
  tft.setTextColor(ST77XX_GREEN);             //緑
  tft.printf("TAMANEGI\n");

  tft.setCursor(0, 50);                       //カーソル位置                      
  tft.setTextSize(2);                         //サイズ
  tft.setTextColor(ST77XX_RED);               //赤
  tft.printf("1.8inch LCD\n");
  tft.setTextColor(ST77XX_YELLOW);            //黄
  tft.printf("Res=128 x 160\n");
  tft.setTextColor(ST77XX_BLUE);              //青
  tft.printf("ST7735\n");
}

void loop()
{
}
結果

ST7735のサンプルスケッチが動作しました。

ST7735の記事

コメント

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