ESP-32　ATコマンド　ピン設定方法　ESP-AT

ESP-32を通信用として、ATコマンドで動かす際に、ピンを変更したい人向けの記事です。
特に、私のように、RXTXを間違えた人必見です。

ESP-32は初期ファームウェアとして、ATコマンドで動くファームウェアが入っています。
これはGPIO17がTX、GPIO16がRXとなるようになっています。

TX⇔RX
とつなぐために、相手方を入れ子にする必要があります。
私はここをよく間違えます。

今回は、間違えた、GR-Mango用LoraWifiBoardのファームウェアを作ってみましょう

今回、GPIO17をRXへ、GPIO16をTXにします。
ポートのセッティングは、GithubのこのCSVに入っています。
https://github.com/espressif/esp-at/blob/master/components/customized_partitions/raw_data/factory_param/factory_param_data.csv
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/7bdc5d4a-6ecd-7776-7c6b-4ec2f28c2b2d.png)
それでは、ファームを作りましょう。
と言いたいところですが、これを作るには、Linux環境を用意する方が簡単です。
（Windowsでやろうとして3時間かかりましたが、できませんでした）

こんな人の為に、なんと仮想環境を用意してくれています
virtual machine (for windows 64bits user): http://download.espressif.com/esp_share/env/ubuntu1804.ova
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/1a7e2870-847a-ea9c-b456-bdee9112cd60.png)

これをダウンロードして、VMWareなどで動かします。
##make menuconfig
起動します。
いろいろなサイトを見たところ、ホームディレクトリにespディレクトリを作りその中にesp-atのディレクトリを作るようです。

ターミナルを起動します。

```
mkdir esp32
cd esp32
git clone https://github.com/espressif/esp-at
cd esp-at
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/16a2ae34-e88e-3ec1-ff0c-4e755ffd1de1.png)

ここで、make menuconfigと入れます。
以下はターミナルを立ち上げなおしたのでesp32は不要です。

```
cd esp32/esp-at
make menuconfig
```
と入れると、画面のようなGUIのセッティング情報が出てきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/e2c5ec64-2ef1-9b3f-8b43-1ee6a519712c.png)
ここで、必要な方は設定をいじってみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/01d76ec0-4082-b7a9-6a2e-b30645a6db31.png)

##factory_param_data.csvの設定
私は、今回のピン設定のみを行います。
ピン設定は、
esp-at/tree/master/components/customized_partitions/raw_data/factory_param
の中のfactory_param_data.csvです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/c178acee-9707-96f4-beab-a0e4f7d17300.png)
Ubuntuのエクスプローラーで、素直に開けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/390bd22b-de92-8187-57d5-eafc20e44259.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/1e478ebd-7d08-a383-4979-4405f0b2a94d.png)
そして、ピン設定を変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/f432d45b-c6c1-9796-a5cc-8d5b01dfe52b.png)
Saveして終了します。

##コンパイル
最後に、ターミナルで

```
make
```
でコンパイルを開始します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/faaae066-a723-b6d9-c910-6dffd2f8ffa8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/f340a138-5022-1727-b821-e6b2df495c82.png)

今回、必要なのはfactory_param.binになります。
保存場所はesp-at/build/customized_partitions/factory_param.binです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/62dd8b8e-0484-7c29-15ea-9b9550fabf54.png)
純粋なLinux環境ですと、このまま書き込み可能ですが、仮想環境の場合、少し面倒なので、
ファイルをWindows環境へコピーしてください。

##Flash Download Tools
ここからは、WindowsのFlash Download Toolsを使います。
まず、Flash Download ToolsとATファイルをダウンロードします。

###Flash Download Tools (ESP8266 & ESP32)
https://www.espressif.com/en/support/download/other-tools
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/5d7e3ac9-65c7-45f1-67db-0a073c4d6b45.png)
###ESP32-WROOM-32 AT Bin V2.0
https://www.espressif.com/en/support/download/at
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/90f19b75-d155-e710-a6dc-5c60150a5e89.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/0794190c-7deb-f7fc-1879-91e7cdbead5b.png)
この際に、先ほど作成したfactory_param.binを読み込めるようにしておきます。

##書き込み
Flash Download Toolsを起動し、ESP-32を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/313c50c5-76a7-928a-03dd-453825d9bdeb.png)

必要な項目を入れていきます。
四角をクリックし、ファイルを選択、
右の＠以下に書き込む番地を指定し、
一番左のチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/77e0c173-5913-c8db-6d43-faa2334d2bee.png)

私は以下の構成にしました。

--flash_mode dio --flash_freq 40m --flash_size detect 
0x1000 bootloader/bootloader.bin 
0x20000 at_customize.bin 
0x30000 customized_partitions/factory_param.bin 
0xf000 phy_init_data.bin 
0x100000 esp-at.bin 
0x8000 partitions_at.bin

COMポートは、接続先を指定、BauDは115200で問題ありません。
以上を入力し、Startを押します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/b501eda9-414f-5b90-2fb4-d2e6d46c769d.png)
この時、必ずDownLoadモードにしておきます。
（GPIO0を押しながら、リセットを押し、最後にGPIO0を離す）

以上で、プログレスバーが進み、最後にFinishとなれば成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/285344/e2ff3188-61a2-89d0-60e7-946070e09f4a.png)
以上で、GPIOの設定が完了しました。
接続して、ATと打つとOKという返事が返って来れば設定が完了したことになります。

なお、作成したfactory_param.binはこちらで公開しています。
https://github.com/taisirou/esp32-AT-Pin-Cnfiguraion-for-change-GPIO16-17