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


ESP-12にはESP-12E/ESP-12Fの2種類が有ります。
(無印のESP-12もありますがeBayやAliExpressではなかなか入手できません)
違いは使われているFlushチップのメーカです。
ESP-12E WinbondのW25Q32BV
ESP-12F BergMicroのBG25Q32(名前が似ているので互換チップかも)



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



Arduino IDEを使ったスケッチの書き込み・実行はESP-13と 全く同 じです。

ESP-12E/ESP-12FではGPIO_9/GPIO_10が追加されていますが、実際に使えるのは(Tx/Rxを除いて)以下の8本で す。
・GPIO_2
・GPIO_4
・GPIO_5
・GPIO_10
・GPIO_12
・GPIO_13
・GPIO_14
・GPIO_16

以下のスケッチで、これらのピンが使える事を確認しました。
GPIO_9を使うとリセットがかかります。
GPIO_10が使えてGPIO_9が使えない理由ですが、
GPIO 09 is connected to the flash and can't be used for normal I/O, even if it's available on a pin on modules like 201 and ESP-12E.
だそうです。
/*
 * Blink LED with ESP-12
 */

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

void setup() {
  delay(1000);
  Serial.begin(115200);
  numpins=sizeof(pins)/4;
  Serial.print("Start numpins=");
  Serial.println(numpins);
  for (int i=0;i<numpins;i++) {
    pinMode(pins[i], OUTPUT);     // initialize onboard LED as output
    digitalWrite(pins[i], LOW);   // turn off LED with voltage 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);   // turn off LED with voltage LOW
  }
  digitalWrite(pins[pin], HIGH);  // turn on LED with voltage HIGH
  pin++;
  if (pin == numpins) pin=0;
  delay(1000);                    // wait one second
}

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

void setup() {
  pinMode(OnBoardLed, OUTPUT);  // initialize onboard LED as output
}

void loop() {
  digitalWrite(OnBoardLed, HIGH);  // turn on LED with voltage HIGH
  delay(1000);                      // wait one second
  digitalWrite(OnBoardLed, LOW);   // turn off LED with voltage LOW
  delay(1000);                      // wait one second
}

こ ちらにESP-12EのReverse engineered schematic(非公式版)があります。
チップ上のLEDのGND側がGPIO_2に繋がっているので、スケッチ書き込み時のGPIO_2のPullUpはやはり不要だと思います。
なお、GPIO_10について「They can't used for application」と書かれていますが、これは間違いです。

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)が実装されています。


両端のチップ抵抗でGPIO_15をPullDown、CH_PDをPullUpしています。
真ん中のチップ抵抗はHT7333など、SOT-89のレギュレータ用みたいです。
このビデオの 4分20秒ぐらいのところに、HT7333 regulatorをはんだ付けしている画像があります。



変換基盤は以下の基準で選ぶといいでしょう
・GPIO_10を使いたい→IFB-ESP12E
・GPIO_10はいらないけどブレッドボードで使いたい→IFB-ESP12
・GPIO_10はいらないけど部品点数を少なくしたい→IFB1516-A

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