macsbug

Just another WordPress.com site

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) は
_ 薄いテープを使用し固定具合が良いです。

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

3. 参考: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

設定:TFT_esPI の User_Setup は 以下です。
_ 例として以下の記載を ST7789.h という名前で TFT_eSPI の
_ User_Setups Folder へ保存します。
_ TFT_eSPI の User_Setup_Select.h は
_ #include <User_Setups/ST7789.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 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 使用時の不具合として 起動すると動作しない、文字を表示しない
_ グラフィック回転時に停止する。画面にゴミを表示する等が発生します。


サンプル画像:
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 用に変更しました。


資料:
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:他の液晶との比較。
低価格の理由:
_ 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 Display:既に1年ほど前から販売されていましたが 話題にはなっていませんでした。
_ 又、投稿時には IPS Display のブログ記事は ほとんどありません。
IPS Display の品質:視野角広く とても綺麗で魅了されます。
液晶の変遷:小型の液晶は 0.96″ 128×64 I2C OLED が低価格で世界中で多く使用されています。
_ ただし 今回の IPS SPI の販売により 速度、色、視野角、サイズ、価格 の全てに於いて
_ IPS Display が優位になっています。
価格の変化:0.96″ 128×64 OLED は 2015年は 883円でしたが IPS 販売から低価格化が
_ 進んでおり $2 程度がでてきました。
_ 日本アマゾンでは 低価格情報が浸透していない為か 980円や もっと高い
_ ぼったくり価格で販売されています。
サイズ:IPS Display のサイズで直ぐ動作する基板は 今回の 0.96″ と 1.3″ の2種類です。
_ 実用的なサイズではありませんが 小型化の構成には最適かと思います。
小型モジュール案:ケース + 1.3″ 240×240 IPS SPI ST7789 Display for Raspberry Pi
_ ESP32(MH-ET ESP32 Mini kit) + Servo Drive + SD Slot + Battery + 拡張アダプター
_ で 最強の小型作品が可能かと思います。
結果、海外からの購入が急速に多くなっている事や販売店が増加しています。


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 RESET DC MOSI SCK LED MISO
 M-BUS 3V3 GND 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

Connect 3.5″ 480 x 320 Display to M5Stack

leave a comment »

M5Stack に接続する 3.5″ 480×320 TFT Display を製作しました。 2019.01.01
.                                                                rev1 2019.01.04, rev2 2019.01.19
3.5″ 480×320 TFT Display Adapter (右)を製作し
M5Stack の  M5Stack Expansion Module へ 接続します。
費用は 2100円です。

3.5″ 480×320 TFT Display Adapter:
_ 1. 手の平に収まる 手頃な大きさ(105mm x 61mm x 23mm ) 。
_ 2. 3.5″ 480 x 320 で見やすく表現力が豊かになります。
_ 3. タッチセンスにより 入力が簡単で機能が多彩になります。
_   ハードスイッチ や BLEコントローラ等の入力装置が不要になります。


3.5″ 480×320 TFT SPI ILI9486 Display は Raspberry pi 用の Display です。
_ ( 他にESP32に接続出来る 3.5″ 480×320 TFT SPI は ILI9488 があります。)
仕様:
_ ドライバー:ILI9486。ライブラリー:TFT-espi
_ サイズ: 3.5 inch。8.5cm x 5.5cm x 1.7cm:M5Stack の 1.75 倍です。
_ タッチ: Touch Screen Controller XPT2046:タッチ操作が可能です。
使用可能ボード:注意
_  基板に「3.5 inch RPi LCD V3.0」又は「3.5inch RPi Display」
_  と書かれている製品が使用できます。 KeDei製は使用できません。


詳細:ブログ:TFT display for Raspberry pi with ESP32


スケルトン版:

M5Stack と 接続:


部品表:rev 1:2019.01.04

No Nomen Purchase Price
1  3.5″ 480×320 RPI display  ebay:good-module Store  1332円
2  2.54mm L型ピンヘッダー(オス型)  秋月電子通商:低オス 2×40      25円
3  2.54mm ピンヘッダー(オス型)  秋月電子通商:2×25      50円
4  0.3mm厚 ユニバーサル基板(95×72)  秋月電子通商:Bタイプ    200円
5  M2 5mm ナベ Tapping Screw(4ea)  秋葉原:西川電子部品株式会社        6円
6  ケース  自作:    480円
====================== =================== ======
費用総計  2093円

