macsbug

Archive for the ‘ESP32’ Category

CO2 monitor with M5Stack and LVGL

leave a comment »

M5Stack と LVGL で CO2 , TVOC モニターを製作しました。      2021.07.05

CO2 , TVOC Digital CO2 Gauge
CO2 Chart TVOC Chart
M5Stack へ CCS811 CO2 VOC Sensor を接続:費用は 1000円


.
仕様:
1. 表示:eCO2 , TVOC Digital , eCO2 Gauge , eCO2 Chart , TVOC Chart
2. CCS811 10sec / 1 sec Sample:起動時に B Button を押すと 1sec,。通常は10sec。
3. 表示切り替え:左 = A Button , 右 = C Button
4. Auto / Manual Display:画面切り替えを 手動 又は 自動切り替え:B Buttonを押します。

構成:
1. 開発機種:MacBook Pro (16-inch, 2019) , macOS Catalina Ver 10.15.7
2. 開発環境:Arduino IDE 1.8.15
3. 開発環境:Board Manager:ES32 Arduino 1.0.6
4. Library:m5stack / M5Stack
5. Library:LVGL ( LittleVGL ):lv_arduino
6. Library:LGFX;LovyanGFX:高速化が可能です。
7. HARD:M5Stack
8. HARD:CCS811 CO2 VOC Sensor

DownLoad:lv_CCS811_M5Stack.zip:DL後 pdfを削除しzipを解凍します。
memo.ino に 開発に便利なメモが書かれています。


.
費用:1000円。( Without M5Stack )

No. Nomen Price
1 CCS811 Module 820円
2 CASE、基板、コネクター 180円
Total 1000円

メモ:AliExpress HNV Official Store:リストにある販売店は輸送期間 37日で少し長いです。
メモ:国内では 2000円から3000円等の 高い価格がありますので お調べください。
メモ:CJMCU-8128:二酸化炭素, 温度, 湿度, 気圧。 多数 測定可能なセンサー
_   価格=1723円 ($15.49)。輸送期間=17日。
_   CCS811:二酸化炭素。SI7021(校正付き) :温度, 湿度。BMP280:気圧。
_   CCS811+SI7021+BMP280 Carbon Dioxide Temperature Humidity 3in1 Module
メモ:CJMCU-8128+CCS811+HDC1080+BMP280:$16


.
配線:
CCS811:5本 ( VCC, GND, SCL, SDA, WAK )

CCS811 VCC GND SCL SDA WAK
M-BUS 3V3 GND 22 21 GND


.
M5Stackの A と C button で touchpad controll する方法。
_ tabview上に tabを4つ作ります。例:eCO2 TVOC , eCO2 , eCO2 , TVOC
_ tabの位置に touchpad操作をすると そのtabが選択されます。
_ touchpad 方式は x,y で位置を決めます。
_ M5stack は ボタンが3つの為に x,y 操作はできません。
_ y を固定し x を操作します。事前に x,y を決めて A, C Button で操作する方法もあります。
_ A Buttonで左、C Buttonで右 に touchpad操作で画面が移動します。
_ touchpadの state (LV_INDEV_STATE_PR) と x,y 情報が
_ lv_indev_drv.read_cb = my_touchpad_read; に接続され tab(1,2,3,4) が表示されます。
_ int tb = 4; :tab の数だけ設定しますと x の位置が自動的に計算されます。


my_touchpad_read:

int tb = 4;
//=====================================================================
int mx = screenWidth/(tb*4), my = 10, md = screenWidth/tb;
// Read M5Stack A B,C buttons as touchpad : Tabview select ------------
static bool my_touchpad_read(lv_indev_drv_t * indev_driver,
                             lv_indev_data_t * data){
  // A Button : Leftward ----------------------------------------------
  if (M5.BtnA.wasPressed()){
    mx = mx - md; if (mx < 0){ mx = screenWidth - (md / 4);}
    data->point.x = mx; data->point.y = my;
    data->state =LV_INDEV_STATE_PR; M5.update(); return true;
  }
  // C Button : Rightward ---------------------------------------------
  if (M5.BtnC.wasPressed()){
    mx = mx + md; if (mx > screenWidth){ mx = md / 4;}
    data->point.x = mx; data->point.y = my;
    data->state =LV_INDEV_STATE_PR; M5.update(); return true;
  }
  // B Button : Auto / Manual Display ---------------------------------
  if (M5.BtnB.wasPressed()){
    auto_man = !auto_man;          M5.update(); return false;
  }
  // No button operation ----------------------------------------------
  data->state =LV_INDEV_STATE_REL; M5.update(); return false;
}
//=====================================================================

my_touchpad_read の state と x,y 情報は
indev_drv.read_cb = my_touchpad_read; に接続されます。

// Initialize the Touch pad =========================================
lv_indev_drv_t indev_drv;
lv_indev_drv_init(&amp;indev_drv);     //input device driver
indev_drv.type = LV_INDEV_TYPE_POINTER;//Touch pad is a pointer-like
indev_drv.read_cb = my_touchpad_read;  //Set your driver function
lv_indev_drv_register(&amp;indev_drv); //Finally register the driver
//-------------------------------------------------------------------

.
既製品:屋内多機能空気検出器
測定項目:HCHO,TVOC,TEMP,HUM,CO2,PM2.5,OM1.0,PM10
表示:数値表示とグラフ表示。
価格:11514円 ( $ 110.78 )。
輸送期間:20日。
販売:Aliexpress Gas Analyzer Store;ここの販売店は 他のGas Analyzer製品が多数あります。

同様な商品は IOT初期に 3〜5万円で 高価で購入するまでには至りませんでした。
この商品は 測定項目多く, 表示機能高く, ワーニング機能, 低価格, デザイン良く家庭で使用できます。
これらの機能やケースを全て含んだ電子工作をすると1万円以上になります。
さらに、綺麗なケースは作れません。そして 温度、湿度、気圧、CO2センサー等を作る経験では、
キャリブレーション,エージング、補正等々で難儀します。

結果、作るよりも既製品を購入した方が 合理的です。
よって、私は 電子工作で幾つか製作しましたが、この既製品を使用しています。
購入時の注意は フルスペックを選択します。センサーの少ない同等品は その分 安くなっています。

M5StackのPM2.5 大気質センサキットは 温度,湿度,空気質(PM2.5)のみで6350円もします。
そして サンプルは デイスプレーに数値を出す程度です。


.
LovyanGFXで高速化;
以下の様に記述しますと画面切り替えが速くなります。
M5Stack で使用する場合。

#pragma GCC optimize ("Ofast")
#include <M5Stack.h>
#include <lvgl.h>

LGFX で使用する場合。M5.Lcd を tft に変更し M5StackのSwicth命令は そのまま使用できます。

#pragma GCC optimize ("Ofast")
#include <M5Stack.h>
#define LGFX_AUTODETECT
#define LGFX_USE_V1
#include <lvgl.h>;
#include <LovyanGFX.hpp>;
static LGFX tft;

.
感想:
CO2センサーには 金属ケースに入ったタイプがあり サイズが大きく不便です。
CCS811 は 小型で工作が容易、ケースも小さくて済みます。
CCS811 センサーは 1sec Sample で 40度になると言われており、寿命が低下します。
その為に ファンで冷やすか 10sec 又は 60sec Sample で動作させるかになります。

デザインは、M5Stack の画面サイズに入るように作成しました。
画面ギリギリに作成するとスクロールバーが出てきますので、表示しない様にしています。
LVGLで見易く操作性を追求すると、限りなく既製品のデザインや機能のソフトに近づきます。

A,B,Cボタンしか無い M5Stackでマウス操作は難しいです。
LVGL Forum では ボタン操作のアイデアが投稿されています。
画面のスライドはマウスを「なぞる」事で上下左右 ができます。
このスライド「なぞる」事を検知する方法は まだ出来ておらず課題です。
タッチパットのあるディスプレーは 操作性が良いです。 M5Stackの様な
機械的なボタン操作は「操作している感触が指に伝わり、やり易い」面があります。

 


.
.
M5Stack , LVGL , CCS811 , CO2 , eCO2 , TVOC , LGFX , LovyanGFX

Written by macsbug

7月 5, 2021 at 10:52 am

カテゴリー: ESP32, M5STACK

LVGL with M5Stack Part 2

leave a comment »

M5Stack で LVGL を動かす その2。           2021.07.03

LVGL は多彩な表示が出来るグラフィックス ライブラリーです。
LVGL Library を使用すると、動画の様な表示が容易にできます。
例えば、針の形、目盛りの数値と間隔、色、等を容易に変更できます。
参考:How to run LVGL on M5Stack ( ESP32 )

初めての LVGL 体験で、何も解らず メモを備忘録として記載しています。

 
構成:
1. 開発機種:MacBook Pro (16-inch, 2019) , macOS Catalina Ver 10.15.7
2. 開発環境:Arduino IDE 1.8.15
3. 開発環境:Board Manager:ES32 Arduino 1.0.6
4. Library:m5stack / M5Stack
5. Library:LVGL ( LittleVGL ):lv_arduino
6. Library:LGFX;LovyanGFX:高速化が可能です。
 



.
スケッチの詳細:以下、4点について記載します。
1. 開発メモ と 宣言。
2. loop:タスクと入力処理。
3. disaplyの設定:決まりの部分。
4. setup:objet の 設定。
メモ:ebent処理は、使用していません。
.
GAUGE;
DownLoad:LVGL_Gauge_M5Stack.zip:DL後 pdfを削除しzipを解凍します。

開発メモ と 宣言:
メモ;URLを参考にプログラムできます。
宣言:
_ #pragma GCC optimize (“Ofast”) から
_  static lv_color_t buf[LV_HOR_RES_MAX * 10]; までは、決まりの部分です。
_ 35行目の static lv_obj_t * gauge; は、LVGLで表示するオブジェットです。

//=====================================================================
// GAUGE   : 2021.06.15 : macsbug
//---------------------------------------------------------------------
// Development : Arduino IDE 1.8.15
// LVGL    : v7.11.0-dev : https://docs.lvgl.io/7.11/
// Document: https://docs.lvgl.io/latest/en/html/widgets/
// Tabview : https://docs.lvgl.io/latest/en/html/widgets/tabview.html
// Label   : https://docs.lvgl.io/latest/en/html/widgets/label.html
// Guage   : https://docs.lvgl.io/latest/en/html/widgets/gauge.html
// L_Meter : https://docs.lvgl.io/latest/en/html/widgets/linemeter.html
// Forum   : https://forum.lvgl.io
// ESP32   : LVGL : https://programmersought.com/article/10128234373/
// HARD    : M5Stack.h
//    https://github.com/m5stack/M5Stack/blob/master/src/M5Stack.h#L19   
// BLOG    : How to run LVGL on M5Stack ( ESP32 )
//         : https://macsbug.wordpress.com/2021/06/18/
// BLOG    : ButtonA on M5Stack does not work properly
//         : https://macsbug.wordpress.com/2021/05/02/
// BLOG    : LVGL with M5Stack Part 2
//    https://macsbug.wordpress.com/2021/07/03/lvgl-with-m5stack-part-2/ 
//=====================================================================

#pragma GCC optimize ("Ofast")
#include <M5Stack.h>
#include <lvgl.h>
int screenWidth  = 320;
int screenHeight = 240;
#define LVGL_TICK_PERIOD 30
#include <Ticker.h>
Ticker tick;
#include <driver/adc.h>
static lv_disp_buf_t disp_buf;
static lv_color_t buf[LV_HOR_RES_MAX * 10];

static lv_obj_t * gauge;
uint32_t pointer = 0, inc = 1;
uint32_t lastMillis = 0;
int adc1_ch7 = 35; // GPIO 35 Input

 


