macsbug

Just another WordPress.com site

Archive for the ‘ESP32’ Category

ESP-WROOM-32 and ESP32 Adapter Board

leave a comment »

ESP32 Adapter Board 作りを まとめ ました。            2017.02.25

ESP-WROOM-32 + ESP32 Adapter Board の費用は 729円。

左:低メスピン・タイプ。 右:ピンソケット・タイプ。


.
USB 電源 + USB FTDI + AUTO PROG を含めると 1360円。
拡張ボードは 140円。


.
事例:FLAPPY BIRD GAME (左) と LEDC Software Fade (右)
小型で 作り安く コネクター を ブレッドボード風 にも使用可能です。
簡単な部品やモジュールならブレッドボードは不要です。

左:8ピンソケット(秋月:1個30円)  と1.44 ” 128×128 TFT(ebay:448円) を接続。
右:LED アレー (ebay:111円) を コネクターに直指し可能。


.
アダプターボードの問題点と解決策:
_ 問題点 :USB 電源、USB FTDI、AUTO PROG 機能が無く不便です。
_ 解決策1:WeMos D1 mini Pro を使用し3つの問題点を解決します。
_  価格が高くなりますが USB 電源、USB FTDI、AUTO PROG 機能が可能です。
_ 解決策2:USB FTDI のピンを コネクター右上に接続します。
_  ESP32 Adapter Board のピン配置は  3.3V、TXD、RXD、GND で
_  USB Serial 変換ボードを 直接接続できます。下記参照:USB FTDI 接続方法。


.
準備:ピンソケット・タイプ:1360円。

No  Nomen  Link  Price(円)  Memo
1 ESP-WROOM-32  マイクロテクニカ 590  5900円/10個
2 ESP32 Adapter Board  Aliexpress 39  $2.16/5ea
3 WeMos D1 mini Pro **  ebay 631  EUR 5.29
4 ピンソケット メス 2×10 20P, 2個  秋月電子通商 100  50円/1個

** Aliexpress WeoMos Electronic から 10個購入では 580円。$5+$1.76/1ea
.
準備:低メスピン・タイプ:

No  Nomen  Link  Price(円)  Memo
 5 ダブルピンソケット低メス2×13, 2個  秋月電子通商 160  80円/1個

.


.
ESP-WROOM-32 組み立て。

放熱パターン
中央に穴を空ける
ESP32 放熱パターンの
予備ハンダ。
位置と大きさに注意。
ad_f1
ペイントを剥がす。
予備ハンダは中央に見える。
基板の表と裏はGNDです。
半田ごて先は ESPの端子と
基板パターンを同時にあてる。
温度は 400度 で 最大2秒。
電源,GNDは 450度で最大2秒。
 
半田ごて先の温度は450度。
ESP32 GND側にハンダが
流れる様に短時間に行う。
コネクターピンは先端を切り
平らにしてハンダ付けします。
 
富士の裾野の様にする。
ハンダは溶け始めたら直ぐ離す
程度の少ない量にする。
ハンダ付け後は アルコール等で
クリーニングします。
esp_sol_s

.
WeMos D1 mini Pro 部品面の配線:
_ ESP8266EX の EN端子を GND にしESP8266EXを停止させます。
_ 細い線は寄り線を解いて使用。
_ 再利用:この線をカットすれば 通常の D1 mini Proへ 戻ります。

  極細線を使用する。半田ごて温度は 350度 で 最大0.5秒。
_ 他へ接触しない処理をする事。
イラスト 実際のハンダ付け

.
WeMos D1 mini Pro 裏側の配線:6本。イラスト と 実際のハンダ付け。


.
拡張ボード:部品リストと構成。140円。

No  Nomen  Link  Price(円)  Memo
1  0.3mm厚基板Dタイプ  0.3mm厚基板:秋月 60  1個60円
2  ロー,,ピンヘッダ低オス1×20,2個  ピン:秋月 80  1個40円


.
コネクター配置:ピンソケットの上からの配置。


.
USB FTDI 接続方法1:
超小型USBシリアル変換モジュール 使用例:600円。秋月電子通商。


.
USB FTDI 接続方法2: USB Sesrial Converter ボードを使用する。
ESP-WROOM-02 での USB Sesrial Converter 接続と AUTO Program 回路。
参照:macsbug:ESP8266 FTDI Auto Program
参照:macsbug:Analog to Digital Converter MCP3002 in ESP8266


.
ESP32-WROOM-32 価格:

最安値ESP32:2017.02.23 に 日本アマゾンのマイクロテクニカ ショップで
_ 10個で 590 円が販売されました。他の販売価格を見た作戦を感じます。
工作と数量:今回のESP32 Adapter Board は 工作が簡単、小型、機能多数で
_ 使いやすく為、多数作る条件が整いました。
_ とりあえず マイクロテクニカ 10個注文。
_ Aliexpress へ ESP32 Adapter Board も注文中です。


_ Electrondtagon:ESP-WROOM-32:$3.50 with Tax


.
スケッチ:ESP32 LEDC Software Fade
サンプルは PWM方式の Fade付きLチカです。LED毎 に位相操作も
可能で 多極のステッピングモーター も操作が可能となります。

//LEDC Software Fade
int bright = 0;
int fade   = 5;

void setup() {
  ledcSetup(0, 5000, 13);
  ledcAttachPin(23, 0);  // LED GPIO 23
  ledcAttachPin(22, 1);  // LED GPIO 22
  ledcAttachPin(19, 2);  // LED GPIO 19
  ledcAttachPin(16, 3);  // LED GPIO 16
  ledcAttachPin( 5, 4);  // LED GPIO  5
}

void loop() {
  for ( int ch = 0; ch < 5; ch++){
    uint32_t duty = (5000/255)*min(bright,255);
    ledcWrite(ch, duty);
    bright = bright + fade;
    if (bright <= 0 || bright >= 255) {
      fade = -fade;
    }
    delay(30);
  }
}

