WiFi Network

Класс WiFi

Класс WiFi содержит специфические для Wi-Fi функции, такие как инициализация сетевых настроек, а также подключение к сети и отключение от неё.

WiFi.begin()

Описание

Инициализирует сетевые настройки библиотеки WiFi и предоставляет текущий статус.

Синтаксис

WiFi.begin(ssid);
WiFi.begin(ssid, pass);
WiFi.begin(ssid, keyIndex, key);

Параметры

  • ssid: SSID (Service Set Identifier) — имя WiFi-сети, к которой вы хотите подключиться.

  • keyIndex: WEP-зашифрованные сети могут хранить до 4 различных ключей. Этот параметр указывает, какой ключ вы собираетесь использовать.

  • key: шестнадцатеричная строка, используемая в качестве кода безопасности для WEP-зашифрованных сетей.

  • pass: WPA-зашифрованные сети используют пароль в виде строки для обеспечения безопасности.

Возвращаемое значение

  • WL_CONNECTED при подключении к сети

  • WL_IDLE_STATUS при отсутствии подключения к сети, но с включённым питанием

Пример

#include <WiFi.h>

//SSID of your network
char ssid[] = "yourNetwork";
//password of your WPA Network
char pass[] = "secretPassword";

void setup()
{
 WiFi.begin(ssid, pass);
}

void loop () {}

WiFi.disconnect()

Описание

Отключает WiFi-шилд от текущей сети.

Синтаксис

WiFi.disconnect();

Параметры

нет

Возвращаемое значение

ничего

WiFi.config()

Описание

WiFi.config() позволяет настроить статический IP-адрес, а также изменить адреса DNS, шлюза и подсети на WiFi-шилде.

В отличие от WiFi.begin(), который автоматически настраивает WiFi-шилд на использование DHCP, WiFi.config() позволяет вручную задать сетевой адрес шилда.

Вызов WiFi.config() перед WiFi.begin() заставляет begin() настроить WiFi-шилд с сетевыми адресами, указанными в config().

Вы можете вызвать WiFi.config() после WiFi.begin(), но шилд будет инициализирован с помощью begin() в режиме DHCP по умолчанию. После вызова метода config() сетевой адрес будет изменён в соответствии с запросом.

Синтаксис

WiFi.config(ip);
WiFi.config(ip, dns);
WiFi.config(ip, dns, gateway);
WiFi.config(ip, dns, gateway, subnet);

Параметры

  • ip: IP-адрес устройства (массив из 4 байт)

  • dns: адрес DNS-сервера.

  • gateway: IP-адрес сетевого шлюза (массив из 4 байт). Необязательный: по умолчанию используется IP-адрес устройства с последним октетом, равным 1.

  • subnet: маска подсети (массив из 4 байт). Необязательный: по умолчанию 255.255.255.0.

Возвращаемое значение

Ничего

Пример

Этот пример показывает, как установить статический IP-адрес 192.168.0.177 для WiFi-шилда в локальной сети:

#include <SPI.h>
#include <WiFi.h>

// the IP address for the shield:
IPAddress ip(192, 168, 0, 177);

char ssid[] = "yourNetwork";    // your network SSID (name)
char pass[] = "secretPassword"; // your network password (use for WPA, or use as key for WEP)

int status = WL_IDLE_STATUS;

void setup()
{
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    while(true);  // don't continue
  }

  WiFi.config(ip);

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }

  // print your WiFi shield's IP address:
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());
}

void loop () {}

WiFi.setDNS()

Описание

WiFi.setDNS() позволяет настроить DNS-сервер (Domain Name System).

Синтаксис

WiFi.setDNS(dns_server1)
WiFi.setDNS(dns_server1, dns_server2)

Параметры

  • dns_server1: IP-адрес основного DNS-сервера

  • dns_server2: IP-адрес дополнительного DNS-сервера

Возвращаемое значение

Ничего

Пример

Этот пример показывает, как установить Google DNS (8.8.8.8). Вы можете задать его как объект IPAddress.

#include <SPI.h>
#include <WiFi.h>