価格:1332円。1407円。1494円。(1 JPY = 0.00848724 USD)(0.0119888 CAD)
販売1:ebay:good-module Store:$15.97 CAD (2019.01.04):1332円
販売2:Aliexpress:Shenzhen High-quality new products Store:$11.95
販売3:ebay:sawadikayy Store:$12.68
販売4:ebay:gowin_electronic Store:$13.47:1518円:11日。2019.01.19
販売5:注意:国内は非常に高いです。 aitendo(3500円税別) 及び アマゾン。
_      スイッチサイエンス:4834円。千石電商:5980円。
_    最安値をお探し下さい。


3.5″ TFT Display Expansion Adapter の 製作:

回路図:TFT Display のみは7本を配線します。
_ TFT LCD:DC, MOSI, RST, SCK, CS を配線します。
_ Touch Panel:T_IRQ, T_MOSI, T_SO, T_SCK, T_CS を配線します。

部品:
_ 秋月電子通商 又は 千石電商の 2.54mm L型ピンヘッダー(オス型) 2×15
_ 2.54mm ピンヘッダー(オス型) 2×150.3mm厚ユニバーサル基板 を使用。


ケース:3D CAD
_ 2.54mm 15×2 30pin コネクター以降は 設計と製作が自由になります。
_ M5Stack のケースは 高精度のプリンターでしか製作できませんが
_ 通常の3Dプリンターで 製作が可能になります。

事例:ケースは 3つで構成され 出力時間は 3時間10分、材料費は480円です。

アダプターの設計と製作:
1. 基板:2.54mm 15×2 30ピンが使用できる基板。M5基板に制約されません。
2. ケース:通常のプリンターで製作可能。M5の凸部は不要です。
3. 部品:コネクターや基板は 国内の秋月で入手可能。M5の高い部品は不要。
4. スタック方式の解放:使用時に右か左に填めるだけで簡単に交換できます。
_ M5のスタックは 分解、填める、ネジ止めで 大きな手間になります。
_ スタックは小さく綺麗に出来ますが 何度も体験すると ワンタッチで出来る
_ 交換の手軽さの方が優先してきます。
_ アダプターを使用しない時は外して 机とかに保存できますので便利です。


完成品:
上:MH-ET LIVE ESP32 MiniKit + RPI display:105 x 61 x 16 mm 。
下:M5Stack + RPI display:105 x 61 x 24 mm 。


タッチセンス:キーボードイメージ
_ XPT2046 Touch Panel により キーボード等のデザインが可能です。


資料:
SPI_FREQUENCY:Raspberry pi SPI ILI9486 Display のSPI最大周波数は 20MHzです。
ILI9486:ILITEK ILI9486 Apprication Notes
Bodmer/TFT_eSPI:TFT ライブラリー。M5はこのライブラリーを使用。
loboris/ESP32_TFT_library:0x1abin and loboris Add support for M5Stack
espressif/ESP32 TFT display libraryESP32_TFT_library の話。
schreibfaul1/ESP32-TFT-Library-ILI9486:TFT ライブラリー
XPT2046:XPT2016 データーシート
PaulStoffregen/XPT2046_Touchscreen:タッチスクリーン ライブラリー
spapadim/XPT2046:タッチスクリーン ライブラリー
nopnop2002/タッチスクリーン(XPT2046)を使う
macsbug/TFT display for Raspberry pi with ESP32:ESP32とRPI Displayの接続。
macsbug/How to touch operation of the TFT LCD in ESP8266
ごじ:W2Base(ESP32+480×320LCD):カレンダー,時計,ニュース,センサー温湿度。
_ ごじ氏の作品は MFT2018で展示されました。完成度高く世界1です。
_ M5StackのM-BUSも装備。画像はTwitterより引用致しました。2019.01.19