.
感想:
ESP32 Adapter Board は理想的ではありませんが 現在「最強のアダプターボード」です。
理由は 電源,GNDパターン幅広く両面パターン,ランドも広く丈夫。
_ 配線パターンは通常の太さ。配線距離が短くノイズ対策効果がある。小型である。
_ ESP放熱部のパターンはあるがスルーホールでなくハンダ付けできない。
_ 対策:穴を空け 両面ハンダ付け処理で放熱効果と電源ノイズ低下ができます。

WeMos Electronic社の WeMos Lolin32 は 既にあると予想しますが 依然として発売はありません。
今回と同等な設計で低価格ならば 今回の製作した物は不要になると思われます。

国内各社アダプターボード: 販売画像から詳細に調べました。
基板製作の基礎がなくレベルが低いものが殆どです。完成後のチェックもされていません。
経済面:価格。国内製品は全て Aliexpress ESP32 Adapter Baoard の 4倍から10倍も高いです。
_   設計不良で価格が高く 4〜10枚分の価格とは残念です。
技術面:商品であるにもかかわらず設計不良が多く素人が作っている感じです。
aitendo:rev 1:価格=高い。パターン幅細く設計不良。
aitendo:rev 2:高い。幅を通常にし3V3は太めだがGNDが3V3に合わない太さ,片面パターン。
スイッチサイエンス:ESP-WROOM-32ピッチ変換済みモジュール《フル版》α版:価格=超高い。
_ 3V3 パターンが細い。シルク印刷ミス多数。ESP32のハンダ付けが超ド素人。
_ 印刷ミスと汚いハンダ付けを画像に出し商品として恥ずかしい内容です。
E32-BreadPlus:価格=高い。配線が長過ぎる。EN の R と C の値は推奨の値ではない。
_ 裏側の画像を示していない。片面のみのパターン。GNDパターン弱い。

アダプターボードの長さ:普通のブレッドボードで作る大きさ。電源やUSB、AUTO PROG 回路も
_ 含めると 長いブレッドボードが必要となり 完成品はどうするのかと 思います。
_ 完成品やケースの大きさも含め トータルのデザインがされていない事を示していますね。


 

Written by macsbug

2月 24, 2017 at 5:44 pm

カテゴリー: ESP32

ESP32 Adapter Board and TFT Display

leave a comment »

ESP-WROOM-32 ボード で TFT ディスプレー を組み上げました。      2017.02.11

ESP-WROOM-32 チップ単体が入手可能となり TFT ディスプレー を接続。
費用は 1023円 又は 1215円 です。( WeMos D1 mini 又は Pro) 。
同じ内容で ESP8266 は 822円 です。macsbug:1.44″ 128 ×128 Color TFT in ESP8266

TFT のサイズは ESP32 Adapter Board のサイズに合う 1.44″ を選びました。
これで 45 x 35 x 20 mm の 最小サイズ の ESP32 TFT ボード ができました。

お詫びと訂正:記事に誤記があり一部削除致しました:2017.02.12
内容:GPIOの出力波形について記載しましたが 正しい波形ではありませんでした。
原因は オシロスコープの周波数帯域の狭いものを使用していた為です。
よって 波形画像と説明を削除致しました。お詫び致します。


.
ESP-WROOM-32 + ESP32 Adapter Board + WeMos D1 mini ( or Pro)
の詳細は macsbug:Write to ESP-WROOM-32 with Adapter Board を参照下さい。
小型サイズ, USB接続, 自動書き込み, ハンダ付けが容易, 低価格 で出来ます。

メモ:ESP32 Adapter Board シルク印刷の誤記:IO19 -> IO5。IO5 -> IO19。


.
準備:費用は 1023円 又は 1215円。

1. 前回製作のボード:ESP-WROOM-32 + Adapter Board + D1 mini (Pro)
_  418円 又は 610円。
2. 1.44″ SPI TFT 128 x 128 Display:ebay:395円。
3. 基板:    秋月:0.3mm厚 基板 Dタイプ(47x36mm) 60円。
4. コネクター:   秋月:シングルピンソケット (低メス) (20P) 60円 x 2 :120円。
5. ピンソケット:秋月:メス 1×8 (8P):30円。
6. Wire:少々。
7. スケッチ: 3D Cube のサンプルは最後に記載しました。


.
配線:8本を配線します。左:TFT 端子名。右:ESP32 Adapter Board 端子名。

  No/Nomen  1.444″ SPI TFT Adapter Board
1 LED 3.3V
2 VCC 3.3V
3 GND GND
4 CS IO33
5 RESET IO32
6 A0 IO25
7 SDA IO27
8 SCK IO23

.

ESP32 Adapter board は 9 pin x 4 = 36 pin 。
シングルピンは隣り合わせにすると幅が広いため内側を少し削ります。

完成:


.
ESP32 ハマリどころメモ: 3.3V レベルを出力しないGPIO端子があります。
理由:GPIO使用方法の把握ができていない事から起きていると思っています。
入力専用端子の条件は無しで全ての GPIO 出力を調査しました。
digitalWrite( Pin , HIGH);  digitalWrite( Pin , LOW);
GPIO 39, 36, 35, 34, 9, 7, 6, 2 は 出力にした場合 オシロスコープで見ると
3.3V の出力は出ません。結果 TFT ディスプレー には 表示されません。
オシロスコープは Analog Discovery ( アナログ帯域5MHz ) で プローブは 10X を使用しました。

GPIOの端子を把握せず 混在配線すると 電圧レベル低下で使用できません。


.
GPIO の基礎:
ESP32 に於ける GPIO の Pull_up, Pull_down 抵抗は基本的に不要です。
理由は ESP32の内部に用意されているからです。ただし接続する負荷によっては
スケッチでの操作が用意されている事 や 外部に抵抗を接続する必要があります。

ESP32の基礎が書かれている文書。NANO32 ボードを開発した MakerAsia です。
Arduino Core for ESP32:jimmy@MakerAsia.com
GPIO Default Configuration、Push-Pull Output、Output Open Drain、
Input Pull Up / Pull Down について書かれてあります。

此処には書かれていない事として GPIO 12 は HIGH にしてはいけません。
理由は MTDI端子ですが イースターエッグ用の端子で HIGH にすると起動時に
TinyBasic が走ります。加えて TinyBasic は シリアル通信で行う為に シリアル
でのスケッチの書込みはできなくなります。
macsbug:Easter Egg of ESP32


