macsbug

Archive for 12月 2022

MAR4018 and ESP32 S3

leave a comment »

MAR4018 and ESP32 S3                 2022.12.31

SKU MAR4018 Display は 4inch size , 解像度は 800×480です。
Driverは NT35510 8/16Bit parallel interface で高速に表示します。
持ちやすく 大きな画面で操作しやすいです。



.
仕様:
Display:SKU MAR4018 ( NT35510 )
_ 4.0inch Arduino Display-Mega2560 NT35510 🟢
_ Screen Size:4.0(inch)
_ Driver IC:NT35510
_ Resolution:800*480 (Pixel)
_ Module Interface:8Bit or 16Bit parallel interface
_ Touch IC:XPT2046
_ Module PCB Size:58.65×108.48 (mm)
ESP32 S3 : 16R8 : Flash 16MB , PSRAM 8MB
Library:LovyanGFX NT35510 Driver
_    謝辞:らびやん氏に開発して頂きました。感謝!!
_    投稿時は LovyanGFX Develop にあります。


.
開発環境:

Dev environment  : Arduino IDE 1.8.19
Board Manager    : arduino-esp32 2.0.5
Board            : “ESP32S3 Dev Module”
Upload Speed     : “921600”
USB Mode         : “Hardware CDC and JTAG”
USB CDC on Boot  : “Disabled” or "Enabled"
USB Firmware MSC On Boot: “Disabled”
USB DFU On Boot  : “Disabled”
Upload Mode      : “UART0 / Hardware CDC”
CPU Frequency    : “240MHz (Wifi)”
Flash Mode       : “QIO 120MHz”
Flash Size       : “16MB (128Mb)”
Partition Scheme : “16M Flash (3MB APP/9MB FATFS)”
Core Debug Level : “None”
PSRAM            : “OPI PSRAM”
Arduino Runs On  : “Core 1”
Events Run On    : “Core 1”
Port             : “/dev/cu.wchusbserial54320100871”
Library          : LovyanGFX develop
  https://github.com/lovyan03/LovyanGFX/tree/develop

.
Down Load:DL後 pdf(_.pdf)を削除しzipを解凍します。
🟢 Down Load:Life_Game_NT35510_S3_LGFX.zip
🟢 Down Load:Maze_generator_NT35510_S3_LGFX.zip
🟢 Down Load:MovingCircles_NT35510_S3_LGFX.zip
🟢 Down Load:Raytrace_NT35510_S3_LGFX.zip
🟢 Down Load:Test_PDQ_NT35510_S3_LGFX.zip
🟢 Down Load:Web_Radio_I2S_MAR4018_S3_LGFX.zip
-       rev 1 : 2023.01.07;Touch範囲修正。
Web Radio は 見やすい大きさと操作しやすいサイズです。


.
部品リスト:費用:3890円 ( No. = RED )

, 2pcs

No. Nomen Purchase Price
1 MAR4018 ( NT35510 )
. 4inch 800×480 8/16bit display
Veeket store
. $10.58
1428円
2 ESP32 S3 MIniKIT
.
Make an ESP32 S3 MiniKit 1070円
3 メイクパレット・S 111x71x15mm
.
無印良品 990円
4 0.3mm厚ユニバーサル基板 秋月電子通称 200円
4 0.3mm厚ユニバーサル基板 しまりす堂 , (2500円/12) 200円
5
ロープロファイルピンヘッダ
. (低オス) 2×40,  5.5mm
秋月電子通商  40円
6 ロープロファイルピンソケット
. (低メス) 2×13,  3.6mm
秋月電子通商  160円
7 0.26mm ジュンフロン線 千石電商
8 Total  3890円
9 MAX98357A
. I2S 3W D級アンプボード
.
WCMCU store 379円
10 Speaker 8R1W 40mm
Hongtaoxin E-lectronics 278円
. Total  円

.
配線図:
– ESP32 S3:電源, Controll, BUSは 3.3Vdc。
– MAR4018:電源, Controll, BUSは 5Vdc。
–   U2,U3,U4,U5,U6(LV245A)で Level変換(5V -3.3V)されています。
–   Controll線により BUSの Read/Writeは 可能です。
– MAR4018   8bit Parellel は R5 を Short。
– MAR4018 16bit Parellel は R4 を Short。

