LCD/OLED用基板の作成

コンピュータ、組み込み

電子工作で表示物を作るためにLCDやOLEDを使います。
配線が多くて煩わしいので、ユニバーサル基板にマイコン基板やLCDモジュールを着脱できるジグを作成します。

完成物

作成した基板はマイコン側基板3種類と、表示側基板1種類の合計4枚。

マイコン側はRasberry Pi Pico系、XIAO RP2040系、RP2040-ZERO系の3種類。

表示側はLCDのILI系、ST系、OLEDのSSD1306、SSH1306で使用できるものとなります。

工作

用意するもの

アイテム説明
Raspberry Pi Pico
または
YD-RP2040
RP2040-Plus
RP2040-LCD0.96
他…
ピン規格がRaspberry Pi Picoと同じ基板
WeActのRP2040 Picoは電源位置が違うため
使用できない。
LCDモジュール
ILI9341、ILI9486
ST7735
ピンアサインが同じであれば
画面インチ数は不問
OLEDモジュール
SSD1306
SSH1306
ピンアサインが同じであれば
画面インチ数は不問
ユニバーサル基板5x7cm サイズ
ピンソケット1列
ピンストレートと、ピンアングルを使用します

2列
ピンストレート
ピンヘッダアングルを使用します
タクトスイッチ小ボタン押下判定
Hex スペーサ
5mmHex(16個)
ナット(16個)
樹脂のものを使用します
脚にするので、金属では机に傷がつきます
AWG28(各色)配線
ここでのピン規格が同じ基板とは信号ピン、GNDピン、電源ピンが同じ位置にある基板。
信号ピンのピン番号は違ってもかまいません。スケッチで修正ができます。

手順

すでに制作済みなので、手順で紹介する部材は加工済みになっています。材料加工前

ピンヘッダ、ピンソケット切断

マイコン基板や、表示モジュール規格に合わせたピン数に切断します。
基板ごとにレシピを添付します。

基板ピンヘッダピンソケット
表示側基板用1列アングル 14ピン x1
1列アングル 5ピン x1
マイコン基板との接続
1列 14ピン x1 (ILI9341用)
1列 8ピン x1 (ST7735用)
1列 7ピン x1 (SSD1331用)
1列 5ピン x1 (SSD1306 1.54inch用)
1列 4ピン x2 (SSH1306, SSD1306 0.96inch用)
Raspberry Pi Pico系基板用2列 40ピン x2 (マイコン基板用)

1列アングル 14ピン x1
1列アングル 5ピン x1
表示側基板との接続
部品の実装(はんだ付け)

表示側基板

初めに背の低いアングルピンソケットを実装します。
アングルピンソケットはマイコン側基板との接続に使うので位置は重要です。

続いて背の高いモジュール用のピンソケットを実装します。
使用の予定の有るモジュールのソケットを取り付けます。

マイコン側基板

代表してRaspberry Pi Pico系基板の作業を掲載します。
初めに背の低いアングルピンソケットの実装をします。
基板を接続したときに隙間ができないように2列オフセットして実装します。
表示基板側との接続確認をしてから残りのピンのはんだをします。

左側の基板がマイコン側基板、右側が表示側基板

マイコン基板用の2列ピンソケットの実装をします。
2列のうち、内側のソケットにマイコンを差し込むように実装します。
外側のピンはジャンパワイヤで信号を取り出すためです。

Raspberry Pi Picoにはリセットボタンがないので、リセットボタン用のタクトスイッチを取り付けます。
この位置に設置したのは基板をソケットから外すときに邪魔にならないようにするためです。

配線

配線図を確認しながら配線します。
裏面から見ると左右(または上下)逆転しないように注意します。

配線図は後日掲載予定

左が表示側、右はRaspberry Pi Pico系基板

通電確認

テスタで導通確認を行います。
特に電源は他の端子にショートしていないか十分確認します。

組み立て

