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が追加されていますが、GPIOとして実際に使えるのは(Tx/Rxを除いて) 以下の9本で す。
・GPIO_0(※)
・GPIO_2(※)
・GPIO_4
・GPIO_5
・GPIO_12
・GPIO_13
・GPIO_14
・GPIO_15(※)
・GPIO_16

以下のスケッチで、これらのピンをディジタル出力で使える事を確認しました。
(※)GPIO_0、GPIO_2、GPIO_15は起動モードの選択ピンとして使われます。
PullUpやPullDownしておく必要がありますが、普通に出力ポートとして使うことができます。
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-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をはんだ付けしている画像があります。



変換基盤は以下の基準で選ぶといいでしょう
・SDIOピンを使いたい→IFB-ESP12E
・SDIOピンは使わない→IFB-ESP12
・PullUp/PullDown抵抗を減らしたい→IFB1516-A

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