macsbug

Archive for 2月 2022

Resistor CALC with M5Stack and M5Stamp C3

leave a comment »

Resistor CALC を M5Stack と M5STAMP-C3 で動かしました。 2022.02.15

Resistor CALC は 文字通り 抵抗計算機で 原作を移植させて頂きました。
カラーや抵抗値、精度を見る事ができます。

M5Stack は 2″ 320×240 で文字が小さく見づらいですが可愛いです。
A , C ボタンで操作します。
🟢 Down Load:Resistor_CALC_M5Stack.zip
DL後 pdf(_1.pdf)を削除しzipを解凍します。

3.5″ 480×320 Display と M5STAMP-C3 は 画面が大きく見やすいです。
タッチパネルで操作します。
🟢 Down Load:Resistor_CALC_ILI9488_C3.zip
DL後 pdf(_1.pdf)を削除しzipを解凍します。

VolosR氏 作成によるもので TTGO T Display(240×135)で動作しています。
GitHub:VolosR / ResistorTTGO
YouTube:2022.01.30:動画の説明は解りやすいです。
Band Resistor Color Code Calculator on TTGO T-Display (ESP32)
GitHub ResistorTTGOを基に移植させて頂きました。
謝辞:VolosR氏に感謝致します。Thanks to Mr. VolosR.


.
製作:以下のブログを参照ください。
Operate ILI9488 with M5Stamp C3:2022.02.09 , 2700円。


.
1. 開発機種:MacBook Pro (16-inch, 2019) , macOS Catalina Ver 10.15.7
2. 開発環境:Arduino IDE 1.8.19
3. 開発環境:Board Manager:arduino-esp32 2.0.2
4. Hard :M5Stack ( 2″ 320×240 )
5. Hard :M5Stamp C3 with TELEC
6. Hard :3.5″ 480×320 SPI ILI9488 Display with Touch XPT2046

メモ:画像作成方法。
抵抗の画像作成は lcd-image-converter を使用しました。
色の値は RGB565 color picker for LCD を使用しました。


.
感想:
作ってみたかったテーマが 既にありましたので移植致しました。
移植では bit単位で画像のズレを修正しました。
TFT displayで 現物の色を表現するのは難しく感じました。
この体験をすると 原作では 240×135で画面の配置に苦労されていると感じました。

VolosR氏の作品は 他にも興味あるものがあります。
TTGO製品で移植版は 少ないのですが VolosR氏が手がけ盛り上げています。
作品からは 意気込みを感じる事ができます。
Tetris移植版がありコードに [ macsbug ] が記載されています。
移植をありがとうございます。
VolosR / M5ScickPlusTetris:Tetris移植版:Thanks to Mr. VolosR.
Youtube:TETRIS on TTGO T-Display and M5StickC Plus

//========================================================================
// TETRIS with M5STACK : 2018.01.20 Transplant by macsbug

// Github     : https://macsbug.wordpress.com/2018/01/20/tetris-with-m5stack/
//========================================================================

.
.
M5Stack , M5Stamp C3 , 480×320 , ILI9488 , Resistor , CALC

Written by macsbug

2月 15, 2022 at 7:53 am

カテゴリー: ESP32, M5STACK

Operate ILI9488 with M5Stamp C3

leave a comment »

M5Stamp C3 で 480×320 SPI ILI9488 Display を動かす方法。   2022.02.09

M5Stamp C3ESP32-C3 を使用し 3 SPIを有し, 13 GPIOを使用可能です。
3.5″ 480×320 の画面は 見やすく操作しやすいです。
タッチ機能により 画面にスイッチ等を自由に配置できます。
厚さは 11mm で心地よいサイズです。
ライブラリーは ESP32-C3 対応の LovyanGFX を使用し高速に表示します。