.
loop:ループ
_ lv_task_handler(); は LVGLを動作させます。決まり事です。
_ if(millis() – time_ > 20 ){ 以降は GAUGEの針の入力です。
_  lv_gauge_set_value(gauge, 0, pointer);
_  pointer は 入力信号で、gaugeに送り、針を動かします。
_  信号を受け取る場所は、setup中の lv_gauge_set_value(gauge, 0, 0); です。
_  GPIOとの接続部分で重要です。他の表示装置も同様に信号を伝えます。
_  ここでは、loop 内で行なっていますが、割り込みで行う方法もあります。

//=====================================================================
void loop() {
  lv_task_handler(); delay(5);
  
  if(millis() - lastMillis > 20 ){
    lastMillis = millis();
    pointer = pointer + inc;
    if ( pointer > 100 ){ inc = -1;}
    if ( pointer <   1 ){ inc =  1;}
  //pointer = analogRead(adc1_ch7);       // Read GPIO 35 
    lv_gauge_set_value(gauge, 0, pointer);// next gauge pointer
  } 
}
//=====================================================================

 


.
displayの設定:決まりの部分です。これで表示が可能になります。

// Initialize the display =============================================
void Initialize_the_display(){
  lv_disp_buf_init(&disp_buf, buf, NULL, LV_HOR_RES_MAX * 10);
  lv_disp_drv_t disp_drv;
  lv_disp_drv_init(&disp_drv);
  disp_drv.hor_res  = screenWidth;
  disp_drv.ver_res  = screenHeight;
  disp_drv.flush_cb = my_disp_flush;
  disp_drv.buffer   = &disp_buf;
  lv_disp_drv_register(&disp_drv);
}
//=====================================================================

// Display flushing ===================================================
void my_disp_flush(
  lv_disp_drv_t *disp,const lv_area_t *area,lv_color_t *color_p){
  uint32_t w = (area->x2 - area->x1 + 1);
  uint32_t h = (area->y2 - area->y1 + 1);
  M5.Lcd.startWrite();
  M5.Lcd.setAddrWindow(area->x1, area->y1, w, h);
  M5.Lcd.pushColors(&color_p->full, w*h, true);
  M5.Lcd.endWrite();
  lv_disp_flush_ready(disp);
}
//=====================================================================

 


.
setup:セットアップ
_ 最初は M5Stackの設定です。
_ ESP32にBUGがあり GPIO39(A Button) を使用する時の回避策があります。
_ gauge = lv_gauge_create(lv_scr_act(), NULL); で、gauge を用意します。
_ 宣言部の static lv_obj_t * gauge; と繋がっています。
_ gauge のサイズや位置、色を設定します。位置はセンターを中心に行うと良いです。
_  理由は、サイズの異なる Display を使用する時に相対的位置で変換が容易になります。
_ lv_gauge_set_value(gauge, 0, 0); // value は、GPIO等の信号を接続する部分です。
_  guage に信号が繋がり guage が動作します。
_ Create a gauge の部分に対し LVGL は多彩な命令が用意されています。
_  多彩な命令を使用すると、lv_demo_widgetsの様に見事な表示が出来る様になります。

//=====================================================================
void setup() {
  M5.begin(true, true, true, true); // LCD,SD,Serial,I2C
  M5.Lcd.setRotation(1);
  M5.Lcd.fillScreen(TFT_BLUE);
//pinMode(adc1_ch7,INPUT);
  adc_power_acquire();     // ADC Power ON, A Button error prevention
  // WiFi.Begin(); WiFi.setSleep(false); // A Button error prevention
  lv_init();
  Initialize_the_display();
  //-------------------------------------------------------------------

  // Create a gauge ---------------------------------------------------
  static lv_color_t needle_colors[1];
  needle_colors[0] = LV_COLOR_BLUE;
  gauge = lv_gauge_create(lv_scr_act(), NULL);
  lv_gauge_set_needle_count(gauge, 1, needle_colors);
  lv_obj_set_size(gauge, 230, 230);
  lv_obj_align(gauge, NULL, LV_ALIGN_CENTER, 0, 0);
  lv_gauge_set_value(gauge, 0, 0); // value
 //-------------------------------------------------------------------
}
//=====================================================================

 



.
LINEMETER;linemeter 設定部分のリストです。
DownLoad:LVGL_LineMeter_M5Stack.zip:DL後 pdfを削除しzipを解凍します。


2. linemeter と言う objetを 宣言。( static lv_obj_t * linemeter;:全体で使用する時は最初に宣言をする )
3. objet ( linemeter ) の幅を 260 に設定。objet は 白い円です。
4. objet ( linemeter ) の縦を 220 に設定。
5. linemeter の Scaleを 270 から 100 に設定。下側が欠けた円で 画像の向きと角度になります。
6. linemeter の Rangeを 0 から 100 に設定。
7. objet に対し linemeterの 位置X を 50 に設定。
8. objet に対し linemeterの 位置Y を 10 に設定。
9. linemeter の 針(pointer) を 0 に設定。 0 に値を入力すると 針(pointer) が変化します。
10. objet ( linemeter ) に Text文字を表示します。
* objet と linemeterの 設定をする事により 多彩な表示ができます。
* ( ) 内のパラメーターを変える事により 表示が変化します。
* lv_linemeter_set_value の中の 0 で外部とのデーターが接続され、表示ができます。

// Create an linemeter ----------------------------------------------
linemeter = lv_linemeter_create(lv_scr_act(), NULL);
lv_obj_set_width_fit(linemeter, 260);
lv_obj_set_height(linemeter, 220);
lv_linemeter_set_scale(linemeter, 270, 100);
lv_linemeter_set_range(linemeter, 0, 100);
lv_obj_set_x(linemeter, 50);
lv_obj_set_y(linemeter, 10);
lv_linemeter_set_value(linemeter, 0); // value
lv_obj_set_style_local_value_str(linemeter, LV_ARC_PART_BG, 
                                 LV_STATE_DEFAULT, "macsbug");
//-------------------------------------------------------------------

 



.
BAR;bar 設定部分のリストです。
DownLoad:LVGL_bar_M5Stack.zip:DL後 pdfを削除しzipを解凍します。

// Create an bar ---------------------------------------------------
bar = lv_bar_create(lv_scr_act(), NULL);
lv_obj_set_size(bar, 300, 20);
lv_linemeter_set_scale(bar, 0, 100);
lv_linemeter_set_range(bar, 0, 100);
lv_obj_set_x(bar, 10);
lv_obj_set_y(bar, 100);
lv_bar_set_value(bar, 50, LV_ANIM_ON);
//lv_obj_set_style_local_value_str(bar, LV_ARC_PART_BG, 
//                                 LV_STATE_DEFAULT, "macsbug");
//-------------------------------------------------------------------

 



.
CHART;chart 設定部分のリストです。
DownLoad:LVGL_chart_M5Stack.zip:DL後 pdfを削除しzipを解凍します。

// Create a chart ---------------------------------------------------
chart = lv_chart_create(lv_scr_act(), NULL);
lv_obj_set_size(   chart, screenWidth -20, screenHeight -20); // size
lv_obj_align(      chart, NULL, LV_ALIGN_CENTER, 0, 0);
lv_chart_set_type( chart, LV_CHART_TYPE_LINE);//Show lines and points
lv_chart_set_range(chart, 0, 100);  // y axis
ser1 = lv_chart_add_series(chart,LV_COLOR_RED);//Add two data series
lv_chart_set_next( chart, ser1, 0); // val
//-------------------------------------------------------------------

 



.
CHART;LovyanLGFX で高速化

M5Stack M5Stack + LGFX

.
DownLoad:LVGL_chart_LGFX_M5Stack.zip:DL後 pdfを削除しzipを解凍します。
chart 設定部分のリストです。
_ 宣言の 2から6行目までを記載しますと LovyanGFX が可能です。
_ static LGFX tft; を宣言し Display は tft で動作します。

メモ:事前に LovyanGFXの 基本的な使い方 をお読み下さい。
メモ:LGFXは進化し、LGFX_AUTODETECT が必要な場合やそうでない場面があります。
_   ここでは LGFX Developer ver を使用しています。
メモ:M5以外のDisplayを使用する時は、LGFXの基本的な使い方で宣言を行ない動作しています。
_   画素数の多い 3.5″ 320×480 では、LVGXの効果が さらに出てきます。
_   M5やESP2で Arduino用 8bit Paralle Displayを使用すると高速で表示します。
_   LGFXは 8bit Paralleに匹敵する高速を実現しています。

#pragma GCC optimize ("Ofast")
#define LGFX_AUTODETECT
#define LGFX_USE_V1
#include <lvgl.h>
#include <LovyanGFX.hpp>
static LGFX tft;
int screenWidth  = 320;
int screenHeight = 240;
#define LVGL_TICK_PERIOD 30
#include <Ticker.h>
Ticker tick;
static lv_disp_buf_t disp_buf;
static lv_color_t buf[LV_HOR_RES_MAX * 10];

lv_obj_t * chart;
lv_chart_series_t * ser1;
uint32_t period = 200;  // y-axis time
uint32_t lastMillis = 0, pointer = 0, inc = 1;
int adc1_ch7 = 35; // GPIO 35 Input

 
chartの背景を少し黒くして見易くしました。lv_style_set_bg_color

// Create a chart ---------------------------------------------------
chart = lv_chart_create(lv_scr_act(), NULL);
lv_obj_set_size(   chart, screenWidth - 0, screenHeight - 0); // size
lv_obj_align(      chart, NULL, LV_ALIGN_CENTER, 0, 0);
lv_chart_set_type( chart, LV_CHART_TYPE_LINE);//Show lines and points
lv_chart_set_range(chart, 0, 100);  // y axis
ser1 = lv_chart_add_series(chart,LV_COLOR_RED);//Add two data series
lv_chart_set_next( chart, ser1, 0); // val
static lv_style_t st; lv_style_init(&st);
lv_style_set_bg_color(&st,LV_STATE_DEFAULT,lv_color_hex(0xB1B1B1));
lv_obj_add_style(chart, LV_OBJ_PART_MAIN, &st); // Backgroud color
//-------------------------------------------------------------------

 



.
感想;
LVGL は、多くの Display を網羅し、例えばサイズの異なる Display も表示が可能です。

画面スクロール機能があり 画面サイズを超えた表示も可能です。つまり、仮想空間が可能です。
小さな画面の M5Stack , Core2 でも、画面をスクロールし、広く使用する事が可能です。

M5Stackは、画面が小さい為に表示の分かり易さが制限されます。
見やすくする為に、1画面1つの表示にしました。

 


.
.
.

M5Stack , LVGL , LittlVGL , GUAGE , LINERMETER , BAR , CHART ,

Written by macsbug

7月 3, 2021 at 4:53 am

カテゴリー: ESP32, M5STACK

How to run LVGL on M5Stack ( ESP32 )

leave a comment »

LVGL を M5Stack ( ESP32 ) で動かす方法。           2021.06.18

LVGL ( Light and Versatile Graphics Library ) は 綺麗な表示と多彩な機能の
グラフィックライブラリです。


lv_demo_widgets:このデモから 必要な表示を取り出して使用する事ができます。

1. 開発機種:MacBook Pro (16-inch, 2019) , macOS Catalina Ver 10.15.7
2. 開発環境:Arduino IDE 1.8.15
3. 開発環境:Board Manager:ES32 Arduino 1.0.6
4. Library:m5stack / M5Stack
5. Library:LVGL ( LittleVGL ):lv_arduino
6. Library:TFT-eSPI:ESP32で使用します。
7. Library:LGFX;LovyanGFX:高速化が可能です。
8. HARD :M5Stack, ESP32
.


 
準備:
LVGL Libray Install:これで LVGL を使用する事ができます。
_ Arduio IDE の ライブラリマネージャを開き 🔴「lv_arduino」を Install します。
_ 「lv_arduino」には Arduino IDE 開発環境で動作する「lvgl」が含まれています。

_ 注意:lv_exsample , lvgl は、Arduino IDE 開発環境では使用できません。
.


 
_ 資料:
1. Espressif (ESP32) — LVGL documentation v7.11.0-dev
_ 
2. ESP32 Modules Now Support LittlevGL and μGFX Jan 4,2019
_  espressif は LittlevGL and μGFX をサポートするようになりました。( ESP-IDF )
3. ESPRESSIF : LVGL Graphics Library Document があります。
4. 注意:lvgl/lv_port_esp32 : 開発環境は ESP-IDFで Arduino IDEでは使用出来ません。
.


 
デモを動かしてみます。
_ 動かして 表示や操作のイメージを体験し LVGL の機能を把握できます。
1. LVGL_Core2
2. LVGL_ESP32_Test_1
3. LVGL_Core2 M5Stack版
4. lv_demo_widgets
5. lv_demo_benchmark ( + LovyanGFX )
6. LVGL_Sin_Cos_Graph
 


 
✳️ M5Core2 Demo:LVGL ForumのHow-toにあるスケッチはタッチ操作で動作します。
_ 以下の場所で Down Load できます。
_ M5Core2 slow fps. Scrol slider breaks when moving horizontally
_ DownLoad:LVGL_Core2.zip:DL後 pdfを削除しzipを解凍します。

 


 
M5StackのDemo:
✳️ LVGL_ESP32_Test_1:Arduino forumにある Bodmer氏(TFT-eSPIの作成者)作成の
_ 「LVGL_ESP32_Test_1」があります。
_ 構成は ESP32 + TFT Touch Display + TFT-eSPI Library で動作します。
_ Real-world LVGL demo example? で DownLoadできます。
_ その「LVGL_ESP32_Test_1」を M5Stackに移植しました。表示サイズは 240×320 です。
_ DownLoad:LVGL_ESP32_Test_1_M5Stack.zip:DL後 pdfを削除しzipを解凍します。
_ タッチ操作はできませんが Slider , Button, Color_Picker を表示します。
_ ESP32 + TFT Touch Panel Display では タッチ操作で動作しています。
_ スケッチは 解りやすく参考になり Slider や Button の追加が出来る様になります。

_ 3.5″ 320×480 SPI ILI9488 Touch Display と ESP32 で構成した例です。
_ 既にある Slider, Button をコピーして配置。Sliderは 幅を変更すると縦方向を表示します。

 


 
✳️ M5Core2 DemoをM5stackへ移植;M5Stackの A,B,C Button で Tabを操作します。
_ DownLoad:LVGL_M5Stack_ver.zip:DL後 pdfを削除しzipを解凍します。

 
Core2のタッチパッド:
_ my_touchpad_read の M5.Touch.getPressPoint(); で x,y を読んでいます。
_ data point は x,y。dada state は LV_INDEV_STATE_PR を取得します。

bool my_touchpad_read(lv_indev_drv_t * indev_driver,
                      lv_indev_data_t * data){
  TouchPoint_t pos = M5.Touch.getPressPoint();
  bool touched = ( pos.x == -1 ) ? false : true;
  if(!touched) {
    data->state = LV_INDEV_STATE_REL;
  } else {
    data->state = LV_INDEV_STATE_PR; 
    /*Set the coordinates*/
    data->point.x = pos.x;
    data->point.y = pos.y;
  }
  return false; 
}

 
my_touchpad_readの中のタッチパッド(x,y)を M5Stackの A,B,C Button に置き換えます。
A Button は Tab1を選択、B Button は Tab2を選択、C Button は Ta3を選択します。

int xp=10, yp=10;
bool my_touchpad_read(lv_indev_drv_t * indev_driver,
                      lv_indev_data_t * data){
  // A Button ---------------------------------------------------------
  if (M5.BtnA.wasPressed()){  // tab 1 : A Button
      data->point.x = xp; data->point.y = yp; // mouse position x,y
      data->state =LV_INDEV_STATE_PR; M5.update(); return false;}
  // B Button ---------------------------------------------------------
  if (M5.BtnB.wasPressed()){  // tab 2 : B Button
      data->point.x = screenWidth/2; data->point.y = yp;
      data->state =LV_INDEV_STATE_PR; M5.update(); return false;}
  // C Button ---------------------------------------------------------
  if (M5.BtnC.wasPressed()){  // tab 3 : C Button
      data->point.x = screenWidth -10; data->point.y = yp;
      data->state =LV_INDEV_STATE_PR; M5.update(); return false;}
  // No button operation ----------------------------------------------
      data->state =LV_INDEV_STATE_REL;M5.update(); return false;
}

Button入力と処理の流れ:
my_touchpad_readから data(x,y) と LV_INDEV_STATE_PR を setup内の
indev_drv.read_cb = my_touchpad_read; に送られタッチパッドの様に動作します

void setup() {
  // Initialize the (dummy) input device driver
  lv_indev_drv_t indev_drv;
  lv_indev_drv_init(&indev_drv);
  indev_drv.type = LV_INDEV_TYPE_POINTER;
  indev_drv.read_cb = my_touchpad_read;  // ***
  lv_indev_drv_register(&indev_drv);
}

 


 
✳️ lv_demo_widgets
lvgl/lv_demosに「lv_demo_widgets」があり LGVL の多様な機能を見ることができます。

_ 「lv_demo_widgets」をM5Stackへ移植し、デモを見る事ができます。
_ DownLoad:lv_demo_widgets_M5Stack.zip:DL後 pdfを削除しzipを解凍します。
.
_ M5Stack Core2 用の lv_demo_widgets で タッチ操作で動きます。
_ DownLoad:lv_demo_widgets_M5Core2.zip:DL後 pdfを削除しzipを解凍します。
.

 


 
✳️ lv_demo_benchmark:
_ ベンチマークテストを M5Stack と M5Stack + LovyanGFX で実施しました。
_  LovyanGFX ( LGFX ) は 高速化に効果があります。

_ 結果:
_ M5Stack only :FPS = 42 , Opa. speed = 88%
_ M5Stack + LGFX:FPS = 47 , Opa. speed = 87%
_ DownLoad:lv_demo_benchmark_M5Stack.zip:DL後 pdfを削除しzipを解凍します。
_ DownLoad:lv_demo_benchmark_LGFX_M5Stack.zip:DL後 pdfを削除しzipを解凍します。

Library と Display 命令 ( インスタンス ) について。
_ M5Stackで、Display 命令を M5.Lcd や tft で記述します。

_ M5Stack:M5.Lcd

#include <lvgl.h>;
#include <M5Stack>;
#include "lv_demo_benchmark.h"
//
M5.Lcd.setRotation(1);

.
_ TFT-eSPI:tft

#include <lvgl.h>
#include <TFT_eSPI.h>
#include "lv_demo_benchmark.h"
TFT_eSPI tft = TFT_eSPI();

.
_ M5Stack + TFT-eSPI:tft

#include <lvgl.h>;
#include <M5Stack>;
#include "lv_demo_benchmark.h"
TFT_eSPI tft = TFT_eSPI(); 

.
_ LovyanGFX:tft

#define LGFX_USE_V1
#define LGFX_AUTODETECT
#include <lvgl.h>;
#include <LovyanGFX.hpp>;
static LGFX tft;
#include "lv_demo_benchmark.h"
//
tft.setRotation(1);

 


 
✳️ LVGL_Sine_Cos_Graph:
_ akirahitosi氏 作製の LVGLでの随時更新の有るグラフ描画 2021/05/20
_ を M5Stackへ移植しました。akirahitosi氏に感謝致します。
_ DownLoad:LVGL_Sin_Cos_Graph_M5Stack.zip:DL後 pdfを削除しzipを解凍します。
_ 横軸は 200msec とかの時間軸になっています。
_ この様な高速表示が必要なLibraryは LovyanGFX を使用すると滑らかに表示します。
_ 画面サイズの大きい物を使用する場合は 特に効果があります。

_ M5Stack + LovyanGFX + 3.5″ 320×480 SPI ILI9488 Display を使用した例
_ 上は M5Stack。下は M5Stack + LovyanGFX で高速で滑らかに表示します。


 
感想:
LVGLは 2018年から登場しました。LVGL Forumでは レベルの高い人が回答しています。
LVGLに対する Arduino IDE, ESP32, M5Stackに関する情報は 現在少ないです。
中国サイトを検索すると、情報があり若い人への積極的な取り組みがされています。
情報源として日本国内は少なく LVGL Forum中国サイトがあります。

M5Stack社は LVGLを基に UiFlow へ移植(移植中)を進めています。
その為に LVGLの表示や機能は 制限されたり遅れる事になります。
M5Stack Forumにおける LVGLの質問への回答は UiFlowにより積極的ではありません。
一方 TTGO社では TWatchのタッチパネルの為に LGVLを採用し積極的です。
seeed社は Wio Terminal での説明や githubに 移植した LVGLのSampleがあり積極的です。
seeed社でのLVGLの説明は丁寧で技術的にも読み応えのある内容です。

使用する条件は Arduino IDE, ESP32, M5Stack です。
よって LVGLのDocumentが基本ですが 書かれている内容が全て動作するとは限りません。
動かない情報もありますので、切り分けて進めた方が良いかと思います。

何も解らず始めています。初めての LVGLで 説明が不十分な点もあるかと思います。
LVGLは 命令数が非常に多く大変ですが 表現力は多彩で 高機能を期待できます。
LVGLの 一つの表示だけでも、これまでのDraw命令の方法で作ると大変です。
LVGLは 一つの表示だけでも、さらに多彩な表現ができ 驚きます。
備忘録として、デモを体験する事を目指しました。画像から何かが得られたらと思います。
デモの次の課題は メーターとか1つの表示と、その入力は どの様にするかです。
ハードのスイッチやデジタル、アナログ信号を接続できると 反応があり楽しくなるかと思います。

LovyanGFX で動作させる方法は LVGL with M5Stack Part 2 をご覧下さい。


 
.
.
M5Stack , ESP32 , LVGL , LittleVGL , LGFX , LovyanGFX , lv_arduino , lv_demo_widgets ,
lv_demo_benchmark ,

Written by macsbug

6月 18, 2021 at 4:35 pm

カテゴリー: ESP32, M5STACK

ButtonA on M5Stack does not work properly

with 2 comments

M5Stack の ButtonA が 勝手に動作する 原因と対策。2021.05.02。追記:2012.06.13

結論:WiFi.setSleep(false); を追加します。

不具合:
. 1. Web Radio で ButtonA [vol-] が 勝手に動作し Volume が低下します。
. 2. 発生回数は 6時間に 1〜2回程度。
. 3. GPIO39 (ButtonA) に Pulse が発生します。
. 4. 他のスケッチでも WiFi ( WiFi.begin(); ) を使用するとPulseが発生します。

条件:
. 1. WiFi ( WiFi.begin(); ) を使用する時。
. 2. M5.BtnA.wasPressed(); を使用する時。
. 3. Arduino IDE: ESP32 Board Manager:ES32 Arduino 1.0.5 , 1.0.6

原因:
. Arduino IDF(1.06)のBUGと言われています。参照に記載あり。

🔴 対策:( 回避策 )
. Arduino IDE:Setup() , WiFi.Begin(); の直後に
. WiFi.setSleep(false); を記載します。

void setup(){
  WiFi.Begin();
  WiFi.setSleep(false);
}

結果:
. GPIO39のPulse は無くなり ButtonA が 勝手に押される事は無くなります。
 
今後:
. 原因が Arduino IDF(1.06)のBUG であるならば 修正される事を期待します。
. ESP32のBUG であるならば 今回の回避策になります。

追記:2021.06.13
🔴 対策:( 回避策 )

#include <driver/adc.h>
void setup(){
  adc_power_acquire(); // ADC Power ON

_ nao*(なお)氏の調査、解析により、対策が判明 致しました。
_ ADC測定指示→ADC電源がOFFなので、電源ON処理はいる→GPIO39が80ns落ちる→割り込み入る
_ nao*(なお)氏の尽力 と らびやん氏のフォローに感謝いたします。
_ M5Stackでボタン割り込みとanalogReadで、ボタンA押してないのに割り込みが入る。
_ esp_phy_load_cal_and_init(PHY_WIFI_MODULE);でも効果がある。
 


 
🔵 Espressif 情報:
_ 以下の資料にバグ情報があり、GPIO39に約80nsが発生する状況は同じです。
_ ハードのバグで「回避策は 入力を無視してください」と書かれていますが
_ M5Stackでは GPIO39にA Buttonが接続されており 対策が必要です。
_ 尚、M5Stackの ESP-WROOM-32 だけでなく ATOMの ESP32-PICO でも発生している様です。

_ ESP32 ECO and Workarounds for Bugs
_ 資料:eco_and_workarounds_for_bugs_in_esp32_en_V2.3_2020
_ page:9
_ 3.11
_ 特定のRTCペリフェラルの電源がオンになると、GPIO36およびGPIO39の入力が
_ 約80nsの間プルダウンされます。
_ 詳細: 🔴 次のRTCペリフェラルの電源を入れると、この問題が発生します。
_ •SARADC1 •SARADC2 •AMP •HALL
_ 回避策: これらの周辺機器のいずれかで電源を有効にする場合は、
_      GPIO36およびGPIO39からの入力を無視してください。


 
測定:GPIO39 ( ButtonA )( S3 )
. Circuit Diagram:
.  GPIO39(S3)にPulseが発生し GPIO37(S1), GPIO38(S2) には発生しない。
.  memo:
.   GPIO39は 内部PullUpのない入力端子。(SENSOR_VN : Input : ADC1_CH3, RTC_GPIO3)
.   M5Stackの GPIO39は R10 (100kΩ) で PullUp されています。
.   R10 (100kΩ) が無いと Logic “0” で S3 が押された事と同じになります。
.   R10 (100kΩ) 周辺の汚れによる電圧リークは 電圧が高くなる方向で問題は低下する。
.   D27 Diodeは M5Stackのversionにより 接続されているものと無いものがあります。
.   人による Switchが押される時間は 約200〜300msec です。
.   チャタリング防止は M5.BtnA.pressedFor(msec) がありますが 50msec でも
.   今回の不具合は発生します。この命令は速度低下になり使用したくない所です。

 
. TEST POINT ( GPIO39 ):Yellow
.  D27 Diode の上側にOscilloScopeを接続します。
.  R10の場所は R10が破損する恐れがあり接続しない事。
.  注意:基板への部品の接続と基板のpatternは 非常に弱いです。
.  レイアウト参照:Parts arrangement of M5Stack

 
. Waveform:WiFi.begin(); で 以下の画像に示す Pulse が発生します。
.   Period:100msec , Pulse Width:30μsec , Voltage:+1.6Vdc
.   Pulse電圧は +1.6Vdc で ButtonA ON 状態では無いが 何らかの要因が加わり
.   Logic “0” 相当の 0Vdc 近辺になり ButtonA(GPIO39)が動作すると判断しています。
.   WiFi.setSleep(false); を追加すると Pulse は無くなり +3.3Vdc になります。
 

 
memo:WiFi.setSleep(true); を記載すると Pulseが発生します。
 


 
参照:
M5.BtnA.wasPressed() conflicts with WiFi? #52:Apr 17, 2018 – Apr 6, 2021 🔴
_ Apr 17, 2018 : M5StackがWiFi経由で接続されている場合、
_  M5.BtnA.wasPressed() は正しく機能しないようです。
_ valki2氏(Jun 7, 2020) , antimix氏(Mar 27, 2021) , zasnicoff氏(Apr 6, 2021) が
_  WiFi.setSleep(false); の回避策を記載しています。
 
After 1.0.6 update WiFi won’t connect to other network // connection time increased #4980
. Mar 26, 2021 – Apr 29,2021
_ zasnicoff氏(Apr 6, 2021) : WiFiがGPIO39でパルスを引き起こしているように見えます。
 
M5.BtnA.wasPressed() conflicts with WiFi?
_ Apr 17, 2018
_ M5StackがWiFi経由で接続の場合 M5.BtnA.wasPressed() は正しく機能しない。
 
M5Stack: M5.BtnA.wasPressed() conflicts with WiFi #1334
_ Apr 19, 2018:現在のIDFの問題のようです。
 
Calling iot_button_create() causes RTCWDT_RTC_RESET (IDFGH-3167) #1857
_ Apr 14, 2018:ボタンコードは、任意のエッジ割り込みを使用する。これは非常に古い問題。
 
Problems with interface after connecting to network
_ Apr 1, 2020:ButtonA(gpio 39)で1秒に約1回短いパルスをカウントします。
_ M5Stack and its buttonsを参照して下さい。
 
Spurious interrupts on GPIO 36 when using WiFi (IDFGH-2473) #4585
_ Jan 5, 2020:これは既知のハードウェアの問題です。WIFIはADCを使用するためです。
_ igrr commented Jan 7, 2020:
_  Voltage spikes at 5Hz in GPIO36 causing interrupts in release v3.3, v3.2.2 works fine (IDFGH-1917) #4117
_ GPIO 36 and 39 constantly trigger interrupts #7
 
LVGL:M5Stack and its buttons
_ Apr, 2020:period=0.8sec, Pulse width=13us to 170us
 


 
M5StackのボタンAが勝手に反応してしまう件:
_ ESP32 及び M5Stack が販売されてからの不具合です。
_ M5Stack forum では 2018年4月に質問があり、原因と対策が不明のままでした。
_ 2018年4月から2021年4月に Github M5Stack issues #52 で話され
_ valki2氏(Jun 7, 2020) , antimix氏(Mar 27, 2021) , zasnicoff氏(Apr 6, 2021) が
_ WiFi.setSleep(false); の回避策を述べています。
_ 長く不具合をかかえていた件は、3年もかかり 回避策が判明しました。
_ ただし回避策であり 根本的な原因の解明には至っていません。

_ ESP32 , ECO and Workarounds for Bugs マニュアル 9page
_ 3.11. When certain RTC peripherals are powered on, the inputs of
_ GPIO36 and GPIO39 will be pulled down for approximately 80 ns.
_ 特定のRTCペリフェラルの電源がオンになると、GPIO36およびGPIO39の
_ 入力が約80nsの間プルダウンされます。 と書かれています。
_ 回避策は この時 GPIO39を読み込まない事と書かれています。
_ これが原因とすれば 🔴 ESP32 のバグという事になります。
_ 波形の確認:
_  WiFi,Begin(); で GPIO39にPulseが発生しますが GPIO36は発生しません。

M5StickC:
. MDAR氏(Jun 29, 2020)によると「M5StickCでも非常によく似た問題が発生しています」との事。
. M5StickCの ButtonBは GPIO39を使用しています。
. Waveform:WiFi.begin(); で 以下の画像に示す Pulse が発生します。
.   Pulse Width:1.5μsec , Voltage:+1.2Vdc
.   Pulse電圧は +1.2Vdc で ButtonB ON 状態では無いが 何らかの要因が加わり
.   Logic “0” 相当の 0Vdc 近辺になり ButtonB(GPIO39)が動作すると判断しています。
.   WiFi.setSleep(false); を追加すると Pulse は無くなり +3.3Vdc になります。



 


 
感想:
Web Radioで まれ(6時間に 1〜2回程度)にしか起きない為に追求が困難でした。
波形観測により WiFi.Begin(); で GPIO39に Pulse が発生する事が判明しました。
この問題は参照によると2018年4月からあり 2020から2021年にかけて解明されてきました。
不具合は GPIO39に発生する 🔴 Pulse波形により判断する必要があります。
Arduino IDF(1.06)(Arduino IDE Board ManagerのESP32) のバグと言われています。
Ver 1.05 では起きない話がありますが Ver 1.05 でもPulseは発生しています。

Espressif(igrr氏)とM5Stack社は この件を古くから認識していますが解決には至っていません。
この件で BtnA は使用出来ないとか 工夫して使用する人がいるのを知りました。
発売時からの不具合に対し EspressifとM5stackは フォローしていないのが現状です。
M5Stack専用のFaceBookも同様に不具合のフォローがされていません。
FaceBook 及び M5Stack community に この件を公開しました。

回避策が判明し これまでの Web Radio の記事及びスケッチの修正を致しました。
 


 
 
M5Stack , ButtonA , GPIO39 , WiFi , WiFi.begin , WiFi.setSleep(false) , setSleep , 勝手に押される

Written by macsbug

5月 2, 2021 at 11:18 am

カテゴリー: ESP32, M5STACK

LovyanGFX LCD Graphics driver

leave a comment »

LovyanGFX LCD Graphics driver       2020.07.02
.                     rev 1 : 2020.07.04 : M5.Lcd.startWrite();
LovyanGFX
. らびやん(lovyan03)氏作成による ESP32 ( M5Stack ) や
. SAMD51 ( Wio Terminal ) の LCDグラフィックスドライバーです。
. Hardware SPI LCD Display に対応し高速に動作させる事ができます。
. 解説と使用方法は LovyanGFX に丁寧に書かれていますので お読み下さい。
. 開発された らびやん(lovyan03)氏に感謝致します。

Pacman
M5Stack Library : 9〜18 msec から
LovyanGFX Library : 1〜2 msec を達成!
PACMAN_Joy_GFX.zip

.
Boing Ball:TFT_e SPI / DMA Test にある example です。
. Wio Terminal の Seeed_Arduino_LCD Libraryは DMA機能無し。
. Wio Terminal + LovyanGFX と M5Stack + LovyanGFX を動かす。
. M5Stack は 86 fps 。M5 + LovyanGFX は 175 fps 。2倍の高速化。
. Wio Terminal の設定:SPI_FREQUENCY 50000000 。
. M5Stack の設定:SPI_FREQUENCY 40000000 。

Boing Ball
Wio Terminal + LovyanGFX : 232 fps
M5Stack + LovyanGFX : 175 fps
M5Stack : 86 fps
Wio Terminal : Wio_boing_ball_GFX.zip
M5Stack : boing_ball_GFX.zip

. * DL fileは pdf(WordPressの都合)です。.pdf を削除し .zip を解凍します。
.
Target Display: ILI9341, ILI9342, ILI9486, ILI9488, ILI9163, HX8357,
_ ST7735, ST7789, SSD1351
_ M5Stack は ILI9341, ILI9342。 Wio Terminal は ILI9341 です。

使用方法:3つの方法。
1. LovyanGFX のみで使用。
2. M5Stack と共存:M5Stackの命令を使用可能。例: Switch操作。
3. ESP32-Chimera-Core と共存:M5Stackの命令を使用可能。

使用機種と価格:ESP32 / SAMD51 : 2020.06.26

No. Nomen Purchase Price
1 ESP32-DevKitC 秋月電子通商 1480円
2 ESP-WROOM-32D 秋月電子通商 1480円
3 ESP32 Development
, same as No.1
LANDZO ELECTRONIC
, $5.54+$1.05=$6.59
705円
4 ESP32-WROOM-32D
, same as No.2
Diykitmall Store
, $3.91+$1.02=$4.93
528円
5 D1 mini ESP32 Buy Go Go Store Store
, $3.67+$0.78=$4.45
477円
6 M5Stack Basic ( ESP32 ) M5Stack Official Store
, $27.95+$8.36=$36.31
3890円
7 M5Stack Gray ( ESP32 ) M5Stack Official Store
, $33.95+$8.36=$42.31
4533円
8 M5Stack Fire ( ESP32 ) M5Stack Official Store
, $49.95+$10.25=$60.20
6450円
9 Wio Terminal (SAMD51) 秋月電子通商:3680円税込 3680円
10 Wio Terminal (SAMD51) marutsu :3700円税抜 3996円
11 Wio Terminal (SAMD51) FeedoK Store,:$50.60 5414円


.
使用方法:3つの方法。
1. LovyanGFX , 2. M5Stackと共存 , 3. ESP32-Chimera-Core と共存
.
1. LovyanGFX のみで使用:LovyanGFX : lovyan03 : ver 1.0.14
. 以下 A, B 2つの いずれかで DLします。
. A:github から LovyanGFX をDL。
. B:Arduino IDE/Sketch/include Library/Manage Libraries..でインストール。
.   
. 動作確認: LovyanGFX 内にある examples を試します。
.  サンプルは 驚異的な速度で動きます。
.
. 事例:機種とスケッチ:Wio Terminal ( SAMD51 )
. 詳細:動作状況に記載。
. 結果:Wio Terminal + LovyanGFX で 約4秒 から 2秒 。2倍の高速化を達成!
.    

2. M5Stack と共存:
. LovyanGFX には 「include M5Stack.h より後に include LovyanGFX.hpp
.  を書いてください。M5.Lcdは使わずに、別途LGFXのインスタンスを
.  用意して使用してください。」と書かれています。
. M5.Lcd を tft への変更は 手間がある事と把握不足の為に 今回は省きます。

.
3. ESP32-Chimera-Core と共存:M5Stackの命令を使用可能。
. LovyanGFX には「ESP32-Chimera-Core を利用すると、M5.Lcd が
.   LovyanGFX になります。」と書かれています。
. 開発環境:Arduino IDE 1.8.13
. Library 準備:Versionは最新版を確認。多くのエラーは Ver の不一致です。
.  🍎 の Manage Libraries..でインストールが簡単です。

. 1. ESP32-Chimera-Core の入手:3つの方法。
.    Libraryに M5Stackがあれば Library Folder外に移動しておきます。
.   理由:ESP32-Chimera-Core には M5StackのLibraryが含まれ重複する為。
.   解決:M5stack Library は 使用せず ESP32-Chimera-Core Library で可能です。
. A. ESP32-Chimera-Core v 1.0.3 : tobozo : 左記のURLからDL。
. B. ESP32-Chimera-Core-lgfx : lovyan03 : 左記のURLからDL。
.   A 又は B を DL し Library Folder へ入れます。もしくは 以下の
. C. 🍎 Arduino IDE/Sketch/ include Library/Manage Libraries..でインストール。
.   
.
. 2. LovyanGFX の入手と配置。
.   LovyanGFX : lovyan03 : ver 1.0.14 : 左記のURLからDL。
.   又は 以下の方法で Library内にインストール。
.   🍎 Arduino IDE/Sketch/ include Library/Manage Libraries..でインストール。
.   
.   Library内の構成:追記 ( rev 1 : 2020.07.04 )
.    
. これで ESP32-Chimera-CoreLovyanGFX Libraryが使用できます。

. 3. スケッチの事例:以下は基本的な記述です。
.   Know-how:以下の2つは 速度向上の効果があります。
.   #pragma GCC optimize (“Ofast”)
.   M5.Lcd.startWrite();    // Release SPI bus

#pragma GCC optimize ("Ofast")
#include <ESP32-Chimera-Core.h> // Contains LovyanGFX
#include "M5StackUpdater.h" // SD-Upadate
void setup() {
M5.begin();
Wire.begin();
if(digitalRead(BUTTON_A_PIN)==0){updateFromFS(SD);ESP.restart();}
M5.Lcd.startWrite();  // Release SPI bus
M5.Lcd.setRotation(1);
M5.Lcd.fillScreen(TFT_BLACK); }

動作状況:
. 1. M5Stack Fire ( ESP32 ) と Wio Terminal ( SAMD51 )
.  M5Stack , Wio Terminal と Library の速度
.  Wio Terminal は M5Stack より 速い。
.  メモ:LovyanGFXの効果は 命令にもよります。
.     M5.Lcd.pushImageDMA 命令は高速で動作します。
. 2. スケッチ:Raytrace:drawPixel , fillRect 命令を使用。
. メモ:2020.07.04 :M5.Lcd.startWrite(); 正しい位置は
.    上記記載の基本的な記述と同じく SD操作の後にしてください。

tft.drawPixel(x, y, RGBTO565(r,g,b));
tft.fillRect(x, y, q, q, RGBTO565(r,g,b));
Model / result Library Time
sec
Source
M5Stack Fire M5Stack 6.280 Raytrace_M5Stack.zip
M5Stack Fire ESP32-Chimera-Core 3.875 Raytrace_GFX.zip
M5Stack Fire LovyanGFX 3.862 Raytrace_LovyanGFX.zip
Wio Terminal Seeed_Arduino_LCD 3.362 Wio_Raytrace_sd.zip
Wio Terminal LovyanGFX 1.945 Wio_Raytrace_GFX.zip

.

Wio Terminal
Sketch / Library LovyanGFX memo
Raytrace 動作状況 参照
Tetris Wio_Tetris.zip
Packman Wio_Packman.zip
nixie_tube_clock Wio_nixie_tube_clock.zip
audio_spectrum_display Wio_audio_spectrum_display.zip
uncannyEyes Wio_uncannyEyes_GFX.zip
ThermalCamera ThermalCamera_GFX.zip : 4 fps
Thermal_Camera_AMG8833 Wio_ThermalCam_AMG8833_GFX.zip
, 5 fps が 13 fps にアップ。2.6 倍向上。

.

M5Stack
Sketch / Library LovyanGFX memo
uncannyeyes M5_uncannyEyes_GFX.zip
.
.

.
. ゲームは 高速化と共に 適度な速度が必要です。
. 上記のSketchは 参考程度にしてください。

🍎 高速化のノウハウ:Pacman
. 抽画は DrawIndexedMap.h 内の drawFastHLine 1つで書かれています。
. この様に 抽画は1つでできており優秀な記載方法で勉強になります。
. これを LovyanGFX の pushImageDMA で記載すると高速になります。
.

// Original
#define C16(_rr,_gg,_bb) ((ushort)(((_rr & 0xF8) << 8) | 
                  ((_gg & 0xFC) << 3) | ((_bb & 0xF8) >> 3)))