.
感想:
1. サイズ:
_  ESP32 では 販売されている DEV Board や NANO32 はサイズが大きく
_  ケースに入れた時に 奇麗でなく かなり不便な大きさになります。
_  手の平に乗らない大きさになり 作りたく無くなります。
_  そこで 最小サイズがどうなるかを試してみました。
_  結果 TFT 付きでは ケースを含むと 50 x 40 x 25 mm になります。
_  バッテリー内蔵にすると さらに大きくなります。

2. USB 5V の電流は 116mA でした。

3. ESP-WROOM-32 チップ用の基板:歴史は繰り返す感じで 幾つかでて
_  きました。その中で aitendo の基板を見ると 端子の面積が少ない事、
_  配線の太さが細い事があり Lチカ位なら動くと思われますが 高度な
_  使い方をすると訳の分からない不具合がでるかもしれません。
_  さらに ブレッドボードを使用すると 同じ内容の事が言えます。
_  あの長い金属と鈍いメッキの固まりは 高周波や瞬間的な電流時に
_  なると コイルとコンデンサー、接触不良の固まりに見えます。


.

3D Cube : ESP32 + 1.44″ TFT v2.1
スケッチ:

// ESP32 + 1.44" TFT v2.1                                  // 2017.02.08 macsbug
// http://www.sipatechmeetup.com/media/uploads/arduinoesp32dev.pdf
#include <Adafruit_GFX.h>                                  // Core graphics library
#include <Adafruit_ST7735.h>                               // Hardware-specific library
Adafruit_ST7735 tft = Adafruit_ST7735(33, 25, 27, 23, 32); // CS,A0,SDA,SCK,RESET
float r, x1, ya, z1, x2, y2, z2, x3, y3, z3;               //
int f[8][2], x, y;                                         // Draw box, x, y center
int c[8][3] = {                                            // Cube
 {-20,-20, 20},{20,-20, 20},{20,20, 20},{-20,20, 20},
 {-20,-20,-20},{20,-20,-20},{20,20,-20},{-20,20,-20} };

void setup(void) {
  //Serial.begin(115200);
  tft.initR(INITR_18GREENTAB);                             // 1.44 v2.1
  tft.fillScreen(ST7735_BLACK);                            // CLEAR
  tft.setTextColor(0x5FCC);                                // GREEN
  tft.setRotation(1);                                      // 
  x = tft.width() /2; x = x + 14;                          // x Center Calculate
  y = tft.height()/2;                                      // y Center Calculate
}

void loop(){
 for (int a = 0; a <= 360; a = a + 2 ) {                   // 0 to 360 degree
   for (int i = 0; i < 8; i++) {                           //
    r  = a * 0.0174532;                                    // 1 degree
    x1 = c[i][2] * sin(r) + c[i][0] * cos(r);              // rotate Y
    ya = c[i][1];                                          //
    z1 = c[i][2] * cos(r) - c[i][0] * sin(r);              //
    x2 = x1;                                               //
    y2 = ya * cos(r) - z1 * sin(r);                        // rotate X
    z2 = ya * sin(r) + z1 * cos(r);                        //
    x3 = x2 * cos(r) - y2 * sin(r);                        // rotate Z
    y3 = x2 * sin(r) + y2 * cos(r);                        //
    z3 = z2; x3 = x3 + x ; y3 = y3 + y ;                   //
    f[i][0] = x3; f[i][1] = y3; f[i][2] = z3;              // store new values
   }
   tft.fillScreen(ST7735_BLACK);
   tft.drawLine(f[0][0],f[0][1],f[1][0],f[1][1],ST7735_WHITE);
   tft.drawLine(f[1][0],f[1][1],f[2][0],f[2][1],ST7735_WHITE);
   tft.drawLine(f[2][0],f[2][1],f[3][0],f[3][1],ST7735_WHITE);
   tft.drawLine(f[3][0],f[3][1],f[0][0],f[0][1],ST7735_WHITE);
   tft.drawLine(f[4][0],f[4][1],f[5][0],f[5][1],ST7735_WHITE);
   tft.drawLine(f[5][0],f[5][1],f[6][0],f[6][1],ST7735_WHITE);
   tft.drawLine(f[6][0],f[6][1],f[7][0],f[7][1],ST7735_WHITE);
   tft.drawLine(f[7][0],f[7][1],f[4][0],f[4][1],ST7735_WHITE);
   tft.drawLine(f[0][0],f[0][1],f[4][0],f[4][1],ST7735_WHITE);
   tft.drawLine(f[1][0],f[1][1],f[5][0],f[5][1],ST7735_WHITE);
   tft.drawLine(f[2][0],f[2][1],f[6][0],f[6][1],ST7735_WHITE);
   tft.drawLine(f[3][0],f[3][1],f[7][0],f[7][1],ST7735_WHITE);
   tft.drawLine(f[1][0],f[1][1],f[3][0],f[3][1],ST7735_WHITE);// cross
   tft.drawLine(f[0][0],f[0][1],f[2][0],f[2][1],ST7735_WHITE);// cross
 }
}

Written by macsbug

2月 10, 2017 at 9:24 pm

カテゴリー: ESP32

Write to ESP-WROOM-32 with Adapter Board

leave a comment »

ESP32 Adapter Board で ESP-WROOM-32 に書き込む方法。   2017.02.03

費用は 418円 又は 610円 です。( Adapter Board + WeMos D1 mini or Pro)


ESP-WROOM-32 販売開始:国内2カ所で販売が開始されました。2社に感謝!
1.「DigitalMaker :株式会社デジタルメーカー」:税込864円。送料164円 翌日到着。
2.「秋月電子通商」:税込700円。代引300円。送料500円。輸送期間=?。


