macsbug

Just another WordPress.com site

GPS CLOCK with M5STACK

leave a comment »

M5STACK と GPS Module で GPS時計 を作りました                                       2017.12.26


日時、時刻を アナログ と デジタル で表示し 切り替えは3つの ボタンで選択します。

動作:
GPS 情報   : 左のボタンを押し 受信すると 右上の丸が 赤から緑。数値は白から緑。
アナログ時計:中央ボタンを押し 受信すると 右上の丸が 赤から緑になります。
デジタル時計: 右ボタンを押し 受信すると 右上の丸が 赤から緑。数値は白から緑。


準備:

No  Nomen  Link、説明   Price
1  M5STACK BASIC  M5Stack Store ( $33.25 )  3767円
2  M5STACK GPS Module (NEO-M8N−0-10)  M5Stack Store ( $37.91 )  4295円
3  M5STACK Battery Module  M5Stack Store ( $15.11 )  1712円
4  28dBi Gain GPS Antenna  importjewelrylover($2.52)   322円
 —————————————-  ————————-   ——
5  M5STACK ライブラリー  GitHub:M5STACK
6  Free_Fonts:M5STACKライブラリーの中にある。  .inoフォルダの中へ入れる
7  TineGPS++ ライブラリー  TinyGPS++
8  jpg 画像:55×55 pixels程度。(apple mark)  SD に入れる。

.


GPS Module:価格は高いですが 初めてですので 純正品を使用しました。

GPS Module:付属品:1.5mm ケーブル Battery Module
GPS Antenna

.
_ GPS Module のカバーが無く 綺麗でないです。そこで 部品が入っていた
_ 小さな透明なケースがあり サイズがピッタリでしたので 被せました。
.


.
GPS Module:GPSのチップは NEO-M8N-0-10 が使用されています。
配線:M5STACK と GPS Module ( NEO-M8N-0-10 )
_ ESP32 UART2 GPIO-16 ( U2RXD ) — GPS TXD ( NEO-M8N-0-10 ) 。
_ ハードウエアーシリアルの設定:例:HardwareSerial ss(2); 



追記:2018.01.13
小型の GPS アンテナ を取り付けました。ケースの中に入り綺麗に仕上がります。
_ ケース内部に取り付ける事が可能で、受信は正常に受ける事ができました。
_ 小型ですので感覚的に受信感度が少ないかなとも思いましたが最初の
_ 受信時間も数分間で同じでした。
_ 名称:GPS Module with Active Ceramic Antenna IPEX Interface 1575MHz
_ 販売:ebay:chip_partner:価格:$2.30 ( 256円 ):輸送期間 = 26日。
_ サイズ:20mm x 6mm x 6mm:ワイヤーの長さ:20mm
_ ケースの中の高さは 6.4mm ですので入ります。


感想:
M5STACK の利点 (強み) は サンプルやライブラリーの充実にあります。
単独で使用するか 今回の様に 合体して多くの機能を直ぐ作る事ができます。
特に 表示操作では SD内のjpg 画像 を DISPLAY へ表示する命令があります。
例: M5.Lcd.drawJpgFile(SD, “/apple_marks/apple_50.jpg”);
_  SD の中にある apple_50.jpg を LCD へ DRAW します。
_  M5STACK のライブラリーは 強力な開発環境です。 


疑問と課題 ( Questions and tasks ):
_ ESP32 M5STACK と 画像のバイト配列:
_ これまで画像をスケッチ内に保存するには xx.c という バイト配列のデーター
_ に変換し 変数名で使用していました。
_ M5STACK は バイト配列を表示すると 色づれ があり使用できません。
_ 色が反転している訳でも無いです。TFT Display と Display library は 何か細工
_ されている様に思えてしまいます。
_ 対策は SD から jpg を読み込む事ですが バイト配列も使用したい。
_ それと 画像データーを変数名で扱うには どうしたら良いのか解らず課題です。


.
スケッチ:GPS CLOCK with M5STACK : 2017.12.26 : macsbug
M5STACK Library にある「GPS/FullExample」と「Display/TFT_Clock」を
合体し作成しました。表示は GPS受信 と 日時、時刻を アナログとデジタル。
切り替えは A,B,C ボタンで選択します。
「time_set」は 場所に応じて設定します。日本の場合は JST に合わせます。
アナログ時計の左上は 55×55ピクセル程度の jpg画像を SD に入れて起きます。
SD に画像が無い場合は 何も表示せず動作します。

// GPS CLOCK WITH M5STACK : 2017.12.26 : macsbug
#include <M5Stack.h>
#include "Free_Fonts.h"
#include <TinyGPS++.h>
TinyGPSPlus gps;
HardwareSerial gs(2);           // ESP32 UART2 GPIO-16 ( RXD2 ) --- GPS TXD
//=========================================================================
int time_set = 9;       // Set to the time of your country. : JST = +9 hour
float    sx = 0,sy = 1,mx = 1,my = 0,hx = -1,hy = 0;
float    sdeg=0, mdeg=0, hdeg=0;
uint16_t osx=120,osy=120,omx=120,omy=120,ohx=120,ohy=120;
uint16_t x0=0, x1=0, yy0=0, yy1=0;
uint32_t targetTime = 0;                   // for next 1 second timeout
static uint8_t conv2d(const char* p);
uint8_t  hh=conv2d(__TIME__);              // Get H, M, S from compile time
uint8_t  mm=conv2d(__TIME__+3), ss=conv2d(__TIME__+6);
boolean  initial = 1;
static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
unsigned long distanceKmToLondon = (unsigned long)
         TinyGPSPlus::distanceBetween(
         gps.location.lat(),gps.location.lng(),LONDON_LAT,LONDON_LON)/1000;