樹脂のHEXを取り付けます。
締めすぎはねじ山がつぶれてしまうので適度に行います。

スケッチ

スケッチの説明

LCD(ST7735)とOLED(SSD1306)のスケッチは、当サイトのサンプルスケッチのピン番号を変更したものを修正して掲載します。

スケッチ

RaspberryPi Pico ピン互換品 YD-RP2040 + ST7735

/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by たまねぎ
Released under the MIT license
About Licence
当サイトで掲載しているスケッチのライセンスについてOSSの利用について当サイトで掲載しているスケッチおよびプログラム(以下プログラム)は、Open Source Software(以下OSS)を利用しています。誰でも当サイ...
【スケッチの説明】 RP2040 搭載基板で使用できます。 LCDモジュールの表示制御を行います。 画面に色を変えながら "TAMANEGI"と表示します。 【準備】 SPI0を使用します。 RaspberrPy Pico - ST7735 3.3V - VCC GND - GND GP1 - CS GP26 - RESET GP27 - AO(DC) GP3 - SDA(MOSI) GP2 - SCK 3.3V - LED 【バージョン情報】 2022/7/9 : 新規 2022/8/30 : SPIに使用するIO番号を変更 CS GP17 -> GP1, RESET GP22 -> GP26, DC GP28 -> GP27, MOSI GP19 -> GP3, SCK GP18 -> GP2 **********************************************************************/ #include <Adafruit_GFX.h> #include <Adafruit_ST7735.h> #include <SPI.h> //ピン番号設定 #define TFT_DC 27 // DC #define TFT_CS 1 // CS #define TFT_SCLK 2 // Clock #define TFT_MOSI 3 // MOSI #define TFT_RST 26 // Reset //SPI0をコンストラクタに指定する Adafruit_ST7735 tft = Adafruit_ST7735(&SPI, TFT_CS, TFT_DC, TFT_RST); void setup(void) { SPI.setTX(TFT_MOSI); //H/W SPI 設定 SPI.setSCK(TFT_SCLK); tft.initR(INITR_BLACKTAB); //Init ST7735S初期化 tft.fillScreen(ST77XX_BLACK); //背景の塗りつぶし //テキスト表示 tft.setRotation(3); //画面回転 tft.setTextSize(3); //サイズ tft.setCursor(0, 20); //カーソル位置 tft.setTextColor(ST77XX_RED); //赤 tft.printf("TAMANEGI\n"); tft.setTextColor(ST77XX_GREEN); //緑 tft.printf("TAMANEGI\n"); tft.setTextColor(ST77XX_BLUE); //青 tft.printf("TAMANEGI\n"); tft.setTextColor(ST77XX_YELLOW); //黄 tft.printf("TAMANEGI\n"); } void loop() { }

結果

RaspberryPi Pico ピン互換品 YD-RP2040 + SSD1306

//Programing by たまねぎ
//【スケッチの説明】
//RP2040 CPU搭載基板で使用できます。
//OLED画面に "TAMANEGI"
//使用しているI2CラインとI2Cアドレスを表示させます。
//
//【準備】
//・RP2040 pico側
//本スケッチでは I2C1を使用し、SDA に GP6, SCL に GP7 を使用します。
//・SSD1306 OLED側
////I2Cアドレスは 0x3c 
//
//【バージョン情報】
// 2022/6/19 : 新規
// 2022/8/30 : I2C0をI2C1に変更、SDAを GP0 -> GP6, SCLを GP1 -> GP7に変更


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

#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, &Wire1, OLED_RESET);
                                        //表示制御にはAdafruit製 SSD1306を使用する。
                                        //初期化時には I2C1を使用する (Wire1)
                                        
void setup() {
  
  Wire1.setSDA(6);                      //I2C0で使用するGPは SDA = 6, SCL = 7
  Wire1.setSCL(7);

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

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

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

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

void loop() {
}

結果

関連リンク

コメント

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