OLED付き小型ESPマイコン基板 Lilygo T-Lite

コンピュータ、組み込み

ESP基板では最小クラスのT-LITEを試してみました
セットでW5500(LAN通信モジュール)を入手しましたが、今回はマイコン基板のみを評価します。

紹介するもの

Lilygo T-LITE

特徴

ESP系では最小クラスの基板。
OLED(SSD1306)搭載なので、配線不要で表示ができる。
W5500と合体することでコンパクトなLAN通信モジュールになる。
WifiとBTの機能はあるようですが、技適未対応です。(当サイトではこの製品の無線を使用しないこととします)

接続Type C
CPUT-Micro32 Xtensa dual-core 32bit LX6 240MHz
SRAM520KByte
フラッシュMemory4MB
GPIO6 (1本は入力のみ)
ADC2 (12bit 0 ~ 4095)
PWM6 (8bit 0 ~ 255)
UART1(UART0 書き込み用)
I2C1 (OLEDで使用)
SPI1
ボタンBOOT
そのほかOLED SSD1306 (SDA GPIO21, SCL GPIO 22)
ピン配置

公式以外に載っていない機能ピンを追記したピン配置表を作りました。

公式はこちら

外観

400穴ブレッドボードでは、左右2列と1列使用することができます。

使ってみて

小さいESPボードとして使用できます。
OLED SSD1306搭載なので内部の表示は配線不要で表示することができます。
OLEDは両面テープでで止めているだけなのでモニタが浮きやすいのが気になります。
価格が高いのと技適がないのが残念です。

Ethernet通信をするときに、合体できるW5500モジュールを紹介しています。
通信用のスケッチはこちらに掲載しています。

準備

ライブラリ

ボードライブラリ

Arduino IDEのボードマネージャからESP32用のライブラリのインストールとボードの選択をします。

ボードマネージャのURLhttps://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
検索ESP
ボードライブラリesp32 by Espressif Systems バージョン x.x.x※
選択するボードツール > ボード > esp32 > ESP32 Dev Module
※ x.x.x Sep/2022 動作確認は2.0.3を使用しています

モジュールライブラリ

機能/モジュールライブラリ名検索確認時のバージョン
SSD1306Adafruit SSD1306 by AdafruitSSD13062.5.1
ST7735Adafruit ST7735 and ST7789
Library by Adafruit
ST77351.9.3
関連
SSD1306
ST7735
Adafruit GFX Library by AdafruitGFX1.11.3

書き込み

Arduino IDEから書き込みボタンを押下することで書き込みできます。

メンテナンス

OLEDの浮きが気になるので両面テープを交換しました。
凹凸部品が多いので接触面が不安定です。

基本スケッチ

LEDチカ

説明

LEDを点滅させます。

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

【マイコン基板】
T-LITE

【スケッチの説明】
GPIO ピンを指定して1秒周期(500ms 点灯、500ms 消灯)の点滅を行います。

【ライブラリ】
例 esp32 > ESP32 Dev Module

【準備】
指定ピン - 保護抵抗(約200Ω) - LED Anode, LED Cathode - GND
抵抗値は使用するLEDにより適切な抵抗値を求めてください。

【バージョン情報】
2022/11/6 : 新規
**********************************************************************/
// TTGO T-LITE のdigitalWriteで設定できるピン
//  33, 5, 18, 19, 23, 4 //digitalWrite

#define LED 33       //LED Pin番号

void setup()
{
  pinMode(LED, OUTPUT);  //ピン出力設定
}

void loop()
{
  digitalWrite(LED, HIGH);
  delay(500);

  digitalWrite(LED, LOW);
  delay(500);
}
結果

LEDが点滅しました。

PWM

説明

PWMを使ってLEDのフェード点灯(ゆっくり点灯)とフェード消灯(ゆっくり消灯)を行います。

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

【マイコン基板】
 T-LITE

【スケッチの説明】
PWM出力でのフェード点灯(ゆっくり点灯)とフェード消灯(ゆっくり消灯)を行います。