// the IP address for the shield:
IPAddress dns(8, 8, 8, 8);  //Google dns

char ssid[] = "yourNetwork";    // your network SSID (name)
char pass[] = "secretPassword"; // your network password (use for WPA, or use as key for WEP)

int status = WL_IDLE_STATUS;

void setup()
{
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    while(true);  // don't continue
  }

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);

    // wait 10 seconds for connection:
    delay(10000);
  }

  // print your WiFi shield's IP address:
  WiFi.setDNS(dns);
  Serial.print("Dns configured.");
}

void loop () {
}

WiFi.SSID()

Описание

Получает SSID текущей сети.

Синтаксис

WiFi.SSID();
WiFi.SSID(wifiAccessPoint)

Параметры

  • wifiAccessPoint: указывает, из какой сети получить информацию.

Возвращаемое значение

Строка, содержащая SSID, к которому в данный момент подключён WiFi-шилд.

Строка, содержащая имя запрашиваемой сети.

Пример

#include <SPI.h>
#include <WiFi.h>

//SSID of your network
char ssid[] = "yourNetwork";
int status = WL_IDLE_STATUS;     // the Wifi radio's status

void setup()
{
  // initialize serial:
  Serial.begin(9600);

  // scan for existing networks:
  Serial.println("Scanning available networks...");
  scanNetworks();

  // attempt to connect using WEP encryption:
  Serial.println("Attempting to connect to open network...");
  status = WiFi.begin(ssid);

  Serial.print("SSID: ");
  Serial.println(ssid);

}

void loop () {}

void scanNetworks() {
  // scan for nearby networks:
  Serial.println("** Scan Networks **");
  byte numSsid = WiFi.scanNetworks();

  // print the list of networks seen:
  Serial.print("SSID List:");
  Serial.println(numSsid);
  // print the network number and name for each network found:
  for (int thisNet = 0; thisNet<numSsid; thisNet++) {
    Serial.print(thisNet);
    Serial.print(") Network: ");
    Serial.println(WiFi.SSID(thisNet));
  }
}

WiFi.BSSID()

Описание

Получает MAC-адрес маршрутизатора, к которому вы подключены.

Синтаксис

WiFi.BSSID(bssid);

Параметры

  • bssid: массив из 6 байт.

Возвращаемое значение

Массив байтов, содержащий MAC-адрес маршрутизатора, к которому в данный момент подключён WiFi-шилд.

Пример

#include <WiFi.h>

//SSID of your network
char ssid[] = "yourNetwork";
//password of your WPA Network
char pass[] = "secretPassword";

void setup()
{
 WiFi.begin(ssid, pass);

  if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected, print out info about the connection:
  else {
  // print the MAC address of the router you're attached to:
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  Serial.print(bssid[5],HEX);
  Serial.print(":");
  Serial.print(bssid[4],HEX);
  Serial.print(":");
  Serial.print(bssid[3],HEX);
  Serial.print(":");
  Serial.print(bssid[2],HEX);
  Serial.print(":");
  Serial.print(bssid[1],HEX);
  Serial.print(":");
  Serial.println(bssid[0],HEX);
  }
}

void loop () {}

WiFi.RSSI()

Описание

Получает уровень сигнала подключения к маршрутизатору.

Синтаксис

WiFi.RSSI();
WiFi.RSSI(wifiAccessPoint);

Параметры

  • wifiAccessPoint: указывает, из какой сети получить информацию.

Возвращаемое значение

long: текущий RSSI / уровень принимаемого сигнала в дБм.

Пример

#include <SPI.h>
#include <WiFi.h>

//SSID of your network
char ssid[] = "yourNetwork";
//password of your WPA Network
char pass[] = "secretPassword";