ESP-WROOM-32チップの課題:動かすには 幾つかの方法があります。
_  メモ:ESP-WROOM-32 のピンのピッチは 2.54 mm の半分 1.27 mm です。
1. 1.27 mm ピッチの基板を使用して手配線し USB FTDI は 外部接続。
_  注意:縦と横の位置が半ピッチ ズレている為に 1.27 mm の基板にピタリ
_     と入らずズレます。
. Aliexpress や ebayで販売されている ESP32 Adapter Board を使用する。
_  WeMos D1 mini 又は WeMos D1 mini Pro の USB FTDI を使用する。
3. どちらも難解な為、全体を読み、自分の力量の範囲で行ってください。


準備:WeMos D1 mini Pro を使用する方法を実施しました。
1. WeMos D1 mini     :Aliexpress= $4, ebay=369円。FTDI=CH340G。
. WeMos D1 mini Pro:Aliexpress= $5, ebay=627円。FTDI=CP2104。
. ESP32 Adapter Board:ebay=111円。Aliexpress=5個243円(1個49円)。
4. Wire:少々。
5. カプトンテープ:耐熱もしくは絶縁テープ 少々。

WeMos D1 mini Pro:

ESP32 Adapter Board:
シクル印刷の誤記:IO19 -> IO5。IO5 -> IO19。


構成:WeMos D1 mini Pro 上の CP2104 FTDI と USB を利用し USBと自動書込
_  み が可能となります。方法は ESP8266EX の EN端子(7) をGNDにします。

_ 参照:macsbug:CH340 with EI Caption:
_  CH340 を認識しない場合のハード的回避方法:CP2102 を介して読み書きする。


ESP-WROOM-32 取り付け:完成画像を参照願います。
1. ESP-WROOM-32 を Adapter Board へハンダ付けします。これは難解です。
_  下に記載した「一般的な注意」をお読みください。
2. Adapter Board へ 2列のピンをハンダ付けします。


改修: WeMos D1 mini Pro を 改修します。
_   難解な部分がある為、充分な理解と力量を判断してから行ってください。
1.  画像:黄色「EN 」から 黄色「GND」へ極細の線を配線します。(金色の線)
_   位置の確認:「EN」は「EN(7)」とパターンで繋がっています。
_   位置の確認:「EN」は 左の PULL_UP Resistor に接続されています。
_   位置の確認:「EN(7)」の下の ICは ESP8266EX です。7番ピンです。
_   位置の確認:「GND」は GNDパターンにあるハンダメッキになっています。
_
_  注意:配線とハンダ付けは難しいです。理由は 線幅が小さくパターンを剥がし
_  易く、接続抵抗が小さく 小さな力で破損します。拡大鏡が必要で半田ごての
_  熱量と時間、力 には細心の注意をしてください。
_ 
_  WeMos D1 mini を使用する場合:EN端子をGND へ接続します。
_  
2. 計6本を配線します。

No. / Nomen D1 mini pro ESP32 Adapter board
1 RST EN
2 3V3 3.3V
3 TX TXD
4 RX RXD
5 D3 IO0
6 GND GND

_ 
3. 完成。基板は両面テープで固定しました。左=表。右=裏。
_ 


開発環境の構築:macsbug:Watch the ESP32 board を参照ください。


書込み方法:以下の設定で書き込み 起動は board の「RESET」ボタンを押します。
_ 


Strapping Pins:プルアップ抵抗とプルダウン抵抗について。
_ ESP8266 では GPIO_0,GPIO_2,GPIO_15 等に 抵抗が必要でしたが
_ ESP32 は不要です。理由は Espressif Systems の ESP32 Datasheet
_ October 8,2016  / 7 Page  / 2.4 Strapping Pins には 抵抗が内蔵されて
_ いると記載されています。
_ ESP32 has 6 strapping pins:
_  • MTDI/GPIO12: internal pull-down
_  • GPIO0: internal pull-up
_  • GPIO2: internal pull-down
_  • GPIO4: internal pull-down
_  • MTDO/GPIO15: internal pull-up
_  • GPIO5: internal pull-up
_ ただし 外部回路を接続する時は考慮してくださいと記載されています。


発売記念写真:


一般的な注意:初心者は完成品購入が望ましい。
_ ESP-WROOM-32  を ESP-32 Adapter Board への ハンダ付けは非常に難しいです。
_ 半田ごての温度は400度、小手先の角度は最適状態で2秒でハンダが流れます。
_ 最適でない角度の場合は3秒になります。ハンダの量は多くならない様にする事
_ も必要です。さらにチップ中央のGNDパターンの基板に穴を空けてハンダ付け
_ する場合は450度位は必要ですし確認が難しいです。(製品版はしていないですが)
_ ハンダ後はイソプロピルアルコール等で洗浄が必要です。拡大鏡で確認が必要です。
_ 結果 ハンダ付けに力量が無い人は 特になりませんので、ハンダ付けされた製品が
_ 出るまでお待ちした方が良いかと思います。他 ESP-32 Adapter Board を使用する
_ とピンが2列ですのでブレッドボードは使用できません。


ESP32 Adapter Board:
_ Aliexpress や ebay で ESP32S用のAdapter Boardは 80円程度です。
_ この基板は レイアウト技術的に考える点が2つあります。画像参照(共に裏側)。
_ 1. 3V3 と GND の配置が反対側で電源との距離が長い。
_   ESP32 側は 上の両サイドにGNDが用意されています。
_ 2. 基板中央にGNDパターンがあるが チップ中央のGNDが浮いたまま
_   である。チップ側でGNDパターン(中央の金色)を 用意した重要な意味が無い。
_ 1の改善方法:電源は最短距離で配線する事。このパターンの逆にする事。
_ 
2の改善方法:基板中央のGNDパターンにハンダ付けの為の穴を儲ける事。
_  取り付け時に基板GNDとチップのGNDをハンダ付けする。これにより放熱と
_  電源ノイズの低下が可能。さらに このGNDパターンの上側にLDOのパターン
_  を儲け直付けすると、最短距離になりノイズを低下できます。
_  LDOやチップコンデンサーの種類の選択や電源最短距離の配置は効果大で
_  GNDパターンを含め放熱効果やノイズ対策効果も大きいです。
_  オシロスコープでESP32端子直下を確認する事が重要です。
_ 