【ライブラリ】
esp32 > ESP32 Dev Module

【準備】
指定ピン - 保護抵抗(約200Ω) - LED Anode, LED Cathode - GND
抵抗値は使用するLEDにより適切な抵抗値を求めてください。

【バージョン情報】
2022/11/6 : 新規
**********************************************************************/
// TTGO T-LITE のdigitalWriteで設定できるピン
//  33, 5, 18, 19, 23, 4 //digitalWrite

#define PWM 33       //LED Pin番号

void setup()
{
  pinMode(PWM , OUTPUT);
}

void loop()
{
  for(int i = 0; i < 256; i ++)
  {
    analogWrite(PWM, i);
    delay(2);
  }

  for(int i = 0; i < 256; i ++)
  {
    analogWrite(PWM, 255 - i);
    delay(2);
  }
}
結果

LEDがゆっくり点灯し、ゆっくり消灯しました。

ADC

説明

ADCに入力された電圧を読み取りCOMに出力します。

電圧の入力にLOLIN32 Liteを使用します。
0~255(約3.3V) まで2msごとに1ずつ上昇し、255(約3.3V)~0までを2msごとに1ずつ下降する設定を繰り返します。

配線

LOLIN32 Lite のGPIO26(DAC)をT-LITEのGPIO4(ADC)に接続します。
LOLIN32 Lite のGNDとT-LITEのGNDを接続します。

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

【マイコン基板】
 T-LITE

【スケッチの説明】
入力された電圧を読み取ります。

【ライブラリ】
 esp32 > ESP32 Dev Module

【準備】
T-LITE          <-> LOLIN32 Lite
GPIO4(ADC)      <-> GPIO26(DAC)
GND             <-> GND

【バージョン情報】
2022/11/6 : 新規
**********************************************************************/
//T-LITE で設定できる analogRead (12bit 0 ~ 4095)
// 33, 4

#define ADC 4

void setup()
{
  Serial.begin(115200);

  pinMode(ADC, INPUT);
}

void loop()
{
  int iADC = 0;

  //外部から入力された電圧を読み取り、結果をCOMに出力します。
  iADC = analogRead(ADC);
  Serial.printf("(ADC) = %d\r\n", iADC);
  delay(2);
}
結果

入力した電圧を読み取った結果をグラフにしました。
電圧の変化は0V -> 3.3Vまでを約500msで上昇し、3.3V -> 0Vまで約500msで下降します。

電圧と読み取り値の同期はできていませんが、参考程度に入力電圧を添付します。

UART(省略します)

説明

UARTは2系統ありますが、UART0はCOMになります。
ESP32-S2-Picoはスケッチ書き込み後にUSBのCOMは認識されなくなるので、UART0を使用するにはGP43(TX)とGP44(RX)を使用します。

UART1はそのままでは内部フラッシュに接続されているので、そのままでは使用できません。
スケッチでピン指定して使用しています。

UART0(COM)から読み取ったデータをUART1に送信します。
UART1から読み取ったデータをUART0(COM)に送信真します。

配線
T-Lite(UART0)配線FT232RL(UART1側)
GP23(UART0 TX)RX
GP19(UART0 RX)TX
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/

【マイコン基板】
 T-Liteで利用できます。

【スケッチの説明】
ソフトウエアUARTについて記載します。

COMから読み取った内容をソフトウエアUARTに出力します。
ソフトウエアUARTから読み取った内容をCOMへ出力します。

【ライブラリ】
esp32 > ESP32 Dev Module

【準備】
マイコン基板 <-> FT232RL
GPIO23(TX)   <-> RX
GPIO19(RX)   <-> TX

【バージョン情報】
2022/11/6 : 新規
**********************************************************************/

void setup()
{
  Serial.begin(115200);                           //SerialオブジェクトはUART0 (COM)
  Serial1.begin(115200, SERIAL_8N1, 19, 23);     //T-LiteにはUARTがないので、ソフトウエアUARTでピン指定をする
}

