ESP-12E/ESP-12Fを使ってみる


ESP-12にはESP-12E/ESP-12Fの2種類が有ります。
無印の初代ESP-12もありますがeBayやAliExpressでは、もう流通していません。
違いは使われているSPI Flashチップのメーカと、オンボードのPCBアンテナの形状です。
ESP-12E WinbondのW25Q32BV
ESP-12F BergMicroのBG25Q32


左がESP-12F 右がESP-12E




ESP-12をブレッドボードで使う場合、ピッチ変換基盤が必要になります。
手元に以下の4種類の変換基盤があります。


左から
@AitendoのIFB1516-A(私はeBayで20円で買いました)
AAitendoのIFB2022-A
BAitendoのIFB-ESP12E
CAitendoのIFB-ESP12
これ以外に以下の変換基盤がありますが、ブレットボードでは使いにくいです。
DAitendoのIFB-ESP12-B

IFB1516-Aにはオンボードに3つのチップ抵抗(上から10K 0 10K)が実装されています。


上側のチップ抵抗でCH_PDをPullUp、下側のチップ抵抗でGPIO_15をPullDownしています。
真ん中のチップ抵抗は0オーム抵抗で、基板上のVCCとESPのVCCをショートしています。
裏面にはSOT89のレギュレータを取り付けるためのランドが有ります。
HT7333などのSOT-89のレギュレータを付けるときは、真ん中のチップ抵抗を外すと
基板上のVCCがレギュレータのVINに、ギュレータのVOUTがESPのVSSに繋がり、5V給電が可能になります。
こ ちらにHT7333 regulatorをはんだ付けしている画像があります。


IFB2022-AとIFB-ESP12EはSDIOピンのランドが有りますが、SDIOピンは使い道が無いので、私はもっぱらIFB- ESP12を使っています。



Arduino IDEを使ったスケッチの書き込み・実行は ESP-WROOM-02と 全く同 じです。
ESP-12はESP-WROOM-02と違って幅が狭いので、片側5穴のブレッドボードで仮組することができます。


SDIOピンは使い道が有りません。


サンハヤトのICB-288Vを使うとこの様になります。


ESP-12E/ESP-12FではGPIO_9/GPIO_10が追加されていますが、これらはSPI Flashに繋がっているので、GPIOとして実際に使えるのは(Tx/Rxを除いて)以下の9本で す。
・GPIO_0(※1)
・GPIO_2(※1)(※2)
・GPIO_4
・GPIO_5
・GPIO_12
・GPIO_13
・GPIO_14
・GPIO_15(※1)
・GPIO_16

(※1)GPIO_0、GPIO_2、GPIO_15は起動モードの選択ピンとして使われます。
ファーム書き込み時にはPullUpやPullDownしておく必要がありますが、出力ポートとしては普通に使うことができます。
(※2)モジュール上のLEDと反転動作します。

以下のスケッチで、これらのピンをディジタル出力で使える事を確認しました。
GPIO_6/7/8/9/10/11はフラッシュメモリとの接続用で、他の目的には使用できません。
GPIO_9やGPIO_10にアクセスするとリセットがかかります。
/*
 * Blink LED with ESP-12
 */

int pins[] = { 0, 2, 4, 5, 12, 13, 14, 15, 16 };
int numpins;

void setup() {
  delay(1000);
  Serial.begin(9600);
  numpins=sizeof(pins)/4;
  Serial.print("Start numpins=");
  Serial.println(numpins);
  for (int i=0;i<numpins;i++) {
    pinMode(pins[i], OUTPUT);
    digitalWrite(pins[i], LOW);
  }
}

void loop() {
  static int pin=0;

  Serial.print("pin=");
  Serial.println(pins[pin]);
  for (int i=0;i<numpins;i++) {
    digitalWrite(pins[i], LOW);
  }
  digitalWrite(pins[pin], HIGH);
  pin++;
  if (pin == numpins) pin=0;
  delay(1000);
}

ESP-12にはモジュール上にLEDが実装されています。
以下のスケッチでモジュール上のLEDをLチカすることができます。GPIO_2と反転動作(HIGHで消灯、LOWで点灯)します。
/*
 * Blink On Board LED with ESP-12
 *
 * 反転動作(HIGHで消灯 LOWで点灯)となる
 *
 */
