ESP8266(ESP-WROOM-02)直ちに LED と タクトスイッチ 装着

 マイコン界で、いま最も熱いとされるIoTモジュール ESP-WROOM-02(以下 ESP8266)を少し前に マイクロテクニカさん@アマゾン でポチっておりましたが、ようやく開封の儀を・・・
 今は秋月でも扱い始めてますが、日本国内で合法的に使用できるWiFiモジュールが内蔵されて Arduino でプログラミングできる 32ビットマイコン が、変換基板つきで超破格値 650円!!! (モジュール単体だったら550円)


 いやはや中国には敵いませんな、これじゃ。。。


 さて、こいつを使って ATコマンドで遊んだりプログラムをパソコンから流し込むにはシリアル接続しないといけないのですが、シリアル接続=RS232C ではなくて、TTL 信号レベルでないとダメです。
 持ってない人はアマゾンで PL2303 で検索して 出てくるテキトーな、USB-シリアル を準備しましょう。


 基板タイプでなく、片方がピンコネクタで出ている こんなやつ がお勧めです。
 私の買ったタイプは

5V(USBより給電)
GND
TxD(ロジックレベル 3.3V)
RxD(ロジックレベル 3.3V)

でした。


 ESP8266 は 3.3V で動作するので、USB の 5V 直結ではダメで、3.3V を作る必要があります。
 3.3V 500mA もあればいいらしいのですが、手持ちの TA48033S を使いました。


http://dl.ftrans.etr.jp/?3efc69e5b3b8444bb9ef491628fdd1ba46d88fd2.jpg http://dl.ftrans.etr.jp/?56a0c63b65cc43cf9926983b4256b8a4f70feb1a.jpg


 TA48033S のキット には入力側用のセラミックコンデンサ(0.1μF)と出力側用の電解コンデンサ(47μF)が付属してましたが、入力側は 0.1μF では心許なかったので、1μF のセラコン に、出力側は 16ホール基板 に納めたいがため 100μF のチップセラコン に、 それぞれ変更して使いました。


 電源を準備しただけでは、まだ動きません。
 ESP8266 基板のほうも少し手を加える必要があります。
 いくつかのピンを指定された状態にして起動するようにしないといけません。

Mode GPIO 15 GPIO 0 GPIO 2
UART Download Mode
自作プログラムを仕込むモードで起動したいとき
Low Low High
Flash Boot Mode
仕込んだプログラムで起動したいとき(通常使用時)
Low High High

 このほか EN ピンと RST ピンとを High にし、かつ RST ピンはボタンで Low に落とせるようにしておく必要があります。
(いわゆるリセットボタン)


 EN ピンと GPIO-15 と GPIO-2 とは固定で大丈夫なのに対して、RST ピンと GPIO-0 だけはスイッチを付けた方が便利ですねぇ・・・ってことで下の回路図。


http://dl.ftrans.etr.jp/?4ae45ccba4494c8a9d53b2a1dcfe4dd9df804836.png
(追記) 当初は LED の電流制限抵抗を 100Ω で回路図を載せましたが、VF が小さな LED を使うと、ESP8266 の定格最大出力 12mA を超える可能性があるため、念を期して 200Ωに差し替えました。


 スイッチ記号が2つ描かれていますが、どちらもタクトスイッチです。
 RST はともかく、GPIO-0 のほうはジャンパーピンやトグルスイッチを使われている方が多いと思いますが、ESP8266 は起動時の短時間だけ Low/High を見て MODE 判定しているだけで、ずっと Low/High をキープする必要ないみたいなので、敢えてタクトスイッチをチョイス。


 普通に起動すると、仕込んだプログラムが動き出します。
 GPIO-0 に繋がったタクトスイッチを押しながら起動すると、プログラム書き込みモードになる、という寸法です。
 起動後の GPIO-0 は普通に入出力ピンとして使えますので、起動モードの選択用に用意したタクトスイッチを入力に使うことも出来て一石二鳥です。


 次に GPIO-15 の付近。
 起動時は必ず Low にしておかないといけないという、こちらも自由に使いづらいピンなのですが、単純に 10kΩ でプルダウンさせておくのも惜しいので、LED でも付けておきましょうか。
 私のとこでは、LED にパラった 10kΩ を省略しても正常動作しましたが、たまたま動いただけだと思うので、回路図では省略せずに記入しておきます。

黒いのがリセットボタン(千石にあった背の高いスイッチ) 白いのがプログラムからも使えるモード切替ボタン
http://dl.ftrans.etr.jp/?4d201fbe32b54211a4575dff05feaaec6c575585.jpg http://dl.ftrans.etr.jp/?e36c8c23f53d4038bb0fdc6e3c7a33184e7d1456.jpg


 白いボタンを押しながら起動するとプログラム書き込みモードになる、という寸法です。
 起動後は負論理のスイッチとして機能します。


 サンプル

void setup() {
  // put your setup code here, to run once:
  pinMode(0,INPUT);
  pinMode(15,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly;
  digitalWrite(15,digitalRead(0));
}
普段は LED 点灯 ボタンを押すと消灯
http://dl.ftrans.etr.jp/?7002292b159948e7947d32266245db463f8c6841.jpg http://dl.ftrans.etr.jp/?38a78ae44f9f46019f498eba4e1e5a285db0ab3d.jpg


 普段が点灯でなくて消灯にしたい人は

void loop() {
// put your main code here, to run repeatedly;
//digitalWrite(15,digitalRead(0));
  digitalWrite(15,!digitalRead(0));
}


 と入力を反転させてやってくださいませ。


(追記)
 Arduino 環境の構築方法に関しては、分かりやすく書いて下さっている方がおられて、とても分かりやすいのでそちらをご覧下さい。

技適済み格安高性能Wi-FiモジュールESP8266をArduinoIDEを使ってIoT開発する為の環境準備を10分でやる方法


(追記)
http://dl.ftrans.etr.jp/?6e0ddac1b0324964b59a9f3a649835783f8d837f.jpg
 秋月の基板セットな方は右のように基板内に抵抗を実装してしまうと楽ちんかと思われます。


(追記)2015/10/16
 当記事の回路を使って ESP8266 割り込み使って Lチカ させてみました。