double   courseToLondon = TinyGPSPlus::courseTo(
         gps.location.lat(),gps.location.lng(),LONDON_LAT,LONDON_LON);
const char *cardinalToLondon = TinyGPSPlus::cardinal(courseToLondon);
int      ym, dm, dd;                      // year,month,day
String   ym_, dm_, dd_, hh_, mm_, ss_;    // year,month,day,hour,min,sec
char     f1, f2, f3, b1, b2, b3;          // digital:year,month,day buffer
String   L1[11]={"0000/00/00","00:00:00","000.00" // old gps,time,date,,
            ,"000.00","000.00","000.00","000.00"
            ,"000.00","000.00","000.00"};
String   L2[11]={"0000/00/00","00:00:00","000.00" // new gps,time,date,,
            ,"000.00","000.00","000.00","000.00"
            ,"000.00","000.00","000.00"};
String   mode_ = "gps";                   // gps,digital,analog
//=========================================================================
void setup(){
  Serial.begin(115200);
  M5.begin();
  gs.begin(9600);                   //static const uint32_t GPSBaud = 9600;
  M5.Lcd.fillScreen(BLACK);                                // DISPLAY CLEAR
  pinMode(BUTTON_A_PIN, INPUT_PULLUP);                     // Set A button
  pinMode(BUTTON_B_PIN, INPUT_PULLUP);                     // Set B button
  pinMode(BUTTON_C_PIN, INPUT_PULLUP);                     // Set C button
}
//=========================================================================
void loop(){ 
  if ( M5.BtnA.wasPressed()){ mode_ = "gps"    ; gps_setup()    ;}
  if ( M5.BtnB.wasPressed()){ mode_ = "analog" ; analog_setup() ;}
  if ( M5.BtnC.wasPressed()){ mode_ = "digital"; digital_setup();}
   
  // gps mode -------------------------------------------------------------
if ( mode_ == "gps" ){                                     // GPS MODE
  if ( initial == 1 ){ gps_setup();}                       // INITIAL SET
  time_date_read();                                        // READ DATA 

  L2[0] = String(gps.date.year()) + "/" + dm_ + "/" + dd_; // DATE
  L2[1] = hh_ + ":" + mm_ + ":" + ss_;                     // TIME
  L2[2] = String(gps.location.lat(),6);                    // LAT
  L2[3] = String(gps.location.lng(),6);                    // LNG
  L2[4] = String(gps.speed.kmph())          + " km/sec";   // SPEED
  L2[5] = String(gps.speed.mps())           + " m/sec";    // SPEED
  L2[6] = String(gps.speed.value())         + " Raw deg";  // CRS
  L2[7] = String(gps.course.deg())          + " deg";      // CRS
  L2[8] = String(gps.altitude.kilometers()) + " km";       // ALT
  L2[9] = String(gps.altitude.meters())     + " m";        // ALT

  M5.Lcd.setFreeFont(FM12); 
  for ( int i = 0; i < 11; i++ ){                          // DISPLAY
    M5.Lcd.setTextColor(BLACK, BLACK);
    M5.Lcd.drawString( L1[i], 100, 0 + ( 24 * i ));        // ERASE
    M5.Lcd.setTextColor( WHITE, BLACK);
    if (gps.location.lat() > 0){ M5.Lcd.setTextColor(GREEN,BLACK);} // RX
    M5.Lcd.drawString( L2[i], 100, 0 + ( 24 * i ));        // DRAW
    L1[i] = L2[i];                                         // SAVE
  } 

  smartDelay(1000);
 }
 
// analog mode  -----------------------------------------------------------
 if ( mode_ == "analog" ){                                 // ANALOG MODE
  time_date_read();                                        // READ DATA  
  sdeg = ss*6;                     // 0-59 -> 0-354   Pre-compute
  mdeg = mm*6+sdeg*0.01666667;     // 0-59 -> 0-360 - includes seconds
  hdeg = hh*30+mdeg*0.0833333;     // 0-11 -> 0-360 - inc min and seconds
  hx = cos((hdeg-90)*0.0174532925); hy = sin((hdeg-90)*0.0174532925);
  mx = cos((mdeg-90)*0.0174532925); my = sin((mdeg-90)*0.0174532925);
  sx = cos((sdeg-90)*0.0174532925); sy = sin((sdeg-90)*0.0174532925);

  M5.Lcd.drawLine(ohx, ohy, 160, 121, TFT_BLACK);          // ERASE HOUR
  M5.Lcd.drawLine(omx, omy, 160, 121, TFT_BLACK);          // ERASE MIN
  M5.Lcd.drawLine(osx, osy, 160, 121, TFT_BLACK);          // ERASE SEC
  ohx = hx*62+161; ohy = hy*62+121;                        // NEW   HOUR
  omx = mx*84+160; omy = my*84+121;                        // NEW   MIN
  osx = sx*90+161; osy = sy*90+121;                        // NEW   MIN
  M5.Lcd.drawLine(ohx, ohy, 160, 121, TFT_WHITE);          // DRAW  HOUR
  M5.Lcd.drawLine(omx, omy, 160, 121, TFT_WHITE);          // DRAW  MIN 
  M5.Lcd.drawLine(osx, osy, 160, 121, TFT_RED  );          // DRAW  SEC
  M5.Lcd.fillCircle(160, 121, 3, TFT_RED);                 // DOT   CENTER
  smartDelay(1000); 
 }
 
// digital mode  ----------------------------------------------------------
 if ( mode_ == "digital" ){                                // DIGITAL MODE
  time_date_read();                                        // READ DATA                   
  L2[0] = String(gps.date.year()) + "/" + dm_ + "/" + dd_; // OLD DATA
  L2[1] = hh_ + ":" + mm_ + ":" + ss_;                     // NEW DATA
  
  M5.Lcd.setFreeFont(FMB24);                               // FONT
  for ( int i = 0; i < 2; i++ ){                           // DISPLAY
    M5.Lcd.setTextColor(TFT_BLACK, TFT_BLACK);             // BLACK
    M5.Lcd.drawString(L1[i], 20, 60 + ( 80 * i ));         // ERASE
    M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);             // WHITE
    if (gps.location.lat() > 0){M5.Lcd.setTextColor(GREEN,BLACK);} // RX
    M5.Lcd.drawString(L2[i], 20, 60 + ( 80 * i ));         // DRAW
    L1[i] = L2[i];                                         // SAVE
  }
 smartDelay(1000); 
 }
 M5.update();
}                                                          // END OF MAIN
//=========================================================================
static void smartDelay(unsigned long ms){
  unsigned long start = millis();
  do{ while (gs.available())
      gps.encode(gs.read());
  } while (millis() - start < ms);
  if (millis() > 5000 && gps.charsProcessed() < 10){none_gps();}
}
//=========================================================================
static uint8_t conv2d(const char* p){
  uint8_t v = 0;
  if ('0' <= *p && *p <= '9'){v = *p - '0';}
  return 10 * v + *++p - '0';
}
//=========================================================================
void gps_setup(){                                          // GPS  SETUP
  M5.Lcd.fillScreen(TFT_BLACK);                            // CLEAR DISPLAY
  M5.Lcd.setFreeFont(FM12);                                // FONT
  M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);               // GPS  TITLE
  String L[11] = {"DATE","TIME","LAT","LNG","SPEED"        // GPS  TITLE
                    ,"SPEED","CRS","CRS","ALT","ALT"};     // GPS  TITLE
  for ( int i = 0; i < 11; i++ ){
    M5.Lcd.setCursor (     5, 0 + ( 24 * i ));
    M5.Lcd.drawString(L[i],5, 0 + ( 24 * i ));             // DRAW TITLE
  } 
  initial = 0;
}
//=========================================================================
void analog_setup(){                                       // ANALOG SETUP
  M5.Lcd.fillScreen(TFT_BLACK);                            // CLEAR DISPLAY
  M5.Lcd.setTextColor(TFT_WHITE, TFT_BLACK);
  M5.Lcd.fillCircle( 160, 120, 118, TFT_GREEN);            // CLOCK FACE
  M5.Lcd.fillCircle( 160, 120, 110, TFT_BLACK);            // LOCK FACE
  for(int i = 0; i<360; i+= 30) {                          // 12 LINES
    sx = cos((i-90)*0.0174532925);
    sy = sin((i-90)*0.0174532925);
    x0 = sx*114 + 160; yy0 = sy*114 + 120;
    x1 = sx*100 + 160; yy1 = sy*100 + 120;
    M5.Lcd.drawLine(x0, yy0, x1, yy1, TFT_GREEN);          // DRAW 12 LINES
  }
  for(int i = 0; i<360; i+= 6) {                           // 60 DOTS
    sx = cos((i-90)*0.0174532925);
    sy = sin((i-90)*0.0174532925);
    x0 = sx*102 + 160; yy0 = sy*102 + 120;
    M5.Lcd.drawPixel(x0, yy0, TFT_WHITE);                  // MINUTE
    if(i== 0 || i==180)M5.Lcd.fillCircle(x0,yy0,2,WHITE);  // DOTS
    if(i==90 || i==270)M5.Lcd.fillCircle(x0,yy0,2,WHITE);  // DOTS
  }
  M5.Lcd.fillCircle(160, 121, 3, TFT_RED);                 // DOTS CENTER
  M5.Lcd.drawJpgFile(SD, "/apple_marks/apple_50.jpg");     // apple ICON
  targetTime = millis() + 1000; 
}
//=========================================================================
void digital_setup(){
  M5.Lcd.fillScreen(TFT_BLACK); return;
}
//=========================================================================
void time_date_read(){                           // READ YY.MM.DD, HH,MM,SS
  if (gps.location.lat() > 0){ M5.Lcd.fillCircle(315,5,5,GREEN);} // Rx
  if (gps.location.lat() < 1){ M5.Lcd.fillCircle(315,5,5,RED  );} // not Rx
  ym = gps.date.year();  ym_ = String(ym);
  dm = gps.date.month(); dm_ = String(dm); if (dm < 10){ dm_="0"+dm_;}
  dd = gps.date.day();   dd_ = String(dd); if (dd < 10){ dd_="0"+dd_;}
  ss = gps.time.second();ss_ = String(ss); if (ss < 10){ ss_="0"+ss_;}
  mm = gps.time.minute();mm_ = String(mm); if (mm < 10){ mm_="0"+mm_;}
  hh = gps.time.hour();
  if ( hh < 15 ){ hh = hh + time_set;}     goto t;         // JST ***
  if ( hh > 14 ){ hh = hh - time_set - 6;} goto t;         // JST ***
t:hh_ = String(hh); if (hh < 10){ hh_ = "0" + hh_;}        // ADD ZERO
}
//=========================================================================
void none_gps(){                                           // NONE GPS
  M5.Lcd.setFreeFont(FMB24);                               // FONT
  M5.Lcd.setTextColor(RED, BLACK);
  M5.Lcd.drawString("No GPS data received:", 20, 50);      // MESSAGE
  M5.Lcd.drawString("check wiring", 20, 130);              // MESSAGE
}
//=========================================================================


