Wio TerminalをWi-Fiに繋ぐ

Wio Terminalは国内でもさまざまな場所で入手できるようになってきました。

- 秋月電子通商：http://akizukidenshi.com/catalog/g/gM-15275/
- スイッチサイエンス：https://www.switch-science.com/catalog/6360/
- マルツパーツセンター：https://www.marutsu.co.jp/pc/i/1633550/

Wio Terminalの付属品は、以下の写真の通りですが、マニュアルに日本語も書いてあるのがちょっとびっくりでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109992/0e55eb31-d1ce-0d19-e559-a9c9c22272aa.png)


今回は、Wi-Fiに繋ぐ手順を試してみます。

初めて触る方は、[Wio Terminalを触ってみた](https://qiita.com/jksoft/items/c544d73b54323064ed06)を参照ください。

手順はオフィシャルの[wikiページ](https://wiki.seeedstudio.com/Wio-Terminal-Network-Overview/)に掲載されていますが、ここでも簡単に手順を載せておきます。

# RTL8720のファームウェアアップデート
Wi-FiのチップであるRTL8720を最初にアップデートする必要があるようなので実施します。

1. [ファームウェア書き換え用のプログラム](https://files.seeedstudio.com/wiki/Wio-Terminal/res/rtl8720_update.zip)をダウンロード、解凍し、ArduinoIDEで開く
1. ファームウェア書き換え用のプログラムをWioTerminalに書き込む
1. [ファームウェア書き換え用のアプリケーション](https://files.seeedstudio.com/wiki/Wio-Terminal/res/ameba-image-Tool-v2.4.1.zip)をダウンロード、解凍する
1. [アップデートファームウェア](https://files.seeedstudio.com/wiki/Wio-Terminal/res/20200730-rtl8720d-images-v2.2.0.2.zip)をダウンロード、解凍する
1. ファームウェア書き換え用のアプリケーション`ImageTool.exe`を実行する
1. アプリケーションの以下の項目を設定
    * `Chip Select`を`AmebaD(8721D)`にする
    * `Serial`の`COM`をWio TerminalのCOMポートに設定
    * `Flash Erase`の`Addr`を`0x08000000`、`Size`を`2048`に設定
1. `Erase`をクリックし、`Falsh erase done!`が表示されたら完了
1. `Image Path`の`Browse`ボタンからダウンロードしたアップデートファームウェアの指定、`Address`を以下のように設定します
    * 1行目 `Image Path`：`km0_boot_all.bin`、`Address` : `0x08000000`
    * 2行目 そのまま
    * 3行目 `Image Path`：`km4_boot_all.bin`、`Address` : `0x08004000`
    * 4行目 `Image Path`：`km0_km4_image2.bin`、`Address` : `0x08006000`
1. 1、3、4行目のチェックボックスにチェックを入れる
1. `Download`をクリックし、`All images are sent successfully!`が表示されればRTL8720のファームウェアアップデートは完了です。

# ライブラリのインストール
以下のライブラリが必要になりますので、ZIPでダウンロードしてArduinoIDEに取り入れます。（リンクはすべてZIPファイルへのリンクになってます。）

- [Seeed_Arduino_atWiFi](https://github.com/Seeed-Studio/Seeed_Arduino_atWiFi/archive/master.zip)
- [Seeed-Arduino-FreeRTOS](https://github.com/Seeed-Studio/Seeed_Arduino_FreeRTOS/archive/master.zip)
- [Seeed_Arduino_atUnified](https://github.com/Seeed-Studio/Seeed_Arduino_atUnified/archive/master.zip)
- [Seeed-Studio/esp-at-lib](https://github.com/Seeed-Studio/esp-at-lib/archive/develop.zip)
- [Seeed_Arduino_mbedtls](https://github.com/Seeed-Studio/Seeed_Arduino_mbedtls/archive/master.zip)
- [Seeed_Arduino_atWiFiClientSecure](https://github.com/Seeed-Studio/Seeed_Arduino_atWiFiClientSecure/archive/master.zip)

# Wi-Fiに繋ぐ
Wi-Fi周りの扱いやTCP、Http通信の行い方はオフィシャルの[Wikiページ](https://wiki.seeedstudio.com/Wio-Terminal-Wi-Fi/)に書いてあります。

簡単にWi-FiのAPに繋ぐサンプルを試してみます。

### プログラム

`ssid`と`pass`はWi-FiのAPに合わせて変更してください。

```cpp
#include "AtWiFi.h"

const char* ssid = "ssid";
const char* password =  "pass";

void setup() {
    Serial.begin(115200);
    while(!Serial); // Wait for Serial to be ready
    delay(1000);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(2000);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.println("Connecting to WiFi..");
    }
    Serial.println("Connected to the WiFi network");
    Serial.print("IP Address: ");
    Serial.println (WiFi.localIP()); // prints out the device's IP address
    }

void loop() {

}
```

## 結果
Wi-Fi APに接続し、IPアドレスが割り当てられたことがシリアルモニタに表示されました。
実はこの手のボードには珍しく5GHzのWi-Fiに対応しています。
これを試した時も5GHzのWi-Fi APに繋ぎました。

```
Connecting to WiFi..
Connecting to WiFi..
Connecting to WiFi..
Connected to the WiFi network
IP Address: 192.168.2.181
```

WikiではHttps通信の例まで記載されていますが、ちょっと扱いづらいです。
ほかにHttpClientレベルのライブラリが無いかと探しましたが、Wio Terminalに合うものは見つかりませんでした。気が向いたら作りたいと思います。
とはいえ、Wio Terminalに搭載された機能を使うサンプルは[オフィシャルのWiki](https://wiki.seeedstudio.com/)(左のメニューからPlatform - Wio Terminal)が一番情報量が多いと思うので、いろいろ参考になります。