感想:
配線:TFT は 7本のみの配線で簡単です。
大きな画面:
_ M5Stack の 2インチ 320×240 と比較すると 3.5″ 480×320 は
_ 大変見やすいです。
タッチスクリーン:
_ M5Stack は スイッチが A,B,C の3つのみです。
_ それ以上は 外部ハードに Joystick や Switch が必要になります。
_ スクリーンに多彩なキーボードやスイッチを設ける事により
_ 追加のハード・スイッチは不要となります。
ケース:
_ M5Stack 54x54mm の大きさは約30分で出力できます。
_ このサイズが 如何に経済的であるかを体験しています。
MH-ET LIVE ESP32 MiniKit + RPI display:
_ ESP32 を内蔵した装置です。
_ サイズ 105 x 61 x 16mm は 16mmの厚さがあるものの
_ 初代iPhoneの様な 手にフィットした感触が心地よいです。


次回予告:
3.5 inch 480×320 TFT SPI ILI9488 Display (SPI_FREQUENCY:最大40MHz)


Written by macsbug

1月 1, 2019 at 12:00 am

カテゴリー: M5STACK

Production of PROTO MODULE of M5Stack

leave a comment »

Production of PROTO MODULE of M5Stack         2018.12.31

以下、5つの センサー や モジュール を製作しました。

1. CJMCU-8128 CCS811+ SI7021+ BMP280 センサー
2. TEA5767 FM Stereo Radio
3. UDA1334A I2S DAC PROTO Module
4. AD9833 Signal Generator PROTO Module
5. VS1003/VS1053 PROTO Module


1. CJMCU-8128 CCS811+ SI7021+ BMP280 センサー。
🔴 CCS811 : 二酸化炭素、金属酸化物、揮発性有機化合物。
⭕ SI7021 : 温度、湿度。
⭕ BMP280 : 気圧。
価格:1756円。輸送期間:17日。販売:alice1101983 Store。
データーシート:CCS811Si7021BMP280
補足:どの家庭でも空気清浄機を使用している様に CCS811 の空気品質、
_ ガスセンサーは 最も感心のあるセンサーだと思います。自宅や職場
_ の二酸化炭素や空気品質等の環境がどうなっているか気になります。

 


2. TEA5767 FM Stereo Radio 。
_ 名称:76〜108MHz TEA5767 FM Stereo Radio (with Antenna) 。
_ Audio Jack の1つにアンテナを接続、もう1つにアンプかイヤホンを接続。
_ ESPとの接続は I2C Logic Level Converter (56円)で電圧変換します。
_ LIBRARY:simonmonk / arduino_TEA5767:周波数のみ操作が出来ます。
_ 価格:499円。販売:ebay:sunnylives Store。


3. UDA1334A I2S DAC PROTO Module:
_ UDA1334A は I2S DAC Audio Stereo Decoder です。
_ 仕様:I2S DAC Audio Stereo Decoder<
_ 価格:402円($3.42)。
_ 販売1:Aliexpress:YTF Technology。価格=402円($3.42)。輸送期間=未調査:
_ 販売2:Aliexpress:H-Duby Team。価格=555円($4.73)。輸送期間=6日:
_ SSでの基板は 1122円。アマゾンは1205円ですので 2個買えます。

 


4. AD9833 Signal Generator PROTO Module:
_ AD9833 は プログラマブル波形発生器 です。
_ 仕様:電圧: 2.3V-5.5V。周波数: 0-12.5Mhz。分解能:0.1Hz。
_    サイン波, 三角波, 方形波。
_ データーシート:AD9833
_ 価格 795円。販売:sensesmart Store。輸送期間=10日。
_ 参考:mgo-tec電子工作:ESP32で波形信号発生モジュールAD9833を制御して
_ サイン波を発生させてみる。

 


5. VS1003/VS1053 PROTO Module:
_ VS1003 は MP3 Module で Web Radio に使用できます。
_ ケースに収める為に VS1003基板の右上(3mmネジの所)を切ります。
_ 価格:560円($4.89)。
_ 販売:Aliexpress:STIME Electronics Technology Co., Ltd Store
_ 参考:robo8080氏とtobozo氏の会話

 


感想:
事前にモジュールやケースを用意しておくと製作を速くする事できます。
ケースは 常に多数準備しています。
M5Stack に使用できるセンサーやモジュールを事前に収集か注文します。
部品入手後にケースに組み上げます。


 

Written by macsbug

12月 30, 2018 at 8:10 pm

カテゴリー: M5STACK

M5Stack Extension Module

with 2 comments

M5Stack Extension Module と Adapterを製作しました。  2018.12.30
.                                                                                         rev1 :2019.02.07

M-BUS Expander module for M5Stack 記事の新版です。