広告

Written by macsbug

12月 26, 2017 at 2:37 pm

カテゴリー: ESP32

New Modules by Espressif Systems 2017.12

leave a comment »

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

2017年12月4日 に Espressif Systems から News があり 新しいモジュールには
TELEC が印字されています。

New Modules by Espressif Systems:Dec 4, 2017。
ESP32-based:ESP-WROOM-32D、ESP32-WROOM-32U。
ESP8266EX-based:ESP-WROOM-02D、ESP-WROOM-02U。


U.FLコネクタ内蔵やRF性能の最適化を実施。 詳細は以下を参照ください。

詳細:New Modules by Espressif Systems

資料:ESP-WROOM-32D/ESP32-WROOM-32U Datasheet:Nov 28,2017

資料:ESP-WROOM-02D/ESP-WROOM-02U Datasheet :2017

資料:ESP8266 System Description


.
FCC ID Database:ここには ESPRESSIF SYSTEMS の FCC Wireless Applications
「FCC ID applications by 2AC7Z」があります。その中は以下の物があります。
ESP32PICOKIT, ESP32PICOKIT, ESPWROOM02D, ESP32WROVER,
ESP32WROVER, ESPWROOMS2, ESPWROOM02, ESPWROOM32,
ESPWROOM32, ESP32, ESPWROOM02, ESP8266EX

