電子工作で表示物を作るために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(各色) | 配線 |
信号ピンのピン番号は違ってもかまいません。スケッチで修正ができます。
手順
すでに制作済みなので、手順で紹介する部材は加工済みになっています。材料加工前
ピンヘッダ、ピンソケット切断
マイコン基板や、表示モジュール規格に合わせたピン数に切断します。
基板ごとにレシピを添付します。
基板 | ピンヘッダ | ピンソケット |
---|---|---|
表示側基板用 | 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にはリセットボタンがないので、リセットボタン用のタクトスイッチを取り付けます。
この位置に設置したのは基板をソケットから外すときに邪魔にならないようにするためです。
配線
配線図を確認しながら配線します。
裏面から見ると左右(または上下)逆転しないように注意します。
配線図は後日掲載予定
通電確認
テスタで導通確認を行います。
特に電源は他の端子にショートしていないか十分確認します。
組み立て
樹脂の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() {
}
結果
コメント