void setup()
{
 WiFi.begin(ssid, pass);

  if (WiFi.status() != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected, print out info about the connection:
  else {
   // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("RSSI:");
  Serial.println(rssi);
  }
}

void loop () {}

WiFi.encryptionType()

Описание

Получает тип шифрования текущей сети.

Синтаксис

WiFi.encryptionType();
WiFi.encryptionType(wifiAccessPoint);

Параметры

  • wifiAccessPoint: указывает, из какой сети получить информацию.

Возвращаемое значение

byte: значение представляет тип шифрования:

  • TKIP (WPA) = 2

  • WEP = 5

  • CCMP (WPA) = 4

  • NONE = 7

  • AUTO = 8

Пример

#include <SPI.h>
#include <WiFi.h>

//SSID of your network
char ssid[] = "yourNetwork";
//password of your WPA Network
char pass[] = "secretPassword";

void setup()
{
 WiFi.begin(ssid, pass);

  if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected, print out info about the connection:
  else {
   // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");
  Serial.println(encryption,HEX);
  }
}

void loop () {}

WiFi.scanNetworks()

Описание

Сканирует доступные WiFi-сети и возвращает количество обнаруженных.

Синтаксис

WiFi.scanNetworks();

Параметры

нет

Возвращаемое значение

byte: количество обнаруженных сетей.

Пример

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "yourNetwork";  // the name of your network

void setup() {
  Serial.begin(9600);

  int status = WiFi.begin(ssid);

  if (status != WL_CONNECTED) {
    Serial.println("Couldn't get a WiFi connection");
    while (true);
  }
  else {
    // if you are connected, scan for available WiFi networks and print the number discovered:
    Serial.println("** Scan Networks **");
    byte numSsid = WiFi.scanNetworks();

    Serial.print("Number of available WiFi networks discovered:");
    Serial.println(numSsid);
  }
}

void loop() {}

WiFi.status()

Описание

Возвращает статус подключения.

Синтаксис

WiFi.status();

Параметры

нет

Возвращаемое значение

  • WL_CONNECTED: назначается при подключении к WiFi-сети;

  • WL_NO_SHIELD: назначается при отсутствии WiFi-шилда;

  • WL_IDLE_STATUS: временный статус, назначаемый при вызове WiFi.begin(), который остаётся активным до истечения количества попыток (результат WL_CONNECT_FAILED) или до установления соединения (результат WL_CONNECTED);

  • WL_NO_SSID_AVAIL: назначается, когда нет доступных SSID;

  • WL_SCAN_COMPLETED: назначается по завершении сканирования сетей;

  • WL_CONNECT_FAILED: назначается, когда подключение не удалось для всех попыток;

  • WL_CONNECTION_LOST: назначается при потере соединения;

  • WL_DISCONNECTED: назначается при отключении от сети.

Пример

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "yourNetwork";                     // your network SSID (name)
char key[] = "D0D0DEADF00DABBADEAFBEADED";       // your network key
int keyIndex = 0;                                // your network key Index number
int status = WL_IDLE_STATUS;                     // the Wifi radio's status

void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
  }

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WEP network, SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, keyIndex, key);

    // wait 10 seconds for connection:
    delay(10000);
  }

  // once you are connected :
  Serial.print("You're connected to the network");
}

void loop() {
  // check the network status connection once every 10 seconds:
  delay(10000);
 Serial.println(WiFi.status());
}

WiFi.getSocket()

Описание

Получает первый доступный сокет.

Синтаксис

WiFi.getSocket();

Параметры

нет

Возвращаемое значение

int: первый доступный сокет.

WiFi.macAddress()

Описание

Получает MAC-адрес вашего WiFi-шилда.

Синтаксис

WiFi.macAddress(mac);

Параметры

  • mac: массив из 6 байт для хранения MAC-адреса.

Возвращаемое значение

Массив байтов: 6 байтов, представляющих MAC-адрес вашего шилда.

Пример

#include <SPI.h>
#include <WiFi.h>

char ssid[] = "yourNetwork";     // the name of your network
int status = WL_IDLE_STATUS;     // the Wifi radio's status

byte mac[6];                     // the MAC address of your Wifi shield


void setup()
{
 Serial.begin(9600);

 status = WiFi.begin(ssid);

 if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // if you are connected, print your MAC address:
  else {
  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);
  }
}

void loop () {}