ESPRESSIF SYSTEMS (SHANGHAI) PTE LTD FCC Wireless Applications


.
ESP-WROOM-02D :FCC ID 2AC7Z-ESPWROOM02D
_ Espressif Systems による 4つの新しいモジュールは ESP-WROOM-32D、
_ ESP32-WROOM-32U、ESP-WROOM-02D、ESP-WROOM-02U があります。
_ 現在、発売は まだですが、詳細は「FCC ID 2AC7Z-ESPWROOM02D」に
_ ESP-WROOM-02D の User manual, Test setup,Test report, RF Exposure,
_  Internal photos, Label, External photos, Cover letter が書かれています。

資料:ESP-WROOM-02D User Guide ver 1.0


Module Teardown Internal Photos


.
総務省 と ESP-WROOM-32 TELEC の記載について:
_ H28.12.30付けで「総務省」のページに記載されています。
_ 技術基準適合証明等の公示(平成28年度分)一番下の
_ 「(11)Bay Area Compliance Laboratories Corp」の
_ 「115 平成28年12月16日~平成28年12月31日 」。
_ 下から4行目に「ESP-WROOM-32」「211-161007」が書かれています。


.
感想:
Espressif Systems 2017 の計画は ESP-WROOM-32 でした。
今回の改修バージョン と ESP32-PICO-D4 で 2018年に繋がるものかと想像します。

販売されている ESP32-PICO-D4:$20.21
Aliexpress:Lily GO:TTGO T7 ESP32 Module PICO-D4 4MB SPI Flash


Written by macsbug

12月 20, 2017 at 10:31 am

カテゴリー: ESP32

M5STACK TELEC information

leave a comment »

M5STACK TELEC 情報:                 2017.12.14

M5STACK (12/13) によると FCC / CE / MIC(総務省) 認定を取得したとの事です。
JAPAN MIC CERTIFICATE OF TYPE APPROVAL:
TELEC 番号は 211-171004 です。

 

 


感想:ESP32ボード。
これで M5STACK は 最強の ESP32 ボードとなりました。

1. 美しいケース、オールインワンで 多用途に直ぐ使用でき 高機能。
_ 「M5STACK」:3945 円 ( $35.00 )。SALE = 3437 円 ( $30.45 ) 。

2. 低価格で直ぐ使用でき、小型で組み込み安いボード。
_ 「MH-ET LIVE ESP32 MINI KIT」:901 円 ( $7.98 )。


Written by macsbug

12月 14, 2017 at 6:38 pm

カテゴリー: ESP32

M5STACK work collection

leave a comment »

M5STACK の 作品事例集。                     2017.11.04

作品からイメージが湧くかと思います。

画像は M5STACK Twitter から
使用致しました。謝辞。

 

M5STACK work collection

M5Stack-nesemu

instructable

NEO-6M-0-001 with PPS

ケース デザイン:


.
M5STACK Taobao 販売品:
_ M5STACK の販売は AliexpressTaobao があります。
_ M5Stack LORA 433MHz, M5Stack GPS, M5Stack SIM800L GPRS GSM。


.
M5STACK store 販売状況:2017.11.03 現在。
_ M5STACK BASIC=100台 ( 日本=16 )
_ M5STACK GRAY = 42台 ( 日本= 7 )


.
M5STACK 生産風景とM5Stack の psram:2017.10.27

   

.
ピン配置:Peripheral Devices & GPIO

M-BUS:M5STACK GitHub からリンク。


.
M5Stack の ライブラリー と サンプル。
_ M5Stack に 多数のサンプルがあり 随時追加されています。
_ 


.
参考:
YouTube:Playing Super Mario on M5Stack !
YouTube:M5_1
YouTube:M5Stack KS1
YouTube:M5STACK GPS Viewer googlemap
YouTube:M5 – What if the Arduino with a case
YouTube:Unboxing M5Stack ESP32 CORE – code.isaranu.com
instructable:Kids_Box:IOS, Android と接続し WS2812 RGB LED を操作。
instructable:Commercial Product Quickly:ホテルのパスワードパネル。