感想:
1. 接続方法:WeMos D1 mini 又は NodeMCUでも可能です。
_  確認した方法は D1 mini Pro と NodeMCUで D1 mini は確認していません。
2. Adapter Board と ESP32 DEV Board :
_   ESP32 DEV Board は横長で大きく不便で 小型のAdapter Board は便利です。
_ 
3.  スケッチの動作:
_  ESP8266で動いていた物は直ぐは 動かないと思った方が良いです。
_  理由はライブラリーの非対応です。LチカやTFT表示等は動きますが ESP8266 で
_  完成度の高い優れたライブラリーは動かない物が多いです。
4.  ブレッドボードについて:電子工作は実装技術が重要です。
_  これは試作用です。これを使用するとブレッドボード(BB)の試験をしているよう
_  な物です。完成後は基板にすべきです。BB の使用可能な周波数帯域を把握しま
_  しょう。簡単には 10KHz で 一桁上の 100KHz 台は使用できません。
_   BBは コンデンサーとコイルと接触不良の固まりです。ESP32 は高速のシリアル
_   信号(VSPI,HSPI)を使用しますので用途に応じて BB は使用しないほうが良いです。
5.  小型の ESP32 Adapter Board に今回の回路と部品装着済の基板を販売して欲しい。
_  WeMos.cc さん、「LoLin32」を此の様な形で低価格で販売してください。


Written by macsbug

2月 3, 2017 at 9:02 pm

カテゴリー: ESP32

Easter Egg of ESP32

leave a comment »

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

CoolTerm での表示ですが Arduino IDE シリアルモニターでも可能です。
PEEK, POKE命令も使用できます。

TinyBasic の件は espressif/esp-idf/ROM Source Code Copyrights/ に書かれています。

詳細は BleuLlama/TinyBasicPlus にあり命令とサンプルが記載されています。
_ 追加機能:
_ fileio(SDライブラリ)。SDカードからのプログラムの自動実行。
_ smaller footprint (PROGMEM)。pin data IO 。on-chip EEProm storage
_ のサポートが含まれます。


.
手順:ESP32 は NANO32を使用。 ESP32 の GPIO 12 を HIGH にします。
1. ESP32 GPIO 12:HIGH ( Resistor で Pull_up) 。
2. シリアルモニター:Baudrate=115200, Enter Key Emulation=CR 。
3. ESP32:電源オン, EN Switch Push 。
4. Key Board:Enter Key 連打。
5. >:コマンドプロンプトがでたら BASIC が起動した事を示します。感動!

詳細:HACKAYDAY:BASIC INTERPRETER HIDDEN IN ESP32 SILICON
Elliot Williams氏に感謝!
ここでの内容とハイレベルの方のコメント欄は非常に参考になります。

メモ:ESP32のGPIO 12 をプルアップして起動すると Arduino IDE での書き込みは
_  出来ません。 理由は ESP32 のシリアル出力から メッセージが連続して流れ
_  続ける為です。回避する為には プルアップ抵抗を取り除きます。

参考:TinyBasic Plus


.
BASIC MODE:

GPIO 12 を HIGH にすると Arduino IDE シリアルからは以下のメッセージがでます。
ESP32 の状況と 「Falling back to built-in command interpreter.」のメッセージ。
これから キーボードの Enter key(CR) で BASICモードに入る事ができます。

>ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3bd80000,len:4
load:0x3ffc000c,len:1452
load:0x40078000,len:2908
ho 0 tail 12 room 4
load:0x40080000,len:256
csum err:0xa1!=0xb2
Falling back to built-in command interpreter.

.
>about と入力すると 以下のメッセージが出ます。
ESP32 ROM Basic (c) 2016 Espressif Shanghai Derived from TinyBasic Plus by Mike Field and Scott Lawrence

>help と入力すると 使用できるコマンドの一覧が出てきます。
_ LIST, NEW, RUN, NEXT, LET, IF, GOTO, GOSUB, RETURN ,REM,
_ FOR, INPUT, PRINT, PHEX, POKE, STOP, BYE, MEM, ? , ‘ ,
_ DELAY, END, RSEED, HELP, ABOUT, IOSET, IODIR, PEEK,
_ ABS, RND, IOGET, USR

この TinyBasic Plus を作られたのはEspressif Systems の
_ Mike Field 氏と Scott Lawrence 氏です。共に感謝致します。
_ BleuLlama/TinyBasicPlus:他の命令も記載されています。

BASIC in ESP32 で 操作を見る事ができます。


.
Lチカ を実行:ボード上の LED ( GPIO 16 ) が点滅します。

10 POKE &H60004570, 16  // LED ON
20 DELAY 25
30 POKE &H60004570, 0   // LED OFF
40 DELAY 1000
50 GOTO 10

POKE &H60004570, 16:GPIO 16 から “0” を出力し LED を点灯する。
POKE &H60004570, 00:GPIO 16 から “1” を出力し LED を消灯する。
GPIO_FUNC0_OUT_SEL_CFG_REG_16:0x60004570

同様に以下の記述でも点滅します。

10 IODIR 16,1
20 IOSET 16,0    // LED ON
30 DELAY 25
40 IOSET 16,1    // LED OFF
50 DELAY 1000
60 GOTO 20


.
Lチカ と ダイレクトアクセス:Arduino IDE スケッチでの表記:
1. GPIO 16 の LED を点灯させる。以下のいずれかで可能。
_  digitalWrite(16,0);
_  GPIO.enable_w1ts = ((uint32_t)1 << 16);
_  ESP_REG(GPIO_ENABLE_W1TS_REG) = ((uint32_t)1 << 16);
_  GPIO_OUTPUT_SET(16, 0);

2. GPIO 16 の LED を消灯させる。以下のいずれかで可能。
_  digitalWrite(16,1);
_  GPIO.enable_w1tc = ((uint32_t)1 << 16);
_  ESP_REG(GPIO_ENABLE_W1TC_REG) = ((uint32_t)1 << 16);
_  GPIO_OUTPUT_SET(16, 1);