Extension Module:費用:400円。
_ M5Stack の M-BUS 2×15 30pin を横に装備します。
_ これにより M-BUS を外部で自由に使用する事ができます。
_ 部品は国内の製品を使用し入手が容易です。

 


Extension Adapter:費用:400円。
_ M5Stack の M-BUS 2×15 30pin に装着する 外部のアダプターです。
_ 部品:M5Stack 同等又は 国内の部品が使用できます。
_ ケース:サイズは自由ですので 通常の 3D プリンターが使用できます。


Double Side Extension Module:400円。
_ Extension Module を左右の両サイドに装備します。
_ 外部アダプターを 左右のどちらに接続しても動作します。
_ Double Side Extension Module は 基板を製作する予定です。
追記:2019.02.07
_ Extension Module の基板が完成しました。ケース付きで配布の予定です。


部品表:Extension module

No Nomen Purchase Price
1  ピンヘッダ(male,H=7.7mm) 1個  秋月電子通商:低オス 2 x 40 , 1/2    25円
2  M2 5mm ナベTapping Screw 4個  秋葉原・西川電子部品株式会社     6円
3  ユニバーサル基板(tomorrow56)  自作:
. PROTO module of M5Stack Part 2
100円
4  M-BUS FLAME:H=8.3mm  自作:
. PROTO module of M5Stack Part 2
  70円
5  L型ピンソケット(メス型) 2×15 1個  秋月電子通商:2 x 15 ( 30P )   60円
6  PROTO REAR COVER  自作:   80円
7  M3 SCREW 2個   25円
===================== ====================== ======
 費用総計 366円

 

部品表:Extension Adapter

No Nomen Purchase Price
1  L型ピンヘッダー(オス型) 2×15 1個  秋月電子通商:2 x 40 ( 80P )(1/2)    50円
2  M2 5mm ナベTapping Screw 4個  秋葉原・西川電子部品株式会社      6円
3  ユニバーサル基板(tomorrow56)  自作:
. PROTO module of M5Stack Part 2
 100円
4  ケース:H=8.3mm  自作:
. PROTO module of M5Stack Part 2
   70円
5  ケース:REAR COVER  自作:    80円
6  M3 SCREW 4個    50円
===================== ====================== ======
 費用総計  356円

 

部品表:Double Side Extension module

No Nomen Purchase Price
1  ピンヘッダ(male,H=7.7mm) 1個  秋月電子通商:低オス 2 x 40 , 1/2    25円
2  M2 5mm ナベTapping Screw 4個  秋葉原・西川電子部品株式会社      6円
3  ユニバーサル基板(tomorrow56)  自作:
. PROTO module of M5Stack Part 2
 100円
4  M-BUS FLAME:H=8.3mm  自作:
. PROTO module of M5Stack Part 2
   70円
5  L型ピンソケット(メス型) 2×15 2個  秋月電子通商:2 x 15 ( 30P )  120円
6  PROTO REAR COVER  自作:    80円
7  M3 SCREW 2個    25円
7  ワイヤー
===================== ====================== ======
 費用総計  366円

Extension Adapter 製作例:

1. PUSH SWITCH。

2. JOYSTICK:JOYSICK の部品は ebay で80円です。

3. JOYSTICK
_ M5Stack の JOYSTICK UNIT を Extension Adapter に内蔵しました。
_ これにより GROVE のワイヤーが見えなくなり綺麗になります。
_ 使用しない時は Extension Adapter を抜くだけで済みます・

4. BREADBOARD:ブレッドボード。
_ 30x2pin BreadBoard を使用。
_ M5Stack の横で試作できます。使用しない時は外して保存出来ます。


Expansion Module と Adapter の効果:
外部接続のAdapterは M5Stackの専用基板や専用コネクター等の制約が無くなり
_ 基板とケースを自由に設計、製作でき、国内の部品が使用出来ます。
1. 基板:2.54mm 2×15 30ピンが使用できる基板。M5基板に制約されません。
2. ケース:通常のプリンターで製作可能。M5の凸部は不要です。
3. 部品:コネクターや基板は 国内の秋月で入手可能。M5の高い部品は不要。
4. スタック方式の解放:使用時に右か左に填めるだけで簡単に交換できます。
_ M5のスタックは 分解、はめる、ネジ止めで 手間です。
_ スタックは小さく綺麗に出来ますが 何度も体験すると ワンタッチで交換
_ できる手軽さの方が優先してきます


