WiFiNINAライブラリ (2) WiFi Web Server

 Arduino UNO WiFi Rev.2マイコン・ボードを使い、WiFiNINAのサンプル・スケッチのWiFi Web Server を動かします。

 サンプルWiFiWebServer.inoを選択すると、本体のスケッチと、もう一つarduino_secrets.hが開きます。こちらのファイルにWi-Fiのアクセス・ポイントのSSIDとパスフレーズを記入します。

#define SECRET_SSID "Buffalo-G-20EA"
#define SECRET_PASS "*********"

WiFi Web Server を動かす

 コンパイル、書き込みをしたときのシリアルモニタの表示です。DHCPによってArduino UNO WiFiにふられたIPアドレスが表示されます。

 PCのWebブラウザのURL欄に表示されたIPアドレスを入れて、Arduino UNO WiFiのWebサーバにアクセスします。アナログ・ポートの読み取った値が表示されます。
 上記の画面には、クライアントPCからWebサーバーにアクセスしたときのhttpのやり取りが記録されています。1回のアクセスは、「new client」から「client disconnect」までのやりとりです。

利用した関数

Serverクラス

  •  WiFiServer() 指定したポートで接続を待つ
  •  begin() 着信接続の待機を開始
  •  available() サーバに接続されていて読み取り可能なデータをもつクライアントを取得

WiFiクラス

  •  status() 接続時のステータス
  •  begin() 初期化
  •  SSID() アクセス・ポイントのSSID
  •  localIP() DHCPでふられたWi-Fiアドレス
  •  RSSI() 信号強度

Clientクラス

  •  WiFiClient() 指定されたインターネットIPアドレスとポートに接続できるクライアントを作成
  •  connected() クライアントは接続されている
  •  available() 接続先のサーバによってクライアントに書き込まれたデータ量を返す
  •  read() サーバから受信した次のバイトを読み込む
  •  println() サーバにデータ(ASCII文字)を出力し、その後改行する。
  •  print() サーバにデータ(ASCII文字)を出力
  •  stop() サーバとの接続を切る

ステータスを増やす

 このスケッチでは、SSID、IPアドレス、信号強度を表示しました。これに加えて、

  • MACアドレス WiFi.macAddress()
  • Gatewayアドレス WiFi.gatewayIP()
  • サブネット・マスク WiFi.subnetMask()
  • 時刻(1970/1/1からの) WiFi.getTime()

 上記の項目を追加したステータス関数printWifiStatus()です。

void printWifiStatus() {
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your board's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
// print the received signal strength:
long rssi = WiFi.RSSI();
Serial.print("signal strength (RSSI):");
Serial.print(rssi);
Serial.println(" dBm");
byte mac[6];
WiFi.macAddress(mac);
Serial.print("MAC: "); Serial.print(mac[5],HEX);
Serial.print(":"); Serial.print(mac[4],HEX);
Serial.print(":"); Serial.print(mac[3],HEX);
Serial.print(":"); Serial.print(mac[2],HEX);
Serial.print(":"); Serial.print(mac[1],HEX);
Serial.print(":"); Serial.println(mac[0],HEX);
IPAddress gateway = WiFi.gatewayIP();
Serial.print("GATEWAY: ");
Serial.println(gateway);
IPAddress subnet = WiFi.subnetMask();
Serial.print("NETMASK: ");
Serial.println(subnet);
Serial.println(WiFi.getTime());
}

 実行結果です。WiFi.getTime()の結果は0で、取得を失敗したようです。

接続時のステータスWiFi.status() 

 上記のステータス情報は、個々の関数を呼んだ結果です。Wi-Fi接続時のステータスは、WiFi.status()で得られます。Wi-Fi接続を行って10秒待つ後に追加しました。

// wait 10 seconds for connection:
delay(10000);
Serial.println("Wi-Fi status " + String(WiFi.status()));

 3が返ってきました。

 正常につながったので、3はWL_CONNECTEDだと思われます。passを入れずにSSIDだけで接続しようとすると4が返りました。4はWL_CONNECT_FAILEDと思われます。SSIDを存在しない名前にすると同じく4です。WL_NO_SSID_AVAILではないです。

前へ

WiFiNINAライブラリ (1) ライブラリはESP32モジュール用

次へ

WiFiNINAライブラリ (3) WiFiPing ScanNetworks