void drawIndexedmap(uint8_t* indexmap, int16_t x, uint16_t y) {
  byte i = 0;
  uint16_t color = _paletteW[indexmap[0]];
  for (byte tmpY = 0; tmpY < 8; tmpY++) {
    byte width = 1;
    for (byte tmpX = 0; tmpX < 8; tmpX++) { uint16_t next_color = _paletteW[indexmap[++i]]; if ((color != next_color && width >= 1) || tmpX == 7) {
        M5.Lcd.drawFastHLine(x + tmpX - width, y + tmpY, width, color);
        color = next_color;
        width = 0;
      }
      width++;
    }
  }
}

.

// Revision
#define C16(_rr,_gg,_bb) lgfx::swap565(_rr, _gg, _bb)

void drawIndexedmap(uint8_t* indexmap, int16_t x, uint16_t y) {
  static uint16_t dmabuffer[2][64];
  static bool dmaflip;
  int i = 0;
  do {
    dmabuffer[dmaflip][i] = _paletteW[indexmap[i]];
  } while (++i < 64);
  M5.Lcd.pushImageDMA(x, y, 8, 8, dmabuffer[dmaflip]);
  dmaflip = !dmaflip;
}

🍎 高速化のポイント:以下の宣言や変数の設定により速くなります。
.  #pragma GCC optimize (“Ofast”) : 冒頭に記載。速度優先のビルドが行われます。
.  M5.Lcd.startWrite();       : SPI BUSを解放する。場所はSD宣言の後。
.  int_fast8_t  : int8_t を 置き換えると バイナリサイズが小さく動作が速くなる。
.  int_fast16_t  : int16_tを 置き換えると バイナリサイズが小さく動作が速くなる。
.
.  32bitCPU に 8bit や 16bit の変数は 余分な処理が増え バイナリが大きく遅くなる。
.  最終的にコンパイラによってint32_tと同じものとして扱われる。
.  コンパイラはCPUに合わせて最適なサイズを選ぶ。
.  人の目で見ても必要なバイト数が判断できる。
.  for (uint8_t i = 0:節約のつもりが逆に遅くなる。
.  int_fast~ は 記述が長くなり 特に型に頓着しない場合は 素直に int が無難。
.  1つ1つの記述で 効果があり 楽しくなります。
.  DMA 命令:pushPixelsDMA, pushImageDMA, initDMA, waitDMA
.
.
.  スケッチの事例:PACMAN_Joy_GFX.zip:232 FPS
.
.  上記のノウハウは らびやん氏に教えて頂き 大変勉強になりました。
.

参照:
2020.04.12:lovyan03/LovyanGFX:公開。Twitter情報。
2020.04.29:ラズパイスキ ノ ニッキ:LovyanGFXの導入の仕方
2020.05.01:Lang-ship:M5StickCのDisplay周り解析 その4 LovyanGFXで高速描画
2020.05,20:HomeMadeGarbage:MakePython ESP32 Color LCD で LovyanGFXを堪能
2020.05.20:Qiita, @karaage0703:M5 Stack/M5 StickC/Wio Terminalで使える
_      高性能グラフィックライブラリ「LovyanGFX」
2020.05.30:Arduino Library List:LovyanGFX: First Release Date:2020.05.30
2020.06.04:Lang-ship:M5StackでLovyanGFXを試す その1 メモリの確認
2020.06.29:Qiita, @poruruba:LILYGO TTGOのT-Wristbandで
_      グラフィックライブラリLovyanGFXを使ってみた
2020.xx.xx:ArduBadge:What is LovyanGFX?

感想:
画像表示好きで 夢は 高速の Graphics Library。
各種Display や M5Stackの Library は 使用できますが さほど高速で無い。
まして 自分で高速 Libraryを作れるベレルは無し と言う壁に突き当たる。
行き着いたのは Bodmer氏の TFT_eSPI Library。

2017.08.end:M5Stack もどき。
2017.09.12:M5Stack Copy版入手。
2017.10.24:公式 M5Stack Store 販売開始。
2017.11.18:M5Stack:M5Stack Storeから着:2017.10.23-2017.11.18

2020年4月12日に念願の LovyanGFX が公開されました。
早々にサンプルを試し、その高速性に驚きました。
どうして ここまで 速く動くのか? レベルが高すぎるが楽しい!
LovyanGFX Library の中を見ると 莫大な量と高度な内容に圧倒されました。
複数の機種や多種類のSPI LCD Displayにも対応した配慮も同様です。
TFT_eSPI Libraryは 現在のSprite装備まで長年かかって進化した経緯がある。
それに対し 短期間にこれだけの内容が出来た事に驚き そのパワーに驚嘆します。
その事は LovyanGFX Library に書かれている事とCredits に書かれている
方々の謝辞にもあります。
これほどまでの内容を作れる らびやん氏に 敬意と感謝の限りです。

ESP32-Chimera-Core:
Library には M5Stack が含まれています。使用する時は M5Stack を外します。
Library には ScreenShot 機能があり 画面をSDに保存できます。

SD は SPI Busを使用します。 LovyanGFX も SPI Busを使用します。
その為に 最初に M5.Lcd.startWrite();  を記載し 最後に M5.Lcd.endWrite();
を記載します。SPI Bus の開放と閉鎖です。
画面の画像を使用する事により 綺麗で解りやすくできます。

この記事の記載は 2020.07.02。力量不足により内容の不備があるかと思います。
Library の Version 変更や方式の変更で 内容が変わる事も考えられます。
Library Version 変更により 2020.07.04 にて追記、及び 変更を行いました。

 

 


LovyanGFX , TFT_eSPI , らびやん , lovyan03 , Bodmer , tobozo , M5Stack ,
Wio Terminal ,

Written by macsbug

7月 2, 2020 at 8:10 am

カテゴリー: ESP32, M5STACK, Wio Terminal

Notepad for parts

leave a comment »

部品のメモ帳:Notepad for parts               2020.02.28

電子工作部品の備忘録です。日々更新します。
部品調査と使用例から185品目をリストにしました。
あの部品は どうなのか とかが解ります。
購入は Aliexpress と ebay が主で国内より安い事が解ります。

項目:
_ 番号。( No )
_ 名前, 調査日時, 画像。( Nomen / Date / Image )
_ 販売店, 価格, 輸送期間, 仕様, メモ。( Sale/Price/Transport/Spec/Memo )

海外BAD LIST:購入してはいけない販売店は 最下位に記載。


.
部品表:

No Nomen / Date / Image Sale/Price/Transport/Spec/Memo
1 3x4mm 4Pin Push Button Switch Side Push:TS-1286VE-4 •販売:WIN ELEC-TECH CO.,LTD
2018.06.05 •価格:14円  ( 10個 $1.25 )
•輸送:22日
•仕様:TS-1286VE-4, 2.9×3.5
•Blog:Repair M5STACK Power Switch
•販売:Happy&lucky gift house
•価格:20円。(20個 $3.71) •輸送:9日
•販売:秋月電子通商 THAF01-NC-R
•価格:5個 120円
•M5Stack用。 (Power Switch)
2 N90 flat panel CUBE Speaker 28*9*4mm 8R 1w •販売:Linxun Online Store
2019.05.27 •価格:197円  (2pcs $3.59)
•輸送:28日
•仕様:28mm*9mm*4 8R 1w
•Size:28*9*4mm。4->実測3.62mm
•M5=3.6mm。テープを取ると3.49mm
•M5Stack用。
3 NS4150:Class D Audio Amp •販売:Shop4578025 Store
2019.03.30 •価格:93円  ( 5個 463円 )
•輸送:11日
•仕様:NS4150
•M5Stackに搭載されているAmp
•Blog:M5Stack speaker noise reduction
•M5Stack用。
4 NS4148 without filter 3W Amp •販売:Shop2335274 Store
2019.04.15 •価格:$1.89
•輸送:27日
•仕様:NS4148
•$0.14+ ship $166: 2020.02.21
•M5Stack回路図のAmpだが動作しない。販売にNS4148あるが 到着物は印字なし。
•Blog:M5Stack speaker noise reduction
•M5Stack 使用不可
5 ユニバーサル基板 ( thousandiy ) •DIY:PROTO module of M5Stack Part2
•価格:100円
•輸送:
•仕様:5x5cm, 厚さ 1mm
• M5Stack用。
thousandiy氏 設計製作。
• M-BUSにスルーホール有り。
• 垂直,L型 Pinを使用可能。
• 低, 高解像度3Dプリンター 両対応。
6 Single Sided PCB, 5x5cm •販売:22newcentury
•価格:137円  ( 4pcs 546 円 )
•輸送:29日
•仕様:5x5cm, 厚さ 1.6mm
•M5Stack PROTO基板と同サイズ,ネジ穴の位置と大きさも同じ。片面基板。
•M5Stack 使用可能
7 ユニバーサル基板 C •販売:秋月
•価格:120円
•輸送:
•仕様:72x47x0.3mm
•ハサミで切れる基板。1枚でM5に使える
•M5Stack 使用可能
8 ユニバーサル基板 B •販売:秋月
•価格:200円
•輸送:
•仕様:95x72x0.3mm
•ハサミで切れる基板。
•M5Stack 使用可能
9 M3*3*4 , Insert nut •販売:huanshop2015
•価格:5円  ( 50pcs 237円 )
•輸送:
•仕様:M3*3*4
•M5Stack用。
10 M3 12mm Hex Screw •販売:regan0331
•価格:10円  ( 50pcs 480円 )
•輸送:18日。
•仕様:M3 12mm、他のサイズもある
•M5Stack用。
11 M2 5mm ナベTapping Screw •販売:西川電子部品株式会社
•価格:2円  ( 1袋100個 200円 )
•輸送:
•仕様:2x5mm, 2x6mm
•M5Stack 使用可能
12 M2 5mm Hex Tapping Screw •販売:ebay
•価格:7円
•輸送:
•仕様:M2-5mm-Hex-Tap-Screw
•M5Stack用。
13 ロープロファイルピンソケット
低メス 2×15, 5.7mm
•販売:秋月電子通商
•価格:40円
•輸送:
•仕様:2×15 (30P) H=5.7mm
•M5Stack 使用可能
14 ロープロファイルピンヘッダ
低オス 2×40 7.7mm
•販売:秋月電子通商
•価格:50円
•輸送:
•仕様:低オス 2×40 H=7.7mm
•M5Stack PROTO基板:0.2mm (Space 0.1+pin 0.1) 接触が増加しM5Stackへ確実に接続可能。
•M5Stack 使用可能
15 ピンヘッダー FSM-42052-15 •販売:廣杉計器
•価格:60円
•輸送:
•仕様:female, H=5.25mm
•M5Stack 使用可能
16 ピンヘッダー ( male, H=5.3mm )
PSM-4200233-15
•販売:廣杉計器
•価格:76円
•輸送:
•仕様:H=2.3 + 3 = 5.3mm
•M5Stack PROTO基板:0.2mm (Space 0.1+pin 0.1) 接触が増加しM5Stackへ確実に接続可能。
•M5Stack 使用可能
17 ピンヘッダー(female,H=3.5mm)
FSS-42035-15
•販売:廣杉計器
•価格:62円
•輸送:
•仕様:H=3.5mm
•M5Stack 使用可能
18 2.54mm Double Row Straight /Right Angle Male Pin. 40pin •販売:glhk05
2019.02.02 •価格:24円(2×15)。20pcs 939円
•輸送:11日。
•仕様:2 x 40 ( 80P )
•Type:Right Angle
•Material:0.8U environmental gold
•販売:秋月電子通商
•価格:50円
•M5Stack 使用可能
19 2.54mm 2x15pin Double Row Stright Female Pin •販売:PS-elec Store
2019.12.18 •価格:13円  (5個 65円)
•輸送:45日
•仕様:
•高さ:8.5mmでM5Stack使用可能。
•材質:金属表面は金色,秋月製品よりも僅かにざらつきがある。メスピンに挿すオスのピンの長さは5mm必要
20 2*40Pin Male Double Row Pin Header Connector •販売:ce10wy
2019.11.22 •価格:18円  (10pcs 358円)
•輸送:13日
•仕様:高さ:9.1mm
•材質:表面は金色
•販売:秋月電子通商:H=9.6mm
•販売:Shenzhen LMX Connector (Pin Header 2x15Pm h=9.1mm)
•M5Stack 使用可能
21 JST 1.25mm/2.0mm 2-Pin Male & Female Connector plug •販売:tina*2016
2019.09.16 •価格:8円 (50paire 375円 GBP 2.58)
•輸送:11日
•仕様:1.25mm, PH2
•M5Stack 使用可能部品
22 JST 1.25 2Pin Mail Female •販売:onered33
2019.12.03 •価格:13円 (20pcs 244円 $2.24)
•輸送:
•仕様:
•M5Stack 使用可能
23 I2C Splitter Expand Module with Cable •販売:YOHI Children Daily Store
2019.04.06 •価格:172円  ( $1.54 )
•輸送:30日。
•仕様:Size 33x12x6mm。
• コネクターは並列接続
24 Push Button Switch & TactCap
12*12*7.3mm
•販売:WEIDILY STORE
•価格:8円  ( 20pcs/set 160円 )
•輸送:
•仕様:12*12*7.3mm
WEIDILY STORE:20pcs $1.08
WEIDILY STORE:20pcs $0.86
suntone Store:kit。20pcs, 233円
•千石電商:sw 53円。cap 21円。
•Blog:M5Stack Push Button Controller
25 Analog Joystick:10KΩ Volume •販売:Amy 001 Store
•価格:59円  ( 2pcs 117円 )
•輸送:19日
•仕様:10KΩ
•販売:ntpkgzqsfy65
•価格:109円
•Blog:M5Stack Joystick and moio control
26 JoyStick Breakout Module •販売:good-module
2020.0218 •価格:112円
•輸送:
•仕様:5KΩ
•基板付き。
•Blog:Easy M5STACK JOYSTICK
27 I2C Analog Joystick for M5Stack •販売:M5Stack Official Store
•価格:543円
•輸送:
•仕様:I2C
•サイズ:extension Moduleに入る
•I2C接続によりESP32の負荷は軽くなる
•Blog:M5Stack Joystick and moio control
28 Schottky Barrier Diode
RSX101VAM-30
•販売:秋月電子通商
•価格:9円  ( 20個 180円 )
•輸送:
•仕様:30V, 1A
•販売:YIXUANTAI Official Store
•価格:10円。100pcs 1030円
•輸送:12日
29 日東 再剥離可能強力両面テープ
5000NS50
•販売:Amazon Japan G.K.
•価格:1495円
•輸送:2日
•仕様:5000NS50 , 50mm×20m
•3D Printe用
30 3M Masking Tape 243J Plus •販売:Amazon Japan G.K.
•価格:402円
•輸送:2日
•仕様:100mmX18m 243J 100
•3D Printe用
31 MK Replicator 2X Extruder •販売:REPRAP Official Store
•価格:1304円
•輸送:17日
•仕様:Reeplicator 2x 用?
•Replicator 2Xに合わず調整が必要
32 PAM8403 3W D Stereo Amp •販売:FYD Open Source Hardware
•価格:60円
•輸送:19日
•仕様:3W D AMP, PAM8403
• PAM8403はM5StickC HAT,TTGOの Audioに使用されている
33 HX1838 IR Wireless Remote Control Sensor Module Kits •販売:deepenmind
2019.09.11 •価格:105円
•輸送:14日
•仕様:HX1838
34 ADS1015 12-Bit AD/DA Module •販売:tolmall
2019.12.12 •価格:173円
•輸送:16日
•仕様:ADS1015
•販売:fr_aurora
•価格:175円。•輸送:16日
35 TTGO Expansion Board •販売:LilyGO Store , TTGO
2020.01.14 •価格:
•輸送:
•仕様:SIL2104, AUTO PROG, MAN
•TTGO T-Wristband付属品
•端子:3V3,GND,RST,IO0,RXD,TXD
•ESP32 AUTO PROG に使用可能
36 UMH3N Dual Transistor •販売:YT Electronics components
•価格:10pcs  $1.75
•輸送:
•仕様:UMH3N
•ESP32のAUTO PROGに使用可
•Wemosが採用。
•1 chip で出来る。
37 TCRT5000L Optical Sensor Photoelectric Switches •販売:DEXIANG Store
2019.10.05 •価格:9円  ( 20pcs 172円 )
•輸送:32日
•仕様:TCRT5000L
38 IPS 2.0″ 320×240 SPI ST7789V •販売:fortymall Store
•価格:519円  ( $4.70 )
•輸送:
•仕様:SPI ST7789V, IPS
•サイズ:30x40mm
39 IPS 3.2″ 480*320 SPI HX8357 •販売:JR E-Shop
2020.01.27 •価格:1987円
•輸送:13日
•仕様:SPI HX8357, IPS
•サイズ:51.16*79.46*2.25mm
40 MB85RC256V I2C Non-Volatile Fram Breakout Module •販売:
2019.12.30 •価格:402円  ( $3.64 )
•輸送:42日
•仕様:256KBit/32KByte,MB85RC256V
•SRAMのようにデータバックアップ用バッテリ無しでデータ保持が可能
MB85RRC256V / JPN
41 DC 5V-12V 16-Pole Three-Phase Brushless Motor •販売:xsyl-52
2019.06.14 •価格:278円
•輸送:28日
•仕様:
•販売:motorhouse •価格:278円
42 Gear Motor 3V 130rpm •販売:bee_studio
2019.09.24 •価格:262円
•輸送:21日
•仕様:
•回転数が低い。音は静か。
43 Gear motor 3V 600rpm •販売:Shop4700059
2019.09.14 •価格:69円
•輸送:13日
•仕様:3V 600rpm。44x25x19mm
•サイズは大きい。
44 3Vdc Gear Motors GA1024-N20 •販売:ModuleLive Store
2019.11.15 •価格:469円
•輸送:9日
•仕様:3V, Speed:200RPM
M5 Wheel Module ( moio )
•サイズ小さく音静か。最適な速度。
45 Oring 16mm •販売:mnsmoresell
•価格:12円  ( 50pcs 313円 )
•輸送:25日
•仕様:Thickness: 1.9mmm Outside Dia: 16mm
•価格:千石電商 15mm, 163円
46 Micro 412 Gear Motor DC 3V •販売:supersinostore
2019.07.11 •価格:93円
•輸送:13日
•仕様:DC 3V
•最安だが音は大きい。
47 DRV8833 2ch DC Motor Driver •販売:shoptongs
2019.08.02 •価格:90円
•輸送:15日
•仕様:PWR 2.7~10.8V,1.2A,IN=3or5V
•size = 19x16mm
DRV8833
最安, 最小サイズの Motor driver
•Blog:Make M5Stack Servo Module
48 DRV8835 •販売:秋月電子通商
•価格:300円
•輸送:
•仕様:電源=2~11V,1.5A,IN=2~7V
•size = 15×10mm。小型だが高い。
49 L9110 Dual-way DC Motor Board •販売:yang-sell584 store
2019.08.09 •価格:83円
•輸送:22日
•仕様:PWR: DC2.5-12V, 0.8A
•サイズ:29.2 x 23 mm
L9110 PDF
50 Dual Motor Driver MX1919 •販売:MH-ET LIVE Official store
2018.12.26 •価格:61円  ($0.55)
•輸送:14日
•仕様:1.5A,pwr 2-10V,in 1.8-7V
•MX1919 ( L298N )
•サイズ:24.7 * 21 * 5mm
51 L298N DC Stepper Motor Driver •販売:horizon_electronic
2019.08.01 •価格:195円
•輸送:14日
•仕様:2A,PWR 5-35V,in 5V
•サイズ:43x42x27 mm
52 2.5A motor Drive MX1919 •販売:MH-ET LIVE Official Store
2018.12.26 •価格:120円  ($1.08)
•輸送:14日
•仕様:2-10V 2.5A, Signal in 1.8-7V
•size:31*32*5mm
53 VS1003 MP3 Module Decoding •販売:Standby for Module Store
2020.02.22 •価格:455円  ($4.07)
•輸送:
•仕様:VS1003
•M5Stackに最適なAudio Board。
事例
54 0.7-5V to 5V DC to DC Step-up Module(5V No needle) •販売:little.apple2014
•価格:214円  ( $1.85 )
•輸送:17日
•仕様:Input dc1~5V, output 5V±2%, input 4.2v:600mA output. •pdf
•Blog:AA, AAA battery adapter for M5Stack.
55 USB HOST SHEELD •販売:Worldchips
2018.10.21 •価格:566円
•輸送:
•仕様:MAX3421E
•Blog:USB HOST Module for M5STACK
56 AMG8833 •販売:Your Cee Store
2018.09.09 •価格:3942円
•輸送:
•仕様:AMG8833
•Blog:M5Stack Thermal Camera Part 2
•Blog:M5Stack Thermal Camera with AMG8833
57 3.5″ 480×320 ILI9486 display •販売:good-module Store
2019.01.01 •価格:1332円
•輸送:
•仕様:ILI9486, Touch Screen
•Blog:Connect 3.5″ 480 x 320 Display to M5Stack
•Blog:TFT display for Raspberry pi with ESP32
58 3.5″ 480×320 ILI9488 display •販売:Hong Kong feng tai co., LTD
2019.02.05 •価格:1332円
•輸送:
•仕様:ILI9488, Touch Sensor, SD
•Blog:Use ILI9488 with M5Stack
59 0.96″ 160×80 IPS SPI ST7735 •販売:All goods are freeshipping
2019.03.24 •価格:250円  ( $2.27 )
•輸送:17日
•仕様:IPS, size:24x30mm,ST7735
•販売:worldchips
•価格:319円 ($2.90)•輸送:15日
•Blog:Run IPS SPI display on M5Stack
• M5StickCに使用されている
60 1.3″ 240*240 IPS SPI ST7789 •販売:All goods are free shipping
2019.03.24 •価格:340円  ($3.09)
•輸送:16日
•仕様:IPS,without CS,ST7789,mode 3
•Blog:Run IPS SPI display on M5Stack
61 0.96″ 160×80  IPS SPI ST7735 •販売:faaqii
2019.03.24 •価格:404円  ( $3.68 )
•輸送:
•仕様:IPS, CS, ST7735
•販売:OPEN-SMART Official Store
•価格:$2.38
•Blog:Run IPS SPI display on M5Stack
62 0.96″ 160×80 IPS SPI ST7735 •販売:tradeworld2015
2019.03.24 •価格:488円  ( $4.44 )
•輸送:
•仕様:IPS, CS+SD SLOT, ST7735
•Blog:Run IPS SPI display on M5Stack
63 1.3″ 240×240 IPS SPI ST7789VW •販売:mywindowworld568
2019.03.24 •価格:469円  ( $4.27 )
•輸送:
•仕様:IPS, CS, ST7789VW
•Blog:Run IPS SPI display on M5Stack
64 1.3″ 240×240 IPS SPI ST7789VW •販売:dreampossible2019
2022.02.22 •価格:477円  ( $4.42 )
•輸送:
•仕様:IPS, CS+SD SLOT, ST7789VW
•Blog:Run IPS SPI display on M5Stack
65 1.3″ 240×240 IPS SPI ST7789 Display for Raspberry Pi •販売:easy2buydeals Store
2019.03.24 •価格:1406円  ( AU$17.84 )
•輸送:12日
•仕様:IPS
•Blog:Run IPS SPI display on M5Stack
66 ESP32 MiniKit •販売:top_electronic1980
2017.09.17 •価格:790円  ($7.11)
•輸送:
•仕様:
•Blog:ESP32 MiniKit
最安, 最強のESP32 Board
67 CJMCU-8128 CCS811+SI7021+BMP280 •販売:worldchips
2018.05.06 •価格:1756円
•輸送:17日
•仕様:Carbon Dioxide Temp Humidity
CCS811:二酸化炭素
SI7021 :温度、湿度
BMP280:気圧
68 CJMCU-1334 UDA1334A I2S DAC Audio Stereo Decoder •販売:YTF Technology
2020.02.22 •価格:112円  ($2.88)
•輸送:
•仕様:I2S DAC Audio Stereo Decoder
•製作記事(試行錯誤な日々)
UDA1334A
69 WeMos D1 Mini I2C Dual Motor Driver TB6612FNGV1.0.0 •販売:Worldchips
•価格:156円
•輸送:21日
•仕様:TB6612FNG (TOSHIBA)
•構成:ControllerはST32F030 F4P6 •M5Stack BeetleCと同じチップ
70 Sound Detection Sensor FC-04 •販売:shieldsfans
2017.12.31 •価格:88円
•輸送:
•仕様:
•販売:HESAI 3C Electronic
•価格:112円
•Blog:Audio Spectrum Display with M5STACK
71 G6K-2F-Y-3VDC Signal Relay •販売:worldchips
2019.10.02 •価格:93円  ( 5個 476円 )
•輸送:19日
•仕様:3V, SIZE:10*6.5*5mm,PDF
•iPadのタッチ操作をリレーで自動化
72 G6K-2F-Y-5VDC Signal Relay •販売:worldchips
2009.03.19 •価格:81円  ( 5個 403円 )
•輸送:19日
•仕様:5V, SIZE:10*6.5*5mm,PDF
73 DS3231 RTC Module •販売:wordchips
2019.06.29 •価格:119円  (10個 1186円)
•輸送:16日
•仕様:DS3231, DS3231
•M5Stack GRAY I2C Address:0x68
MPU9250のI2C Addressと同じ
•Order時はBattery付きか確認する事
•Blog:M5Stack Nixie tube Clock
•Blog:DS3231 RTC in ESP8266
•M5Stack 使用可
74 USB ケーブルテスター •販売:superdeal_store
2019.11.13 •価格:785円
•輸送:17日
•仕様:USB2.0, C, Mini ,Micro
•使用IC:555, 4017, T4 Diode
75 IR Infrared Transceiver Decoder •販売:Aphrodit’s Wardrobe Store
2019.05.18 •価格:223円 ( 2pcs $4.06)
•輸送:10日
•仕様:5V
•NECコードの送受信をサポートする38Kの赤外線送受信機
•サイズ:27 x 17mm
72 Gear motor DC3V 1200 rpm •販売:Store 835527 Store
2019.09.29 •価格:$2.40
•輸送:
•仕様:3V 1200 rpm
•Deceleration ratio: 1:26.15
•Torque: 12g.cm (locked:27g.cm)
•Voltage: dc3V noloadc 30mA
•speed: 1200 turn
•M5 BeetleCに使用。速度早く使用不可
77 YX5300 Serial MP3 Music Player •販売:worldchips
2019.04.22 •価格:200円  ($1.79)
•輸送:16日
•仕様:Serial MP3 Player manual
•200円で買えるMP3プレーヤー
78 3.7V 2000mAh 103450 Lipo Battery •販売:DEAH Online Store
2019.10.23 •価格:512円
•輸送:30日
•仕様:Model: 103450
•サイズ:50x34x10mm
•評価:未実測だが厚みと重さから 2000mAと思われる
•M5Stack 使用可
79 SYN6288 speech synthesis •販売:Global-Purchase Store
2020.02.20 •価格:901円  ($8.56)
•輸送:10日
•仕様:SYN6288
•サイズ:22 x 22 mm
•音声合成の操作ができます
80 2×13 Spectrum LED Board (YNDZ-1813A Spectrum) •販売:daisoug9 Store
2019.07.07 •価格:261円
•輸送:14日
•仕様:
•TIP:16pin:STC15W402AS
YouTube
81 9DOF BNO055 Attitude Sensor Angle Gyroscope Module •販売:sensesmart
2019.06.14 •価格:1041円
•輸送:15日
•仕様:BNO055フィルタ処理付き
•X’TAL付きが良い。最良の9DOF
•販売:Thinary Electronic Official Store
•価格:703円
82 ICSH044A Trackball Module •販売:deepenmind
2019.12.28 •価格:382円
•輸送:24日
•仕様:2.5V~5.25V
•ボールの直径:5mm
•PCB Size: 22*28mm
83 PAM8403 2ch Power Amplifier •販売:Worldchips
2019.04.22 •価格:100円 ($0.89)
•輸送:16日
•仕様:PAM8403
•100円で買えるアンプ
84 3A Battery Holder •販売:hkdz-2019
•価格:57円
•輸送:14日
•仕様:
•サイズ:54mm に対し 52mm
•Blog:AA, AAA battery adapter for M5Stack
•M5Stack 使用可
85 Plastic AA Battery Case •販売:Worldchips
2019.04.22 •価格:32円  (10pcs 324円 $2.89)
•輸送:16日
•仕様:
86 I2S MEMS Microphone •販売:mywindowworld568
2019.04.13 •価格:925円
•輸送:13日
•仕様:SPH0645LM4H
•I2Sは、約50Hz〜15KHzの範囲•M5Stack FireのMicはMEMS Analog BSE3729 Microphone(低価格)を使用
87 PCM5102 DAC Decoder I2S Player •販売:Global-Purchase Store
2019.09.28 •価格:409円  ( $3.68 )
•輸送:12日 ( Airline )
•仕様:32Bit 384K, PCM5102
•サイズ:48 x 48mm
88 •販売:bhqf_9
2020.02.22 •価格:276円  ($2.56)
•輸送:
•仕様:
•blog:GPS CLOCK with M5STACK
89 GPS Module with Active Ceramic Antenna •販売:chip_partner
2020.02.22 •価格:375円  ($3.48)
•輸送:
•仕様:IPEX Interface 1575MHz
•blog:GPS CLOCK with M5STACK
90 MAX30102 Heart Rate Sensor •販売:tianyunl_31
•価格:235円
•輸送:
•仕様:PDF
•販売:MH-ET LIVE Official Store
•価格:317円 ( $2.82 )
•輸送:14日
91 L9110 H Fan Module •販売:Worldchips
2019.04.22 •価格:421円  ($3.77)
•輸送:16日
•仕様:L9110 。N20 Motor
•Working Voltage: 5V
92 Storage Box Case •販売:Storage World Store
2019.12.19 •価格:(左)77円。(右)107円。
•輸送:19日
•仕様:
•M5Stackにピッタリでケーブルも入るケース。色は水色はとても綺麗。
93 Waterproof Carrying Hard Case Box •販売:excellbay store
2018.12.01 •価格:87円 (AU$1.00)
•輸送:14日
•仕様:
•サイズ:M5Stack にピッタリ
•M5Stack 使用可
94 Boost Converter Module •販売:blkbox_me
2019.12.18 •価格:739円
•輸送:23日
•仕様:
•最も効率の良いBoost Converter Moduleは国内のストロベリー・リナックスの[TPS61020]は 900円。
95 USB C to SATA Adapter •販売:abureely
2019.12.18 •価格:493円
•輸送:31日
•仕様:
•iPad USB CタイプにSSDを接続でき 大容量を得る事ができます
96 DFRobot micro:Maqueen Robot Car •販売:Happy Electronics
2019.08.30 •価格:2689円
•輸送:9日
•仕様:多数のセンサー、LED搭載
•micro:bit拡張モジュール
•制御:I2C=STM8S003F3U6,75V18
•Motor:N20 Motor Gear 150
•M5 BeatleCの制御はSTM32F030
•M5Stack 使用可
97 Micro:bit風なユニバ基板 [UP52x42BIT] •販売:aitendo
•価格:130円
•輸送:
•仕様:52x42x1.6mm
•M5Stack,DFRobot Car使用可
98 Mini car chassis balance 2WD •販売:SINONING Official store
2018.11.12 •価格:2610円 ( $22.41 )
•輸送:13日
•仕様:
99 AM312 PIR Mini IR Detector •販売:cctv008008
•価格:173円
•輸送:
•仕様:AM312
100 HC-SR501 Infrared PIR Motion Sensor Module •販売:xianyeji2016
•価格:111円
•輸送:
•仕様:HC-SR501
101 MCP4725 I2C 12bit DAC •販売:deepenmind
•価格:105円
•輸送:
•仕様:MCP4725
102 3-6Vdc geare motor, drive 1:48 •販売:HongkongTS Store
•価格:38円  ( $0.34 )
•輸送:
•仕様:6V=200rpm, 3V=90rpm
•size:70x23mm
•サイズ大、回転数小、音は大きい
103 1.44″ 128×128 TFT SPI ST7735 •販売:dm-goodss
2020.02.22 •価格:345円
•輸送:
•仕様:
•Nokia 5110互換品
•Blog:1.44″ 128×128 Color TFT in ESP8266
104 1.8″ 128×160 TFT SPI ST7735B •販売:good-module
2020.02.22 •価格:413円
•輸送:
•仕様:
•Blog:1.8″ 128×160 Color TFT in ESP8266
105 Blue 0.96″ I2c 128×64 OLED •販売:lbbacoffee
2010.02.22 •価格:263円  ( C $3.11 )
•輸送:
•仕様:I2C,3-5v,Vcc,Gnd,SCL,SDA
SSD1306
•Blog:ESP8266 単体で I2C OLED を動かす
106 Blue 0.96″ SPI 128×64 OLED •販売:cctv008008
•価格:264円  ( $2.36 )
•輸送:
•仕様:SPI, SSD1306
107 0.95″ 96×64 SPI SSD1331 Color OLED •販売:chivazhu
2017.06.14 •価格:800円
•輸送:7日
•仕様:SPI, SSD1331
•Blog:0.95″ 96×64 SPI Color OLED in ESP32
108 I2C OLED 64×48 Shield •販売:Global-Purchase Store
2016.04.01 •価格:199円 ( $ 1.78 )
•輸送:
•仕様:I2C, SSD1306
•BLOG:Using the WeMos I2C OLED 64×48 in ESP32
109 16CH AD MUX Board CD74HC4067 •販売:hongpuda2019
2010.02.22 •価格:84円
•輸送:
•仕様:CD74HC4067
110 AD9833 Signal Generator •販売:sensesmart Store
2010.02.22 •価格:795円
•輸送:
•仕様:電圧: 2.3V-5.5V。周波数: 0-12.5Mhz。分解能:0.1Hz。サイン波, 三角波, 方形波
•I2S DAC Audio Stereo Decoder
AD9833
•参考:mgo-tec電子工作
111 TEA5767 FM Stereo Radio •販売:cctv008008
2010.02.22 •価格:427円
•輸送:
•仕様:76〜108MHz, TEA5767
•Blog:Make the FM Radio in ESP8266
112 Breadboard 170 Contacts •販売:horizon_electronic Store
2018.12.14 •価格:52円 (5個 259円)
•輸送:8日
•仕様:170 Contacts
•接触は良い
•販売:cayin35
•価格:47円。10pcs 468円。
•価格:秋月=130円。atendo=200円。
113 Breadboard 400 Contacts •販売:horizon_electronic Store
2019.01.02 •価格:130円  (5個 647円)
•輸送:17日
•仕様:400 Contacts
•バネの強さは良い
•販売:moduleme •価格:141円
•販売:dongfu2018 •価格:109円
114 26AWG 7.8cm Wire 50pcs •販売:Jierui Da Electronics Co., Ltd
2020.02.22 •価格:115円。50pcs $1.03
•輸送:
•仕様:26AWG
115 1P2T Slide Switch •販売:C&G Semiconductor
2020.01.03 •価格:9円  (50pcs 420円)
•輸送:
•仕様:
•WoMosシリーズに採用。
•M5Stack 使用可
116 基板用スライドスイッチ SK-12D01-VG4 •販売:秋月電子通商
•価格:30円
•輸送:
•仕様:
•M5Stack 使用可
117 1P2T 2 Position Slide Switch •販売:gc_supermarket
2020.02.22 •価格:6円。20pcs 112円
•輸送:33日
•仕様:
•M5Stack 使用可
118 ADXL345 IIC/SPI digital angle sensor accelerometer module •販売:RoarKit Store
2020.01.24 •価格:76円
•輸送:17日
•仕様:ADXL345
•3軸加速度センサー
•M5Stack BasicをGray化。
119 GY-291 ADXL345 three-axis acceleration IIC/SPI •販売:RoarKit Store
2020.01.24 •価格:76円
•輸送:17日
•仕様:ADXL345
•3軸加速度センサー
•M5Stack BasicをGray化。
120 Vibration Motor Module •販売:Your Cee
2019.12.24 •価格:83円
•輸送:18日
•仕様:
121 DHT12 Digital Temperature Humidity Sensor •販売:SeeSensor Store
2020.01.04 •価格:154円
•輸送:26日
•仕様:DC 2.7-5.5V, DHT12
122 BME280 Temperature Humidity Barometric Pressure Sensor I2C SPI •販売:ElectronicFans
2020.02.22 •価格:249円  ( $2.23 )
•輸送:
•仕様:1.8-5V, BME280
•Blog:Display the graph on the iPad
•Blog:ESP8266+BME280+OLED+BOX
•Blog:ESP8266+AE-BME280+ThingSpeak
123 BME680 Temperature Humidity Pressure Sensor CJMCU-680 High Altitude Sensor Module •販売:Your Cee
2020.02.22 •価格:987円  ( $8.86 )
•輸送:
•仕様:BME680
124 USB Safty Tester •販売:HIDANCE Official Store
2018.10.22 •価格:977円  ( $9.41 )
•輸送:
•仕様:電圧測定範囲:3 V~22 V 分解能精度:0.0001 V
電流測定範囲:00000~5.100 解像度精度:0.0001 A
•電流は 0.1mAまで測定でき 電圧と電流を同時に表示。
125 USB METER UM24 •販売:fufulliuliu
2018.04.19 •価格:1468円
•輸送:23日
•仕様:
•精度:1mV,1mAデジタルとグラフ表示
126 UM34C USB Tester •販売:dealikee
2019.04.12 •価格:1907円
•輸送:27日
•仕様:
•BLEでiOS(UM Meter)に接続可能
Youtube
127 ESR-T4 LCR Tester •販売:FNIRSI Official Store
2020.02.22 •価格:$4.51
•輸送:
•仕様:
128 LCR ESR NPN PNP MOSFET IR Tester •販売:KKK-store
2020.02.22 •価格:$17.88
•輸送:
•仕様:
129 IR Infrared Control Expansion Board •販売:Global-Purchase Store
2019.05.18 •価格:520円  ( 2pcs 9.46 )
•輸送:10日
•仕様:
•サイズ:43 x 38 mm
•コネクターは 高さがある
130 HTDS-SCR Capacitive Touch Switch •販売:zoneopen
2020.02.22 •価格:210円
•輸送:20日
•仕様:
131 I2S 3W D Amp Breakout MAX98357A •販売:MBM-Chip Store
2020.02.22 •価格:996円  ( $9.00 )
•輸送:8日
•仕様:D Amp, 1ch, 3.2W , 14ohms
MAX98537A
•共立エレショップ:950円
132 MAX7219 LED 8×8 Dot Matrix Display Module •販売:sz-keyes Store
2019.03.25 •価格:255円 (3個 766円)
•輸送:11日
•仕様:I2C接続:IC:HT16K33
•LEDの色は「赤」のみ
133 Gamepad Bracket Holder Stand •販売:deshophere
2019.03.26 •価格:190円
•輸送:12日
•仕様:
•M5stackを装着できます
134 PMSA003 Sensor Module Pm2.5 Air Particle Dust Digital Sensor •販売:ecmall
2022.02.22 •価格:2031円
•輸送:13日
•仕様:PM1.0, 2.5, 10 Dust Sensor
•サイズ:35x38mm,M5Stackに入る
•販売:shengyi2017•ケーブル付
•価格:2019.03.19。2226円。
•輸送:13日
135 ULN2003 Driver + 5V/12V 28BYJ-48 4 Step Motor •販売:sensesmart shop
2018.09.22 •価格:224円
•輸送:20日
•仕様:
136 Joystick Breakout Board for BBC Micro:Bit •販売:keyestudio Fun Store
2022.02.22 •価格:884円  ( $7.99 )
•輸送:
•仕様:
•Micro:bitユニバ基板でM5Stack接続可
137 2-CH I2C IIC Logic Level Converter •販売:Worldchip
•価格:30円
•輸送:17日
•仕様:BSS138
138 Logic-Level-Shifter •販売:HWA YEH Official Store
2020.01.07 •価格:23円
•輸送:7日
•仕様:HV=5VDC, LV=3.3V, BSS138
139 Waveshare 1.54 inch e-Paper
, XH2.54 20cm 8Pin Cable
•販売:WS Development Tool Store
2017.09.07 •価格:1716円
•輸送:12日
•仕様:200×200
•Blog:1.54 inch e-Paper Display with ESP32
•SIZE:48x35mm
140 296×128 2.9 inch SPI E-Ink display module •販売:Waveshare Development Kit
2017.12.21 •価格:$19.79
•輸送:21日
•仕様:296×128
•輸送はかかるが種類が多い販売店
141 2.9 inch e-Paper Module 296*128 E-Ink Display •販売:Shop3213115(SINGAPORE)
2017.12.15 •価格:$16.14
•輸送:15日
•仕様:296*128, 87 x 36mm
•コイルの高さは 3.5mm。基板と e-INK の厚さは 2.1mm。取り付けは かなりしっかりしています。squix78 の Daniel Eichhorn氏が使用している。
142 1.54 Inch Epaper SPI Module •販売:MH-ET LIVE Official store
2019.12.26 •価格:1702円  ( $15.15 )
•輸送:14日
•仕様:B&W:200×200, 3.3V/5.0V
143 INMP441 MEMS I2S Microphone •販売:MH-ET LIVE Official store
2018.12.26 •価格:315円  ( $2.80 )
•輸送:
•仕様:INMP441
144 WS2812 12 ring •販売:MH-ET LIVE Official store
2018.12.26 •価格:187円  ( $1.66 )
  •輸送:14日
•仕様:
145 Light sensor •販売:MH-ET LIVE Official store
2018.12.26 •価格:98円  ( $0.88 )
•輸送:14日
•仕様:3.3V or 5V,-10 ° C ~ +70 ° C
•Size: 24mm x 21mm
146 ESP32VGA32 V1.2 PS2 Mouse Keyboard Controller •販売:LilyGO Store
2019.12.31 •価格:1033円
•輸送:9日
•仕様:
147 ESP32VGA32 V1.1 PS2 Mouse Keyboard Controller •販売:towafor
•価格:1718円
•輸送:24日
•仕様:
148 VGA Male to HDMI Female Adapter Converter Cable •販売:Ruyun Store
2002.02.19 •価格:428円  ( $3.95 )
•輸送:29日
•仕様:
149 VGA to HDMI Converter VGA2HDMI •販売:8YV Store
2020.01.25 •価格:402円
•輸送:14日
•仕様:
150 TTGO T-Wristband •販売:LilyGO Store
2020.01.14 •価格:2606円
•輸送:19日
•仕様:github回路図分解
•Display : IPS 0.96″ 160×80 ST7735
151 Arduino Pro Mini For Nano3.0 •販売:devicefly
2018.03.12 •価格:312円
•輸送:26日
•仕様:
152 TINY85 Digispark Kickstarter Micro Development Board •販売:Sincere Company Store
2019.03.04 •価格:181円  ($10.62)
•輸送:181円
•仕様:
153 MAX9814 AGC Auto Gain Microphone Amplifier Module •販売:sunnylives
2018.04.05 •価格:232円
•輸送:20日
•仕様:MAX9814
•Automatic Gain Control
154 Heart Rate Sensor •販売:ELECROW Official Store
2018.03.06 •価格:$15.13
•輸送:21日
•仕様:
155 W5500 Chip New SPI to LAN Ethernet Converter TCPIP Mod •販売:cctv008008
2019.03.19 •価格:491円
•輸送:13日
•仕様:W5500
156 LAN8720 Ethernet transceiver RMII interface •販売:FYD Open Source Hardware
2020.02.22 •価格:171円  ( $1.55 )
•輸送:
•仕様:LAN8720
157 16ch 12bit PWM/Servo Driver-I2C PCA9685 •販売:GREAT WALL Electronics
2019.04.17 •価格:253円  ( $2.26 )
•輸送:18日
•仕様:I2C, PCA9685
•サイズ:63 x 25 mm
158 PCF8574 I/O Expander I2C •販売:xiumeche-0
2020.02.22 •価格:109円
•輸送:
•仕様:I2C, PCF8574
•回路:PCF8574 IO Expansion Board
•参考:PCF8574 GPIO Extender 
159 PCF8574P 8bit I/O Expander I2C •販売:binggogo
2020.02.22 •価格:30円  ( 5pcs 150円 )
•輸送:
•仕様:I2C, PCF8574
•販売:AGUHAJSU Global purchase
•価格:$0.24
•販売:秋月電子通商 •価格:130円
160 TCA9548A 8ch I2C Expansion •販売:LAFVIN Store
•価格:92円
•輸送:19日
•仕様:I2C, TCA9548A
•I2C装置を8ch使用できるボード
Tutoriall
pdf
161 MCP2307 16Bit I2C I/O Expander •販売:auelectronics8_6
•価格:161円
•輸送:
•仕様:I2C , MCP2307
•I2CでI/O拡張可能。
pdf
162 Si5351 I2C Clock Generator Breakout Board Module •販売:worldchips
2019.04.22 •価格:360円  ( $3.28 )
•輸送:16日
•仕様:I2C, Si5351
•出力:8KHz to 160MHz
163 Solid State Relay SSR-25 DA •販売:acces-market
2017.04.18 •価格:206円
•輸送:16日
•仕様:in 3-32vdc,out 24-380vac,25A
•AC用
•調査:in 3V->4.5Vで動作。PWM可能。
•販売:秋月電子通商。40DA:1000円
•ebay:40AA=449円。40DA=395円。
164 Solid State Relay SSR-40AA •販売:shoptongs
2017.04.25 •価格:449円
•輸送:11日
•仕様:in 3-32vdc,out 5-60vdc, 25A
•DC用
165 Pulse Oximeter Oxygen SpO2 Heart Rate Monitor •販売:freedomofhome
2019.02.18 •価格:1165円
  •輸送:12日
•仕様:
•1. OLED+Graph:1165円
•2. OLED+Graph:1804円
•3. OLED+Graph+呼吸数+色:2097円
166 Pulsossimetro Saturazione Ossigeno Monitor Bluetooth IOS Android •販売:directbuy-es
•価格:5436円
•輸送:10日
•仕様:BLE付。iOS APPで表示可能。
•電子工作するより安く綺麗で便利。
167 DSM501A Dust Sensor •販売:worldchips
2015.12.19 •価格:594円
•輸送:
•仕様:DSM501A
•Blog:Environmental Sensor (環境センサー)
168 3.0″ For Nokia C3-01
Touch Screen
•販売:Phone Accessories Repair ctr
2020.02.29 •価格:360円
•輸送:22日
•仕様:48x36mm ( Touch部 )
•Nokia C3-01のタッチパネル
169 2.4″ 240×320 SPI ILI9341 Touch •販売:worldchips
2016.04.16 •価格:628円  ( $ 5.82 )
•輸送:
•仕様:ILI9341, XPT2046
•blog:2.4 Inch TFT Display For ESP32
•Blog:How to touch operation of the TFT LCD in ESP8266
•Blog:Try ESP8266 Adafruit_ILI9341 again
•Blog:How to use the UTFT Library the TFT LCD in ESP8266
•Blog:Using the TFT LCD display in the ESP8266
•注意:Touch機能は右下U1 ICがある。
170 TFT 2.4 320X240 ILI9341 Touch Shield V1.0.0 •販売:LOLIN Official Store
2018.11.12 •価格:1178円  ( $9.60 )
•輸送:17日
•仕様:ILI9341
•D1 mini, D1 mini Pro, D32 Pro に取り付け可能
171 Micro USB To USB C Adapter •販売:Dropship Accessories Store
2022.02.22 •価格:44円  ( 5pcs $0.40 )
•輸送:
•仕様:
•M5StackでType_C側を反転せず使用可
172 18650 Battery Charger Shield V8 •販売:diymore Alice1101983 Store
2020.03.02 •価格:465円
•輸送:24日
•仕様:3V/1A & 5V/2.2A two output
•Dual:18650は並列接続。
•解説:ELECTRO SCHEMATIC
173 KY-008 Laser Transmitter •販売:warehouse87
2020.02.22 •価格:50円  ( 5pcs $2.29 )
•輸送:
•仕様:650 nm, 5V, 15x24mm
174 Mini Piano Module for micro:bit •販売:flyfun_diymall
2020.02.22 •価格:1400円  ( $12.98 )
•輸送:
•仕様:I2C, TTP229-LSF, 3.3V
Piano for micro bit
•型番:消しているが TTP229-LSF
M5Stack and Piano Module for micro:bit
175 16ch TTP229 Touch Sensor I2C •販売:cctv008008
20919.01.01 •価格:113円
•輸送:19日
•仕様:Capacitive Touch Keypad (B)
Capacitive Touch Keypad (B)
•型番:消しているが TTP229-LSF
176 Direction Navigation Button •販売:techcrunch-fr
2018.12.27 •価格:135円
•輸送:26日
•仕様:
177 2.54mm 2×15 M-BUS M5Stack •販売:EC-Buying Ali Store
2018.11.18 •価格:290円
•輸送:10日
•仕様:M5Stack用
•販売:M5Stack Official Store
•価格:108円  ( 10set 1077円 )
•輸送:12日 , 2020.01.27
178 16ch TTP229 Touch Sensor •販売:cctv008008
2019.01.01 •価格:113円
•輸送:19日
•仕様:I2C, TTP229-LSF , schematic
•Size:64.7×49.8mm , TTP229-B
179 TTP223B touch switch module •販売:big-deal365
2020.02.22 •価格:70円
•輸送:
•仕様:TP223B
180 TTP223 Touch Switch Button Self-Lock Module •販売:rice-car1
2020.02.22 •価格:70円
•輸送:
•仕様:TP223
Tutorial for TTP223 Touch Sensor
181 Rotary Encoder Breakout Module •販売:tindle:DIY Electronics
2018.08.13 •価格:$19.90  ($12.95+$6.95 ship)
•輸送:
•仕様:Rotary A,B,Switch,GND
•M5Stack 使用可。
182 Mini32 ESP32-WROVER-B PSRAM Wi-Fi Bluetooth Module •販売:LilyGo Store
2019.05.11 •価格:1271円  ( $ 11.56 )
•輸送:9日
•仕様:QSPI FLASH 4MB / PSRAM 8MB, 520 kB SRAM, USB:CP2104
•価格:726円($6.75) 2020.02.22
183 Flash Memory Module SPI W25Q128B •販売:tae-equipment
2020.02.22 •価格:761円
•輸送:
•仕様:25Q128FVSG
•ESP8266の外部メモリーに使用でき 16MBitから128MBit。3.3V 80MHz
184 ESP8266 WeMos D1 Mini •販売:Shop5485179 Store
2020.02.22 •価格:223円 ( $2.07 )
•輸送:
•仕様:ESP8266 16MHz
•Blog:D1 mini information of April 2016
•Blog:D1 mini を技適対応にする
185 ESP8266 WeMos D1 Mini Pro •販売:Global-Purchase Store
2020.02.22 •価格:329円 ( $3.06 )
•輸送:
•仕様:ESP8266 16MHz
•Blog:WEMOS D1 mini Pro

 


.

海外BAD Saler LIST:以下は購入しては行けない販売店。

海外BAD LIST Reason
No Sale
1 ♦ alice1101983
2 microdrive china Store
3 ♦ LeeHapyns 3278 Store
4 UMIDIGI Official Store ♦不良品
5 ♦ zhaogong288 ♦未到着
6 ♦ chip_partner ♦未到着
7 ♦ robothome ♦未到着
8 ♦ kacha240 ♦未到着
9 ♦ kingelectronics15 ?
10 ♦ AnalogLamb ♦輸送3ヶ月
11 ♦ auelectronics8_6 ♦輸送50日
12 ♦ survy2014 ♦輸送40日
13 ♦ buy.flying ♦未到着
14 ♦ dayangjiubaiqian ♦未到着
15 ♦ fr_aurora ♦輸送34日
16
17 ♦ an illusion ♦輸送98日
18 ♦ Hongkong Rtl Industrial Limited ♦不良品
19 ♦ kingstore6688 ♦未到着
20 ♦ ModuleFans ♦輸送期間=67day。出荷品間違い
21
22

 


rev org : 2020.02.20:起案。
rev 1    : 2020.02.28: 163 Parts
rev 2    : 2020.02.28: 167 Parts, add PDF
rev 3    : 2020.03.02: 185 Parts, add PDF


感想:
1. 目的は 一覧表により在庫管理や購入、電子工作を便利にする為です。
2. ブログで部品表を記載していますが 同じ物を使用する場合があり
_ 一覧表があると便利です。
3. 購入品はエクセルでデーターベースを作り 価格、輸送期間を集計しています。
_ 集計により 良い販売店は残し、悪い販売店は2度と購入しない事にしています。
_ これにより 低価格と輸送期間の短い、品質の良い部品を入手する事ができます。
4. 販売店のリンク先は販売店の都合により無くなる事があります。
5. 他に多数の部品を調査、購入しましたが 全部をまとめる事まで出来ませんでした。
6. 信頼できる販売店:リストから解る事。
_ 担当者の部品の確認能力や処理力のある販売店がある。
_ 輸送期間がかかる場合もありますが品質の良い場合がある。
_ 今回、信頼出来るリストは作成していませんが 例として wordchips
_ があります。この販売店は 品数多く 品質も良く 安心して届きます。
_ 信頼があると 安心して注文ができます。又、同じ販売店に注文する事に
_ より 販売店側からの注文者への信頼も起きるかと思います。


Parts , M5Stack , Aliexpress , ebay , 廣杉計器 , 秋月電子通商 , 千石電商 , 西川電子部品株式会社 , BAD LIST , M5Stack ,

Written by macsbug

2月 28, 2020 at 5:22 pm

カテゴリー: Arduino, ESP32, ESP8266, M5STACK, Make

List of 2017

leave a comment »

2017年度リスト                         2019.12.31

2017年の記事をリストにしました。

Date View TiTle / Content cost
2017
12/31

Audio Spectrum Display with M5STACK

M5StackでAudio Spectrum DisplayGPS

322円
2017
12/26

GPS CLOCK with M5STACK

M5StackとGPS ModuleでGPS時計

6939円
2017
12/20

New Modules by Espressif Systems 2017.12

Espressif Systems による
4つの新しいモジュール

2017
12/14

M5STACK TELEC information

TELEC 番号:211-171004

3437円
2017
11/04

M5STACK work collection

M5Stack 作品事例集

2017
11/02

Arduino Library List

Arduino Library List
508人の著者による ライブラリー集

2017
09/15

M5STACK

M5Stackは オールインワンで
迅速な製品開発キット:購入

3977円
2017
09/15

M5Stack fake

M5Stackが販売前のメインボード

2262円
2017
09/07

1.54 inch e-Paper Display with ESP32

1.54″ e-Paper 200×200 SPI display を ESP8266, ESP32で動かす

1831円
2017
08/12

TFT display for Raspberry pi with ESP32

3.5 ” 480×320 SPI TFT RPi touch Display
を ESP32 で動かす

2265円
2017
07/10

ESP32 MiniKit

MH-ET LIVE「 ESP32 MiniKit 」

858円
2017
06/01

1.3inch SH1106 OLED Display in X-32

1.3″ 128×64 I2C SH1106 OLED Display
を X-32 で動かす

1635円
2017
05.26

Power switch to WEMOS LOLIN32 V1.0.0

WEMOS LOLIN32 V1.0.0
電源スイッチを取り付ける

1145円
2017
05/28

Pocket 32

WEMOS WiFi & Bluetooth Battery ESP32 development tool 発売開始

1145円
2017
05/16

18650 Battery Capacity

18650バッテリー は どの製品を購入すべきか

2017
05/15

D-duino-32 and Lolin ESP32 OLED wemos

Lily GOからLolin ESP32 OLED wemos 発売

1195円
2017
05/10

Pocket 8266 D1 mini WIFI Module

ポケットサイズの ESP8266 ボード

854円
2017
05/08

BATTERY and Battery Interface of WeMos LOLIN32

バッテリーとチャージ回路、ミラー回路

2017
04/21

WeMos LoLin32 V1.0.0

WEMOS CC Store から「LOLIN32
4月20日 発売開始

947円
2017
04/18

Lolin32

WEMOS Lolin32 発売

921円
2017
03/31

ESP-WROOM-32 Breakout by Magic Pot

魔法の大鍋 氏 設計製作:
ESP-WROOM-32 Breakout v2 r6。

2017
03/24

Try ESP8285

ESP8285 WeMos D1 mini Lite を試す

335円
2017
03/09

ESP-WROOM-32 ブレークアウトボード

こばさんのブレークアウトボード を作る

250円
2017
03/06

The cheapest ESP32 Development Board

最も安いESP32 Development Boardの構成

1351円
2017
03/01

USB ISOLATOR

iMac の USB を 保護する為に
USB ISOLATOR を使用

2235円
2017
02/25

ESP-WROOM-32 and ESP32 Adapter Board

ESP32 Adapter Board を作る

738円
2017
02/11

ESP32 Adapter Board and TFT Display

ESP-WROOM-32 ボードで
TFTディスプレーを組み上げる

1215円
2017
02/03

Write to ESP-WROOM-32 with Adapter Board

ESP32 Adapter Board で
ESP-WROOM-32 に書き込む

610円
2017
02/03

Write to ESP-WROOM-32 with Adapter Board

ESP-WROOM-32 発売記念写真

700円
2017
01/29

Weather meter on iPad

iPad を気象計
TouchOSC アプリ

1293円
2017
01/04

Easter Egg of ESP32

ESP32 イースター・エッグ:
ESP32 TinyBasic Plus
ESP32のROMにベーシック
インタープリターが隠されています

 


感想:

 


 

Written by macsbug

12月 31, 2019 at 5:20 pm

カテゴリー: ESP32, ESP8266, M5STACK, New Infomation

List of 2016

leave a comment »

2016年度リスト                        2019.12.31

2016年の記事をリストにしました。

Date View TiTle / Content cost
2016
12/27
Raytracing with ESP32

ESP32で レイトレーシング を試す

2016
12/17

2.4 Inch TFT Display For ESP32

ESP32で TFT Displayを使用する

3337円
2016
12/12

ESP32 Development Board with TELEC Memorial photograph

ESP32 Development Board
到着記念写真
ESP-WROOM-32 , 211-161007

$21.05
2016
12/19

Watch the ESP32 board

2016年12月現在の ESP32 Development Boards 一覧表

2016
12/08

Try IMU with MPU6500 and ESP8266

MPU6500と SP8266でIMUを試す

1306円
2016
12/05

CH340 with EI Caption

Mac OS X EI CaptionでCH340を試す

2016
12/04

Investigate Degrees Of Freedom

加速度センサーの調査

2016
12/03

ESP32 with TELEC will be released.

ESP32の技適対応版が販売開始
技適番号は「211-161007」

2016
11/30

CH340 kernel crash memorandum

USB to serial chip CH340
マックでカーネルクラッシュを起こす

2016
11/20

Communicate ESP8266 and iPad directly with UDP

ESP8266とiPadをUDPで直接通信

2016
11/15

Digital Compass HMC5883L with ESP8266

ESP8266 + HMC5883L で
デジタル・コンパス を作る

927円
2016
11/09

GPIO Port of ESP32

NANO32 の GPIO PORT を調べる

2016
11/03

ESP32 Beginning

Nano32 を試す

2016
10/30

0.95″ 96×64 Color OLED in ESP8266

9.5″ 96×64 Color OLEDを
ESP8266で動かす

928円
2016
10/23

1.8″ 128×160 Color TFT in ESP8266

1.8″ 128×160 Color ST7735Bと
ESP8266 でアナログ時計を作る

859円
2016
01/01

1.44″ 128×128 Color TFT in ESP8266

1.44″ 128×128 SPI Color Display
を ESP8266 で動かす。
Squix TechBlog の Font Converter

278円
2016
10/07

DS3231 RTC in ESP8266

ESP8266 + DS3231 RTC + OLED
でデジタル時計を作る

90円
2016
09/25

VL6180X distance sensor in ESP8266

VL6180X 距離センサーを
ESP8266で動かす

1582円
2016
09/24

YEN rate displayed in Pythonista3

円レートを iPad に表示するアプリを
Pythonista 3 で作る

2016
09/01

WEMOS D1 mini Pro

新製品情報
WEMOS D1 mini Pro。
販売台数。

346円
2016
08/28

Pythonista Beginner : Part 3

GitHubから repo を
ダウンロードする方法。
「GitHubGet.py」を試す。

2016
08/23

How to install OS X

OS X をインストールする方法

2016
08/15

Pythonista Beginner : Part 2

GitHubのファイルをPythonista 3に
ダウンロードする方法

2016
08/08

Display the graph on the iPad

ESP8266 のセンサーを
iPad でグラフ表示する

2016
08/02

Pythonista Beginner : Part 1

Pythonista 3 ことはじめ。
「ファイルの取り扱い方法」

2016
07/29

ESP8266 of sensors to display to the iPad

ESP8266 に接続した
センサーの値を iPad に表示

2016
07/28

Control the ESP8266 in iPad

iPadでESP8266をコントロールする
iPadアプリ。Pythonista 3

1200円
2016
07/13

WA-MIKAN

WA-MIKAN(和みかん) 基板は
8月に秋月で販売予定

2016
07/13

Learning ESP8266

Learning ESP8266」を
2017年1月に出版するとの事。
結果、中止となる。

2016
06/20

ESP8266 of error message

ESP8266 でシリアルモニターに
エラーメッセージがでる
意味やクラッシュする件を調べる

2016
05/02

Try the numeric keypad of TFT LCD in ESP8266

ESP8266 による TFT LCD
タッチパネル の テンキーを試す

2016
04/25

How to touch operation of the TFT LCD in ESP8266

240×320 SPI TFTのタッチパネルを
ESP8266 で使用する

2016
04/20

Try ESP8266 Adafruit_ILI9341 again

ESP8266 で TFT を動かす為の
Adafruit_ILI9341 を再度 検証

2016
04/18

How to use the UTFT Library the TFT LCD in ESP8266

ESP8266 と 240×320 SPI TFTを
UTFT Library で使用する方法

2016
04/10

ESP8266 weathestation and wireless power supply

D1 mini をワイヤレス給電で動かす

2016
04/09

D1 mini と OLED をワイヤー無しで組み立てる

 

2083円
2016
04/09

D1 mini information of April 2016

2016
04/06

Part 2 of the FM radio in the ESP8266

FM Radio TEA5767 を
mroger / TEA5767
ライブラリーで作る

2016
04/04

Make the FM Radio in ESP8266

TEA5767 FM Stereo Radio と
ESP8266 で FM Radio を作る

2016
04/01

Using the WeMos I2C OLED 64×48

WeMos I2C OLED 64×48 Shield
を D1 mini で使う

2016
03/31

Try ArduCam in ESP8266

ArduCAM Mini を D1 mini で動かす

2935円
2016
03/26

Basis to learn from D1 MINI

D1 mini の Micro SD Sheeld を試す

2016
03/24

D1 mini を技適対応にする。

ESP8266 を TELEC 化する方法

2016
03/21

Modification of SSD1306 library to be used for I2C OLED

「Adafruit-GFX.h」ライブラリー
「drawLine」命令の追加

2016
03/20

I2C OLED 128×64 SSD1306 in ESP8266

ESP8266 で I2C OLED 128×64 SSD1306
を動かす

2016
03/15

Make a voltmeter in the ADS1115 and ESP8266

ESP8266 と 16bit 4ch I2C ADC
ADS1115 で DC Voltmeter を作る

2016
03/05

WeMos シールド基板

2016
03/02

Let’s make a case of ESP8266

ケースを UV レジンで作る

2016
02/27

消えたボード

ESP-12F WIFI Wireless Serial Ports
ESP8266 Development Board
が消える

2016
02/21

ステップ10で組み上がる D1 mini 組み立て

 

1937円
2016
02/19

ESP8266 で 1MHz 50%duty を出力する

 

2016
02/18

ESP8266 Direct Access Port で Lチカ

ESP8266 の GPIO を直接操作

2016
02/16

ESP8266 の GPIO 速度

ESP8266(32bit 80MHz)は
Arduino UNOより5倍速い

2016
02/13

ESP8266 FTDI Auto Program

ESP8266 のスケッチを
自動で書き込む方法

2016
02/13

ESP8266 の Power-on Sequence と Power Reset

CH_PD端子には 1KΩプルアップ抵抗
と100nFのコンデンサーを付ける事

2016
02/10

ESP8266 の プルアップ抵抗

ESP8266 の I2C プルアップ抵抗

2016
02/07

iMac27インチの故障と復活

iMac 27-inch Mid 2010 が故障し
復帰するまでのお話

6000円
2016
02/05

i2C 16bit ADC 4ch ADS1115 in ESP8266

ADS1115:16-Bit ADC – 4 Channel with Programmable Gain Amplifier

339円
2016
01/26

Analog to Digital Converter MCP3002 in ESP8266

MCP3002:
SPI 10bit 2chAD Converter

2016
01/21

CH340G USB Serial Module in OSX

Mac OS X 10.8.5 Mountain Lion に
CHR340G USBシリアルモジュール
を接続するといきなりマックが停止

2016
01/16

3D CUBE with ESP8266 and OLED

 

2016
01/14

AUTO UART Download Mode of ESP8266

書き込みを自動化する方法

2016
01/13

WEATHER UNDERGROUND Station of ESP8266

SquixTechBlogWeatherStationDemo
を試す

2016
01/12

Weather Station of ESP8266

SquixTechBlog の ESP8266:
Weather Station V2 Code
published を試す

2016
01/11

WORLD CLOCK of ESP8266

SquixTechBlog の ESP8266
Weather Station: World Clock
Demo を試す

2016
01/10

IoT of Adafuruit

Adafurit の IoT(Internet of Things)
を試す

 


感想:

 


Written by macsbug

12月 31, 2019 at 5:09 pm

カテゴリー: ESP32, ESP8266, New Infomation

Run IPS SPI display on M5Stack

leave a comment »

IPS SPI DISPLAY を M5Stack で動かしました。     2019.03.24

0.96″ 80×160 IPS SPI ST7735 Display:324円

1.3″ 240*240 IPS SPI ST7789 Display:344円

M5Stack と ブレッドボード拡張アダプターで 動作確認を行ないました。

IPS方式:In Plane Switching の略で 液晶駆動方式の事を言います。広視野角
_ (上下左右178度)で どの位置でも色の変化がほとんど無く見やすいです。
価格:0.96″ 80×160:324円 ( $2.90 )
価格:1.3″ 240*240:344円 ( $3.09 )
LCD Color:65K FULL COLOR
Driver IC:0.96″ は ST7735、1.3″ は ST7789 です。
Library:Bodmer氏のTFT_eSPI は ST7735, ST7789 をサポートしています。
_ Bodmer氏に感謝!


購入:IPS は 0.96 inch と 1.3 inch の2種類があります。

1.  0.96″ 80×160 IPS SPI ST7735 Display ( 24 x 30 mm )

No Price Purchase Memo
1   250円 ( $2.27 )   All goods are freeshipping Store  輸送期間=17日
2   319円 ( $2.90 )   Worldchips  輸送期間=15日
3   363円 ( $3.30 )   Fancys Module Mall  –
4   372円 ( $3.38 )   ZQC Module Store  –

価格は 投稿時の 1ドル 109.925円で算出しています。

2.  1.3″ 240*240 IPS SPI ST7789 Display ( 39.22 x 27.78 mm )

_ All goods are freeshipping Store:IPSの文字が右

_ Worldchips Store:IPSの文字が左

メモ:
_ IPS と 基板の固定は 両面テープです。IPSの文字が左(Worldchips Store) は
_ 薄いテープを使用し固定具合が良いです。

_ CS端子はありません。Flex Wire Pin 8 裏の 基板上で GND になっています。

No Price Purchase Memo
1   340円。($3.09)   All goods are free shipping Store  輸送期間=16日
2   343円。($3.12)   Worldchips  輸送期間=18日
3   329円。($2.99)   Shop1918846 Store  調査中
4   350円。($3.18)   WAVGAT Store  –
5   368円。($3.34)   ElectronicFans  –

 


参考:他の IPS Display

3. 0.96inch IPS TFT LCD Display Breakout Module
_ CS  付き。

No Price Purchase Memo
1    404円。( $3.68 )   faaqii  –

 

4. 0.96inch IPS TFT LCD Display Breakout Module
_ CS  + SD SLOT 。

No Price Purchase Memo
1    488円。( $4.44 )   tradeworld2015  –

 

5. 1.3inch 240 * 240 IPS TFT LCD Display Breakout Board Module
_ CS 付き。

No Price Purchase Memo
1    469円。( $4.27 )   mywindowworld568  –

 

6. 1.3inch IPS TFT LCD Display Breakout Module
_ CS + SD SLOT 。

No Price Purchase Memo
1    546円。( $4.97 )   maaqii  –

 

7. 1.3″ 240×240 IPS SPI ST7789 Display for Raspberry Pi

No Price Purchase Memo
1  1406円。( AU$17.84 )  easy2buydeals Store  輸送期間=12日

 


IPS Display 型番:裏側の画像です。
_ 1.3″ 240*240 IPS SPI ST7789 Display ( 39.22 x 27.78 mm )
_ Model Number : LH133T-IG01-01
_ 1812039-1E
_ Bl-133H01B
_ LH B 2018-12-21

_ 参考URL


 

配線:0.96″ ST7735 は9本、1.3″ ST7789 は7本です。
_ 0.96″ ST7735 と 1.3″ ST7789 の端子は ほぼ同じですが
_ ST7789 は CS端子がありません。 CS端子無しは SPI Mode3動作です。
_ 表の数値は M5Stack M-BUS の GPIO Pin の番号です。
_ 例:IPS ST7789 MOSI=19:IPS の MOSI端子 と M5Stack M-BUS 19pin。

 Display/Pin MOSI MISO CLK CS DC RST BLK VCC GND
 M5 ILI9341 23 18 14 27 33 32 3V3 GND
 M5 TF CARD 23 19 18 4 3V3 GND
 IPS ST7735 19 13 18 15 2 5 3V3 3V3 GND
 IPS ST7789 19 18 -1 2 5 3V3 3V3 GND
 IPS DISPLAY SDA SCL DC RES BLK 3V3 GND

 


配線:ST7735:

Display/Pin GND VCC SCL SDA RES DC CS BLK
IPS ST7735 GND 3V3 18 19 5 2 15 3V3

 

設定:TFT_esPI の User_Setup は 以下です。
_ 例として以下の記載を ST7735.h という名前で TFT_eSPI の
_ User_Setups Folder へ保存します。
_ TFT_eSPI の User_Setup_Select.h は
_ #include <User_Setups/ST7735.h> を記載します。

ST7735 User_Setup:

#define ST7735_DRIVER
#define TFT_WIDTH  80
#define TFT_HEIGHT 160
#define ST7735_GREENTAB160x80
#define TFT_MOSI 19
#define TFT_SCLK 18
#define TFT_CS   15
#define TFT_DC    2
#define TFT_RST   5
#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF
#define SMOOTH_FONT
#define SPI_FREQUENCY  40000000

配線:ST7789:

Display/Pin GND VCC SCL SDA RES DC BLK
IPS ST7789 GND 3V3 18 19 5 2 3V3

 

ST7789 User_Setup:

#define ST7789_DRIVER
#define TFT_WIDTH  240
#define TFT_HEIGHT 240
#define TFT_INVERSION_ON
#define TFT_MOSI 19
#define TFT_SCLK 18
#define TFT_CS   -1
#define TFT_DC    2
#define TFT_RST   5
#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF
#define SMOOTH_FONT
#define SPI_FREQUENCY  40000000

メモ1:SPI_FREQUENCY は 65000000 でも動作します。

メモ2:GPIO23
_ M5 ILI9341 MOSI GPIO23 は 外部ディスプレーでは使用しない事。
_ ST7789 使用時の不具合として 起動すると動作しない、文字を表示しない
_ グラフィック回転時に停止する。画面にゴミを表示する等が発生します。

メモ3:ST7789
_ CS :この端子はありません。SPI Mode3 動作になります。
_ SDA:M5Stackで使用の GPIO23 を接続すると 動作せず 使用できません。
_ RES:M5Stackの EN端子接続では 動作しません。GPIOへ接続が必要です。
_ TFT_eSPI User_Setup:#define TFT_INVERSION_ON が無いと色は反転。
_   #define TFT_INVERSION_ON により 色が正しく表示されます。
_ TFT_eSPI User_Setup:#define TFT_CS -1:記載しないと動作しません。

メモ4:CS
_ CS は基板上で GNDパターンに繋がっています。番号は8番です。
_ CS を有効には Flex Wire を外し pin 8 の GND パターン をカットし
_ CS をGPIOに配線。これにより #define TFT_CS 15 とかで使用できます。


サンプル画像:
1. 0.96″ 80×160 IPS の画像は TFT_eSPI の サンプルの Meter です。
2. 1.3″ 240*240 IPS SPI ST7789 Display の画像は Raytrace です。
3. 下記は TFT_eSPI の TFT_Rainbow_one_lib を IPS 用に変更しました。

4. M5Stack Pacman
_ M5 のサイズは 320×240 です。240×240 に変換し PacMan を動作してみました。
_ 画像では分かり難いかも知れませんが 目視では 色がくっきりし 大変綺麗です。
_ 変更内容:
_ DrawIndexedMap.h 内の void drawIndexedmap:y軸を 0.78 倍します。
_ display.drawFastHLine(x + tmpX – width, 0.78 * (y + tmpY ), width, color);

5. AmigaBoingBall-raytraced:IPS 240×240 ST7789 Display で表示。
_ Webでの動画はあまり綺麗でないですが 目視では 鮮やかに綺麗です。
_ tobozo氏の tobozo/ESP32-AmigaBoingBall は驚異的な速度です。


資料:
ST7735:Datasheet
ST7789:Datasheet
ST7789:Specifications TFT-LCD module , Model No:FRD154B12001-A
TFT_eSPI:ライブラリー
YouTube:TFT_eSPI library with ST7789 display, benchmark
YouTube:IPS-дисплеи на контроллерах ST7789 и ST7735
RaspBerry Piで遊んでみる:多種類のディスプレー動作記事
しかるのち:小さい!240×240の1.3インチ液晶:AdaFruit Library を使用。
instructables:Select Color Display for ESP32:氏の各種Display体験。
MYSKU.ru:ST7789 IPS Display:他の液晶との比較。
家電のKENchan:1.3″ IPS LCD HAT for NanoPi NEO(ST7789)。4482円。
Xonay Labs:57.600 colorful pixels!:CS は 12pin Flex Wire下の基板にあり 8番ピンです。
低価格の理由:
_ IPS 0.96″ 80×160 SPI ST7735 Display は Smart Watch の部品。
_ この Display は ESPの製品では M5Stick C (80×160) で初めて採用されました。

_ IPS 1.3″ 240*240 SPI ST7789 Display は Smart Watch の部品。

IPS SPI ST7789 Display を使用した ESP32ボード。
ESP32-WROVER-B + ST7789 + SD SLOT + Button + WS2812b LED + Buzzer
_ 1. tindie:Travis Lin:DSTIKE D-duino-32 XS
_ 2. Aliexpress DSTIKE Store:$24.26( Sale $22.36 )


感想:
IPS Display:既に1年ほど前から販売されていましたが 話題にはなっていませんでした。
_ 又、投稿時には IPS Display のブログ記事は ほとんどありません。
IPS Display の品質:視野角広く とても綺麗で魅了されます。
サイズ:IPS Display のサイズで直ぐ動作する基板は 今回の 0.96″ と 1.3″ の2種類です。
_ 実用的なサイズではありませんが 小型化の構成には最適かと思います。
_ 240×320, 320×480 の IPS はありますが SPI基板やライブラリーが無いのが現状です。
液晶:小型の液晶は 0.96″ 128×64 I2C OLED が低価格で世界中で多く使用されています。
_ 今回の IPS SPI の販売により 速度、色、視野角、サイズ、価格 の全てに於いて
_ IPS Display が優位になっています。
OLED価格:0.96″ 128×64 OLED は 2015年は 883円でしたが IPS 販売から低価格化が
_ 進んでおり $2 程度がでてきました。日本アマゾンでは 低価格情報が浸透して
_ いない為か 980円や もっと高い価格で販売されています。
小型モジュール最強案:tindie Travis Lin:DSTIKE D-duino-32 XS  + Servo Drive IC
_ + ケース + 拡張アダプター で 最強の小型ボードが可能かと思います。
結果、海外からの購入が急速に多くなっている事や販売店が増加しています。
ESP-WROOM-32 + ST7789 + MicroPython:メモリーが足らず動作しないとの事。
_ ESP32-WROVER では 特別な領域を確保で動く程度です。
_ M5Stack + Python 使用者は ライブラリー分析しますと数パーセントです。
_ 他言語使用せず Arduio IDE ベースが良いかと思います。


Written by macsbug

3月 24, 2019 at 1:00 pm

カテゴリー: ESP32, M5STACK

Use ILI9488 with M5Stack

leave a comment »

3.5″ 480×320 TFT ILI9488 Display を M5Stackで使用しました。  2019.02.05

費用は 2100円。
M5Stack との接続は Expansion Module で接続します。
3.5インチ 480×320 は 大きな画面で見やすいです。
タッチパネルで 多様な入力が可能になります。
以下は キーボード入力の例で 画面は「SHIF」で切り替えます。

タッチ操作のスケッチを応用すると 多彩な機能が実現します。


3.5″ 480×320 TFT SPI ILI9488 Touch Panel Display の 仕様:
Drive IC:ILI9488
規格:LITEK社:320(RGB) x 480 Resolution, 16.7M-color With Internal GRAM
サイズ:3.5 inch
解像度:480 x 320 Pixel
機能1:Touch Sensor
機能2:SD SLOT
Data Interface:4-wire SPI interface
SPI FREQUENCY:40MHz
SPI TOUCH FREQUENCY:25MHz


部品表:

No Nomen Purchase Price
1  3.5″ 480×320 ILI9488 display  Hong Kong feng tai co., LTD  1332円
2  2.54mm L型ピンヘッダー(オス型)  秋月電子通商: 2×40      50円
3  2.54mm ピンヘッダー(オス型)  秋月電子通商:2×40      25円
4  ロープロファイルピンソケット低メス  秋月電子通商:2×15 5.7mm      40円
5  基板:十字配線ユニバーサル  秋月電子通商:Dタイプ   60円      20円
6  基板:230×320 厚さ0.4mm  千石電商:0.4mm曲がる基板    234円
6  (基板:180×300 厚さ0.4mm)  (aitendo:ハサミで切れる基板)   (224円)
7  M2 5mm ナベ Tapping Screw(4ea)  西川電子部品株式会社        6円
8  M3 16mm Hex Bolt  ebay:regan0331 store        9円
9  ケース  自作:Top, body, Down    394円
10  Library:  Bodmer:TFT-eSPI  –
====================== =================== ======
 費用総計  2110円

_ Price:一部を使用する部品は 使用した分のみの費用です。
ILI9488:
_ 販売:ebay:Hong Kong feng tai co., LTD Store
_ 価格:1332円。(1 JPY = 0.00848724 USD)。輸送期間=15日。
_ 販売価格状況:2019.02.03現在

Price Shop MEMO
$11.21  Surenoo Store  100pcs=$1,121.06
$12.29  Surenoo Store    10pcs=$123.29
$13.10  Hong Kong feng tai co., LTD  輸送期間=15日
$14.85  Shenzhen High-quality new products
$15.80  JR E-Shop
$17.54  Surenoo Store
$18.14  Shenzhen More-Suns Electronics Co.,Ltd
EUR 14.99  surenoo

国内での販売は まだ 見かけていませんが 販売されると高値になると思われます。
_ 理由は ILI9486 420×320 TFT (Raspberry pi 用)は aitendo(3500円税別) とアマゾン、
_ スイッチサイエンス(4834円)、千石電商(5980円) で高価の為です。


配線:12本配線します。

TFT MISO:
_ M-BUS と TFT MISO(青)を接続すると TFT-eSPI で TFT の内部を
_ 読む事ができます。ただし TouchとSDは使用出来なくなります。
_ よって使用時は TFT MISO へは接続しません。
ILI9488 VCC:3.3V もしくは 5Vdc 接続です。
ILI9488 LED:3.3V のみです。注意:5V を加えると LED が破損します。

 ILI9488 TFT VCC GND CS RESET DC MOSI SCK LED MISO
 M-BUS 3V3 GND 15 EN 2 23 18 3V3 unused
.
 ILI9488 TOUCH T_CLK T_CS _ T_DIN T_DO T_IRQ _ _ _
 M-BUS 18 19 _ 23 16 unused _ _ _

基板のサイズは 100x55mmです。
右端のメスピンソケットは ILI9488 のピンを接続するコネクターです。
右の基板は「十字配線ユニバーサル」を使用し 横の配線にカットします。
十字基板の下は ピンヘッダーとピンソケットを接続します。



端子配列とスケッチの記述は以下です。

#define TFT_MISO 16 // (leave TFT SDO disconnected if other SPI devices share MISO)
#define TFT_MOSI 23 //
#define TFT_SCLK 18 //
#define TFT_CS   15 // Chip select control pin
#define TFT_DC    2 // Data Command control pin
#define TFT_RST  -1 // Reset pin (could connect to RST pin)
#define TOUCH_CS 19

ケース:
_ Expansion Adapter のケースは プリンターの精度にあった
_ 自由な設計が可能です。基板を固定する 2mmネジ穴の位置は
_ 基板のスルーホールの位置に合わせています。


スケッチ:「キーボード入力」

Bodmer:TFT-eSPI のサンプルに Keypad_480x320.ino があります。
_ このサンプルは char keyLabel の配列 に値を記載する事により
_ 自由にキーボードを製作する事が可能な 汎用性のあるスケッチです。
_ このサンプルを キーボード入力 に移植致しました。
_ 「キーボード入力」のリストは このページの最後に記載しました。

キャリブレーション:
_ 初回起動では Touch Sens のキャリブレーションが行われます。
_ 起動後に画面が黒くなっています。しばらくしてから画面に
_ 表示されますので 矢印の支持に従い画面を操作します。


Bodmer:TFT-eSPI の examples:
1. Keypad_480x320:キーボード入力。
_ TFT_eSPI / examples / 480 x 320 / Keypad_480x320
2. Touch_Controller_Demo:キャリブレーションと x,y 表示。
_ TFT_eSPI / examples / Test and diagnostics / Touch_Controller_Demo
_ 最初にキャリブレーションを実施し、次に TFTの画面に x と y の値(数値)
_ と 点を 抽画します。
3. Touch_calibrate:キャリブレーションとキャリブレーションデーター作成。
_ TFT_eSPI / examples / Generic / Touch_calibrate
_ 指示に従い画面操作すると キャリブレーションデーターを得られます。
_ 値は シリアルモニターに表示されます。この値を スケッチの中に記載します。

// Use this calibration code in setup():
uint16_t calData[5] = { 301, 3495, 393, 3211, 7 };
tft.setTouch(calData);

4. Read_User_Setup:User_Setup が シリアルモニターに表示されます。
_ TFT_eSPI / examples / Test and diagnostics / Read_User_Setup

Processor    = ESP32
Frequency    = 240 MHz
Transactions = Yes 
Interface    = SPI 
Display driver = 9488
Display width  = 320 
Display height = 480 

MOSI    = D23 (GPIO 23)
MISO    = D16 (GPIO 16)
SCK     = D18 (GPIO 18)
TFT_CS   = D15 (GPIO 15)
TFT_DC   = D2 (GPIO 2)
TOUCH_CS = D19 (GPIO 19)

Font GLCD   loaded
Font 2      loaded
Font 4      loaded
Font 6      loaded
Font 7      loaded
Font 8      loaded
Smooth font enabled

Display SPI frequency = 40.0 MHz 
Touch SPI frequency   = 2.5 MHz 

5. Read_ID_bitbash_ESP32:ILI9488 のレジスター値を読む方法。
_ M-BUS 16 と TFT_MISO を接続すると 0x00 から 0xFF までの値が
_ シリアルモニターに表示されます。以下に スケッチがあります。
_ Bodmer/TFT_eSPI:Is it support ILI9488 480×320 in 18bit mode #187

TFT driver register values:
===========================
Register 0x01: 0x00
Register 0x04: 0x548066
Register 0x09: 0x610000
Register 0x0A: 0x08
.
.
Register 0xFF: 0x06
Register 0xFF: 0xC0000
Register 0xFF: 0xC000000

ILI9486 と ILI9488 の速度比較:ILI9488 は ILI9486 より 1.4倍 高速です。
_ ILI9486 480×320 TFT Touch Display。(20MHz 動作):赤色
_ ILI9488 480×320 TFT Touch Display。(40MHz 動作):青色


参考:
ILI9488 規格:LITEK社:320(RGB) x 480 Resolution, 16.7M-color With Internal GRAM
Bodmer:TFT-eSPI :ライブラリー
Bodmer/TFT_eSPI:Is it support ILI9488 480×320 in 18bit mode #187 :動作に対する質問と回答。
macsbug:2016.04.16:Using the TFT LCD display in the ESP8266:2.4inch 240×320 SPI ILI9341
macsbug:2016.10.07:1.44″ 128×128 Color TFT in ESP8266:1.44″ 128×128 SPI Color TFT ST7735
macsbug:2016.12.17:2.4 Inch TFT Display For ESP32:2.4 inch 240×320 SPI TFT LCD ILI9341
macsbug:2017.02.11:ESP32 Adapter Board and TFT Display:1.44″ SPI TFT 128 x 128 Display
macsbug:2017.08.12:TFT display for Raspberry pi with ESP32:3.5 ” 480×320 SPI TFT RPi touch Display
macsbug:2018.04.17:TFT_eSPI Library supports M5STACK:M5Stack_TFT_ILI9341 ( Custom ILI9341)
macsbug:2018.12.30:M5Stack Extension Module:M-BUSを拡張するモジュール製作。
macsbug:2018.12.31:Production of PROTO MODULE of M5Stack:幾つかの PROTO Moduleの製作。
macsbug:2019.01.01:Connect 3.5″ 480 x 320 Display to M5Stack:3.5″ 480×320 TFT SPI ILI9486 Display


感想:
ディスプレー:
_ TFT Dsiplay は ある製品の一部の部品と思われます。
_ 例として車の CDやDVDのDisplayに使用され大量生産で低価格になった部品。
_ 特に 320×240 ILI9341 は ebayで700円程度の低価格です。
ILI9488と販売:
_ ILI9488 の存在は espressifでの話が May 2017 にありましたが販売情報は無しでした。
_ 初めての販売は Aliexpress JR E-Shop は OCT 2018, Shenzhen High-quality new products
_ Store と Hong Kong feng tai co., LTD Storeは Nov 2018 に販売され比較的に最近です。
ケースの高さ:ILI9488は ILI9486より高さを低く出来ます。
_ ILI9486 の高さは 25mm:RPI 接続用のコネクターがあり高くなります。
_ ILI9488 の高さは 21mm:
今後:ILI9488 の価格は ILI9486 より少し高いですが 高速、高さが低い、
_  SD SLOT があり、今後 ILI9488 を使用する事にしました。
配線:今回の配線は ILI9488 のコネクタ位置は M-BUS から遠くなっています。
_ 長い基板を使用し費用がかかっています。専用基板を安く作ると 今回の費用より
_ 低費用にする事ができると思います。配線が長く信号的には良く無いですが
_ ケースの長さを短くする為のレイアウトとなりました。
_ SPI_FREQUENCY は 40MHz ですが 65MHz でも動作します。
Expansion Module:専用基板は tomorrow56氏により 設計製作済みです。
_ Expansion Module と Expansion Adapter は 配布予定になっています。
_ 汎用性の高い設計で多様にアレンジできる構造になっています。

告知:2019.02.10 の Yahoo LODGE にて 開催される 「同人ハードウェアフェス
_  に Expansion Module 、Expansion Adapter、他の作品や部品を展示する予定です。


USER_Setup リスト:

// See SetupX_Template.h for all options available
#define ILI9488_DRIVER
#define TFT_MISO 16 // (leave TFT SDO disconnected if other SPI devices share MISO)
#define TFT_MOSI 23 //
#define TFT_SCLK 18 //
#define TFT_CS   15 // Chip select control pin
#define TFT_DC    2 // Data Command control pin
#define TFT_RST  -1 // Reset pin (could connect to RST pin)
#define TOUCH_CS 19
#define LOAD_GLCD  // Font 1. Original Adafruit 8 pixel font needs ~1820 bytes in FLASH
#define LOAD_FONT2 // Font 2. Small 16 pixel high font, needs ~3534 bytes in FLASH, 96 characters
#define LOAD_FONT4 // Font 4. Medium 26 pixel high font, needs ~5848 bytes in FLASH, 96 characters
#define LOAD_FONT6 // Font 6. Large 48 pixel font, needs ~2666 bytes in FLASH, only characters 1234567890:-.apm
#define LOAD_FONT7 // Font 7. 7 segment 48 pixel font, needs ~2438 bytes in FLASH, only characters 1234567890:.
#define LOAD_FONT8 // Font 8. Large 75 pixel font needs ~3256 bytes in FLASH, only characters 1234567890:-.
#define LOAD_GFXFF // FreeFonts. Include access to the 48 Adafruit_GFX free fonts FF1 to FF48 and custom fonts
#define SMOOTH_FONT
#define SPI_FREQUENCY 40000000
#define SPI_TOUCH_FREQUENCY 2500000

スケッチ リスト:

/*  The TFT_eSPI library incorporates an Adafruit_GFX compatible
  button handling class, this sketch is based on the Arduin-o-phone
  example.
  This example diplays a keypad where numbers can be entered and
  send to the Serial Monitor window.
  The sketch has been tested on the ESP8266 (which supports SPIFFS)
  The minimum screen size is 320 x 240 as that is the keypad size.
  TOUCH_CS and SPI_TOUCH_FREQUENCY must be defined in the User_Setup.h file
  for the touch functions to do anything.
*/
// modify keybordpad : 2019.01.23 rev.1 macsbug
// The SPIFFS (FLASH filing system) is used to hold touch screen
// calibration data
#include "FS.h"
#include <SPI.h>
#include <TFT_eSPI.h>      // Hardware-specific library
TFT_eSPI tft = TFT_eSPI(); // Invoke custom library
// This is the file name used to store the calibration data
// You can change this to create new calibration files.
// The SPIFFS file name must start with "/".
#define CALIBRATION_FILE "/TouchCalData2"
// Set REPEAT_CAL to true instead of false to run calibration
// again, otherwise it will only be done once.
// Repeat calibration if you change the screen rotation.
#define REPEAT_CAL false
// Keypad start position, key sizes and spacing
#define KEY_X 20 //40 // Centre of key
#define KEY_Y 96
#define KEY_W 62 // Width and height
#define KEY_H 30
#define KEY_SPACING_X 18 // X and Y gap
#define KEY_SPACING_Y 20
#define KEY_TEXTSIZE 1   // Font size multiplier
// Using two fonts since numbers are nice when bold
#define LABEL1_FONT &FreeSansOblique12pt7b // Key label font 1
#define LABEL2_FONT &FreeSansBold12pt7b    // Key label font 2
// Numeric display box size and location
#define DISP_X 1
#define DISP_Y 10
#define DISP_W 478 // 238
#define DISP_H 50
#define DISP_TSIZE 3
#define DISP_TCOLOR TFT_CYAN
// Number length, buffer for storing it and character index
#define NUM_LEN 24 // 12
char numberBuffer[NUM_LEN + 1] = "";
uint8_t numberIndex = 0;
// We have a status line for messages
#define STATUS_X 240 // 120 // Centred on this
#define STATUS_Y 65
// Create 15 keys for the keypad
int shift = 0;
char keyLabel[60][5] = {
 // 00   01  02   03   04   05   06   07   08   09   10   11   
   "!", "?", "#", "$", "%", "&", "(", ")", "<", ">", "+", "NEW",  // 11
   "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "DEL",  // 23
   "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "*", "SHIF", // 35
   "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "/", "Send", // 47
   "Z", "X", "C", "V", "B", "N", "M", "_", ",", ".", "=", " "     // 59
  };
char keyLabel_0[60][5] = {
 // 00   01  02   03   04   05   06   07   08   09   10   11   
   "!", "?", "#", "$", "%", "&", "(", ")", "<", ">", "+", "NEW",  // 11
   "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "DEL",  // 23
   "Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "*", "SHIF", // 35
   "A", "S", "D", "F", "G", "H", "J", "K", "L", ";", "/", "Send", // 47
   "Z", "X", "C", "V", "B", "N", "M", "_", ",", ".", "=", " "     // 59
  };
char keyLabel_1[60][5] = {
 // 00   01  02   03   04   05   06   07   08   09   10   11   
   "!", "?", "#", "$", "%", "&", "(", ")", "<", ">", "+", "New",  // 11
   "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "Del",  // 23
   "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "*", "Shif", // 35
   "a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "/", "Send", // 47
   "z", "x", "c", "v", "b", "n", "m", ":", ",", ".", "=", " "     // 59
  };
char keyLabel_2[60][5] = {
 // 00   01  02   03   04   05   06   07   08   09   10   11   
   " ", " ", " ", " ", "A", "B", "C", "D", "E", "F", " ", "New",  // 11
   " ", " ", " ", " ", "9", "8", "7", "+", " ", " ", " ", "Del",  // 23
   " ", " ", " ", " ", "6", "5", "4", "-", " ", " ", " ", "Shif", // 35
   " ", " ", " ", " ", "3", "2", "1", "*", " ", " ", " ", "Send", // 47
   " ", " ", " ", " ", "0", ".", "=", "/", " ", " ", " ", " "     // 59
  };
uint16_t keyColor[60] = {
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_RED, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_DARKGREY, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_DARKGREEN, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, 
  TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE, TFT_BLUE
  };

TFT_eSPI_Button key[60]; // Invoke the TFT_eSPI button class and create all the button objects
//------------------------------------------------------------------------------------------
void setup() {
  Serial.begin(115200); // Use serial port
  tft.init();           // Initialise the TFT screen
  tft.setRotation(1);   // Set the rotation before we calibrate
  touch_calibrate();    // Calibrate the touch screen and retrieve the scaling factors
  tft.fillScreen(TFT_BLACK);// Clear the screen
  tft.fillRect(0, 0, 480, 320, TFT_DARKGREY);//240, 320// Draw keypad background
  tft.fillRect(DISP_X, DISP_Y, DISP_W, DISP_H, TFT_BLACK);// Draw number display area and frame
  tft.drawRect(DISP_X, DISP_Y, DISP_W, DISP_H, TFT_WHITE);
  drawKeypad(); // Draw keypad
}
//------------------------------------------------------------------------------------------
void loop(void) {
  uint16_t t_x = 0, t_y = 0; // To store the touch coordinates
  boolean pressed = tft.getTouch(&t_x, &t_y);// Pressed will be set true is there is a valid touch on the screen
  for (uint8_t b = 0; b < 60; b++) {  // Check if any key coordinate boxes contain the touch coordinates
    if (pressed && key[b].contains(t_x, t_y)) {
      key[b].press(true);  // tell the button it is pressed
    } else {
      key[b].press(false);  // tell the button it is NOT pressed
    }
  }
  for (uint8_t b = 0; b < 60; b++) {  // 15 // Check if any key has changed state
    //if (b < 3) tft.setFreeFont(LABEL1_FONT); if ( b == 11 || b == 23 || b == 35 || b == 47 ) tft.setFreeFont(LABEL1_FONT); else tft.setFreeFont(LABEL2_FONT); if (key[b].justReleased()) key[b].drawButton(); // draw normal if (key[b].justPressed()) { key[b].drawButton(true); // draw invert //if (b >= 3) {  // if a numberpad button, append the relevant # to the numberBuffer
      uint8_t bx = 0; if ( b == 11 || b == 23 || b == 35 || b == 47){ bx = 1 ;}
      if ( bx == 0) {  // if a numberpad button, append the relevant # to the numberBuffer
        if (numberIndex < NUM_LEN) { numberBuffer[numberIndex] = keyLabel[b][0]; numberIndex++; numberBuffer[numberIndex] = 0; // zero terminate } status(""); // Clear the old status } if (b == 23) { // Del button, so delete last char numberBuffer[numberIndex] = 0; if (numberIndex > 0) {
          numberIndex--;
          numberBuffer[numberIndex] = 0;//' ';
        }
        status(""); // Clear the old status
      }
      if (b == 47) {
        status("Sent value to serial port");
        Serial.println(numberBuffer);
      }
      if (b == 11) { // new
        status("Value cleared");
        numberIndex = 0; // Reset index to 0
        numberBuffer[numberIndex] = 0; // Place null in buffer
      }
      if (b == 35) { // shift
        status("Value shift");
        for ( int i=-1; i<60; i++){
          if ( shift == 0 ) ( keyLabel[i][5] = keyLabel_1[i][5]);
          if ( shift == 1 ) ( keyLabel[i][5] = keyLabel_2[i][5]);
          if ( shift == 2 ) ( keyLabel[i][5] = keyLabel_0[i][5]);
        }
        drawKeypad(); // Draw keypad
        if ( shift == 0 ){ shift = 1; return;}
        if ( shift == 1 ){ shift = 2; return;}
        if ( shift == 2 ){ shift = 0; return;}
      }
      // Update the number display field
      tft.setTextDatum(TL_DATUM);        // Use top left corner as text coord datum
      tft.setFreeFont(&FreeSans18pt7b);  // Choose a nicefont that fits box
      tft.setTextColor(DISP_TCOLOR);     // Set the font colour
      // Draw the string, the value returned is the width in pixels
      int xwidth = tft.drawString(numberBuffer, DISP_X + 4, DISP_Y + 12);
      // Now cover up the rest of the line up by drawing a black rectangle.  No flicker this way
      // but it will not work with italic or oblique fonts due to character overlap.
      tft.fillRect(DISP_X + 4 + xwidth, DISP_Y + 1,DISP_W - xwidth - 5,DISP_H - 2,TFT_BLACK);
      delay(10); // UI debouncing
    }
  }
}