感想:
M5Stack の スタック方式は綺麗ですが何度も交換すると手間になってきました。
Extension module方式は 横に接続するだけで簡単に交換でき便利です。
アダプターを使用しない場合は 外して 机にしまうとかができ 簡単です。


 

Written by macsbug

12月 29, 2018 at 9:00 pm

カテゴリー: M5STACK

USB HOST Module for M5STACK

leave a comment »

M5Stack用 の USB HOST Module を製作しました。  2018.10.31
.                                                                            rev1 :11.18,  rev2:12.04

費用は ケースも含み 1000円です。

USB 端子へ マウス や キーボード、パソリ等の USB装置 を接続出来ます。
USBドングル を接続し 無線でプレステコントローラー等 を接続出来ます。


USB HOST 価格一覧表:

No Module 価格  ケース
1  ebay:Arduino USB Host Shield     755円 X
2  USB HOST Module for M5STACK (今回の記事)     960円
3  amazon:GAOHOU ミニUSBホストシールド   1080円 X
4  Arduino USB Host Shield (前回の記事)   1112円
5  aitendo:USBホストシールド [UHSLD3421]   1382円 X
6  amazon:GAOHOU Arduino USB ホスト シールド   1550円 X
7  M5Stack:USB HOST/HID ($18.50)   2197円
8  thousandiy:USB Host Shield for M5Stack   2980円 X
9  SWITCHSCINCE:USBホストシールド   3117円 X
10  thousandiy:USB Host Shield for M5Stack   4007円

ケース:X=ケース無し、◯=ケース有り。
7: rev 2 2018.12.04


部品表:USB HOST Module

No Nomen Purchase Price
1  Mini USB Host Shield  ebay:Mini USB Host Shield  $4.85 566円
2  USB Host Case h=8.3mm  自作:以下 USB Host  Case h8.3mm 361円
3  USB Connector  aitendo:USB Connector   33円
4  Pin Header ,1x12pin ,2pcs  Mini USB Host Shield に付属     0円
5  Library : USB_Host_Sheield_2.0  github:Oleg Mazurov:felis氏に感謝     0円
====================== ======================= ======
 費用総計 960円

ebay : worldchips Store 輸送期間:11日から17日です。
.
USB Host Case h8.3mm

No Nomen Purchase Price
1  ピンヘッダー(male, H=7.7mm)  秋月電子通商:低オス 2 x 40     25円
2  ピンヘッダー(female,H=5.25mm)  廣杉計器:FSM-42052-15     60円
3  ユニバーサル基板(tomorrow56)  自作:
.PROTO module of M5Stack Part 2
  200円
4  M2 5mmナベTapping Screw(4ea)  秋葉原:西川電子部品株式会社       6円
5  USB HOST CASE  自作:3D Printer    70円
====================== ======================= ======
費用総計   361円

Mini USB Host Shield:ebay や Aliexpress で最安値を探してください。例:$4.85
_ USB Host の IC は MAX3421E です。IC単体の価格は最安値で ($4.49)です。
_ 結果 基板で購入した方が安い事になります。

USB HOST CASE:
_ ケースは 70円で出来ます。
_ DDMでは 700円〜1400円と高価です。
_ DMMプリンター:0.7mm幅 以上でないと 規格外のデーターと言われます。
_ M5Stack PROTO の凸部:約0.76〜0.8mm の幅です。
_ 低価格のプリンター:精度が低く凸部は 製作出来ません。
_ 精度の高い 3D プリンターで製作して下さい。
_ 300万の 3D Printer で製作していますので精度や品質は高いです。
_ Yahoo LODGE や Amazon AWS Loft Tokyo 、秋葉原等でお会いした時に
_  70円 か 無料 でお渡し出来ます。


製作:

1. Mini USB Host Shield:改修は1カ所です。VBUS ラインのカット。
_ VBUS:接続する USB 装置へ 5VDC を供給します。M5 5V -> USB 。
_ カット( Cut ):基板の電源を VCC 3.3Vdc にします。
_ 重要: VBUS LINE(5V) の赤線を カット( Cut )します。
_ 注意:カット( Cut ) しない場合 M5 の 5V と 3.3V がショートします。
_ 3.3Vに5Vが加わる為 M5Stack を破損します。自己責任でお願い致します。