.
感想:
作品事例から学ぶ:
_ M5STACK は オールインワンの機能があります。
_ 追加のハードにより 画像に見られる 実用的な作品があり 参考になります。
_ 素晴らしい スタック を期待しています。
M5Stack の サンプル:
_ 購入時にデモが搭載されています。サンプルを試されると良いかと思います。

 

Written by macsbug

11月 4, 2017 at 11:46 am

カテゴリー: ESP32

Arduino Library List

with 2 comments

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

Arduino, ESP8266, ESP32 の 1147 のライブラリー とサンプルが集約されています。
リストの作成者は イギリス・ロンドン在住の Nicholas Humfre氏 です。

例として スイス・チューリッヒ在住 Daniel Eichhorn氏 の
ESP8266 + Display を使用した Mini Grafx Library があります。
その中には E-Paper, ILI9341 TFT Display のライブラリーとサンプルがあります。


.
リンク:
Arduino Library List:ライブラリー とサンプル。
List of Aurduino Library Authors:著者のリスト。
njh/arduino-libraries
njh github
njh twitter:


.
M5STACK  には ライブラリーと 多数のサンプルがあります。


.
感想:
謝辞:ライブラリー作成者とNicholas Humfre氏に感謝致します。
どういう風に作るか:
_ 1. センサーIC と「動作している自作例」を調べます。
_  画像やビデオだけの物はパス。
_ 2. スケッチがあるかを調べる。Arduino IDE で開発できる物だけにします。
_ 3. 価格を調べます。おおよそ部品代が1000円以内。高額な物は作りません。
_ 4. IC の規格を調べます。
_ 5. 回路図を調べる。回路図が無い物は回路図を作ります。
_ 6. 電源・バッテリーとケースの案を練ります。
_ 7. 部品をオーダーします。
_ 8. スケッチを考えます。

Written by macsbug

11月 2, 2017 at 10:34 am

カテゴリー: Arduino, ESP32, ESP8266

M5STACK

with 4 comments

M5STACKは オールインワンで迅速な製品開発キットです。             2017.09.15
_ ORG:2017.09.15。Rev.1:2017.09.20。Rev.2:2017.10.02。Rev.3:2017.10.24

価格は $36.10  3977円。
構成は ESP32 without TELEC + TFT Display + Speaker + I2C Connector
+ Micro SD SLOT + Push Switch + I/O Port + Li-ion Battery
+ 密閉型スタッカブル・デザイン。
大きさは 54 x 54 x 17mm で手の平に入るサイズで 重さは 24g 。

注意!!:2017.09.20 追記。
Aliexpress HwaYeh Store は 9/20 に $38.00 から $88.00 になりました。
Aliexpress Fruit Pi  Store は 9/20 に $38.00 から $88.00 になりました。
高価格では 購入する商品価値 や 紹介する価値 はありません。
注意!!:2017.10.02 追記。
_ 2017.10.02  $58.00 になる。しかし まだ $20 高い。

追記:2017.10.24:$35.00
2017.10.23 に 公式M5STACK Store の販売店が開始しました。
_ $41.00:M5STACK GRAY(with MPU9250)
_ $35.00:M5STACK BASIC
_ $2.5  :M5STACK PROTO Board

追記:2017.11.03
M5STACK BASIC($35), M5STACK GRAY($41) は M5Stack Store 以外に
Fruit Pi Store, HwaYeh Store の2社から販売になりました。


.
M5STACKチーム:
_ M5STACK は KICSTARTER にて ESP8266 で登場。その後 ESP32 で
_ リニューアルする事になります。
_ 2017年3月28日中国上海:M5STACKチームは ESPRESSIFにて ESP32
_ を使用した製品の契約を締結しました。

M5STACKチームの目標:
_ 誰もが簡単に使用できる迅速な製品開発の為のオールインワン
_ ソリューションを提供。プロトタイプの複雑さを取り除き、実用的
_ で使い安い、さまざまなプロジェクトを実現することができます。
_ 製品の見栄えは 綺麗でプロフェッショナルです。


.
CORE Manual:CORE DEVELOPMENT KIT V1.0


.
仕様:
_ ESP32 without TELEC:WiFi/BLE
_  M5 BUS シールの下は 金属ケースで記載はありません。
_ Display:2 inch 320 x 240 Color TFT LCD:FW-TFT020:ILI9341
_ Serial:SLAB CP2104
_ I2C Connector:GROVE I2C ( PH2.0-4 )
_ Audio Amp:NS4148
_ Speaker:8Ω  1W
_ TF Card Reader:Micro SD SLOT
_ M5 BUS:30pin,  2.54mm Low Female 2×15 Connector
_ External Connector:PORT, BUS PORT, I/O PORT
_ Battery Socket:Li-ion Battery
_ Power Switch:RESET & ON/OFF:1回押すとON。2回押すとOFF。
_ Push Switch:A, B, C
_ Battery Inside:150mAh
_ Attachment:Magnet
_ WEIGHT:24g
_ SIZE:54x54x17mm
_ Hardware pinout:GitHub M5STACK


.
構成:


Front BOTTOM Board:M5 BUS Rear BOTTOM Board:Li-ion Battery
inside of the Rear cover:Magnet x 4ea Outside of the Rear cover:Port Index

 

TFT Card Reader,  Bus Port  Sticker,  BUS Port
 Power Switch, USB C, I2C, I/O Port Speaker,  I/O Port

 