3. ありがちなハマりどころ:
_  POKE &H60004570, 16 :アドレス に “1” を与え GPIO 16 は “0” となる。
_  POKE &H60004570, 00 :アドレス に “0” を与え GPIO 16 は “1” となる。
_  IOSET 16,0 :GPIO 16 に “0” を与え GPIO 16 は “0” となる。
_  IOSET 16,1 :GPIO 16 に “1” を与え GPIO 16 は “1” となる。
_  GPIO.enable_w1ts = (1 << 16);:enable_w1ts へ”1″ を与え GPIO 16 は “0” 。
_  GPIO.enable_w1tc = (1 << 16);:enable_w1tc へ”1″ を与え GPIO 16 は “1” 。
_  ポイント:delay を 異なる値にして LED の ON/OFF 状態を区別します。


.
ESP32 REGISTOR:
_ POKE文で操作する時は Resistor Address の把握が必要です。
_ ESP32 の Resistor Mapは「esp32_technical_reference_manual_en
_ に記載されています。ただし アドレスに誤記があり 当然ながら その
_ アドレスでは動きません。
_ それに対し「eco_and_workarounds_for_bugs_in_esp32_en」に
_ アドレスの修正が記載されており記載されたアドレスで動く事を確認
_ しました。


.
感想:
BASIC MODE:まさかの感動もの!
_ Espressif Systems は なかなか洒落た事をやりますね。素晴らしいです!
_ こういう 隠し技が好き なもので PEEK, POKE文にハマりそうです。
_ ESP32 のシリアル出力から
_ 「rst:0x10(RTCWDT_RTC_RESET),boot:0x33(SPI_FAST_FLASH_BOOT) 」
_ から始まり「ESP32の状態を示す」メッセージがでて 最下部には
_ 「Falling back to built-in command interpreter.」とでます。
_ それを Enter key(CR) で BASICモードに入るとは実に味な事をしますね。

PEEK, POKE:Apple II の時に PEEK, POKE 文で 周辺回路にアクセスしたのを
_ 懐かしく思い出しました。ROMにアクセスして内容を読むとか出来る訳です。

HACKAYDAY:BASIC INTERPRETER HIDDEN IN ESP32 SILICON
_ ここでのコメント欄では 私からすると神の様なハイレベル同士の話は
_ 凄く試になる事と 面白い内容で何回も読んでしまいました。

ESP32 mask ROM hardware includes:ROMに含まれているのは以下、
_ Newlib, XtentaLibhal, TinyBasic, miniz, wpa_supplicant, TjpgDec との


 

Written by macsbug

1月 4, 2017 at 12:22 pm

カテゴリー: ESP32

Raytracing with ESP32

with 2 comments

ESP32 で レイトレーシング を試しました。         2016.12.27
ESP32 の 速度は どの位でしょうか?
ESP32 DEVKIT V1 と 2.4 inch 320×240 TFT SPI Display を使用しました。

結論:速度は ESP8266 160MHz の 2.5倍です。価格は ESP8266 の6倍です。
条件:「SPI接続」と「Adafruit_ILI9341.h」(速度が遅い) を使用。



.
抽画速度の比較。ESP32 は 14sec。ESP8266 160MHz は 33secです。


.
準備:
1. ESP32 DEVKIT V1:1720円 。 その後2800円台と非常に高いです。
_  メモ:ESP32 DEVKIT と NANO32 の 購入時は 電波が出ない状態になっています。
2. 2.4 inch 320×240 TFT Display:1125円 。
3. スケッチ: TFT22_raytracecbm80amiga氏に感謝。
_  スケッチの変更:GPIOの端子番号を接続したTFT の端子と合わせます。
_          #ifdef ESP8266 , #endif は不要ですので削除してください。

// CS,DC,SDI,SCK,RESET,SDO  // ESP32 Dev Module
Adafruit_ILI9341 display = Adafruit_ILI9341(13,14,27,26,12,25);

.
参考:YouTube
Raytracing on ESP8266 and ILI9341 LCD display ESP8266:今回の参考場所
Arduino raytracer rendering on 8 bit micro : Arduino 10min
Raytracing on Arduino and STM32 – speed comparison:Arduino vs STM32
Generic STM32 vs Arduino Pro Mini/Nano speed :STM32 vs Arduino


.
測定結果の数値:
条件:「SPI接続」と「Adafruit_ILI9341.h」(速度が遅い) を使用。
_   Raytracing は 1 Passを使用。

Type    sec
    ESP32      @ 160MHz  13
    ESP8266  @ 160MHz  33
    ESP8266  @  80MHz  65
    STM32     @  72MHz  52
    ATMEGA328         @ 16MHz  293
    Arduino Pro Mini  @ 16MHz  293

追記:2016.12.30 Arduino IDE ESP32 を Update 。
_  14sec が 13sec にアップ。ESP8266 160MHz との対比は 2.3 から 2.5倍
_  boards.txt に記載されている nano32.build.f_cpu=160000000L は
_  nano32.build.f_cpu=240000000L に変更されました。
.


表示を変える方法:球の個数や位置、素材等を変えられます。追記:2016.12.30
raytracer.h

 
#define NUM_SPHERES 4    // 球の個数
static const float spheres[] PROGMEM = {
// center, radius, material // center : 球の位置
  5,15,8,  5,  0,
 -6,12,4,  3,  0,
  1,10,2,  2,  1,
  0, 9,5,  1,  2
};

.
追記:2017.1.4: STM32F7 Raytracing が 0.62sec を達成し世界一最速です。
このサイトへの訪問者 clemente氏は、このRayTracing を STM32F7 を使用し
_ C++ と C に置き換えたとの事。そしてその速度は 320×240 で 0.62sec と
_ いう驚異的な結果が出ています。素晴らしいですね。是非 以下のサイト
_ をご覧ください。clementeさん ありがとうございました。
The Embedded Notes Blog:RayTracing per ESP32 e STM32F7!

YouTube:STM32F7 RayTracing:この速度を是非ご覧ください。
_ 一瞬で終わります。素晴らしいです。