_ メモ:シルクの誤記情報:東京お気楽カメラ
_    CLK -> MOSI , MOSI -> CLK となっています。

2. 配線:配線は9本です。
_ 配線後は 必ずテスターで配線チェックを実施してください。
_ 特に 電源ラインは 重要です。

USB Host VBUS VCC GND  RST  INT  SS MOSI MISO CLK
M-BUS 5V 3V3 GND  EN 17  5 23 19 18

3. USB CONNECTOR :横タイプ。
_ USB HOST の USB Connector を外し 高さの低い USB Connector を配置。
_ USB HOST Board は ピンヘッダーで 高さを与え PROTO基板へ接続します。
_ USB Connector の配線4本は USB HOST Board へ直接配線します。

4. USB CONNECTOR :縦タイプ。
_ PROTO基板へ 穴を開け USB HOST Board を埋め込みます。
_ 理由:USB Connector は 高さがあり PROTO CASE(高さ 8.3mm) に収める為です。

5. 組み立て:
_ M5Stack + 2400mA Battery + USB HOST。


tousandiy氏による 販売中の M5Stack用 USB HOST:
_ thousandiy:USB Host Shield for M5Stack:2980円
_ 詳細な内容が書かれていますのでリンク先をお読み下さい。

自作と販売の違いについて:
_ 自作は 今回の様に 1000円以内と低費用で出来ますが ハードの製作が出来ない
_ 方や 多くの方へ提供する為の販売は 設計費、実装費、梱包費、印刷費、
_ 運送費、販売手数料、交通費、交渉費 等々 がかかります。
_ 1000円あったら電子工作の thousandiy 氏をご支援下さい。


Arduino USB Host Shield ( 1112円 ):
_ ブログ:M-BUS Expander module for M5Stack で記載した
_ Arduino USB Host Shield (755円 C$8.83)をそのまま使用する手もあります。


ケース考察:
_ アマチュア用の低価格で精度の低いプリンターは 凸部を製作する事はできません。
_ 凸部が無いとケースを固定する事ができません。
_ 幾人かの方がトライしていますが 精度が低い為に出来ていない物が多いです。
_ 出来る方法は DDM等の有料のプリンターですが 高価格 になり意味がありません。


_ 対策その1:出力する前に プリンター精度を調べます。
_  凸部の幅 0.76mm が出力可能かCADで幾つかの幅のサンプル
_  (0.5〜2.0mm 幅まで 0.1mm づつの凸部を製作) を製作します。
_  それを出力し凸部ができているか確認する必要があります。
_  凸部以外の問題として 内側の出力に隙間が出来る場合があります。

_ 対策その2:私が使用したプリンターは約300万の機材です。
_  このプロ用のプリンターの場合は 製作が可能です。さらに 70円で出来ます。

_ 有料プリント:
_  thousandiy:USB Host Shield for M5Stack:2980円の場合
_  DMMでのケース価格は 1027円で 総額 4007円と高額になります。
_  この記事での製作費用は 70円ですから 約15個分 又は 15倍の価格です。

_ CADデーター:
_  公開されているデーターの形式は STL が多くソースではありません。
_  使用プリンター名やプリンターの設定値が表示されていない物が多いです。
_  問題点:組み上げた部品データーがある 基のレベルに戻せません。
_   その為に 使用するプリンター用に編集する事ができません。
_   出来る事は STL に追加か削除程度しかできません。
_   公開の場合は 編集可能な DWG や DXF 形式でお願いしたいです。


参考:
東京お気楽カメラ:Pro Microにmini USB Hostシールドを付けてUSBキーボードを接続する
_ 概要、詳細、シルクの誤記、実用。
Circuits@Home:USB Host Shield Hardware Manual:開発元
_ この原作者を基にコピーされた物がSS等でUSB HOST SHEELDが販売されている。
Teensy with mini USB host shield (chines):mini USB host の話。
USB Host Shield Library:USB HOSTの 詳細、分析、実際。
ミニ USB ホストシールド:ht-deko氏の 分析、改修、実際。
robo8080:M5Stackとmini USB Hostシールドの接続]。
ライブラリ:felis/USB_Host_Shield_2.0


感想:
robo8080氏が M5Stack で 初めて mini USB HOST を使用し低価格で動作させました。
初回のトライをありがとうございました。

