macsbug

Just another WordPress.com site

ESP32 Adapter Board and TFT Display

leave a comment »

ESP-WROOM-32 ボード で TFT ディスプレー を組み上げました。      2017.02.11

ESP-WROOM-32 チップ単体が入手可能となり TFT ディスプレー を接続。
費用は 1215円 です。( WeMos D1 mini Pro) 。
同じ内容で ESP8266 は 822円 です。macsbug:1.44″ 128 ×128 Color TFT in ESP8266

TFT のサイズは ESP32 Adapter Board のサイズに合う 1.44″ を選びました。
これで 45 x 35 x 20 mm の 最小サイズ の ESP32 TFT ボード ができました。

お詫びと訂正:記事に誤記があり一部削除致しました:2017.02.12
内容:GPIOの出力波形について記載しましたが 正しい波形ではありませんでした。
原因は オシロスコープの周波数帯域の狭いものを使用していた為です。
よって 波形画像と説明を削除致しました。お詫び致します。


.
ESP-WROOM-32 + ESP32 Adapter Board + WeMos D1 mini Pro
の詳細は macsbug:Write to ESP-WROOM-32 with Adapter Board を参照下さい。
小型サイズ, USB接続, 自動書き込み, ハンダ付けが容易, 低価格 で出来ます。

メモ:ESP32 Adapter Board シルク印刷の誤記:IO19 -> IO5。IO5 -> IO19。


.
準備:費用は 1023円 又は 1215円。

1. 前回製作のボード:ESP-WROOM-32 + Adapter Board + D1 mini Pro
_  418円 又は 610円。
2. 1.44″ SPI TFT 128 x 128 Display:ebay:395円。
3. 基板:    秋月:0.3mm厚 基板 Dタイプ(47x36mm) 60円。
4. コネクター:   秋月:シングルピンソケット (低メス) (20P) 60円 x 2 :120円。
5. ピンソケット:秋月:メス 1×8 (8P):30円。
6. Wire:少々。
7. スケッチ: 3D Cube のサンプルは最後に記載しました。


.
配線:8本を配線します。左:TFT 端子名。右:ESP32 Adapter Board 端子名。

  No/Nomen  1.444″ SPI TFT Adapter Board
1 LED 3.3V
2 VCC 3.3V
3 GND GND
4 CS IO33
5 RESET IO32
6 A0 IO25
7 SDA IO27
8 SCK IO23

.

ESP32 Adapter board は 9 pin x 4 = 36 pin 。
シングルピンは隣り合わせにすると幅が広いため内側を少し削ります。

完成:


.
ESP32 ハマリどころメモ: 3.3V レベルを出力しないGPIO端子があります。
理由:GPIO使用方法の把握ができていない事から起きていると思っています。
入力専用端子の条件は無しで全ての GPIO 出力を調査しました。
digitalWrite( Pin , HIGH);  digitalWrite( Pin , LOW);
GPIO 39, 36, 35, 34, 9, 7, 6, 2 は 出力にした場合 オシロスコープで見ると
3.3V の出力は出ません。結果 TFT ディスプレー には 表示されません。
オシロスコープは Analog Discovery ( アナログ帯域5MHz ) で プローブは 10X を使用しました。

GPIOの端子を把握せず 混在配線すると 電圧レベル低下で使用できません。


.
GPIO の基礎:
ESP32 に於ける GPIO の Pull_up, Pull_down 抵抗は基本的に不要です。
理由は ESP32の内部に用意されているからです。ただし接続する負荷によっては
スケッチでの操作が用意されている事 や 外部に抵抗を接続する必要があります。

ESP32の基礎が書かれている文書。NANO32 ボードを開発した MakerAsia です。
Arduino Core for ESP32:jimmy@MakerAsia.com
GPIO Default Configuration、Push-Pull Output、Output Open Drain、
Input Pull Up / Pull Down について書かれてあります。

此処には書かれていない事として GPIO 12 は HIGH にしてはいけません。
理由は MTDI端子ですが イースターエッグ用の端子で HIGH にすると起動時に
TinyBasic が走ります。加えて TinyBasic は シリアル通信で行う為に シリアル
でのスケッチの書込みはできなくなります。
macsbug:Easter Egg of ESP32


.
感想:
1. サイズ:
_  ESP32 では 販売されている DEV Board や NANO32 はサイズが大きく
_  ケースに入れた時に 奇麗でなく かなり不便な大きさになります。
_  手の平に乗らない大きさになり 作りたく無くなります。
_  そこで 最小サイズがどうなるかを試してみました。
_  結果 TFT 付きでは ケースを含むと 50 x 40 x 25 mm になります。
_  バッテリー内蔵にすると さらに大きくなります。