.
1. 開発機種:MacBook Pro (16-inch, 2019) , macOS Catalina Ver 10.15.7
2. 開発環境:Arduino IDE 1.8.19
3. Arduino IDE :Board Manager:arduino-esp32 2.0.2
4. Library :LovyanGFX Develop
5. Hard :M5Stamp C3
6. Hard :3.5″ 480×320 SPI ILI9488 Display with Touch


.
部品リスト:2600円 ( $23 )

No. Nomen Purchase Price
1 M5Stamp C3
M5Stack Official M5Stamp C3
. $10.2 (1162円)
. 5pcs販売は 3923円で 1個 785円
785円
2 3.5″ 480×320 SPI ILI9488
. with Touch : SKU=MPS3520
Hong Kong feng tai co., LTD
. $14.06
. With Touch Panel : SKU=MPS3520
. 輸送期間=11〜15日
1624円
3 Battery 厚さ 5mm
SONY NP-FT1 666mAh (2.4Wh)
. 秋葉原・中古屋
100円
4 Battery Charger
Lithium Battery Charger Module
. Type-C with protect , 10pcs 590円
. 輸送期間=17日
59円
5 Diode
秋月電子通商 1パック 180円, 1個 9円 9円
6 Switch
秋月電子通商 20円
7 両面,絶縁テープ,ABボンド any
8 Library LovyanGFX Develop

.
3.5inch SPI Module ILI9488 SKU : MSP3520
SKU=MPS3520 は Touch機能付。🍎
注意:SKU=MPS3521 は Touch機能は無い。
基板のU2に16pin IC があれば XPT2046 Touch IC 付きです。
XPT2046の上にある 3pinのICは LDO です。

JR E-Shop:各種displayがあり, 低価格, 対応の良い販売店です。

バッテリー:ロワジャパン:多数のバッテリーがあり品質は良いです。


.
配線:
Displayの部品面に M5Stamp C3, Battery, Battery Charger, Swicth を両面テープで貼り付けます。
以下の様に配線します。
メモ1:ILI9488部品面にあるLDOは 5V to 3.3Vです。3,3V接続でも動作します。
メモ2:LDO(5V to 3.3V)側のJumper端子をハンダ付けし 3.3V駆動にしています。
メモ3:注意:LED電源は 3.3V です。5Vを加えるとQ1 Transistorが破損します。
メモ4:ILI9488のpInは外しました。
_   プラスチック部をゆっくり抜き PINは 1つずつハンダゴテて丁寧に外します。

ILI9488 and M5Stamp C3 Pin Assignments
ILI9488 VCC GND CS RESET DC MOSI SCK
M5Stamp C3 3V3 GND 10 EN 7 6 5
ILI9488 and M5Stamp C3 Pin Assignments
ILI9488 LED MISO T_CLK T_CS T_DIN T_DO T_IRQ
M5Stamp C3 3V3 5 8 6 4

.

.
配線後:
厚みは 11mm です。
アクリル板でケースを製作すると綺麗に仕上がるでしょう。
3Dプリンターで 表のケースを作り 付けて見ました。


ケースに入れて タッチ操作

.


.
プログラム:
ESP32-C3は 新しいアーキテクチャーにより これまでの Display Driverでは動作しません。
LovyanGFXの作成者である「らびやん」氏にお願いし ESP32-C3 対応をして頂きました。
これにより 表示 及び タッチ操作が可能になりました。「らびやん」氏に感謝致します。

LovyanGFXの設定は 以下です。
VSPI , HSPI でなく SPI2 を使用し DMA Channel は 3 です。

cfg.spi_host   = SPI2_HOST;
cfg.dma_channel= 3; 

LovyanGFX user setting;

