ESP-WROOM-02 ( ESP8266 ) チップ・メモリ・MACアドレス情報確認方法

記事公開日:2017年10月2日
最終修正日:2017年10月14日

スポンサーリンク

こんばんは。

最近、Facebook や Twitter で話題になっていた、ESP-WROOM-02 ( ESP8266 ) のフラッシュメモリサイズが 2MB だったという件について、調べてみたいと思います。

それは、スイッチサイエンスさんの以下の記事が発端でした。

ESP-WROOM-02のFlash ROMが2MBになっていた(減ってた)

これについては、ESP8266/ESP32環境向上委員会 やTwitterの情報によると、実はかなり以前からそういう情報があったようです。
要するに、ボードの型番が全く同じなのに、異なる仕様になっていたということのようです。
ESP-WROOM-02 をメーカーに発注する際に、4MB を指定しないと2MB で納品されてしまうことがあるそうです。
ホンマかいな・・・。

ということで、私もたまたま古いデータシートがあったので見てみました。

2015年6月2日  ESPRESSIF社発行の ESP-WROOM-02 データシート( Version 0.3 )は下図の様になっていました。

ESP8266_Chip_Info_01

では、2016年12月発行( Version 2.1) のデータシートではどうなっていたかというと、以下のようになっていました。

ESP8266_Chip_Info_02

ホンマでした。

データシートが日々バージョンアップされているので、ちょっと不思議に思っていましたが、まさかフラッシュメモリまで変更になっているとは思いませんからね。
でも、ふと記憶をたどってみると、そんな情報が2016年に流れていたような気がしないでもないです。

正直言って、これは無茶苦茶だと思います。
何でこういう仕様変更をするのか、理解に苦しみますね。
データシートを見ない方が悪いと言われればそれまでですが、さすがにスイッチサイエンスさんに同情してしまいます。

ということで、手持ちの ESP-WROOM-02 をチェックすべく、チップ情報やその他の知りたい情報を列挙するスケッチを組んでみました。
サンプルスケッチには無い情報も表示させてみました。

Chip ID や、SDKバージョン、ヒープメモリサイズ、スケッチメモリサイズ、MACアドレスなど、私が個人的に知りたい情報を詰め込んでみました。
因みに、Arduino IDE のみのチェック方法です。
(ESP-WROOM-32 についての情報は、後日別記事で紹介します)

ESP-WROOM-02 ( ESP8266 )開発ボードはスイッチサイエンスさんの以下のボードで動作確認しています。


これの使い方は以下のページを参照してください。

ESPr Developer ( ESP-WROOM-02 開発ボード )の使い方をザッと紹介

事前にArduino IDE に ESP8266ボードをインストールしておく

予め、Arduino IDE に ESP8266 ボードをインストールしておきます。
Arduino IDE は 1.8.4 で動作確認取れています。

インストール方法は以下のページを参照してください。

Arduino IDE に Stable ( Staging )版 ESP8266 ボードをインストールする方法

チップ情報取得スケッチの入力

では、以下のスケッチを入力してみてください。


一番下のコメント欄で、「つ★」さんから Arduino IDEメニューの「Flash Size」設定に左右されない Flash Size 表示方法を教えていただきました。
「つ★」さん、有益な情報ありがとうございます。
m(_ _)m
それに伴い、スケッチを変更しました。
(2017/10/14)
#include <ESP8266WiFi.h>
 
void setup(void) {
  delay(1000);
  Serial.begin(115200);
 
  Serial.println();
 
  Serial.println("-----ESP-WROOM-02 ( ESP8266 ) Chip Infomation -----");
  Serial.println();
 
  Serial.print("Core Version = ");
  Serial.println(ESP.getCoreVersion());
 
  Serial.print("CPU Frequency = ");
  Serial.print(ESP.getCpuFreqMHz());
  Serial.println(" MHz");
 
  Serial.print("ChipID = ");
  Serial.println(ESP.getChipId(), HEX); //MACアドレスの下位3バイト
 
  Serial.print("Flash ID = ");
  Serial.println(ESP.getFlashChipId(), HEX);
 
  Serial.print("SDK version = ");
  Serial.println(ESP.getSdkVersion());
 
  Serial.print("Boot version = ");
  Serial.println(ESP.getBootVersion());
 
  Serial.print("Boot Mode = ");
  Serial.println(ESP.getBootMode());
 
  Serial.print("Flash Chip IDE Size = ");
  Serial.print(ESP.getFlashChipSize()); //Arduino IDE 設定の Flash Size になる
  Serial.println(" byte");

  Serial.print("Flash Chip Real Size = ");
  Serial.print(ESP.getFlashChipRealSize()); //ESP-WROOM-32 内蔵最大 Flash Size になる
  Serial.println(" byte");
 
  Serial.print("Flash Frequency = ");
  Serial.print(ESP.getFlashChipSpeed());
  Serial.println(" Hz");
   
  String mode_str;
  switch( ESP.getFlashChipMode() ){
    case 0: mode_str = "QIO"; break;
    case 1: mode_str = "QOUT"; break;
    case 2: mode_str = "DIO"; break;
    case 3: mode_str = "DOUT"; break;
    case 4: mode_str = "Unknown"; break;
    default: break;
  }
  Serial.println("Flash Chip Mode = " + mode_str);
 
  Serial.print("Free Heap Size = ");
  Serial.println(ESP.getFreeHeap());
 
  Serial.print("Free Sketch Size = ");
  Serial.println(ESP.getFreeSketchSpace());
 
  Serial.print("Sketch Size = ");
  Serial.println(ESP.getSketchSize());
 
  Serial.println();
 
  uint8_t mac0[6];
  WiFi.macAddress(mac0);
  Serial.printf("WiFi StationAP Mac Address = %02X:%02X:%02X:%02X:%02X:%02X\r\n", mac0[0], mac0[1], mac0[2], mac0[3], mac0[4], mac0[5]);
 
  uint8_t mac1[6];
  WiFi.softAPmacAddress(mac1);
  Serial.printf("WiFi SoftAP Mac Address = %02X:%02X:%02X:%02X:%02X:%02X\r\n", mac1[0], mac1[1], mac1[2], mac1[3], mac1[4], mac1[5]);
}
 