Rear of MainBoard,  Speaker Rear of  TFT LCD

 

 M5STACK KIT:ケースの中味。 Proto Board ( $3.50 ):別途購入の事。

Proto Board:
_ Aliexpress:Fruit Pi Store。$3.50。 輸送期間=9日。2017.09.18 追記。


.
購入:費用 $36.10 で 3977円。以下のケースで来ます。
_ 付属品:CORE DEVELOPMENT KIT 説明書、QUick Start ガイド、シール、
_     20cm 10pin male to female Connector Cable, USB TYPE C ?
_ 以下の製品が公式な物であるかは 不明です。

購入
Aliexpress
HwaYeh Store
$36.10
3977円
SALE !
————————–
Aliexpress
Fruit Pi Store
$38.00
4174円
輸送期間=8日。
最初の販売ストアー。
————————–
github:m5stack

Thanks to M5STACK TEAM

追記:2017.10.24
公式の M5STACK Store の販売店が開始し $35.00 です。


.
起動:
_ 起動時に M5STACKの画像 と マック似の 起動音。
_ Graphics Test の後は WiFi Scan ,TFT CARD の Test を表示します。
_ A Button を押すと Analog 入力の値が表示されます。


.
参考:
M5STACK:CORE DEVELOPMENT KIT:M5STACK 本家です。
Kickstarter:M5Stack: Stackable Arduino with Compact Aluminum Shell.
_ (Canceled):ESP8266 版はキャンセルになりました。内容は必見です。
iCrowdNewswire:M5Stack: World’s First Open-Source R&D Modular Toolkit.
_ KickStarter に於ける M5STACK の詳細。
Facebook:M5STACK:M5STACK の多くの情報が見れます。
YouTube :M5_1:M5STACK の案内。
GitHub:M5STACK。Hardware pinout が書かれています。
YouTube :M5Stack KS1:M5STACK の案内と実例。
YouTube :[TECH] – M5Stack Live YouTube Subscriber Display:実例。
YouTube :M5 – What if the Arduino with a case:作品の紹介。
YouTube :[TECH] – M5Stack Garage Door Opener:ドアーオープン。
ESPRESSIF:M5Stack to be Relaunched with ESP32:ESPRESSIFの案内。
hackaday:M5Stack – An Open Source Enclosed Modular Toolkit:実例。
twitter:M5STACK:ツイッター情報。
instructables:M5 module and the keypad:ホテルのパスワードパネル。
the INTERNET of THINGS with ESP32:ESP32の最大のまとめサイト:
_ ここでは Aliexpress の M5STACK が公式の製品か書かれていません。
_ 2017.09.15 現在、Under development(開発中)と書かれています。
HACKADAY.IO:M5Stack – An Open Source Enclosed Modular Toolkit
_       Arduinio MEGA32U4 による記事。

追記:2017.10.24
10月12日到着:ESP32 2 inch LCD 1W SPEAKER。偽物。
_ 価格:2262円 ( $20.00 )。TAT=15日。M5STACK のメインボード。
_ Case, USB C Connector, Battery Cable, I2C Connector cable,
_ Antenna Connector Cable, Tape 付き。
_ STORE:FACE-TO-FACE Electronic
_ Seatechnolgy Store($22.63), FACE-TO-FACE Electronic($22.73),
_ LILY GO($22.26)。M5STACK は未だに $58 と高価格 。
_ 10月13日:Store は 1社増えて3社になる)。
追記:2017.10.29:
_ 10月28日頃に この製品は 上記3社の販売店から無くなりました。

M5STACK の 現状:2017.10.18
_ Aliexpress 3つの再販業者で $58と高価格に変更し4台売れたのみ。
_ この高価格は海外でも注視されている様です。
_ M5STACK twitter 情報(10月17日):M5STACK 大量生産。
_ nanik氏:現在の価格は高すぎる。$35 – $45 の手頃な価格。
_ M5STACK:基本的なキットの価格は $18.9 で一部の再販業者はAliexpressで
_  高い価格に設定している。数日たてば それらをクリーンします。
_ twitter:情報もと。
_ M5STACK:情報もと。


応用事例:

 


.
動作メモ:2017.09.21 追記。
1. PMU は ESP32 を統合。
2. ESP32は常に物理的に電源が供給されディープスリープモードて 5μA 消費。
3. 他の部品の電流消費は不明。
4. 速いグラフィック表示のライブラリーは M5Stack.h でなく TFT_eSPI がある。
5. 電源:PMUの組み込み関数。
_    1回押すとESP32がリセット。2回押すと電源がオフになる。
_    PMUはMCUの電源を直接遮断します。
_    ソフトウェア制御:esp_deep_sleep_start()


.
感想:
M5STACK の概要をまとめ、スケッチ等の開発環境のレポートは除きます。

_ 価格:$38.00 で 4174円。輸送期間 は 8日と迅速な輸送の業者です。
_  高いですが 作る事を考えると安いです。 良い製品は 10個位購入
_  しますが 4万台になり かなりな額です。そうなると買えません。
_  その後、$36.10  3977円 の業者がでてきました。

_ 回路とレイアウト:実に練りに練った設計で素晴らしい内容です。
_  実装面でも工夫があり感心致します。特にケースへのボードの
_  組み込みは、巧妙に出来ています。ボードはケースにギリギリで
_  外す時は難解です。最小サイズにする為に コネクターのサイズや
_  部品配置の工夫があります。M5STACKチームに敬服し、作り方
_  の勉強になりました。

_ 固定:本体の裏側に磁石が埋め込まれています。磁石で金属に
_  固定が可能です。冷蔵庫では 振動で落ちない程度の強さです。