USB HOST:USB装置を接続する事により多彩なインターフェースが可能です。
_ アップルのUSBマウスやプレステ・コントローラーも接続出来て便利です。

価格:USB HOST の IC MAX3421E は 単体では 価格が高いです。
_  Arduino の資産である 既成の基板を使用した方が低価格で出来ます。
_  M5Stack へ応用できるボードは この例が多いです。

ケース:
M5Stack の PROTO ケースの高さは 6.5mmです。
_ USB CONNECTOR は 高さがあり配置する事ができません。
_ 対策は ケースの厚みを 8.3mm にします。
_ これにより USB部の厚みは 2.0mm と薄くなります。


Written by macsbug

10月 31, 2018 at 3:00 pm

カテゴリー: M5STACK

ETERNAL STRIKER M5

leave a comment »

ETERNAL_STRIKER_M5                        2018.10.25

TEAM_REDHERRING 氏が M5Stack用ゲーム
ETERNAL_STRIKER_M5 BINARY 2018/10/23」を公開しました。
TEAM_REDHERRING 氏に 感謝致します!!

TEAM_REDHERRING 氏の解説から:
_ ガラケー前期、Doja2.1-3.0、あるいはMIDP時代に作った作品
_ [ ETERNAL STRIKER Rr ]の移植作です。
_ [ M5Stack-SD-Menu ] system にも対応し SD から起動も出来ます。


説明 及び ダウンロードは以下です。
ETERNAL_STRIKER_M5 BINARY 2018/10/23
ETERNAL_STRIKER_M5_2018_10_23a-1.zip:DLされるFile。
ファイルの構成:
_ ETERNAL_STRIKER_M5_APP0.bin:コンパイルした bin ファイルです。
_ ETERNAL_STRIKER_M5.bat
_ ETERNAL_STRIKER_M5.bin:SD 用のバイナリーデーター。
_ ETERNAL_STRIKER_M5.txt:説明やノウハウが書かれています。

[ETERNAL_STRIKER_M5_APL0.bin]:ターミナル用のバイナリーデーターです。
マック:
_ デスクトップに e フォルダーを作り 入れておきます。
_ ターミナルで以下を入力します。
_ esptool.py -p /dev/tty.SLAB_USBtoUART -b 115200 write_flash 0x10000 ~/Desktop/e/ETERNAL_STRIKER_M5_APP0.bin
_ で書込み出来ます。
_ 0x10000番地から ETERNAL_STRIKER_M5_APP0.bin (1.3MB) が書き込まれます。

参照:ブログ:Miku Miku Dansing for M5Stack:M5Stack へ バイナリを書き込む


[ETERNAL_STRIKER_M5.bat] :SD 用のバイナリーデーターです。
_ micro SD から ETERNAL_STRIKER_M5 を起動する事ができます。
_ この SD用バイナリーも用意されて頂き 大変便利に使用しています。
_ この方法は 多くの方が助かります。

M5Stackとbin(バイナリ):
_ M5Stack-SD-Updater の 使用方法は 以下を参考にしてください。
マック:
M5Stack-SD-Updater:M5Stack-SD-Updater の使用方法。
Miku Miku Dansing for M5Stack:Miku Miku Dansing の bin で アップする方法。
NES GAME with M5STACK:SuperMario4.nes をインストールする方法。

窓:端末にデータを送る『esptool.exe』は、
『C:\Users\ユーザー名\AppData\Local\Arduino15\packages\esp32\tools\esptool\2.3.1』


感想:
素晴らしいです!!
TEAM_REDHERRING 氏に 感謝の限りです。
ありがとうございました。

TEAM_REDHERRING 氏は この作品の前に テトリス改造版(メモ)を製作しています。
この件に関する注意や問題点の指摘をありがとうございました。

画像の綺麗さや 動きの滑らかさ 背景全体をスクロールしながら 個別の画像を
動かしている テクニックに驚いています。解像度やスイッチの条件に合わせ
表示や操作方法を練っている所にも感心しています。
どうしたら ここまでできるのか 私のレベルでは 解りませんが 最高の到達点を
見ると 可能性を感じ 少しでもこういうレベルに近づきたいと思う次第です。


Written by macsbug

10月 25, 2018 at 1:27 am

カテゴリー: M5STACK