2. USB 5V の電流は 116mA でした。

3. ESP-WROOM-32 チップ用の基板:歴史は繰り返す感じで 幾つかでて
_  きました。その中で aitendo の基板を見ると 端子の面積が少ない事、
_  配線の太さが細い事があり Lチカ位なら動くと思われますが 高度な
_  使い方をすると訳の分からない不具合がでるかもしれません。
_  さらに ブレッドボードを使用すると 同じ内容の事が言えます。
_  あの長い金属と鈍いメッキの固まりは 高周波や瞬間的な電流時に
_  なると コイルとコンデンサー、接触不良の固まりに見えます。


.

3D Cube : ESP32 + 1.44″ TFT v2.1
スケッチ:

// ESP32 + 1.44" TFT v2.1                                  // 2017.02.08 macsbug
// http://www.sipatechmeetup.com/media/uploads/arduinoesp32dev.pdf
#include <Adafruit_GFX.h>                                  // Core graphics library
#include <Adafruit_ST7735.h>                               // Hardware-specific library
Adafruit_ST7735 tft = Adafruit_ST7735(33, 25, 27, 23, 32); // CS,A0,SDA,SCK,RESET
float r, x1, ya, z1, x2, y2, z2, x3, y3, z3;               //
int f[8][2], x, y;                                         // Draw box, x, y center
int c[8][3] = {                                            // Cube
 {-20,-20, 20},{20,-20, 20},{20,20, 20},{-20,20, 20},
 {-20,-20,-20},{20,-20,-20},{20,20,-20},{-20,20,-20} };

void setup(void) {
  //Serial.begin(115200);
  tft.initR(INITR_18GREENTAB);                             // 1.44 v2.1
  tft.fillScreen(ST7735_BLACK);                            // CLEAR
  tft.setTextColor(0x5FCC);                                // GREEN
  tft.setRotation(1);                                      // 
  x = tft.width() /2; x = x + 14;                          // x Center Calculate
  y = tft.height()/2;                                      // y Center Calculate
}

void loop(){
 for (int a = 0; a <= 360; a = a + 2 ) {                   // 0 to 360 degree
   for (int i = 0; i < 8; i++) {                           //
    r  = a * 0.0174532;                                    // 1 degree
    x1 = c[i][2] * sin(r) + c[i][0] * cos(r);              // rotate Y
    ya = c[i][1];                                          //
    z1 = c[i][2] * cos(r) - c[i][0] * sin(r);              //
    x2 = x1;                                               //
    y2 = ya * cos(r) - z1 * sin(r);                        // rotate X
    z2 = ya * sin(r) + z1 * cos(r);                        //
    x3 = x2 * cos(r) - y2 * sin(r);                        // rotate Z
    y3 = x2 * sin(r) + y2 * cos(r);                        //
    z3 = z2; x3 = x3 + x ; y3 = y3 + y ;                   //
    f[i][0] = x3; f[i][1] = y3; f[i][2] = z3;              // store new values
   }
   tft.fillScreen(ST7735_BLACK);
   tft.drawLine(f[0][0],f[0][1],f[1][0],f[1][1],ST7735_WHITE);
   tft.drawLine(f[1][0],f[1][1],f[2][0],f[2][1],ST7735_WHITE);
   tft.drawLine(f[2][0],f[2][1],f[3][0],f[3][1],ST7735_WHITE);
   tft.drawLine(f[3][0],f[3][1],f[0][0],f[0][1],ST7735_WHITE);
   tft.drawLine(f[4][0],f[4][1],f[5][0],f[5][1],ST7735_WHITE);
   tft.drawLine(f[5][0],f[5][1],f[6][0],f[6][1],ST7735_WHITE);
   tft.drawLine(f[6][0],f[6][1],f[7][0],f[7][1],ST7735_WHITE);
   tft.drawLine(f[7][0],f[7][1],f[4][0],f[4][1],ST7735_WHITE);
   tft.drawLine(f[0][0],f[0][1],f[4][0],f[4][1],ST7735_WHITE);
   tft.drawLine(f[1][0],f[1][1],f[5][0],f[5][1],ST7735_WHITE);
   tft.drawLine(f[2][0],f[2][1],f[6][0],f[6][1],ST7735_WHITE);
   tft.drawLine(f[3][0],f[3][1],f[7][0],f[7][1],ST7735_WHITE);
   tft.drawLine(f[1][0],f[1][1],f[3][0],f[3][1],ST7735_WHITE);// cross
   tft.drawLine(f[0][0],f[0][1],f[2][0],f[2][1],ST7735_WHITE);// cross
 }
}

広告

Written by macsbug

2月 10, 2017 @ 9:24 pm

カテゴリー: ESP32

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。