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 () {}