05.Wio TerminalのWi-Fi Scan
05.Wio TerminalのWi-Fi Scan
Wi-Fiネットワークをスキャンするスケッチです。
最初上から表示しますが、下まで行くとスクロール表示します。
Seeed Wiki > Platform > Wio Terminal > Network > Wi-Fi の
https://wiki.seeedstudio.com/Wio-Terminal-Wi-Fi/
に出ているSTAモードのWi-Fiネットワークスキャンのスケッチを少し変更して日本語で画面表示してみました。
ステーション(STA)モードは、Wio Terminalを無線LAN子機として使うモードです。
スケッチ作成中、英数固定長のフォントでは漢字以外は表示できました。しかし、"02.Wio Terminal"の日本語表示で使用したefontではエラーが出てしまいましたので違うフォントを探してみました。
lgfxJapanGothicは全文字固定長のIPAゴシックで、軽量ライブラリです。フォントの表示行と今回のスケッチでのメモリ使用率を測定しました。
フォント 名 | フォントのFlash 容量(kB) | 表示行 | メモ リ使 用率(%) |
---|---|---|---|
lgfxJapanGothic_8 | 62 | 26 | 29 |
lgfxJapanGothic_12 | 99 | 18 | 37 |
lgfxJapanGothic_16 | 145 | 15 | 47 |
lgfxJapanGothic_20 | 198 | 12 | 58 |
lgfxJapanGothic_24 | 256 | 10 | 70 |
lgfxJapanGothic_28 | 308 | 8 | 82 |
lgfxJapanGothic_32 | 365 | 7 | 94 |
lgfxJapanGothic_36 | 430 | NG | NG |
lgfxJapanGothic_40 | 490 | NG | NG |
スケッチ
// NetScan.ino WiFiをScanし画面表示
#include <rpcWiFi.h> // Wi-Fi使用
#define LGFX_AUTODETECT // LovyanGFX対応機種を自動認識
#include <LovyanGFX.hpp> // LovyanGFXを使用
static LGFX lcd; // LGFXのインスタンスを作成
void setup() {
lcd.init(); // LCD初期化
lcd.setBrightness(64); // バックライト輝度(暗0-255明)
lcd.setFont(&lgfxJapanGothic_16); // フォント ゴシック固定長縦16ドット
lcd.setTextScroll(true); // 画面下端に到達後スクロール
lcd.setScrollRect(0, 0, lcd.width(), lcd.height());
// スクロール範囲(X,Y,W,H,スクロール後の色(省略時は変更なし)) (未指定時は画面全体)
lcd.setTextSize(1.0); // 文字サイズ(横縦幅倍数)
lcd.setTextColor(TFT_GREEN, TFT_BLACK); // (文字色,背景色)
lcd.setCursor(0, 0); // 画面左上から開始
WiFi.mode(WIFI_STA); // ステーションモード(子機) 今まで接続時はAPから切断
WiFi.disconnect(); // 現在のネットワークからWiFiシールドを切断
delay(100); // 0.1秒待つ
}
void loop() {
int n = WiFi.scanNetworks(); // 利用可能なWiFiネットワークをスキャンした検出数
if (n == 0) { // n=0の時
lcd.println("ネットワークが見つかりません"); // 表示
} else { // n>0の時
if (n > 14) n = 14; // nは1画面15行まで表示
lcd.println("no *暗号 (dBm) SSID"); // タイトル表示
for (int i = 0; i < n; ++i) { // 検出数分を表示
if (WiFi.RSSI(i) > -100) { // 表示は-100dBmより強い物のみ
lcd.printf("%02d", i + 1); // 検出番号
if (WiFi.encryptionType(i) == WIFI_AUTH_OPEN) {
lcd.print(" "); // 開放は" "と表示
} else {
lcd.print("*"); // 暗号化は"*"と表示
} // 暗号化の種類 WIFI_AUTH_OPEN, WIFI_AUTH_WEP ,WIFI_AUTH_WPA_PSK,
// WIFI_AUTH_WPA2_PSK,WIFI_AUTH_WPA_WPA2_PSK, WIFI_AUTH_WPA2_ENTERPRISE
lcd.printf("(%ld)", WiFi.RSSI(i)); // ルーターへの接続の受信信号強度(dBm)
lcd.println(WiFi.SSID(i)); // SSID表示
delay(10); // 10mS待つ
}
}
}
lcd.println(""); // 改行 1行開ける
delay(5000); // 5秒待つ スキャン間隔
}
* フラッシュメモリの47%を使用。