//----------------------------------------------------------------------
// https://github.com/lovyan03/LovyanGFX/blob/master/examples/HowToUse/2_user_setting/2_user_setting.ino
class LGFX : public lgfx::LGFX_Device{
  lgfx::Panel_ILI9488 _panel_instance;
  lgfx::Bus_SPI       _bus_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= 3;          // 使用DMAチャンネル設定(1or2,0=disable)(0=DMA不使用)
  cfg.pin_sclk   = 5;          // SPIのSCLKピン番号を設定
  cfg.pin_mosi   = 6;          // SPIのMOSIピン番号を設定
  cfg.pin_miso   = 1;          // SPIのMISOピン番号を設定 (-1 = disable)
  cfg.pin_dc     = 7;          // SPIのD/C ピン番号を設定 (-1 = disable)
  // SDカードと共通のSPIバスを使う場合、MISOは省略せず必ず設定してください。
  _bus_instance.config(cfg);   // 設定値をバスに反映します。
  _panel_instance.setBus(&_bus_instance);// バスをパネルにセットします。
  }
  {                            // 表示パネル制御の設定を行います。
  auto cfg = _panel_instance.config();// 表示パネル設定用の構造体を取得します。
  cfg.pin_cs          =    10; // 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 = _touch_instance.config();
  cfg.x_min      = 208;    // タッチスクリーンから得られる最小のX値(生の値)
  cfg.x_max      = 3905;   // タッチスクリーンから得られる最大のX値(生の値)
  cfg.y_min      = 288;    // タッチスクリーンから得られる最小のY値(生の値)
  cfg.y_max      = 3910;   // タッチスクリーンから得られる最大のY値(生の値)
  cfg.pin_int    = -1;     // INTが接続されているピン番号 : T_IRQ
  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クロックを設定
  cfg.pin_sclk = 5;        // SCLKが接続されているピン番号 : T_CLK
  cfg.pin_mosi = 6;        // MOSIが接続されているピン番号 : T_DIN
  cfg.pin_miso = 4;        // MISOが接続されているピン番号 : T_DO
  cfg.pin_cs   = 8;        //   CSが接続されているピン番号 : T_CS
  _touch_instance.config(cfg);
  _panel_instance.setTouch(&_touch_instance);// タッチスクリーンをパネルにセットします。
  }
  setPanel(&_panel_instance);// 使用するパネルをセットします。
  }
};
LGFX tft; // 準備したクラスのインスタンスを作成します。

//=====================================================================

Tetros Down Load:
Tetros_ILI9488_C3.zip:DL後 pdf(_-4.pdf)を削除しzipを解凍します。

LVGL : lv_demo_widgets Down Load:
lv_demo_widgets_ILI9488_LGFX_C3.zip:DL後 pdfを削除しzipを解凍します。
lv_arduino:LibraryはLVGL7(lv_arduino_3.0.1)を使用します。


.
参照:
M5Stamp C3 Document & Schematic:M5Stamp C3 の仕様、回路図。
ESP32-C3 Family: Hardware Design Guidelines
3.5inch SPI Module ILI9488 SKU : MSP3520:ILI9488の基本情報。
LovyanGFX:仕様が書かれています。
LovyanGFX user setting:設定方法が書かれています。
Use ILI9488 with M5Stack:ILI9488の使用方法。
M5Stamp C3 and battery:Cacio NP-70 1050mA
バッテリー:ロワジャパン:多数のバッテリーがあり品質は良いです。


.
感想:
ESP32-C3は 初めてDisplay表示とタッチ操作が可能になりました。
C2は表示しC3では表示せずがあり 仕様変更により 新しいLibraryが必要となりました。
VSPI, HSPI から SPI2 を使用する事になります。
投稿時点では TFT-eSPI Library は まだ 対応がなくVSPI エラーで動作しません。

M5Stamp の名前の様に両面テープでスタンプの様に貼る方法は便利です。
基板不要で配置を変更したい場合は 剥がして貼るだけでできます。

5mm厚のバッテリを使用する事により 11mmの厚さを実現しました。
厚さが薄いと見た目良く ケースも作りやすくなります。


.
.
M5Stack , M5Stamp C3 , LovyanGFX , 3.5″ , 480×320 , SPI , ILI9488 , VSPI , SPI2 , DMA

Written by macsbug

2月 9, 2022 at 7:02 am

カテゴリー: ESP32, M5STACK