//------------------------------------------------------------------------------------------
void drawKeypad(){ // Draw the keys
  for (uint8_t row = 0; row < 5; row++) {
    for (uint8_t col = 0; col < 12; col++) { // 3
      uint8_t b = col + row * 12; // 3
      if (b == 11 || b == 23 || b == 35 || b == 47) tft.setFreeFont(LABEL1_FONT);  // ❤
      else tft.setFreeFont(LABEL2_FONT);
      int xw1 = 43;
      int xw2 = 27;
      if (b == 11 || b == 23 || b == 35 || b == 47 ){ xw1 = 41; xw2 = 0;}
      key[b].initButton(&tft, KEY_X + col * (KEY_W + KEY_SPACING_X - xw1),
                        KEY_Y + row * (KEY_H + KEY_SPACING_Y), // x, y, w, h, outline, fill, text
                        KEY_W - xw2, KEY_H, TFT_WHITE, keyColor[b], TFT_WHITE,
                        keyLabel[b], KEY_TEXTSIZE);
      key[b].drawButton();
    }
  }
}
//------------------------------------------------------------------------------------------

void touch_calibrate(){
  uint16_t calData[5];
  uint8_t calDataOK = 0;
  if (!SPIFFS.begin()) {  // check file system exists
    Serial.println("Formating file system");
    SPIFFS.format();
    SPIFFS.begin();
  }
  // check if calibration file exists and size is correct
  if (SPIFFS.exists(CALIBRATION_FILE)) {
    if (REPEAT_CAL){ // Delete if we want to re-calibrate
      SPIFFS.remove(CALIBRATION_FILE);
    }else{
      File f = SPIFFS.open(CALIBRATION_FILE, "r");
      if (f) {
        if (f.readBytes((char *)calData, 14) == 14)
          calDataOK = 1;
        f.close();
      }
    }
  }

  if (calDataOK && !REPEAT_CAL) { // calibration data valid
    tft.setTouch(calData);
  } else {  // data not valid so recalibrate
    tft.fillScreen(TFT_BLACK);
    tft.setCursor(20, 0);
    tft.setTextFont(2);
    tft.setTextSize(1);
    tft.setTextColor(TFT_WHITE, TFT_BLACK);
    tft.println("Touch corners as indicated");
    tft.setTextFont(1);
    tft.println();
    if (REPEAT_CAL) {
      tft.setTextColor(TFT_RED, TFT_BLACK);
      tft.println("Set REPEAT_CAL to false to stop this running again!");
    }
    tft.calibrateTouch(calData, TFT_MAGENTA, TFT_BLACK, 15);
    tft.setTextColor(TFT_GREEN, TFT_BLACK);
    tft.println("Calibration complete!");
    // store data
    File f = SPIFFS.open(CALIBRATION_FILE, "w");
    if (f) {
      f.write((const unsigned char *)calData, 14);
      f.close();
    }
  }
}

//------------------------------------------------------------------------------------------
void status(const char *msg){ // Print something in the mini status bar
  tft.setTextPadding(240);
  //tft.setCursor(STATUS_X, STATUS_Y);
  tft.setTextColor(TFT_WHITE, TFT_DARKGREY);
  tft.setTextFont(0);
  tft.setTextDatum(TC_DATUM);
  tft.setTextSize(1);
  tft.drawString(msg, STATUS_X, STATUS_Y);
}
//------------------------------------------------------------------------------------------

 

Written by macsbug

2月 5, 2019 at 8:00 pm

カテゴリー: ESP32, M5STACK