ESP-WROOM-02でATコマンドを実行するまで【ハッキンカソンその1】

# この記事で書いていること

電子工作、組み込み経験の浅い私が`ESP-WROOM-02`でATコマンドを実行する事ができたので、そこまでのまとめ。

ここまでに、ネット上の複数の記事を参考にさせていただきつつも、初心者ならではのポイントにハマったので誰かの役に立てばと思い書いてます。

あと、ハッキンカソンの記録その1でもあります。

# 環境と事前準備

## 環境

開発環境はこちら。

1. ノートPC, Windows10 Home
1. Arduino IDE 1.8.0

## 材料

材料はこちら。(一部道具を含む)

| 品名 | 購入元 | リンク | 個数 | 備考 |
|:-:|:-:|:-:|:-:|:-:|
| ESP-WROOM-02  | SWITCH SCIENCE | [ESP-WROOM-02ピッチ変換済みモジュール《フル版》](https://www.switch-science.com/catalog/2347/) | 1 | [ブレッドボード使うならこっちがオススメ](https://www.switch-science.com/catalog/2580/) |
| USBシリアル変換ケーブル | 秋月電子通商 | [ＦＴＤＩ　ＵＳＢ・シリアル変換ケーブル（３．３Ｖ）](http://akizukidenshi.com/catalog/g/gM-05840/) | 1 | [ブレッドボード使うならこっちがオススメ](http://akizukidenshi.com/catalog/g/gM-08461/) |
| 電池ボックス | 秋月電子通商 | [電池ボックス　単３×３本　リード線](http://akizukidenshi.com/catalog/g/gP-02667/) | 1 | なんでもいいです |
| ニッケル水素バッテリー | Amazon | [エネループ単3](https://www.amazon.co.jp/%E3%83%91%E3%83%8A%E3%82%BD%E3%83%8B%E3%83%83%E3%82%AF-eneloop-%E5%8D%983%E5%BD%A2%E5%85%85%E9%9B%BB%E6%B1%A0-%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%80%E3%83%BC%E3%83%89%E3%83%A2%E3%83%87%E3%83%AB-BK-3MCC/dp/B00C48TTKS) | 3 | いわゆる充電池。他の種類では電圧が異なりESP-WROOM-02を破損する可能性あり |
| ブレッドボード | SWITCH SCIENCE | [普通のブレッドボード](https://www.switch-science.com/catalog/313/) | 1 | - |
| ジャンパワイヤ | 秋月電子通商 | [ブレッドボード・ジャンパーワイヤ　ＥＩＣ－Ｊ－Ｓ](http://akizukidenshi.com/catalog/g/gP-02315/) | 適宜 | なんでも |
| ピンヘッダ | SWITCH SCIENCE | [普通のピンヘッダ10本セット](https://www.switch-science.com/catalog/92/) | 1 | なんでも |

## 道具

道具はこちら。

| 品名 | 備考 |
|:-:|:-:|
| ハンダゴテ | 無いとムリ。コテ先は細いほうが吉 |
| ハンダ | 適当に |
| テスター | あったほうが吉 |

## 開発環境のセットアップ

下記の記事を参考にさせていただきました。

[ESP-WROOM-02](http://ht-deko.com/arduino/esp-wroom-02.html)

セットアップのブロックを実施します。

# 作業開始前に

まず、`ESP-WROOM-02`はモジュール単体で購入できますが、電子工作するので最低限ブレッドボードに乗せる必要があります。

今回はスイッチサイエンスの[ESP-WROOM-02ピッチ変換済みモジュール《フル版》](https://www.switch-science.com/catalog/2347/)を購入しました。何も考えずに。

結果、主に下記2つが足りませんでした。

1. USBシリアル変換ケーブル
1. 電源

## USBシリアル変換ケーブル

USBシリアル変換ケーブルは、PCとESP-WROOM-02間の通信に使用します。

ESP-WROOM-02との通信はシリアル通信で行う必要がありますが、最近のPCにはシリアルポートが無いので、USBポートにシリアル変換ケーブルを接続することでシリアル通信します。

コレがなかったのでググったらUSBケーブルの先がピンになっているだけなので自作できるじゃん。と思ったのですが、実はUSBコネクタ部分に変換モジュールが入ってました。なので素人に自作できる代物ではありませんでした。素直に購入しましょう。3.3vで使えるものを選びます。

![ＦＴＤＩ　ＵＳＢ・シリアル変換ケーブル（３．３Ｖ）](http://akizukidenshi.com/img/goods/C/M-05840.JPG)

ちなみに、[ブレッドボードに載せるタイプ](http://akizukidenshi.com/catalog/g/gM-08461/)もあります。

![超小型ＵＳＢシリアル変換モジュール](http://akizukidenshi.com/img/goods/C/M-08461.jpg)


## 電源

ESP-WROOM-02の電源は3.3Vなのですが、そんなことも知らなかったので、PCからUSBで給電すればいいや。と思ってました。届いたモノを見て困りました…が！

電池でいいや。と思いたち、1本の電圧が1.2Vのニッケル水素バッテリー。

いわゆる充電池を3本直列にすれば3.6V前後になるので家に転がっていた単3x4本のバッテリーボックスを加工して3本にしました。(+、－逆でした…)

![battery.jpg](https://qiita-image-store.s3.amazonaws.com/0/135842/8ce8b2ee-96d0-2ae8-9f9f-7abd6545da8a.jpeg)


ということで、なんでもいいから3.3Vの電源が必要です。と思ったものの、そうも行かないらしいです。

[こちらの記事](https://www.mgo-tec.com/blog-entry-43.html)によると、電源容量が重要らしいです。

なので、[しっかりとした電源](http://akizukidenshi.com/catalog/g/gK-09980/)を準備したほうが無難かもしれません。

![ＬＸＤＣ５５使用ＤＣＤＣコンバータキット（３．３Ｖ）](http://akizukidenshi.com/img/goods/C/K-09980.jpg)


# 組立作業

はんだ付け、組み立て、配線します。

## ESP-WROOM-02にピンヘッダをはんだ付け

まずは、ESP-WROOM-02にピンヘッダをはんだ付けしましょう。

これを…

![01.jpg](https://qiita-image-store.s3.amazonaws.com/0/135842/5b6d799b-4c7b-ad0b-67d8-f8e41bbb2fea.jpeg)

こう！

![02.jpg](https://qiita-image-store.s3.amazonaws.com/0/135842/5c6874ed-f026-2446-35d6-edf554616d9c.jpeg)

## 配線

配線します。

完成

![配線完成.JPG](https://qiita-image-store.s3.amazonaws.com/0/135842/87feb50e-e2d5-35ec-3d02-1e1e289b9e5b.jpeg)

詳細は、下記の記事を参考にさせていただきました。

[ESP8266にArduinoスケッチを書き込んでUDPデータ送受信](http://4009.jp/post/2016-04-25-esp-wroom-02/)

この記事中の「ESP-WROOM-02ピン配置」の通りに配線します。

ここで注意！

知見のない私は、記事の内容を見落とし、USBシリアル変換アダプタ側のTXDと、ESP-WROOM-02側のTXD、同様にRXD同士を接続しました。

が、これは間違い！クロスして接続しなければなりません。なので、TXDとRXD、RXDとTXDを接続します。


# 起動

実はここが一番ハマりました。

配線までできて正常に起動するまでに幾度となく様々な手順を試行して、やっと確実な手順が見つかりました。下記のとおりです。


1. シリアル変換ケーブルのGND,TXD,RXDを外しておく
1. USBシリアル変換ケーブルのUSB(PC)側を接続
1. デバイスマネージャで認識したCOMポートを確認
1. AruduinoIDEを起動して、ツール->シリアルポートで確認したCOMポートを指定
1. ESP-WROOM-02に電源を投入
1. ArduinoIDEのシリアルモニタを開く
1. シリアル変換ケーブルのGND,TXD,RXDを接続

これで、シリアルモニタに文字化けした文字が表示されるはず。これで完了。

シリアルモニタのテキスト入力ボックスに`AT`を入力、Enterすることで応答が得られれば起動完了です。

`ATAT+CIFSR` でIPアドレス、MACアドレスが確認できます。

そうならない場合… 残念ながら失敗です。

モードの設定、リセットが必要かもしれません。手順は下記の記事を参考にしました。

[ESP-WROOM-02のモードについて](http://4009.jp/post/2016-04-25-esp-wroom-02/)

# ATコマンドの実行

起動までくればあとはコマンドを投げる実行するばかりですが、トライ&エラーがありました。

SSIDのリストを取得するコマンド`AT+CWLAP`を実行したところエラーとなりました。

ググると下記の記事にてモードの設定が必要であることがわかりました。

[ESP-WROOM-02 AT+CWJAP ERROR](http://yk-memo.blogspot.jp/2016/01/esp-wroom-02-atcwjap-error.html)

```bash
AT+CWMODE_DEF=1
AT+CWLAP
```

これで、SSIDのリストが取得できました。

あとは、

```bash
AT+CWJAP="SSID","PASSWORD"
```

これでWiFiAPに接続できると思います。


全体を通してかなりの回数トライ&エラーを繰り返しているので、実際これだけで動作しない可能性がありますがご了承ください。

もし問題がある場合などにはご指摘ください。