.
感想:
ESP8266 を始めた理由:Arduino は速度遅くメモリーが少ない為 始めました。
_ Arduino Pro mini に対し 21倍、ESP8266 160MHz に対し 2.4倍でした。
_ この点では ESP8266 を選択した意味がありました。
_ ESP8266 に対し ESP32 は 少し 速くなり少々満足。でも160MHzしかない。
_ そして ESP32 の価格は ESP8266 の6倍で使用する価値は無くなりますね。
.
費用対効果:ESP32 は 2016年12月現在 2800円台です。 ESP8266は $5
_  という触れ込みから始まりましたが ESP32 は非常に高い価格です。
_  ebayやAliexpress を見ると一時的に安くなる業者もありますが
_  その後 並べた様に 高い価格になっています。これは価格を操作している
_  様にも見えます。
.
ラズパイと2.2 inch 320×240 TFT Display:ラズパイではSPI接続でビデオを
_ 表示する事が出来ています。
_ Learn on the fly:Quickly test an IL9341 2.2 inch 2.2″ SPI TFT display
.
条件:今回のスケッチは cbm80amiga氏の記事を使用した物です。これは
_ Arduino や STM32 でも比較できるハードとライブラリーという条件です。
_ 方法は「SPI接続」で ライブラリーは「Adafruit_ILI9341.h」を使用して
_ います。SPI接続である事と 速度がかなり遅いAdafruitのライブラリーを
_ 使用しています。 ESP32は SPI以外に HSPI、VSPI端子がある事や
_ DMA parallel 方式があり速度の向上が期待されます。
_ Espressifのアナウンスに「C.3D Game on ESP32」と言う項目があり
_ 「DMA via the parallel mode of the I2S controller」を使用するとの事。


Written by macsbug

12月 27, 2016 at 2:30 am

カテゴリー: ESP32, ESP8266

2.4 Inch TFT Display For ESP32

leave a comment »

ESP32 で TFT Display を使用する方法。              2016.12.17
ディスプレー は 2.4 inch 240×320 SPI TFT LCD ILI9341 を使用し
ESP32DEVKIT V1NANO32 を使用しました。

費用は 3337円です。( ESP32ボードD1 mini  の約5倍です )

2016.04.16 に ESP8266 + 2.4 inch TFT Display の記事を記載しました。
ESP8266と同じ内容ですが ESP32とライブラリーの動作を試しました。
ライブラリーとスケッチは Adafruit ILI9341 graphicstest です。


.
DEVKIT V1 ( with TELEC ):ESP32 Development Board。

NANO32 ( without TELEC )
Font Converter (squix : Daniel Eichhor) による文字は奇麗です。

Adafruit の フォント表示。”Group” の文字は 5倍してギザギザです。