Power : pin Assign
LCD 5V GND
S3 VCC GND
Controll
LCD RST CS RS WR RD
S3 RST 47 12 46 11
D0 – D7
LCD D0 D1 D2 D3 D4 D5 D6 D7
S3 18 3 39 5 40 7 1 16
D8 – D15
LCD D8 D9 D10 D11 D12 D13 D14 D15
S3 10 11 46 9 19 14 6 38
Touch
LCD CLK CS MOSI MISO IRQ
S3 8 17 15 2 20
SD
LCD CLK CS MOSI MISO
S3 17 42 15 2

 

MAX98357A
I2S Vin GND SD GAIN DIN BLCK LRC
S3 5V GND open open 13 45 21

.
製作:
– Display の Connectorは 高さ 7mmの為 取り外し 高さ 5.5mmの
- 2×18 ロープロファイルピンヘッダ(低オス) を取り付けます。
- ピンの長い方をPCB側に 取り付けます。
- ピンの長い方のLCD側は 平らにします。
- 結果 PIn の高さは 5.0mm になります。

– メイクパレット内の高さに収めるために 以下の厚さ を使用します。
- メイクパレット内の高さは 10mm。
- 🟢 製作基板(ESP32 S3)とLCD基板は 10mmの中に入る サイズにします。
- Wire(0.3), 基板(0.3), メスコネクター(4.0), オスコネクター(3.0), LCD基板(1.6)
- , Space(0.3) ;合計 9.5mm。
- PCB は 0.3mm厚ユニバーサル基板を使用します。
- メスコネクター は 3.6mm厚を使用します。


.
ケース:ケースとLCDのサイズ。

– LCDが入るサイズに削ります。SDの部分も削ります。
– ESP32 S3 Minikit の部分も削ります。
– メイクパレット内の底辺を平らに削ります。
– ケース内部に収まる高さは ギリギリに入ります。

参照:メイクパレット S:
Web Radio ESP32-2432S028-I2S
ESP32-3248S035


.
LovyanGFX : 800×480 16bit Parallel NT35510