void loop() {
 
}

コンパイル書き込み実行

コンパイルする前に、下図の様に「ツール」メニューの「 Flash Size 」を4MBにしてください。
このスケッチは、Arduino core for ESP8266 の設定で変わりますので、必ず最大値でコンパイルしてください。
ESP8266_Chip_Info_04

ESP-WROOM-02 の実装メモリが 2MB だったとしたら、おそらくこのメニューに 4MB は表示されないのではないかと思われます。

では、その設定が終わったら、スケッチをコンパイル書き込みしてください。

シリアルモニターを 115200 bps で起動して、こんな感じに表示されればOKです。

ESP8266_Chip_Info_03

スケッチサイズ等は、Arduino IDE のコンパイルメッセージ表示とは多少異なりますが、概ねの目安ができますのでこの情報は良いですね。

まとめ

ハードウェアを販売している業者の方々は、今回の件は大変だろうと思います。
ホントに同情します。

このことは ESP-WROOM-32 でも有り得ることなので、十分注意しないといけないですね。
後日、ESP-WROOM-32 のチップ情報もこのブログで紹介する予定です。

ということで、今回はここまでです。

ではまた・・・

mgo-tec電子工作 関連コンテンツ ( 広告含む )

スポンサーリンク

Amazon.co.jp 当ブログのおすすめ








投稿者:

mgo-tec

Arduino , ESP32 ( ESP-WROOM-32 ) , ESP8266 ( ESP-WROOM-02 )等を使って、主にスマホと連携した電子工作やプログラミング記事を書いてます。ライブラリも作ったりしてます。趣味、独学でやってますので、動作保証はしません。 電子回路やプログラミングの専門家ではありません。 畑違いの仕事をしてます。 でも、少しだけ電気の知識が必要な仕事なので、電気工事士や工事担任者等の資格は持ってます。

「ESP-WROOM-02 ( ESP8266 ) チップ・メモリ・MACアドレス情報確認方法」への5件のフィードバック

  1. スケッチの公開ありがとうございます。
    残念ながら実装されているチップの情報ではなく、ビルドするときのIDEオプション設定が反映されてしまっているようです。「ツール」メニューの Flash Size: オプションに2M(1M SPIFFS)を選んでビルドすると、
    Flash Chip Size = 2097152 byte
    となり、同じもので Flash Size: を4M(3M SPIFFS)を選んでビルドしなおすと、
    Flash Chip Size = 4194304 byte
    になりました。

    1. E直虎さん

      記事をご覧いただきありがとうございます。

      すいません。
      「ツール」メニューの設定を明記するの忘れてました。
      それと、実装メモリのサイズではないですね。
      Arduino IDE の設定で変わってしまいます。
      最大値設定でコンパイルしないと意味ないですね。
      早速記事を修正したいと思います。
      ご指摘ありがとうございました。
      m(_ _)m

  2. いろいろ参考にさせてもらっている つ★ です.

    この件ですが,Arduino IDEのESP8266のサンプルにある
    「CheckFlashConfig」を使えばラクチンでした♪

    このスケッチだと,設定しているメモリ情報の正誤まで
    判定してくれ,けっこー便利ですんで……いかがでしょう?

    1. つ★ さん

      記事をご覧いただき、ありがとうございます。

      これは知りませんでした。
      というか、Arduino IDE に ver 2.3.0 の ESP8266ボードをインストールしただけでは、サンプルスケッチが古いんですよね。

      GitHub 上では最新版になっていて、そのサンプルスケッチには
      ESP.getFlashChipRealSize();
      という関数が追加されていましたね。

      実際、これでやったら、確かに IDE の Flash サイズを変えても、4MB と表示されましたね。

      いや~・・・、やっぱり最新版の Arduino core for ESP8266 を使うべきだなぁと改めて思いました。
      とても有益な情報を教えていただき、ホントにありがとうございました。
      m(_ _)m

コメントを残す

メールアドレスが公開されることはありません。

*画像の文字を入力してください。(スパム防止の為)