ESP32の速度:ESP8266 の 2.2 倍高速です。
_ 条件は 同じ回路 及び 同じスケッチ(Adafruit ILI9341 graphicstest
_ で速度を比較。ただし ESP8266 は 周波数は160MHz にする事と
_ Wdt Error を出す為に 多数の yield(); を入れています。
_ ESP32=37.8sec, ESP8266=84.2msec。


.
準備:
費用=3337円 ( without Touch Panel ):
費用=4497円 ( with      Touch Panel ): 価格は円レートで変動します。
販売業者によっては価格を上げる所があり都度 最低価格を探します。

No.  Nomen  Link  Price  Memo
1  ESP32: DEVKIT V1  ebay 1742円  1個
 2a  2.4 inch TFT Display  ebay   811円  1個
 2b  2.4 inch TFT Display + Touch  ebay  1125円  タッチ機能あり
3  Breadboard  ebay   483円  10個 483円
4  Breadboard Jumpre Cable  ebay   301円  1箱 140 pcs
 ———- ライブラリ———-
5  Adafruit_GFX  GFX  microbuilder氏に感謝
6  Adafruit_ILI9341  ILI9341  ladyada氏に感謝
———-   フォント ———-
7  Font Converter  squix  Daniel Eichhor氏に感謝
—– ESP32 開 発 環 境 —–
8  espressif/arduino-esp32  esp32  espressif TEAMに感謝
9  Setting Up ESP-IDF  Toolchain   Mac OS用

02a:Touch Panel 無し:タッチパネル不要の場合。
02b:Touch Panel 有り:タッチパネル必要の場合。

ライブラリーと ESP32 対応:defined(ESP32) の記述。
Adafruit_ILI9341 は「defined(ESP32)」が追加され ESP32 で動作します。
ESP8266 の SPIの記述 は ESP32では使用出来ない様です。


.
配線:TFT基板の画像は裏側で 「配線表」は表側からの並びです。
_  TFTの端子と ESP32のGPIO端子が 最短で直結できる配置にしました。

TFT Display 裏側 端子名。

  TFT    基板表側 配線表
SDO LED SCK SDI DC RESET CS GND VCC

メモ:RESET は 3V3 へ接続でも可能です。


.
DEVKIT V1 配線:ミニブレッドボードを4連結。配線8本。

  DEVKIT  GPIO   ,    TFT    基板表側 配線表
GPIO D26 D27 D14 D12 D13 GND  VIN 3V3  3V3
TFT SCK SDI DC RESET CS GND LED  VCC



メモ:GPIO端子は D25表示(例) ですが スケッチでは  25 を記載します。


.
NANO32 配線:ミニブレッドボードを3連結。配線8本。

  NANO32  GPIO   ,    TFT    基板表側 配線表
GPIO 12 13 00 9 10 11  GND 3V3  3V3
TFT SCK SDI DC RESET CS GND LED  VCC



メモ:GPIO : 9=SD2, 10=SD3, 11=CMD(SCS). RESET=3V3 でも可能。


スケッチ:
Adafruit の Graphics Test の GPIOは 以下の様に設定します。
GPIO 端子は 全ての端子を設定します。CS, DC のみの設定は動きません。

DEVKIT V1

//                                      CS,DC,SDI,SCK,RESET,SDO);
Adafruit_ILI9341 tft = Adafruit_ILI9341(13,14, 27, 26,   12, 25);

NANO32

//                                      CS,DC,SDI,SCK,RESET,SDO);
Adafruit_ILI9341 tft = Adafruit_ILI9341(10, 0, 13, 12,    9, 14);

部品:ディスプレーは ebayで購入します。
_ 以下の条件にあったディスプレーは国内には無く 又 類似品の価格は約4倍
_ 程高い為に ebayで購入します。
_ 条件:240×320、3.3V、2.4″、SPI、TFT、ILI9341、Touch Panel、SD Slot。
_ 他の部品も国内は高いです。 例:ミニブレッドボードは 国内で 1個130円 や
_  216円(送料を含まない価格)ですが ebayは 1個49円です。

フォント:Adafruit_ILI9341 + Adafruit_GFX ではフォントを拡大するとギザ
_ ギザになります。奇麗なフォントを使用する方法は  Font Converter
_  ( Daniel Eichhor氏 ) を使用しフォントを作成します。
_  例:Library version は Adafruit GFX Font を選択し Roboto_plain_18.h を
_    作成します。それを自分のスケッチフォルダーの中に入れます。
_    スケッチでは #include “Roboto_plain_18.h” と宣言し
_    tft.setFont(&Roboto_18); tft.println(“Hello World,”); で表示します。

メモ:
_ DEVKIT  :購入時は電波は出力しない設定になっています。
_ NANO32:購入時は電波は出力しない設定になっています。
_      このままの状態で使用すると TELEC は不要になります。


.
参考:
Watch the ESP32 board:Arduino IDE へ ESP32 の開発環境を再構築する。
ESP32 with TELEC will be released.:初めての ESP32。


.
感想:
1. 費用:ESP32 の価格が高い為に 高額です。WeMos D1 mini の約5倍です。
_  今回の表示程度ならば WeMos D1 mini  (365円)で充分です。
_  さらに安価な ESP32 や TFT を探すのもポイントと思います。Daniel Eichhor
_  氏は この辺を丁寧に探しています。

2. TFT ライブラリー:squix : Daniel Eichhor のライブラリーは 高速性と表示の
_  奇麗さで最高峰ですが SSD1306 用である事と ESP8266 内部を使用している
_  為 現時点では ESP32 ではエラーがでて使用できません。
_  Adafruitのライブラリーは かなり遅いです。3D Cube のスケッチは 遅くて
_  使い物になりません。速度に見合った使い方になり ライブラリー次第で
_  高速抽画ができると思っています。
_  ESP8266 は 周波数を160MHzにしないと Wdt Reset の発生は大きくなります。
_  さらに Wdt Reset を軽減する為に yield(); を入れますが これは なんだと
_  思うくらいの妙な記述で ESP8266のバグではないかと 思うくらいです。
_  ESP32 では この yield(); の記述は不要になり 使用するとエラーがでます。

3. ESPRESSIFの戦略:ESP32 の1つに GAME を目標に DMA +パラレル方式を
_  掲げています。現在  ESP-WROVER-KIT 開発ボードを製作し SPI 方式で
_   安価な TFT を動かしています。ただし SPI方式では これ以上のピクセル数
_   は難しく パラレル方式が期待されます。Arduinoでは既に完成されています。

4. 大きさ:DEVKIT と NANO32 は大きく ブレッドボードを使用する時に少々
_  勝手が違います。ブレッドボードは試験用で使用時はケースに入れますので
_  取り付け基板が必要になるかと思います。それにしても WeMos D1 mini より
_  も かなり大きなケースになりそうです。

5. TFT 接続基板:2.4 inch TFT 基板と D1 mini を接続する基板があると 容易
_  に作る事ができます。そこで Daniel Eichhor氏は TFTと D1 mini pro の
_  接続基板を作られました。TFT + 接続基板+ D1 mini proをハンダ付けし
_  て直ぐ出来る素晴らしい方法です。
_  これを基に私は 接続基板を使用せず  VCC=3V3, GND=GND, CS=D7,
_  RESET=D6, DC=D5, SDI=D0 を直付けし GND=D8, SCK=D2 を2本の
_  ワイヤ−配線で作りました。これで基板を作る手間が不要な事や厚さを
_  薄くする事が出来ます。ただし少し上側にスペースが必要になる事と
_  タッチセンスの配線は省略しています。
_          
_  


 

Written by macsbug

12月 16, 2016 at 10:46 pm

カテゴリー: ESP32, ESP8266

ESP32 Development Board with TELEC Memorial photograph

leave a comment »

ESP32 Development Board 到着記念写真。             2016.12.12

ESP-WROOM-32 ,  211-161007

DOIT/SmartArduino 「ESP32 Development Board with TELEC」
注文先:AliExpress の Store:iHardware $21.05
輸送機間:12月3日に注文し12日に届く速さ。

DEVKIT V1 と書かれています。


ESP32 Development Board :ブレッドボードは 2つ必要。I2C は離れている(黄と緑)。
NANO32:3V3 以外は I2C OLED を直付けできる。
nodeMCU ESP8266:I2C OLED を直付けできる。

.
USB 5V の消費電流:
ESP32 Development Board with TELEC:80mA
NANO32:70mA
.
3D Cube Demo Report :2016.12.13 版 arduino-esp32 開発環境。
_ ESP32 Development Board:時間を於くと停止する。
_ NANO32:時間を於くと停止する。初回の開発環境は正常に動作し続ける。
_ nodeMCU ESP8266:正常に動作し続ける。
2016.12.14 に I2C の Rev があり UPDATE 後6時間モニターしOK。2016.12.14

その後 15日の朝も動作中を確認。arduino-esp32 ではこの間に3回の Rev あり。
開発メンバーの方々 ご苦労様でした。
その後 継続して I2C の Revision が続けられています。
.
いわゆるTELECとは:高速無線LAN情報局より抜粋。
特定無線設備(無線LANや携帯電話などの電波通信機器)の基準認証制度のことを、
俗にTELECといいます。昔、登録証明機関が財団法人テレコムエンジニアリング
センター(TELEC)のみであったことからそう呼ばれています。認証番号
(証明番号)はTELEC番号などと呼ばれます。
.
TELEC 211-161007:211 は 登録番号で登録証明機関の
Bay Area Compliance Laboratories Corp です。登録外国適合性評価機関
最新のリストは平成28年08月31日で12月現在まだ リストには掲載されていません。


 

Written by macsbug

12月 12, 2016 at 2:59 pm

カテゴリー: ESP32, ESP8266