_ 接続コネクター:M5STACK のメインの 15 x 2 30pin は 拡張に便利
_  です。拡張ボード(Proto Board) は 販売されています。
_  さらに4隅にある 8pin x 2 , 15pin x 2 コネクターは 自由に接続
_  ができ 拡張性と柔軟性に富んでいます。

_ USB Cable:USB TYPE C を使用します。購入先の画面には 付属品
_  として ありますが 到着した物には入っていませんでした。
_  そこで 百均にある USB TYPE C を購入しました。

_ 機動音:「ジャ〜ン」と言うマックの機動音に似た音に感心。

_ オールインワン:多彩な機能は 多様でプロフェッショナルで綺麗な
_  作品が迅速に出来る利点があります。ただし費用がかかります。
_  低価格で出来る ESP32 Mini Kit で作る物と 分ける事かと思います。

_ 不明な点:
_  TFT LCD:2 inch 320 x 240 ですが 具体的に何処の製品か不明です。
_   M5STACK ESP8266版では LoRa という情報があります。
_   Driver IC は Library の Display.cpp に ILI9341 の記述があります。
_   Adafruit ILI9341 Breakout and Shield に準じている様です。
_  ESP32:金属板を取り除いて中を確認はしていません。

_ ESP32 without TELEC:仕様や用途に応じた範疇で使用します。
_  幾つかの方法があります。
_  WiFi を使用せず 省エネも含め スケッチで WiFi を OFF にする。
_  WiFi OFFで センサーとディスプレーで多くの事ができます。
_  メイン基板の ESP32 を ESP-WROOM-32 に交換する。
_  Proto Board に ESP-WROOM-32 を搭載する。
_  ESP32 without TELEC でなく ESP-WROOM-32 のボードを作る。
_  等々、いろいろアイデアがあると思います。

_ 気になる点:ディスプレーの左端の表示が ケースの枠で 半文字程見えない。
_  使用時はスケッチでの工夫が必要です。
_  小型化の為に こういうギリギリの事がでてきますね。

_ 価格高沸:2017.09.20 追記。追加購入かと思いきや、とんでもない事が。
_   Aliexpress HwaYeh Store は $38.00 から $88.00 と +$50 高くなりました。
_   Aliexpress Fruit Pi  Store は 一時在庫無し表示でしたが 夜に表示され
_   +$50 された価格になりました。この高価格では高過ぎて商品価値は
_   ありません。追加購入はやめて 他の低価格商品を目指します。
_  販売実績メモ:合計 54個。2017.09.20現在。
_   HwaYeh Store:12人 23個。Fruit Pi Store:19人 31個。
_   内 TH の S***n.T. は HwaYeh Store と Fruit Pi Store 共に 10個購入。
_   M5STACK Community:Where is m5stack available for purchase?
_    で話がでています。

追記:2017.10.24
公式の M5STACK Store ができ、結果、初期の販売店 及び ボードのみの販売店も
_ 偽物である事が判明しました。
_ 尚、without TELEC ですから 送信せずに 表示器として使用したいと思います。


Written by macsbug

9月 15, 2017 at 12:00 pm

カテゴリー: ESP32

1.54 inch e-Paper Display with ESP32

with 13 comments

1.54″ e-Paper 200×200 SPI display を ESP8266, ESP32で動かしました。 2017.09.07

費用:
_ e-Paper + WeMos D1 mini :1831円
_ e-Paper + ESP32 Minikit  :2351円
_ e-Paper 単体は 1572円です。


.
仕様:

  • Operating voltage: 3.3V
  • Interface: 3-wire SPI, 4-wire SPI
  • Outline dimension: 48 × 33mm
  • Display size: 27.6 × 27.6mm
  • Dot pitch: 0.138 × 0.138
  • Resolution: 200 × 200
  • Display color: black, white
  • Grey level: 2
  • Refresh power: 26.4mW(typ.)
  • Standby power: <0.17mW
  • Viewing angle: >170

.
準備:費用 e-Paper + D1 Mini = 1831円。e-Paper + ESP32 Minikit = 2351円。

No  Nomen  Link   Price
 1  Waveshare 1.54 inch e-Paper
XH2.54 20cm 8Pin Cable
 WS Development Tool Store
($14.39)
 1572円
 2  ESP32 Minikit  All goods are free… ($7.13)   779円
 2  WEMOS D1 Mini Lite  WEMOS CC Store ($3.66)   400円
 2  WEMOS D1 Mini  MH-ET Store ($2.38)   259円
 2  WEMOS D1 Mini Pro  ElectronicFans ($4.60)   503円
 ———————————-  ———————————–   ——
 3  e-Paper ライブラリー  ZinggJM:GxEPD
 3  Image ソフト(Windows)  GOOD DISPLAY:Image2LCD

_ e_Paper について:
_  購入先:Aliexpress。
_  輸送期間:WS Development Tool Store は 12日で届きました。
_       その後の追加注文では 6日で届きました。
_  この e_Paper は Waveshare Electronics (微雪子) の製品です。

_  付属品:2.54mm コネクター・ワイヤー 20cm。
_   白いコネクターは e-Paper 基板のコネクターに接続。
_   黒いコネクターはブレッドボードワイヤーのメス側と同じです。
_   ESP側がオスピンならば そのまま挿して使用できます。


.
配線:以下8本を配線します。コネクターの接触に注意してください。
_ 基板裏BS端子は 「0」の位置で「4-wire SPI」を使用します。