//----------------------------------------------------------------------
// https://github.com/lovyan03/LovyanGFX/blob/master/examples/HowToUse/2_user_setting/2_user_setting.ino
//=====================================================================
class LGFX : public lgfx::LGFX_Device{
  lgfx::Panel_NT35510  _panel_instance;
  lgfx::Bus_Parallel16 _bus_instance;//16bit Parallelのインスタンス(ESP32)
  lgfx::Touch_XPT2046  _touch_instance;
  
public:LGFX(void){         // バス制御の設定を行います。
  auto cfg = _bus_instance.config(); // バス設定用の構造体を取得します。
  // 16ビットパラレルバスの設定
  cfg.freq_write =20000000;// 送信クロック(最大20MHz,80MHzを整数割の値に丸める)
  cfg.pin_wr  =  4;        // WR を接続しているピン番号
  cfg.pin_rd  = -1;        // RD を接続しているピン番号
  cfg.pin_rs  = 12;        // RS(D/C)を接続しているピン番号
  cfg.pin_d0  = 18;        // D0 を接続しているピン番号
  cfg.pin_d1  =  3;        // D1 を接続しているピン番号
  cfg.pin_d2  = 39;        // D2 を接続しているピン番号
  cfg.pin_d3  =  5;        // D3 を接続しているピン番号
  cfg.pin_d4  = 40;        // D4 を接続しているピン番号
  cfg.pin_d5  =  7;        // D5 を接続しているピン番号
  cfg.pin_d6  =  1;        // D6 を接続しているピン番号
  cfg.pin_d7  = 16;        // D7 を接続しているピン番号
  cfg.pin_d8  = 10;        // D8 を接続しているピン番号
  cfg.pin_d9  = 11;        // D9 を接続しているピン番号
  cfg.pin_d10 = 46;        // D10を接続しているピン番号
  cfg.pin_d11 =  9;        // D11を接続しているピン番号
  cfg.pin_d12 = 19;        // D12を接続しているピン番号
  cfg.pin_d13 = 14;        // D13を接続しているピン番号
  cfg.pin_d14 =  6;        // D14を接続しているピン番号
  cfg.pin_d15 = 38;        // D15を接続しているピン番号
  _bus_instance.config(cfg);// 設定値をバスに反映します。
  _panel_instance.setBus(&_bus_instance); // バスをパネルにセットします。
  {// 表示パネル制御の設定
  auto cfg = _panel_instance.config(); // 表示パネル設定用の構造体を取得します。
  cfg.pin_cs       =   47; // CSが接続されているピン番号   (-1 = disable)
  cfg.pin_rst      =   -1; // RSTが接続されているピン番号  (-1 = disable)
  cfg.pin_busy     =   -1; // BUSYが接続されているピン番号 (-1 = disable)
  cfg.memory_width =  480; // ドライバICがサポートしている最大の幅
  cfg.memory_height=  800; // ドライバICがサポートしている最大の高さ
  cfg.panel_width  =  480; // 実際に表示可能な幅
  cfg.panel_height =  800; // 実際に表示可能な高さ
  cfg.offset_x     =    0; // パネルのX方向オフセット量
  cfg.offset_y     =    0; // パネルのY方向オフセット量
  cfg.offset_rotation = 0; // 回転方向の値のオフセット 0~7 (4~7は上下反転)
  cfg.dummy_read_pixel= 8; // ピクセル読出し前のダミーリードのビット数
  cfg.dummy_read_bits = 1; // ピクセル以外のデータ読出し前のダミーリードのビット数
  cfg.readable    = false; // データ読出しが可能な場合 trueに設定
  cfg.invert      = false; // パネルの明暗が反転してしまう場合 trueに設定
  cfg.rgb_order   =  true; // パネルの赤と青が入れ替わってしまう場合 trueに設定
  cfg.dlen_16bit  =  true; // データ長を16bit単位で送信するパネルの場合trueに設定
  cfg.bus_shared  = false; // SDカードとバス共有はtrueに設定
  _panel_instance.config(cfg);
  }
  { // タッチスクリーン制御の設定を行います。(必要なければ削除)
  auto cfg = _touch_instance.config();
  cfg.x_min      =  300;   // タッチスクリーンから得られる最小のX値(生の値)
  cfg.x_max      = 3800;   // タッチスクリーンから得られる最大のX値(生の値)
  cfg.y_min      =  180;   // タッチスクリーンから得られる最小のY値(生の値)
  cfg.y_max      = 3900;   // タッチスクリーンから得られる最大のY値(生の値)
  cfg.pin_int    =   20;   // INTが接続されているピン番号
  cfg.bus_shared = true;   // 画面と共通のバスを使用している場合 trueを設定
  cfg.offset_rotation = 6; // 表示とタッチの向きのが一致しない場合の調整 0~7の値で設定
  // SPI接続の場合
  cfg.spi_host = SPI2_HOST;// 使用するSPIを選択 (HSPI_HOST or VSPI_HOST)
  cfg.freq     = 1000000;  // SPIクロックを設定, Max 2.5MHz, 8bit(7bit) mode
  cfg.pin_sclk =  8;       // SCLKが接続されているピン番号, TP CLK
  cfg.pin_mosi = 15;       // MOSIが接続されているピン番号, TP DIN
  cfg.pin_miso =  2;       // MISOが接続されているピン番号, TP DOUT
  cfg.pin_cs   = 17;       // CS  が接続されているピン番号, TP CS
  _touch_instance.config(cfg);
  _panel_instance.setTouch(&_touch_instance);  // タッチスクリーンをパネルにセットします。
  }
  setPanel(&_panel_instance); // 使用するパネルをセットします。
  }
};
LGFX tft; // 準備したクラスのインスタンスを作成します。

.
感想:
4inch Display は 無印 Makepallet S ケースにピッタリのサイズです。
解像度は 800×480 で見やすく多彩な表示が可能です。
16bit Parallel 接続により高速に表示します。
.
ケース:メイクパレットは 3D Printer で作るよりも綺麗に作れます。
- メイク用のケースですのでデザイン良く綺麗で持ちやすいです。
.
.


.
ESP32 S3 , ESP32 S3 MiniKit , MAR4018 , NT35510 , LovyanGFX , 4inch , 800×480
16bit Palallel ,

Written by macsbug

12月 31, 2022 at 5:06 pm

カテゴリー: ESP32