Archive for 10月 2022
Super M5Stack
M5Stackを魔改造し Super M5Stack を製作しました。 2022.10.25
Super M5Stack の速度は M5Stack の 5.3 倍を達成!!
_ M5Stack Basic Super M5Stack
構成:
M5Stack :2.0″ 320×240 SPI LCD と ESP32-WROOM-32 です。
Super M5Stack:2.0″ 320×240 16bit Parallel LCD と ESP32 S3 です。
Library :LovyanGFX
改造方法:M5Stackに 16bit Parallel LCD と ESP32 S3 を 組み込みました。
つまり M5Stack は ガワ だけを使用しました。
魔改造で 最強の速度を得られます。
.
.
速度:
Super M5Stack は M5Stack の 5倍の速さです。
SPI, 8bit, 16bit, 320×240, 480×320, 800×480 の比較:
_ Super M5Stack は グラフの中で最高速。(赤矢印)
_ 16bit Parallel + S3 は SPIより遥かに速い。
_ 320×240 SPIで低価格🔵ESP32-2432S028(青)は M5Stack(緑)より速い。
_ 市販のLILY Pi , WT32-SC01 480×320 SPI ボードは Paralell より遅い。
_ 後にParalell の16bit Parallel ILI9488 ESP32 S2 が販売されています。
_ LovyanGFXの効果は速度に表れ 上記の商品にも採用されています。
_ Raspberry Pi 用のSPI ILI9486 Displayは 表に無いがとても遅い。
_ Arduino用 8bit Parallel Dispは動作しますが Touch機能せず未表示。
320×240 SPI接続との比較;
_ ESP32 S3 (赤) は GPIO数多く 16bit が可能です。
_ その中で MiniKit や S2 mini (緑と紫)も高速です。
_ 上記は 短い小型の基板と 短かい配線の効果が現れています。
Super M5Stack 16bit と 8bit の比較:
_ 8bit でも高速で GPIOを必要とする時に良いでしょう。
.
開発環境:
Hard : ESP32 MiniKit S3:ブログ:Make an ESP32 S3 MiniKit
Arduino IDE 設定:
//===================================================================== // HARD : Super M5Stack : S3 modified version of M5Stack // HARD : 2.0 inch 240x320 8/16bit S6D04K1X LCD Display // : https://www.aliexpress.com/item/32358664884.html // https://www.displayfuture.com/Display/datasheet/controller/S6D04K1X.pdf // Dev environment : Arduino IDE 1.8.19 // Board Manager : arduino-esp32 2.0.3-RC1 // 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 //=====================================================================
Library : LovyanGFX develop
– 謝辞:S6D04K1 LCD の Driver を らびやん氏に開発して頂き感謝致します。
資料:esp32-s3_technical_reference_manual_en
.
.
Down Load:DL後 pdf(_.pdf)を削除しzipを解凍します。
- LovyanGFX は 投稿時 LovyanGFX develop を使用しています。
🟢 Doun Load:Life_Game_Super_M5Stack.zip
🟢 Down Load:LVGL802_demo_Super_M5Stack.zip:LVGL 8.0.2
🟢 Down Load:Maze_generator_Super_M5Stack.zip
🟢 Down Load:uncannyEyes_Super_M5Stack.zip
🟢 Down Load:Test_PDQ_Super_M5Stack_16bit.zip
🟢 Down Load:Raytrace_Super_M5Stack.zip:991 msec
🟢 Down Load:MovingCircles_Super_M5Stack.zip , 200 ObjCount : 172 fps
🟢 Down Load:Tetris_wifi_Super_M5Stack.zip , Super M5Stack と WiFi Console
- WiFi Console で操作します。
.
.
部品リスト:費用:2765円 (M5Stackのケースや材料等は含まず)
1 | M5Stack . |
– | – |
2 | ESP32-S3 Module : TELEC 201-220052 . |
Make an ESP32 S3 MiniKit | 1070円 |
3 | 2.0″ 8/16Bit 320×240 S6D04K1X LCD 2×15 pin |
Ecyberspaces | 1355円 |
4 | ピンソケット 2×15 5.7mm, 低メス . |
秋月電子通商 | 80円 |
5 | ダブルピンソケット 2×13, 低メス . |
秋月電子通商 2個 | 160円 |
6 |
ロープロファイルピンヘッダ, 低オス .2x40P 7.7mm . |
秋月電子通商 | 40円 |
7 | 0.3mm厚ユニバーサル基板 47x36mm . |
秋月電子通商 | 60円 |
8 | M5Stack PROT CASE . |
自作:PROT CASE , . PROT CASE |
50円 |
9 | Polymorph : 自由樹脂。お湯で溶ける . |
LI HUA Store . . アマゾンにもあります |
239円 |
10 | 溶剤:アセトン, ネイル用 . Panelの塗装を剥がす |
ダイソー, 百均 | 100円 |
11 | Wire : 0.26mm ジョンフロン線 | – | – |
.
2.0inch 8/16Bit 320×240 S6D04K1X LCD Display:S6D04K1X pdf
_ 基板は 46x49mmで M5Stackの中(50x50mm)に入ります。
_ 8bit / 16bit の切り替えは 基板上のResistor(183)で行います。
.
.
製作:
_ 配線:24本。ケースとの位置関係でWR(青)の配線は長くなりました。
_ ESP32 S3:MiniKitを改修しMiniKit S3にします。Make an ESP32 S3 MiniKit
_ BL_CTR(BackLight)は Q1 FET Gate 接続で S3 GPIO_10 に接続可能です。
_ LCDのBackLight(LEDA) は 3.3V で駆動されています。
_ S6D04K1XのRESET(RST)は MiniKit S3の EN (τ=0.47μsec)へ接続します。
_ 資料:Ecyberspaces (販売店に回路図があります)。S6D04K1X pdf。
GNDと両サイドに絶縁処理 | ESP32 S3 の取り付け |
.
MiniKit S3 のコネクター側, NC 2つあり | MiniKit S3 の部品側, GPIO 2本配線 |
.
LCDとMiniKit S3の接続基板 connector : 15×2, 13×2 2pcs |
接続基板 と MiniKit S3 Board |
.
Front Caseを加工します | 水色部の黒をアセトンで剥がす |
.
ケースとFront Panel 配置狭くSWは ボタンのみ装着 |
ケースとLCD 角はPolymorph 1個をハンダゴテで固定 |
.
ケースとLCD | LCDにMiniKit S3 Boardを接続 |
.
ケースと4mm枠とMiniKit S3 Board | MiniKit S3とMicro USBと4mm裏蓋 |
.
.
LovyanGFX 設定:
cfg.freq_write =20000000;: 20MHz までです。20MHz以上は 画面が崩れてきます。
//---------------------------------------------------------------------- // https://github.com/lovyan03/LovyanGFX/blob/master/examples/HowToUse/2_user_setting/2_user_setting.ino //===================================================================== class LGFX : public lgfx::LGFX_Device{ lgfx::Panel_S6D04K1 _panel_instance; lgfx::Bus_Parallel16 _bus_instance;//16bit Parallelのインスタンス(ESP32) lgfx::Light_PWM _light_instance; public:LGFX(void){ // バス制御の設定を行います。 auto cfg = _bus_instance.config(); // バス設定用の構造体を取得します。 // 16ビットパラレルバスの設定 cfg.freq_write =20000000;// 送信クロック(最大20MHz,80MHzを整数割の値に丸める) cfg.pin_wr = 15; // WR を接続しているピン番号 cfg.pin_rd = 2; // RD を接続しているピン番号 cfg.pin_rs = 8; // RS(D/C)を接続しているピン番号 cfg.pin_d0 = 42; // D0 を接続しているピン番号 cfg.pin_d1 = 47; // D1 を接続しているピン番号 cfg.pin_d2 = 14; // D2 を接続しているピン番号 cfg.pin_d3 = 11; // D3 を接続しているピン番号 cfg.pin_d4 = 9; // D4 を接続しているピン番号 cfg.pin_d5 = 38; // D5 を接続しているピン番号 cfg.pin_d6 = 4; // D6 を接続しているピン番号 cfg.pin_d7 = 18; // D7 を接続しているピン番号 cfg.pin_d8 = 3; // D8 を接続しているピン番号 cfg.pin_d9 = 39; // D9 を接続しているピン番号 cfg.pin_d10 = 5; // D10を接続しているピン番号 cfg.pin_d11 = 40; // D11を接続しているピン番号 cfg.pin_d12 = 7; // D12を接続しているピン番号 cfg.pin_d13 = 1; // D13を接続しているピン番号 cfg.pin_d14 = 16; // D14を接続しているピン番号 cfg.pin_d15 = 6; // D15を接続しているピン番号 _bus_instance.config(cfg);// 設定値をバスに反映します。 _panel_instance.setBus(&_bus_instance); // バスをパネルにセットします。 {// 表示パネル制御の設定 auto cfg = _panel_instance.config(); // 表示パネル設定用の構造体を取得します。 cfg.pin_cs = 17; // CSが接続されているピン番号 (-1 = disable) cfg.pin_rst = -1; // RSTが接続されているピン番号 (-1 = disable) cfg.pin_busy = -1; // BUSYが接続されているピン番号 (-1 = disable) cfg.memory_width = 320; // ドライバICがサポートしている最大の幅 cfg.memory_height= 240; // ドライバICがサポートしている最大の高さ cfg.panel_width = 320; // 実際に表示可能な幅 cfg.panel_height = 240; // 実際に表示可能な高さ 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 = true; // データ読出しが可能な場合 trueに設定 cfg.invert = true; // パネルの明暗が反転してしまう場合 trueに設定 cfg.rgb_order = true; // パネルの赤と青が入れ替わってしまう場合 trueに設定 cfg.dlen_16bit = true; // データ長を16bit単位で送信するパネルの場合trueに設定 cfg.bus_shared = false; // SDカードとバス共有はtrueに設定 _panel_instance.config(cfg); } { // バックライト制御の設定を行います。(必要なければ削除) auto cfg = _light_instance.config();// バックライト設定用の構造体を取得します。 cfg.pin_bl = 10; // バックライトが接続されているピン番号 BL cfg.invert = false; // バックライトの輝度を反転させる場合 true cfg.freq = 44100; // バックライトのPWM周波数 cfg.pwm_channel = 7; // 使用するPWMのチャンネル番号 _light_instance.config(cfg); _panel_instance.setLight(&_light_instance);//バックライトをパネルにセットします。 } setPanel(&_panel_instance); // 使用するパネルをセットします。 } }; LGFX tft; // 準備したクラスのインスタンスを作成します。
.
.
感想:
最速のM5Stackを目指し LCDは 16bit Parallel。MPU は ESP32 S3 を選択。
M5Stackの中に収めるために 小型LCDを探し S3を基板化し組み込みました。
LCDの基板の厚みは 1.2mm。 コネクターは 細工せず そのまま使用。
MiniKitの基板の厚みは 1.6mm。接続基板は 0.3mm厚を使用。
LCDと接続基板のコネクターは 高さの低い 5.7mmを使用。
MiniKitと接続基板のコネクターは 高さの低い 低メスと低オスを使用。
結果 M5Stackに入るものの 場所的に狭く M5Stackの標準装備は ありません。
工夫をすれば この課題は解決できます。
.
M5Stack Fire:分解使用したもの。
MD5 Error 発生の FireでUSB接続不可。それで本体基板を MiniKitに交換しました。
すると 同じ ESP32 でありながら MiniKitの方が速い。
ところが LCDは 30, 40MHz では動作せず 20MHzでしか動作せず。
他の M5StackのLCDは 80MHzでも表示しました。
M5Stackは 40MHzで動いていたはず。不可解な故障で原因追及もままならず、、。
そこで LCDも変えてしまおうと 魔改造の材料になりました。
.
M5Stack S3 Version は どの様な構成で発売されるか解りませんが
ESP32 S3 のパラレルアーキテクチャーと
16bit Parallel Display を採用し 最強のM5Stackを期待しています。
ただし 多分 この視点は持ち合わせていないと思っています。
.
専用基板を作成すれば 最高速で低価格, 汎用性のあるものが作れますね。
.
.
.
.
.
.
M5Stack , Super M5Stack , Minikit S3 , 改造 , 魔改造 , 最強 , 最速 , 高速 ,
5倍 , 16bit Parallel ,
WiFi Console
レトロ な ワイヤレス コントローラーを作ります。 2022.10.03
ワイヤレスでゲーム:WiFi Console と ESP32-2432S028
構成:FC Console, Swicth, Battery Charger, M5Stamp C3U, Battery
.
.
仕様:
1. WiFi :M5Stamp C3U:3.5 x 2.0 x 5 mm:中に入るサイズ。
2. 電源;USB 又は 内蔵 Battery 。
3. 接続方法;UDP 通信 。
4. USB Power;5V 80mA 。
5. FC Console ; ボタンと送信データー 8bit (1, 2, 4, 8, 16, 32, 64, 128)。
_ 複数ボタンの同時押しは 合計値になります。例:左 UP(16) + 右上(2) = 18
.
開発環境:
Arduino IDE 1.8.19
Board Manager : arduino-esp32 2.0.3-RC1
Library :joshmarinacci / nespad-arduino : Josh Marinacci 氏に感謝。
.
.
Down Load:DL後 pdf(_.pdf)を削除しzipを解凍します。
🟢 Doun Load: wifi_console.zip
🟢 Down Load:SpaceShooter_WiFi_2432S028.zip
🟢 Down Load:Tetris_wifi_2432S028.zip
.
ESP32_2432S028 タッチパネル バージョン
🟢 Down Load : Tetris_ESP32_2432S028.zip
.
.
部品リスト:費用:1490円 (購入時の価格)
No. | Nomen | Purchase | Price |
1 | FC Game console . |
TECTINTER Official . $3.39 . 輸送期間 : 11日 |
404円 |
2 | M5Stamp C3U . |
M5Stack Official Store . $31.7 . 5pcs販売 3417円,1個 685円, |
685円 |
3 | Battery Charger . |
Lithium Battery Charger Module . Type-C protect , 10pcs 590円 . 輸送期間=16日 |
59円 |
4 | Battery:FUJIFILM . NP-40 , 3.6V 750mAh . 40x35x6mm , 厚み<6mm . |
秋葉原・中古屋 | 100円 |
4 | Battery:ロワジャパン . ( キャノン ) . NB-4L , 3.7V 760mAh . 40x35x6mm |
ロワジャパン | |
5 | スライドスイッチ . |
秋月電子通商 | 20円 |
6 | ピンヘッダ(低オス) 8.5mm | 秋月電子通商 | 40円 |
7 | ピンソケット(低オス) 3.6mm | 秋月電子通商 | 60円 |
8 | ユニバーサル基板 0.3mm厚 . |
秋月電子通商 | 120円 |
9 | Spacer:位置調整 | – | |
10 | Wire : | – |
バッテリーの厚みは 6mm 以下が必要です。
🔵 1900円 ESP32 + 2.8″ Display ESP32-2432S028 の販売店は Sunton Store です。
🔵 2.8″ Display の解説は ESP32-2432S028 を参照ください。
.
.
製作:
FC Console の 配線図と信号:
1. スイッチが押されるとDATAはGNDになります。
2. 10個のスイッチから 押された場所の信号(DATA)が出力され 受信されます。
- 複数のスイッチが押された場合は 合計値(足し算)のDATAになります。
3. 受信側は STROBE,CLOCK,DATA信号からスイッチの場所を検出。
3V3,GND 2本と STROBE(21), CLOCK(20), DATA(9) 3本を配線。 (C3U GPIO) |
.
🔴 USB Charger(4.2V)から C3U 5Vへ供給。 🟠 Batteryから Switchを介して C3U 5Vへ供給。 🟠 Switch ON で Charger (4.2V) から Battery を充電。 組み込み時 M5Stamp C3UのUSBは 使用しない。 |
.
配置:
Front Cover and Front Switch | Battery charge USB connectorの穴を開ける |
.
Stamp C3U , Conductive switch | PCB , Battery Switch, Spacer |
.
Battery:NP-40, NB-4L 40x35x6mm 厚み 6mm 以下 |
Rear cover : cut a part 中央の押さえは切り取る。 左右の押さえは残しておきます |
.
ESP32-2432S028 | WiFi 接続 |
.
.
//============================================================= // WiFi Console : 2022.08.30 : macsbug // https://macsbug.wordpress.com/2022/10/03/wifi-console/ //============================================================= // HARD : fc console // HARD : M5Stamp C3U // Dev environment : Arduino IDE 1.8.19 // Board Manager : arduino-esp32 2.0.3-RC1 // Board : "ESP32C3 Dev Module" // Upload Speed : "921600" // USB CDC On Boot : "Enabled" // CPU Frequency : "160MHz (WiFi)" // Flash Frequency : "80MHz" // Flash Mode : "QIO" or "DIO" // Flash Size : "4MB(32Mb)" // Partation Scheme : "Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)" // Core Debug Level : "None" // Port : "dev/cu.usbmodem142401 (ESP32S3 Dev Module)" // Library : joshmarinacci / nespad-arduino // https://github.com/joshmarinacci/nespad-arduino // ------------------------------------------------------------ // Wiring : FC : STROBE, CLOCK, DATA // : C3U : 21 , 20 , 9 // FC Console Data : none=0, select=4, start=8 // : L : L=64, R=128, U=16, D=32 // : R : L=2 , R=1 , U=2 , D= 1 //============================================================= /* this example from the NESpad Arduino library displays the buttons on the joystick as bits on the serial port - rahji@rahji.com Version: 1.3 (11/12/2010) - got rid of shortcut constructor - seems to be broken*/ //============================================================= #pragma GCC optimize ("Ofast") #include <WiFi.h> #include <WiFiUDP.h> #include <WiFiClient.h> #include <Adafruit_NeoPixel.h> Adafruit_NeoPixel pixels(1, 2, NEO_GRB + NEO_KHZ800); const char *ssid = "fc"; // SSID const char *pass = "12345678"; // Password const int Port = 9000; // Port static WiFiUDP UDP; // UDP Object IPAddress HostIP (192, 168, 4, 1); // Host IP IPAddress myIP (192, 168, 4, 2); // my IP #include <NESpad.h> // NESPad Arduino Library NESpad nintendo = NESpad(21,20,9); // GPIO:strobe,clock,data //============================================================= void setup() { Serial.begin(115200); pixels.begin(); WiFi.mode(WIFI_STA); UDP.begin (myIP, Port); WiFi.begin (ssid, pass); WiFi.config(myIP, WiFi.gatewayIP(), WiFi.subnetMask()); } //============================================================= void loop() { int dt = nintendo.buttons(); String tx = String(dt); if ( dt>0 && dt<255 && UDP.beginPacket(HostIP, Port) ) { //Serial.println(dt); UDP.println(tx); UDP.endPacket(); pixels.setPixelColor(0,pixels.Color(255,0,0)); // ON RGB pixels.show(); if (dt == 4){delay(2000); ESP.restart();} // re_start } //delay(5); pixels.setPixelColor(0,pixels.Color(0,0,0)); // OFF pixels.show(); } //=============================================================
.
.
感想:
コントローラーは いろいろありますが レトロなデザインを選択。
デザイン:中に全て入る事。
_ 小型の M5Stamp C3U が唯一入ります。
_ バッテリーは 6mm以下でないと入りません。
_ FC Console の工作は なるべく少なくする。
何に使用するのか:
_ とりあえず ESP32-2432S028。
_ 次回の テーマに使用します。
.
プログラム:ワイヤレスとは何か?
_ ワイヤー接続は 連続で信号を送り 消費電力は少ないです。
_ WiFi接続の場合は 連続送信する事で バッテリーの消費が課題になります。
_ Tetris Game は 25msec 間隔でブロックが落下します。
_ スイッチの情報は その25msec より速く送る必要があります。
_ 省電力の為に いろいろ思考しましたが 変化のある時だけ送信するという
_ のは 意味が少ないです。よって 単純な連続送信としました。
.
バッテリー:
_ 中に収める為に 厚み 6mm 以下が必要です。
_ NP-40 FUJIFILM 40x35x6mm
_ NB-4L CANNON 40x35x6mm, 互換 ロワジャパン
_ 通常 価格は 高いので安い所を探しましょう。
_ 秋葉原・中古屋で安く購入しましたが 常にあるかは別です。
.
.
.
.
.
Famicon , Controller , Console , M5Stamp C3U , WiFi , UDP , Battery ,
ESP32-2432S028 ,
ESP32-3248S035
ESP32-3248S035R/C motherboard ORG. 2022.09.16
. rev 1. 2022.09.19
. rev 2. 2022.09.22
3.5″ 320×480 SPI ST7796 with Resistive Touch Panel XPT2046
価格:🟢 2314円 送料込 ($16.13)。輸送期間:14日。
3.5″ 320×480 SPI ST7796 with Capacitive Touch Panel GT911
価格:🟢 2733円 送料込 ($19.04)。輸送期間:未到着。
低価格で ESP32, LCD Display等が1つの基板でできています。
販売店:Sunton Store
輸送期間;14日で Aliexpressの中では早い方でした。
サイズ:Displayは 75x50mmでカードサイズ。全体は 101.5×54.9mm。
無印のメイクパレット・S (990円) に入ります。 |
.
.
構成:
1. ESP32 with TELEC(211-161007) : 内部 4MB(32Bit) Flash
2. 外部 4MB(32Mbit) Flash memory, winbond 25Q32JVSlQ
3. LCD ( ST7789 ) with Touch ( XPT2046 抵抗膜方式)
4. Expanded IO x 2
_ P3 ( GND, GPIO_35, GPIO_22, GPIO_21)
_ CN1 ( GND, NC, GPIO_21, 3.3V)
5. SD SLOT ( Micro SD ) : CS=GPIO_5
6. RGB LED ( MHP5050RGBDT )
_ RED=GPIO_4, GREEN=GPIO_17, BLUE=GPIO_16
7. CDS ( GT36516 ) : CS=GPIO_34
8. EXT Power Conn : P1 ( VIN, TX, RX, GND )
9. Audio OUT(Audio amp SC8002B) : GPIO_26
_ P4 SPEAK(1=VO1, 2=VO2)
10. P1 Power Supply Bace Connector(VIN, TX, RX, GND)
11. 付属:Touch pen, 4pin External connector cable, USB Cable。
資料:
– 購売店に ESP32-3248S035Rのdownload linkがあります。重要です。
– Display Libraryは LovyanGFX (ST7789, XPT2046, SPI2_HOST)で動作。
– 3.5inchは 大きく 操作性良く とても見やすい大きさです。
– ボタンやキーボード等を自由に配置でき 物理スイッチは不要です。
.
.
開発環境 :
HARD : ESP32_3248S035R ( R = Resistor Touch の意味 )
– Display : 3.5″ 320×480 SPI ST7796 LCD Touch XPT2046
Dev environment : Arduino IDE 1.8.19
– Board Manager : arduino-esp32 2.0.3-RC1
– Board : “ESP32 Dev Module”
– Upload Speed : “460800” (Mac), “921600” (Win)
– CPU Frequency : “240MHz (WiFi/BT)”
– Flash Frequency : “80MHz”
– Flash Mode : “QIO” or “DIO”
– Flash Size : “4MB (32Mb)”
– Partition Scheme : No OTA (2MB APP/2MB SPISSF)”
– Core Degug Level : “None”
– PSRAM : “Disabled”
– Arduino Runs On : “Core 1”
– Events Run On : “Core 1”
– Pord : “dev/cu.wchusbserial14240”
_ memo :
_ CH340C の為 Upload Speed は Mac と Win では 異なります。
_ LovyanGFX Touch cfg.pin_int = 36; Touchが動作しない場合は -1 にします。
Library : LovyanGFX
.
.
🔴 追記:SPI接続 設計ミス:2022.09.22
ESP32-2432S028 , ESP32-3248S035 の U4 外部 4MB Flash memoryについて。
U2 ESP32-WROOM-32 は 内蔵 4MB Flash です。そして外部Memoryとして
U4 4MB Flash Memory 8Pin W25Q32JV があります。
Flashは SPI接続で VCC以外のPinは全て(CS,DI, DO, WP,CLK, HOLD,GND)共通。CSもです。
マルチサブモードやマルチスレーブにはなっていません。
よって U4のCS並列接続は設計ミスと判断しています。
不具合事例:Arduino IDEでUP LOAD(書き込み)時にエラーが発生し書き込み不可。
_ Flashの破損。他、不可解な現象が発生します。
現象:UP LOAD不可。🔴 Flashが壊れます。
原因:U2内部FlashとU4外部FlashのCS,DI,DO共通によりFlashが重複。
対策:🟢 U4 Flash を取り除きます。
詳細:以降の解説 19 を参照ください。
.
.
🟠 記事修正:2022.09.19
UP LOAD に関し 設計ミスが判明し修理致しました。
.
.
Down Load:DL後 pdf(_.pdf)を削除しzipを解凍します。
🟢 Down Load : Life_Game_ESP32_3248S035.zip
🟢 Down Load : LVGL802_demo_ESP32_3248S035.zip
🟢 Down Load : Maze_generator_ESP32_3248S035.zip
🟢 Down Load : MovingCircles_ESP32_3248S035.zip : obj_count 100 =11 FPS,
🟢 Down Load : Raytrace_ESP32_3248S035.zip
🟢 Down Load : Test_PDQ_ESP32_3248S035.zip
🟢 Down Load : uncannyEyes_ESP32_3248S035.zip
🟢 Down Load : Tetris_ESP32_3248S035.zip:revision:Bug修正。2022.09.19
.
🟢 Down Load : WebRadio_ESP32_3248S035_SP.zip:revision:2022.09.19
- Web Radio ESP32-3248S035 Speaker版:
- P4 SPEAK 端子にSpeakerを接続し音を再生出来ます。
- 8Ω 2W 40x5mm Speaker と間に100Ωを接続します。過電流防止です。
- ダイソー330円スピーカは 直接接続でき 充分聞ける音質です。
- デジタル Web Radio ESP32-2432S028-I2S方式との比較はノイズが僅か入ります。
- 局の廃止や受信不良が発生する場合があります。
.
.
部品レイアウト:配置、信号、ピンは色分けしてあります。
以下のPDF図面は 拡大表示が可能と文字検索が可能です。
配線や設計、改造時に便利です。
🟢 ESP32-3248S035R_PCB_Layout
.
GPIO Pin Assign:部品とGPIO表です。
1. GPIO39 は 未配線。
2. LCDとTouchの SCLK(14), MOSI(13), MISO(12) は 共有。(薄緑)
3. Touch Resistive CS と Touch Capacitive SDA は 共有。(薄紫)
4. P3 IO21 と CN1 IO21 と Capacitive Touch INT は 共有。(薄橙)
.
Cds | R21 |
GPIO | 34 |
Audio AMP | U5 |
GPIO | 26 |
LED1 | RED | GREEN | BLUE |
GPIO | 4 | 16 | 17 |
U4 Flash | HOLD | WP | CLK | DI | DO | CS |
GPIO | SD2 | SD3 | CLK | SD1 | SD0 | CMD |
GPIO | 9 | 10 | 6 | 8 | 7 | 11 |
LCD SPI | LED | RST | DC(RS) | SCLK | MOSI | MISO | CS |
GPIO | 27 | EN(-1) | 2 | 14 | 13 | 12 | 15 |
Touch SPI Resistive | INT(IRQ) | SCLK | MOSI | MISO | CS |
GPIO | 36 | 14 | 13 | 12 | 33 |
Touch I2C Capasitive | INT(IRQ) | SCL | SDA | RST |
GPIO | 21 | 32 | 33 | 25 |
SD | DATA2 | VSS | VDD | CLK (CLX) |
MOSI (CMD) |
MISO (DAT0) |
CS(CD) |
GPIO | 3V3 | GND | 3V3 | 18 | 23 | 19 | 5 |
.
Connector:
P3 | GND | IO35 | IO22 | IO21 |
CN1 | GND | NC | IO21 | 3V3 |
P1 | VIN | TX | RX | GND |
P4 | VO1 | VO2 |
.
Touch Panel:
1. Touch Calibration:
_ 電源ONでタッチキャリブレーションが始まり四隅の入力が終了で
_ Calibration の値を取得できます。Arduino IDEのSerial Monitorに
_ uint16_t calData[5] = { 200, 3559, 194, 3741, 3 };
_ tft.setTouch(calData);
_ とか表示され calData として使用できます。
_ Library TF-eSPI で setup に記載して使用できます。
2. LGFXで 以下の値でも結構まともにセンスします。
_ cfg.x_min = 360; , cfg.x_max = 4200;
_ cfg.y_min = 180; , cfg.y_max = 3900;
Touch | x_min | x_max | y_min | y_max |
LGFX | 360 | 4200 | 180 | 3900 |
.
3. タッチパネル使用可能条件:
_ Arduino IDE : CPU Frequency : “240MHz” と LGFX cfg.pin_int = -1;
_ Arduino IDE : CPU Frequency : “160MHz” と LGFX cfg.pin_int = 36;
_ スケッチ;Loop中に長いdelayを入れない事。参考:Tetris
.
解説:
- ESP32やESP32ボード共通の情報も含まれます。
1. ESP32 : 内部 4MB(32Bit) Flash
- esptool.py flash_id の表示。
Detecting chip type... ESP32 Chip is ESP32-D0WD-V3 (revision 3) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz MAC: 40:22:d8:57:f1:fc Uploading stub... Running stub... Stub running... Manufacturer: ef Device: 4016 Detected flash size: 4MB
.
2. U4 External FLASH Memory 4MB(25Q32):
- 外部 4MB(32Mbit) Flash memory, winbond 25Q32JVSlQ
- 拡張用のFLASH 4MB です。CS=GPIO_11。
- 3V 32M-BIT SERIAL FLASH MEMORY WITH DUAL, QUAD SPI
- External Flash : Start Address 0x3F40_0000 End 0x3FF8_0000
- 4MB (4194303バイト):詳細:ESP32 Technical Reference Manual
_ 参考:ESP-WROOM-32の外部フラッシュメモリにアクセスする
.
3. LCD Touch MISO:Arduino IDE の setup に必要な設定。
- このボードでは GPIO_39 Input は使用されていません。
- GPIO_39 は WiFI使用時に Pulseが発生します。(画像:左)
- 対策:以下を記載するとPulseは無くなります。 (画像:右)
- 原因:ESP32チップのバグです。
void setup() { WiFi.begin(); WiFi.setSleep(false);
- GOIO 36 Input
- 同様にESP32のバグで GPIO36も短いスパイクが出るという情報。
- GPIO39, GPIO36 もPulseにより接続部品が壊れる事を想像します。
- 対策:adc_power_acquire(); を setupの先頭に記述します。
- 結果:GPIO36 および GPIO39 のグリッチは除去されます。
void setup() { adc_power_acquire();
WiFi.begin() | WiFi.setSleep(false) |
.
4. 配線図とボードの差異:
- 部品タイプの変更。
- 配線図:R1, R3, R12, R13, R14, R18, SMD 103 10KΩ。
- ボード:R1, R3, R12, R13, R14, R18, SMD 01C 10KΩ。
–
- Audio Circuit : GAIN の変更。回路図を参照してください。
- 配線図:R7 = 47KΩ。ボード:R7 = 0Ω
- 配線図:R8 = 22KΩ。ボード:R8 = 0Ω
- 部品タイプの変更:R9 SMD 68E (68KΩ)
- ESP32-2432S028 と比較し GAIN の変更。
- Speaker で聞く分には大差ないです。
- 回路図:ESP32-3248S035-LCM-V1.1.jpg
- 回路図:ESP32-2432S028-LCM.jpg
–
- JP0, JP3 端子
- 配線図:0Ω。ボード:Open
- JP0:LDO=AMS1117, 3.3V-TFT:3.3Vdc 4mVac
- JP3:LDO=AMS1117, 3.3V-ESP:3.3Vdc 3mVac
.
5. P1, P3, CN1, P4 Extender Connector Cable:
No. | Nomen | Purchase | Price |
1 | P,P3,CN1 Extender . Cable Connector . HC-1.25-4PWT |
EFEF Store . JST1.25, 10cm, Single head, 4P . 価格:20個283円 |
15円 |
2 | P4 Extender . Cable Connector . JST_1.25_2P |
EFEF Store . JST1.25, 10cm, Single head, 2P . 価格:10個99円。 |
10円 |
.
6. INPUT ONLY GPIO:入力専用GPIOの把握。
- GPIO_36 (RTP_IRQ), GPIO_39 , GPIO_34 (cds), GPIO_35 (P3) は
- INPUT ONLYです。使用時や回路変更時に注意してください。
.
.
7. 共有(Commn) GPIO 21:使用時の注意。
- GPIO_21 は P3 , CN1 , CTP_INT と共有です。
.
- Capacitive Touch CTP_INTは R25(0Ω)経由で基板上にパターンがあります。
- R25(0Ω)は 未装着でOpen になっています。
.
8. LCD GPIO_12 (TFT SDO ) R24 (0Ω)は 未装着。
- ESP32 GPIO_12 は 起動モード設定に使用される為
- Low にする必要があります。
.
.
.
.
9. 電源:3.3Vは 2系統の電源になっています。
- USB 5VdcからD1 Diodeを経由し LDO AMS1117で3.3Vdc。
- D1 1N5819W Diode の出力は 4.6Vdc 17mvacです。
- 3.3V は 2つのLDOにより 3.3V-ESP と 3.3V-TFT が作られます。
.
.
10. P1 Power Supply Base Connector:使用時の注意。
- USB接続時 VIN には Q1 FET から 4.6V 17mvacが出ています。
- Q1 FET Gate が GNDの為 Q1 は ON です。
- 使用時に検討ください。
- Diode D1 1N5819W pdf:Vf = 0.32V(0,1A), Vf = 0.45V(1.0A), - 5.0-0.45=4.6V
.
.
11. P4 SPEAK と Speaker:スピーカー接続方法。
- P4 コネクターへ 外部スピーカを接続できます。
- ダイソーの330円スピーカーに接続でき充分聞ける音です。
- スピーカーの径が大きいと音質が向上します。
- スピーカー単体の接続は 追加抵抗値が 100Ω程度必要です。
- 直接 4Ω や 8Ω の Speakerを接続しますと電流が流れすぎ
- 3.3V電源が低下し ESP32が停止します。
- 例;8Ω 2W 40x5mm Speaker に 100Ω を直列に接続します。(画像:左)
.
12. ESP32 EN 時定数:
- R1(10KΩ) と C4(0.1μ) で 時定数 τ(タウ) は 47μsec です。
- 47μsecは ESP32 の起動には 仕様を満たした安全な値です。
.
13. ESP32 Revision:Revision 3 です。
- Serial port /dev/cu.wchusbserial14240
- Detecting chip type… ESP32
- Chip is ESP32-D0WD-V3 (revision 3)
- Revision 1 は 不具合versionですので, 3 で良かったです。
.
14. 速度:
- 3248S035は SPI接続で Parallel 8/16bit との差が解ります。
- 同じ 320×480 の中で 最高速の中に入っています。
- 部品の選択が大きな要素です。
- LovyanGFX使用により高速表示が実現します。
- ILI9486 や M5Stamp C3 は遅いです。
.
.
.
15. R21:GT36516 Photoresistor:Cdsの動作範囲。
- 以下の特性ですので 動作範囲を把握して使用します。
- R21 Cds は GPIO_34 (Input)へ接続されています。
- テスターで対GND電圧と抵抗値測定。
- 暗くする :150mVdc , 抵抗値=25KΩ
- 明るくする;部屋の蛍光灯:20mVdc , 抵抗値=5.5KΩ。窓の光:16mVdc
- プログラム:
- analogSetAttenuation(ADC_0db); // 0dB(1.0倍) 0~800mV
- pinMode(34, ANALOG);
- 計測:Serial.printf(“%d[mV]\n”, analogReadMilliVolts(34) );
- 計測結果;部屋を暗くする:230mVdc.。明るくする;75mVdc
- 指で遮蔽した程度では 変化は少なく 明暗の差が必要です。
.
.
16. LCD Library:
- LovyanGFX を使用し 設定は以降に示します。
- LovyanGFXは 高速である事と FONTが多数用意されている事や
- 漢字が容易に使用できます。
.
17. 速度とタッチセンス
- 速いMPUやLGFXは 表示速度が速くチラツキなく見やすくなります。
- Tetris の Loop は 25msecで表示を繰り返しています。
- ブロックが落下する速度は 25msec が見やすい速度の為です。
- 遅いM5Stackでは 安易に Loop に 25msec delay を入れていました。
- 速度が速くなると delay方式は タッチセンスしない為 使用できません。
- delayを使用しない方法でのプログラムが必要になります。
.
18. PCBは カードサイズ:ケースの製作方法。
- カードサイズの為 市販のカードケースや化粧ケースが使用可能です。
- 加工は伴いますが 3Dプリンターは不要で 綺麗に仕上がります。
無印良品:メイクパレット・S 111x71x15mm ( 990円 )。 位置を決めて 穴を開けます。 USBの位置は 右か左側に決めます。 USBコネクターの位置を十分検討。 |
養生テープを取り付け 穴を開け アセトンを流し込むと 鏡の両面テープ(4x8mm)が取れます。 カッターやヤスリで窓を開けます。 |
.
ケースの高さに合う ナイロンネジ(M3 5-8mm)を取り付けます。 P4 SPEAK Connector : JST_1.25_2P と 販売店:EFEF store:価格:10個99円。 8Ω 2W 40x5mm Speaker + 100Ω を取り付けます。 ーーーーーーーーーーーーーーーーーーーー P1, P4, CN1 Connector:HC-1.25-4PWT 販売店:EFEF store:価格:20個283円。 |
.
隙間がないように仕上げます。 ステレオミニジャックを取り付けて ダイソースピーカに接続も出来ます。 |
表示具合です。 右の配線は 黒テープ等で処理。 光造形3Dプリンタより綺麗です。 |
.
.
19. U4 SPI 接続:設計ミス。追記:rev 2. 2022.09.22
- U2 ESP32 内蔵 4MB Flash と U4 外部 Flash 4MB 8pin W25Q32JV の配線は
- VCC を除き全て(CS,DI, DO, WP,CLK, HOLD,GND)共通です。CSもです。
- 判断の根拠は マルチサブモードやマルチスレーブには なっていません。
- CSが並列なら DI,DO信号は直列接続にする必要があります。
- DI,DO信号が並列なら CS信号は 別にする必要があります。
- 回路図 及び 実際の配線は 上記の基本の様になっていません。
- 設計者は並列と言い 何の為に 並列にしているか根拠が不明です。
- 設計者に2回 お聞きしても問題ないとの返事で 根拠は述べていませんでした。
- さらに 設計者は並列の制御方法は知らないと述べていました。
現象:UP LOAD不可。🔴 Flashが壊れます。
原因:U2内部FlashとU4外部FlashのCS並列によりFlashが重複。
処置:🟢 U4 Flash 4MBを散り外します。図面を参照ください。
- ハンダゴテで片側4つの端子に並列に熱を加えピンセツトで上に持ち上げます。
- 片側が外れましたらもう片側の端子に熱を加え取り除きます。
- ハンダゴテがない場合 ニッパーやカッター等でピンを全て切り取り外します。
- 特にGNDだけを外す様な 更なるな不具合を発生させる方法はしない事。
- ICの仕様にない接続をしないと言う事です。
- U4は 並列で何の役にも立っていませんので取り外し時に壊れても良いでしょう。
- 実施後は アセトンかアルコールで基板をクリーニングします。
- この件は 私の判断ですので 各自で責任をお持ちください。
-処置:U4取外しでもダメな場合は ESP32内蔵 4MB Flashを交換します。
- この場合 金属の蓋を開け 修理改造になりますので TELECは無くなります。
–
PDF:画像が見え難い場合は PDF を参照ください。S028_S035_SPI_480s
.
🟠 2個並列に書き込んだFlashは どうなるか?
- U2内部FlashとU4外部Flashが 正しく書き込まれている場合と
- 書き込まれていない場合の4通りができます。
- U4外部Flashを外すと
- 1. U2内部Flashが正しく書き込まれていると 以前のスケッチがそのまま動きます。
- 2. U2内部Flashが正しく書き込まれていないと 動作せず表示しません。
🔵 これは この並列接続は 間違っている事を示しています。
;
- 正しく書き込まれていないFlashを混ざて動かすと奇妙な現象が発生します。
- Arduino IDEで書き込み回数が(50〜200回とか)多くなると顕著に発生します。
- 例として GPIO_27使用不可,タッチ操作不可,書き込み不安定,書き込不可,MD5エラー,
- U2内部Flash破損(esptoolでeraseしても不可)(最悪),等々が発生しました。
- esptool.py での erase は esptool.py erase_flash でなく以下が良いです。
- ただし この基板は これだけの問題でなく CH340C の問題があります。
実施前 以下で確認。 esptool.py chip_id esptool.py flash_id erase 実施。 esptool.py erase_region 0x10000 0x1000 実施後 以下で確認。 esptool.py chip_id esptool.py flash_id
;
🟢 MD5エラーは 書き込み回数の多い M5Stackでも発生する現象です。
- 対策は esptool.pyで Flashをeraseすると治ります。
- S028,S035の場合 取り外し後に U2内部Flashが正しく書き込まれていないと
- 2,3回 MD5エラーで書き込みができなくなりますが その後は書き込みが
- 出来る様になります。
- Espressif SystemsのSPI Flashを読むと 私には 極めて難しい事が書かれており
- 奥義もある様で自分の判断が正しいのか疑問に包まれます。
- eraseで 治った様に見えましたが その後も 再び MD5 error が発生。
- 対策は Auto Program で無く Manualで書き込んでいます。
_ Manual program :
_ USB Re-Connect , Boot + Reset Switch, Reset Open, Boot Open です。
_ 経験的ですが CH340C はこの現象が多いです。
.
基板不具合: rev 1. 2022.09.18
タッチ操作の不完全とUP LOAD の2つの不具合に時間を要しました。
最初は時々 発生。その後 かなりの歩度で不具合発生。
投稿後にも不具合が再発し不具合部品の交換を実施。
1. 不具合:Touch IC U3 XPT2046 x,y 入力は良いが pin-11 IRQ Output 無し。
- 原因:XPT2046 IRQ Output Pin-11 の不良。
- 処置:U3 XPT2046 を交換し IRQ OUTPUT は正常になる。
- メモ:U3 Pin-9,10 は GND です。2つあることは重要で 不十分な GNDは
- HI=3.3V が 2.5V とかになり “1” であるはずの Logicが “0” になります。
2. 不具合:USB接続切れが発生する。書き込み時にエラーメッセージ発生し書き込めない。
- 「 A fatal error occurred: Serial data stream stopped: Possible serial noise or corruption.」
- 「 A fatal error occurred: MD5 of file does not match data in flash!』も発生する。
- 原因:U2 ESP32内のFlash 4MB。
- 処置:Flash 4MBを16MBに交換し書き込みは正常になる。
- メモ:esptool で 内蔵 Flash Memory を消去し 治った様に見えましたが治らず。
_ esptool.py erase_region 0x1000 0x8000
_ memoryの不具合は タッチ操作が不安定にもなりました。
_ CPU Frequency : “240MHz (WiFi/BT)” : LGFX cfg.pin_int = -1; と
_ CPU Frequency : “160MHz (WiFi/BT)” : LGFX cfg.pin_int = 36; なら動作する
_ と言う 摩訶不思議な現象が発生しました。
2. CH340C: Arduino IDE Upload Speed は
- Mac で “460800” 。 Win で “921600” です。
- それぞれの OSで過去の速度は遅く 時と共に改善されました。
- Mac で “921600” にしますと MD5 error が多発します。
その後、モニターしていますが 再び MD5 error が発生。
対策は Auto Program で無く Manualで書き込んでいます。
_ USB Re-Connect , Boot + Reset Switch, Reset Open, Boot Open です。
.
.
LIbrary Lovyan GFX 使用により多くの事が容易にできます。
Lovyan GFX 設定:
_ Display:ST7789 SPI:SPI2_HOST , SPI3_HOST 又は HSPI_HOST
_ cfg.freq_write : Max 40000000 ( 40MHz )
_ Touch:XPT2046 SPI:SPI2_HOST , SPI3_HOST 又は HSPI_HOST
_ Touch:cfg.pin_int = 36; Touchが動作しない場合は -1 にします。
_ Arduio IDE :
_ tft.setRotation(1); // USB Right
_ tft.setRotation(3); // USB Left
//---------------------------------------------------------------------- // https://github.com/lovyan03/LovyanGFX/blob/master/examples/HowToUse/2_user_setting/2_user_setting.ino class LGFX : public lgfx::LGFX_Device{ lgfx::Panel_ST7796 _panel_instance; lgfx::Bus_SPI _bus_instance; lgfx::Light_PWM _light_instance; lgfx::Touch_XPT2046 _touch_instance; //---------------------------------------------------------------------- public:LGFX(void){{ // バス制御の設定を行います。 auto cfg = _bus_instance.config();// バス設定用の構造体を取得します。 // SPIバスの設定 cfg.spi_host = SPI2_HOST; // 使用するSPIを選択 (VSPI_HOST or HSPI_HOST) cfg.spi_mode = 0; // SPI通信モードを設定 (0 ~ 3) cfg.freq_write = 40000000; // 送信時のSPIクロック(最大80MHz,80MHzを整数割値に丸め) cfg.freq_read = 16000000; // 受信時のSPIクロック cfg.spi_3wire = false; // 受信をMOSIピンで行う場合はtrueを設定 cfg.use_lock = true; // トランザクションロックを使用する場合はtrueを設定 cfg.dma_channel= 1; // 使用DMAチャンネル設定(1or2,0=disable)(0=DMA不使用) cfg.pin_sclk = 14; // SPIのSCLKピン番号を設定 SCK cfg.pin_mosi = 13; // SPIのMOSIピン番号を設定 SDI cfg.pin_miso = 12; // SPIのMISOピン番号を設定 (-1 = disable) SDO cfg.pin_dc = 2; // SPIのD/C ピン番号を設定 (-1 = disable) RS // SDカードと共通のSPIバスを使う場合、MISOは省略せず必ず設定してください。 _bus_instance.config(cfg); // 設定値をバスに反映します。 _panel_instance.setBus(&_bus_instance);// バスをパネルにセットします。 } { // 表示パネル制御の設定を行います。 auto cfg = _panel_instance.config();// 表示パネル設定用の構造体を取得します。 cfg.pin_cs = 15; // CS が接続されているピン番号(-1 = disable) cfg.pin_rst = -1; // RST が接続されているピン番号(-1 = disable) cfg.pin_busy = -1; // BUSYが接続されているピン番号(-1 = disable) cfg.memory_width = 320; // ドライバICがサポートしている最大の幅 cfg.memory_height = 480; // ドライバICがサポートしている最大の高さ cfg.panel_width = 320; // 実際に表示可能な幅 cfg.panel_height = 480; // 実際に表示可能な高さ 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 = false; // パネルの赤と青が入れ替わる場合 trueに設定 ok cfg.dlen_16bit = false; // データ長16bit単位で送信するパネル trueに設定 cfg.bus_shared = false; // SDカードとバスを共有 trueに設定 _panel_instance.config(cfg); } { // バックライト制御の設定を行います。(必要なければ削除) auto cfg = _light_instance.config();// バックライト設定用の構造体を取得します。 cfg.pin_bl = 27; // バックライトが接続されているピン番号 BL cfg.invert = false; // バックライトの輝度を反転させる場合 true cfg.freq = 44100; // バックライトのPWM周波数 cfg.pwm_channel = 7; // 使用するPWMのチャンネル番号 _light_instance.config(cfg); _panel_instance.setLight(&_light_instance);//バックライトをパネルにセットします。 } { // タッチスクリーン制御の設定を行います。(必要なければ削除) auto cfg = _touch_instance.config(); cfg.x_min = 360; // タッチスクリーンから得られる最小のX値(生の値) cfg.x_max = 4200; // タッチスクリーンから得られる最大のX値(生の値) cfg.y_min = 180; // タッチスクリーンから得られる最小のY値(生の値) cfg.y_max = 3900; // タッチスクリーンから得られる最大のY値(生の値) cfg.pin_int = -1; // INTが接続されているピン番号, TP IRQ 36 cfg.bus_shared = true; // 画面と共通のバスを使用している場合 trueを設定 cfg.offset_rotation = 3; // 表示とタッチの向きのが一致しない場合の調整 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 = 14; // SCLKが接続されているピン番号, TP CLK cfg.pin_mosi = 13; // MOSIが接続されているピン番号, TP DIN cfg.pin_miso = 12; // MISOが接続されているピン番号, TP DOUT cfg.pin_cs = 33; // CS が接続されているピン番号, TP CS _touch_instance.config(cfg); _panel_instance.setTouch(&_touch_instance); // タッチスクリーンをパネルにセットします。 } setPanel(&_panel_instance);// 使用するパネルをセットします。 } }; LGFX tft; // 準備したクラスのインスタンスを作成します。 //=====================================================================
.
感想:
価格:この構成で 2314円 は 超低価格です。
- 部品単価を踏まえ低価格に工夫されています。
- 個別の部品を計算すると 作るより購入した方が安いです。
- M5Stack 1台分の価格 6125円で 2台半も購入できます。
- 低価格は 気楽に電子工作ができます。
基板:インターフェースを追加すると良く出来ている事が解ります。
- GPIOやコネクター配線の変更が容易で 自由に改造できる様になっています。
- Schematicやレイアウトを見ると良く考察された基板です。
- 数ある ESP32ボードの中で 唯一 外部 Flash memory があり活用できます。
内部 Flash と 外部 Flash Memory:
- 初めて見る U4 外部 Flash Memoryが基板上で見れます。
- 購入時 U4 Flash は ESP32 Flash の外付けかと勘違いしていました。
- esptool.py flash_id では 4MB を表示。
- U4 Flash を外しても 購入時の LVGL DEMO は 動作しています。
- つまり ESP32 は 内部 Flash 4MB です。
- 確認の為に 販売店(開発者)に お聞きした所 ESP32 は 内部4MB,
- U4 は拡張用の4MBとの事。でした。
設計ミスの件:FLASH並列接続。
- 店(設計者)に 連絡したところ 「問題ない」との返事。
- 対し 私のボードはFlashが壊れ書き込めない事実。
- 仕様書や電気的にあり得ないSPI接続ですが それには答えずでした。
- FLASHは 並列接続と答え 使用方法は経験が無いとの返事。
- 尚、S045の販売数は さほどにはなっていません。
CH340C:UP- LOAD できない。CH340Cは 採用しないで下さい。
- M5Stack や TTGO は CH340Cは 採用していません。
- CP2102, CP2104, 最近では CH9102を採用しています。
- これは CH340G, CH340C の問題がある事を示しています。
- Arduino IDEで Auto Progできず、Manual ならできる。
- 原因追及していますが確実な所が不明です。
- Mac を使用していますが Mac と Win では Driver が異なります。
- 予想としては 昔からある CH340C の Hard に加え Driverの未完成です。
- CH340CをCP2102 に交換すれば 判明するでしょう。
- この件は 課題とします。
Touch:以下の場合があります。
- CPU Frequency : “240MHz (WiFi/BT)” と LGFX cfg.pin_int = -1; で動作。
- LGFX cfg.pin_int = 36; では 動作しない場合があります。
ポイント:
- 基本的な構成を備えながら 最も重要なポイントは 価格です 。
- ESP32-3248S035 や ESP32-24328S028 は 製品の中で
- コストメリットは 1番で これに対抗できるボードは 無いでしょう。
- これまで多くの基板を試してきましたが 作るよりも安いです。
- 作る時間をプログラム開発に活用できます。
- 2020年7月に販売された ESP32-24328S028R は
- 2022.09.16 に 730 Ordesr を達成しています。祝!
- M5Stackより 遥かに安い。
- 販売数の要因は 1に低価格で 2に基本的な構成の基板であるからと判断しています。
- openHASP:
- 海外では 購入して直ぐ openHASP を使用している人がいます。
-
購入トラブル:ESP32-3248S035C を注文しましたが届きません。
- 原因は 私のミスで届かない内に受領のボタンを押してしまいました。
- 店に連絡しましたが 送らないとの返事。サービスはとても悪いです。
- ESP32-3248S035C には GT911の問題点があると思い注文しましたが
- 手に入らずになりました。
- 連続して購入する気は無くなりました。
.
.
.
.
.
.
ESP32-3248S035R , ESP32-3248S035C , ESP32 , 4MB , ST7789 ,
XPT2046 , GT911