e-Paper ESP8266
D1 mini
ESP32
Minikit
BUSY (Busy status output) D2 4
RST (External reset) D4 16
DC (Data/Command sel) D3 17
CS ( SPI chip selection) D8 5
CLK (SPI SCK) D5 18
DIN (SPI MOSI) D7 23
GND GND GND
VCC 3.3V 3.3V

 


.
ライブラリー:
_ ZinggJM:GxEPD をダウンロードしライブラリーに入れます。
_ Waveshare 1.54inch e-Paper display class は 「GxGDEP015OC1」です。
_ サンプル(exsample) は 8個あります。
_ 設定:スケッチの e-Paper display は 「GxGDEP015OC1」を使用します。
_ 以下、1行の変更のみで動作します。

 #include <GxGDEP015OC1/GxGDEP015OC1.cpp>; 

_ Arduino IDE ボード設定:以下の設定で書き込め 動作します。
_ ESP8266 ( WeMos D1 mini ) : “WeMos D1 R2 & mini”
_ ESP32  ( ESP32 MiniKit ) : “WEMOS LOLIN32”

SPI設定メモ:
_ ESP8266:
_  GxIO_Class io(SPI, SS, D3, D4); // SS=CS=D8, DC, RST
_  GxEPD_Class display(io);

_ ESP32:
_  GxIO_Class io(SPI, SS, 17, 16); // SS=CS=5, DC, RST
_  GxEPD_Class display(io, 16, 4);


.
画像処理:Image2LCD:画像を xxx.h に変換します。
_ Windows アプリです。マックは Wine Emulator で動作します。
_ xxx.h は スケッチのファイルの中に入れて使用します。
_ GxEPD のサンプルを参照すると解りやすいです。


.
サンプル(exsample):

 


.
参考:
Waveshare:1.54inch e-Paper Module:e-Paper WiKi。
Waveshare:1.54inch e-Paper Datasheet:e-Paper データーシート。
YouTube:Waveshare 1.54inch e-paper:Waveshare Electronics の説明。
YouTube:Tech Note 055 Using ePaper SPI Displays with an ESP32/ESP8266
_    ESP8266/ESP32 による 4.2 inch と 2.13 inch e-Paper の使用方法。
YouTube:Tech Note 056 ESP32 ePaper Serial UART Display with Weather Display Code
_    ESP8266/ESP32 による 4.3 inch e-Papre の使用方法。
YouTube:ESP8266 7.4inch Weather display:7.4″ E ink display と ESP8266。
YouTube:Images and Text on the Waveshare 1.54inch e-Paper Display
_    David Watts氏:WeMos D1 mini による自作例。2017.09.20 追記。
_    配線、スケッチは同じ内容です。
_    Image2LCD による Image作成方法が説明されています。
Arduino Forum:Good Dispay ePaper for Arduino:e-paper と Arduino。
Arduino Forum:Waveshare e-paper displays with SPI:Waveshare と ESP8266。
instructables:E-paper Display With Arduino/ESP8266:4.3″ とArduino/ESP8266

shinkansen55 さんからのレポート:追記 2017.10.07
_ 動作までの手順と流れを 以下に示します。shinkansen55 さん ありがとうございます。
– ardunio-IDEを使う。
– GxEPDをlibrariesへコピー。
– adafruite-gfx-libraryをlibrariesへコピー。
– ボードとしては、ESP32 Dev boardを選択する。
– SPIのexample を使う。


.
メモ:スケッチ や 他の情報の誤記。
_ スケッチ誤記:
_   // mapping from Waveshare 2.9inch e-Paper to Wemos D1 mini
_ 誤 // BUSY -> D6
_ 正 // BUSY -> D2:ZinggJM / GxEPD には「BUSY -> D2」と書かれている。

_ Arduino Forum の ESP32配線画像:Waveshare e-paper displays with SPI
_ 画像は見難いですが ESP32の配線と スケッチの端子は一致していません。
_ 正しい配線は 「配線:ESP32 MiniKit」の表に示した 番号です。


.
感想:
1. 謝辞:e-Paper ライブラリー「GxEPD」の製作者 ZinggJM氏に感謝致します。
_    他に G6EJD氏による「epd」。
_    squix78:Daniel Elichhorn氏の「EPD2」ライブラリーがあります。
_    sabas1080 / LibraryEPD
2. e-Paper の Display は 基板にしっかりと固定されており安心です。
3. 反射光によるコントラストと表示は 見やすく素晴らしいです。
_ 紙の様な表示に うっとりします。
4. 電源なしでも 表示している所が なんともいい感じです。
5. 画面消去に時間がかかりますので 高速表示には不向きです。
6. 画面に表示された QRコードは iPad で読めました。
7. 他の e-Paper を使用する場合は 「GxEPD」の使用条件を把握してください。
8. 日本国内の販売:投稿時に 日本アマゾンを除き e-Paper は 販売されていません。
_ Aliexpress は 1572円 で購入できますが ebay は 少々高い価格になっています。
_ 国内販売時は かなり高くなると思います。日本アマゾンでの Waveshare では
_ 1.54inch 200×200 が なんと 16049円という超高価格(10倍)で販売されています。
_ 日本アマゾンでの Waveshare は 他の製品も驚く程の高いボッタクリ価格です。
9. 大きなサイズ: 4.2 inch 400×300 を使用したいのですが $27.89 ( 2996円 )
_ と少々高いです。4.3 inch 800×600 は $53.00 ( 5745円 ) です。
_ 


Written by macsbug

9月 7, 2017 at 4:25 am

カテゴリー: ESP32, ESP8266