void loop()
{
  if(Serial1.available() != 0)          //UART1にデータがあれば、読み取った内容をUARTに送信
  {
      Serial.write(Serial1.read());
  }

  if(Serial.available() != 0)           //UARTにデータがあれば、読み取った内容をUART1に送信
  {
      Serial1.write(Serial.read());
  }
}
結果

結果はTeratermを2つ起動して確認します。
Teratermから送信した文字は、エコーバックにより表示されます。

今回T-LITEのUART0(COM)はCOM98、UART1のFT232RLはCOM9で認識されました。

COM98側から赤実線枠”tamanegi”と入力を行うと、COM9側の赤点線枠に”tamanegi”と表示されました。
COM9側から青実線枠”Helloworld”と入力を行うと、COM98側の青点線枠に”Helloworld”と文字が出力

I2C(SSD1306)

説明

I2Cを使ってSSD1306(OLED 0.96inch)モニタのサンプルを動作させます。
I2Cはデフォルトでピン定義されているため、ピン設定不要です。

図形の描画やそのほかの命令はArduinoサンプルスケッチを参照してください。
ファイル(F) > スケッチ例 > Adafruit SSD1306 > ssd1306_128x64_i2c

配線

実装OLEDを使用するため配線不要。

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

【マイコン基板】
 T-Lite基板で利用できます。

【スケッチの説明】
実装SSD1306 OLEDの制御をします。

【ライブラリ】
例 esp32 > ESP32 Dev Module

【準備】
配線不要

【バージョン情報】
2022/11/6 : 新規
**********************************************************************/
//T-Lite 実装OLED I2C SDA(21), SCL(22)

#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, &Wire, OLED_RESET);
                                        //表示制御にはAdafruit製 SSD1306を使用する。
                                        
void setup()
{
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    for(;;);
  }

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

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

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

void loop()
{
}
結果

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

SPI(ST7735)

説明

SPIを使ってST7735(LCD 1.8inch)モニタのサンプルを動作させます。

図形の描画やそのほかの命令はArduinoサンプルスケッチを参照してください。
ファイル(F) > スケッチ例 > Adafruit ST7735 and ST7789 Library > graphicstest

配線
T-LITE配線ST7735(1.8inch)
3.3VVCC
3.3VLED
GNDGND
GP33Reset
GP4AO(DC)
GP18(SPI SCK)SCK
GP23(SPI MOSI)SDA
GP5(SPI CS)CS
スケッチ
/**********************************************************************
【ライセンスについて】
Copyright(c) 2022 by tamanegi
Released under the MIT license
'http://tamanegi.digick.jp/about-licence/

【マイコン基板】
T-Lite 基板で動作します。

【スケッチの説明】
ST7735 LCDの表示制御します。
H/W SPIを使用するための方法についてサンプル記載します。

【ライブラリ】
例 esp32 > ESP32 Dev Module

【準備】
マイコン基板 <-> ST7735
3V3           <-> VCC
GND           <-> GND
GPIO5(CS)     <-> CS
GPIO33(Reset) <-> Reset
GPIO4(DC)     <-> AO
GPIO23(MOSI)  <-> SDA
GPIO18(SCK)   <-> SCK

【バージョン情報】
2022/11/6 : 新規
**********************************************************************/

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

#define TFT_CS          5   // CS
#define TFT_RST         33  // Reset 
#define TFT_DC          4   // DC
#define TFT_MOSI        23  // MOSI
#define TFT_SCK         18  // SCK

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

//S/W SPIはこちら。遅いが任意のピンを使用できる。
//Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCK, TFT_RST);

void setup(void) 
{
  SPI.begin(TFT_SCK, -1, TFT_MOSI, TFT_CS);   //H/W SPIを使用する場合こちらでピン番号を指定する。
                                              //S/W SPIで使用する場合はコメントアウトする。
  

  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()
{
}
結果

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

コメント

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