WioTerminalでWiFi接続をする。【2021】
WioTerminalのWiFi/Bluetooth機能はRealtekのRTL8720という別のチップのためESP32に慣れてしまった私には少し難しく感じました。公式に手順があるのですが、2021/2現在の情報だと日本語では最新でなく、英語は分かりづらかったのでまとめておきます。
もくじ(Index)記事で利用した環境
ハードウェア
- WioTerminal
- RTL8720(ファームウェアバージョン v2.1.1-JP)
ソフトウェア
- Windows10 Pro 64bit
- VisualStudioCode v1.53.2
- PlatformIO 5.1.0
- Atmel SAM 5.1.1
- PlatformIO 5.1.0
- VisualStudioCode v1.53.2
RTL8720のファームウェアのアップデート
初期のATコマンドでやりとりしていた仕組みではなく、rpcに変更があったようでRTL8720のファームウェアを更新する必要があります。2021/2月現在の最新は2021/1/8リリースのv2.1.1です。
(1)RTL8720書き換え用のファームウェアをWioTerminalに書き込み
ややこしいですがRTL8720のファームウェアを書き換えるためには、まずATSAMD51を経由する必要があるのでWioTerminalのファームウェアを更新する必要があります。
①uf2ファイルをダウンロード
下記のリンクを開き、「rtl8720_update_v2.uf2」をダウンロードします。
Overview – Seeed Wiki (seeedstudio.com)
Chromeでダウンロードすると警告が出るようですが、「継続」を押すとダウンロードできます。
②PCに接続してダウンロードモード(Bootloaderモード)にする。
WioTerminalをPCに接続し、スイッチボタンを2回素早く下に押してBootloaderモードで起動します。するとUSBメモリがPCに接続されたようになります。
③uf2ファイルをドライブにコピー
①でダウンロードしたuf2ファイルを接続されたドライブにコピーします。するとすぐにWioTerminalが再起動して下記の画面が表示されます。
(2)ファームウェアのダウンロードと解凍
下記のリンクから、最新のファームウェアをダウンロードしてください。日本で使う場合は末尾に「-JP.zip」が付いているファイルを選びます。ダウンロードが完了したら適当なフォルダに解凍します。解凍したフォルダ名は「d:\firmware」と仮定します。
Releases · Seeed-Studio/seeed-ambd-firmware (github.com)
(3)ファームウェアの書き込み
こちらもツールを使います。GitHubから下記のようにCloneします。
mkdir work
cd work
git clone git clone https://github.com/LynnL4/ambd_flash_tool
cd ambd_flash_tool
Windows10の場合は「ambd_flash_tool.exe」を利用します。一旦eraseを行い、その後書き込みます。(2)で解凍したフォルダ名も使用します。
正常に完了するとSuccess!と表示されます。
ambd_flash_tool.exe erase
ambd_flash_tool.exe flash -d d:\firmware
WiFiに接続するサンプル(VSCode+Platformio.ini)
(1)ライブラリ
使用するライブラリが多いので間違えないように注意してください。(一部開発用ブランチのものもあります。)
- https://github.com/Seeed-Studio/Seeed_Arduino_rpcWiFi
- https://github.com/Seeed-Studio/Seeed_Arduino_rpcUnified
- https://github.com/Seeed-Studio/Seeed_Arduino_mbedtls のdevブランチ
- https://github.com/Seeed-Studio/Seeed_Arduino_SFUD
- https://github.com/Seeed-Studio/Seeed_Arduino_FreeRTOS
- https://github.com/Seeed-Studio/Seeed_Arduino_FS
●コピー用のplatformio.ini
[env:seeed_wio_terminal]
platform = atmelsam
board = seeed_wio_terminal
framework = arduino
monitor_speed = 115200
lib_deps = https://github.com/Seeed-Studio/Seeed_Arduino_rpcWiFi.git
https://github.com/Seeed-Studio/Seeed_Arduino_rpcUnified.git
https://github.com/Seeed-Studio/Seeed_Arduino_mbedtls#dev
https://github.com/Seeed-Studio/Seeed_Arduino_SFUD.git
https://github.com/Seeed-Studio/Seeed_Arduino_FreeRTOS.git
https://github.com/Seeed-Studio/Seeed_Arduino_FS.git
(2)main.cpp
下記のサンプルを利用すると接続できます。注意点は#include <SPI.h>を忘れないこと。
※ ssidとpasswordの値は変更してください。
#include <arduino.h>
#include <spi.h>
#include <rpcwifi.h>
const char* ssid = "YOUR SSID";
const char* password = "YOUR PASSWORD";
void setup() {
Serial.begin(115200);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("MY IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
}</rpcwifi.h></spi.h></arduino.h>
(3)実行
サンプルプログラムをビルドしてUploadすればWiFiに接続できます。シリアルモニターに下記のメッセージが表示されるのでIPアドレスを確認してください。
おわりに
ESP32と比べるとライブラリも多く、難しいと感じましたがなんとかつながりました。これで5GHz帯のWiFiが利用できるので今後も使っていきたいと思います。
もし記事の内容で分からない点や、古くなっている情報がありましたら、コメントかTwitterで連絡いただけると助かります。