#define OnBoardLed 2

void setup() {
  pinMode(OnBoardLed, OUTPUT);
}

void loop() {
  digitalWrite(OnBoardLed, HIGH);
  delay(1000);
  digitalWrite(OnBoardLed, LOW);
  delay(1000);
}

以下のスケッチで、これらのピンをディジタル入力で使える事を確認しました。
GPIO_0、GPIO_2、GPIO_15は起動モードの選択ピンとして使われます。
PullUpやPullDownしておく必要がありますので、入力ピンとしては使いにくいです。
*
 * Digital Read with ESP-12
 */

int pins[] = { 0, 2, 4, 5, 12, 13, 14, 15, 16 };
int numpins;

void setup() {
  delay(1000);
  Serial.begin(9600);
  numpins=sizeof(pins)/4;
  Serial.print("Start numpins=");
  Serial.println(numpins);
  for (int i=0;i<numpins;i++) {
    pinMode(pins[i], INPUT);
  }
}

void loop() {
  static int pin=0;
  int data;

  Serial.print("pin=");
  Serial.print(pins[pin]);
  data=digitalRead(pins[pin]);
  Serial.print(" data=");
  Serial.println(data);
  pin++;
  if (pin == numpins) pin=0;
  delay(1000);
}



最近、ESP-12E、ESP-12Fを買い増ししましたが、気になる事が有ります。
こちらは全てESP-12Eとして売られていたものですが、ロゴが全て違います。


左のロゴはAI-Thinkerのロゴ、真ん中のロゴはDOITのロゴ、右のロゴはEspressifのロゴです。
DOIT(Doctors of Intelligence & Technology company)は最近よく見かけるベンダーで、こちらに公式の WiKiが有り、
ESP-12Eも記載されています。
問題は右の製品で、一見問題なさそうに見えますが、Espressifは今まで一度もESP-12をリリースした形跡が有りません。
またVENDORのマーキングも無しです。

裏面はこのようになっています。


改めて手持ちのESP-12Fを調べてみたら、こちらも3種類のロゴが有りました。


裏面はこのようになっています。


Flash情報を読み出してみました。
AI-Thinker ESP-12E
getFlashChipId=1640EF getFlashChipSizeByChipId=4194304Bytes[4MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]

DOIT ESP-12E
getFlashChipId=16301C getFlashChipSizeByChipId=0Bytes[0MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]

Espressif ESP-12E
getFlashChipId=1640EF getFlashChipSizeByChipId=4194304Bytes[4MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]



AI-Thinker ESP-12F
getFlashChipId=1640E0 getFlashChipSizeByChipId=4194304Bytes[4MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]

DOIT ESP-12F
getFlashChipId=164020 getFlashChipSizeByChipId=0Bytes[0MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]

Espressif ESP-12F
getFlashChipId=1640EF getFlashChipSizeByChipId=4194304Bytes[4MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]


各ChipIDの詳細は以下の通りです。
Expressifマーキングのモジュールはクローンの様ですが、最も信頼性の高いWinbondのFlashがビルトインされていて、問題なく 使えます。
ChipID ベンダー 製品名
1640EF Winbond W25Q32
16301C EON Silicon Devices EN25Q32B
1640E0 BergMicro BG25Q32
164020 XMC XM25QH32B



さらに怪しいESP-12F/ESP-12Eを見つけたので、興味本位で入手しました。
右はAI-Thinkerの製品ですが、左が今回入手したESP-12Eで、完全なコピー商品です。


裏面はほとんど同じですが、AI-Thinkerのほうが文字が少し細いです。


こちらは同時に入手したESP-12Fです。


こちらも裏はほとんど同じです。


Flash情報を読み出してみました。
コピーのESP-12Fはどうやってもファームを書き込めませんでした。
その後、コピーのESP-12Eも死にました。
こんなの売っちゃダメです。
ESP-12E
getFlashChipId=1640EF getFlashChipSizeByChipId=4194304Bytes[4MBytes] getFlashChipRealSiz=4194304Bytes[4MBytes]
その後死亡

ESP-12F
ファーム書き込めず

こちらではESP-12Sを紹介しています。