- WiFi
- Compatibility
- Releases
- Usage
- Examples
- Wifi Class
- IPAddress class
- Server class
- Client class
- UDP class
- Arduino библиотека WiFi
- Скачать Arduino библиотеку WiFi.h
- Примеры работы Arduino и ESP с WiFi.h
- Подключение к WiFi сети с шифрованием WPA2.
- Arduino WiFi web клиент
- Простейший web сервер на Arduino
- Железо
- WiFi
- Downloads
WiFi
Enables network connection (local and Internet) using the Arduino WiFi shield.
With this library you can instantiate Servers, Clients and send/receive UDP packets through WiFi. The shield can connect either to open or encrypted networks (WEP, WPA). The IP address can be assigned statically or through a DHCP. The library can also manage DNS.
Note: this library was retired and is no longer maintained.
Compatibility
This library is compatible with all architectures so you should be able to use it on all the Arduino boards.
Releases
To use this library, open the Library Manager in the Arduino IDE and install it from there.
Usage
The firmware for the WiFi shield has changed in Arduino IDE 1.0.5. You are recommended to install this update per these instructions
With the Arduino WiFi Shield, this library allows an Arduino board to connect to the internet. It can serve as either a server accepting incoming connections or a client making outgoing ones. The library supports WEP and WPA2 Personal encryption, but not WPA2 Enterprise. Also note, if the SSID is not broadcast, the shield cannot connect.
Arduino communicates with the WiFi shield using the SPI bus. This is on digital pins 11, 12, and 13 on the Uno and pins 50, 51, and 52 on the Mega. On both boards, pin 10 is used as SS. On the Mega, the hardware SS pin, 53, is not used but it must be kept as an output or the SPI interface won’t work. Digital pin 7 is used as a handshake pin between the Wifi shield and the Arduino, and should not be used.
The WiFi library is very similar to the Ethernet library, and many of the function calls are the same.
For additional information on the WiFi shield, see the Getting Started page and the WiFi shield hardware page.
Examples
- ConnectNoEncryption : Demonstrates how to connect to an open network
- ConnectWithWEP : Demonstrates how to connect to a network that is encrypted with WEP
- ConnectWithWPA : Demonstrates how to connect to a network that is encrypted with WPA2 Personal
- ScanNetworks : Displays all WiFi networks in range
- WiFiChatServer : Set up a simple chat server
- WiFiWebClient : Connect to a remote webserver
- WiFiWebClientRepeating : Make repeated HTTP calls to a webserver
- WiFiWebServer : Serve a webpage from the WiFi shield
- WiFiSendReceiveUDPString : Send and receive a UDP string
- UdpNTPClient : Query a Network Time Protocol (NTP) server using UDP
Wifi Class
- WiFi.begin()
- WiFi.disconnect()
- WiFi.config()
- WiFi.setDNS()
- WiFi.SSID()
- WiFi.BSSID()
- WiFi.RSSI()
- WiFi.encryptionType()
- WiFi.scanNetworks()
- WiFi.status()
- WiFi.getSocket()
- WiFi.macAddress()
IPAddress class
Server class
Client class
- Client()
- WiFiClient()
- client.connected()
- client.connect()
- client.write()
- client.print()
- client.println()
- client.available()
- client.read()
- client.flush()
- client.stop()
UDP class
- WiFiUDP
- WiFiUDP.begin()
- WiFiUDP.available()
- WiFiUDP.beginPacket()
- WiFiUDP.endPacket()
- WiFiUDP.write()
- WiFiUDP.parsePacket()
- WiFiUDP.peek()
- WiFiUDP.read()
- WiFiUDP.flush()
- WiFiUDP.stop()
- WiFiUDP.remoteIP()
- WiFiUDP.remotePort()
Arduino библиотека WiFi
Библиотека WiFi используется для подключения Arduino по протоколу WiFi к локальной сети, интернету или другим устройствам, а так же для создания сервера, что бы другие устройства и компьютеры могли подключаться к вашей ардуинке «по воздуху».
Стандартные модели Arduino такие как Uno, Nano или Mega не поддерживают такое подключение сами по себе, но можно добавить такую возможность для них при помощи WiFi шилда. Или можно использовать другие контроллеры с поддержкой WiFi: ESP32, ESP 8266, Arduino Uno WiFi, Arduino Yún, Arduino Tian и множество других.
WiFi шилд использует протокол SPI для коммуникации с Ардуино. На плате Uno и Nano он располагается на пинах 10, 11, 12 и 13, и на 50, 51, 52, 53 на плате Mega. Подробнее о распиновке вы можете почитать на страницах с описанием Arduino Uno, Arduino Nano и Arduino Mega. WiFi библиотека имеет множество сходств с библиотекой Ethernet, в том числе и одинаковые функции.
Скачать Arduino библиотеку WiFi.h
WiFi идет в комплекте стандартных библиотек и устанавливается вместе с Arduino IDE. Но ее можно скачать и отдельно по ссылке ниже.
Для установки библиотеки просто распакуйте zip архив в папку «C:\Program Files (x86)\Arduino\libraries» или в то место, где у вас установлена среда разработки Arduino IDE. Если у вас запущена программа Arduino IDE, то для работы с новой библиотекой её необходимо перезапустить.
В состав библиотеки WiFi входит несколько классов:
- WiFi — инициализация подключения и настроек сети
- IPAddress — предоставление информации о настройках сети
- Server— создание сервера, который может отправлять и принимать данные от клиента (программы запущенной на другом устройстве)
- Client — создание клиента который может подключаться к серверам и отправлять и принимать данные
- UDP — класс для отправки и принятия UDP сообщений
Примеры работы Arduino и ESP с WiFi.h
Далее я приведу примеры использования библиотеки WiFi.h. В примерах будут разобраны базовые задачи. Код примеров можно использовать на любой Arduino с wifi шилдом и на всех платах с чипами ESP 8266 и ESP32. Описание использованных команд вы найдете по ссылкам выше, но я постараюсь оставить в коде примеров подробные комментарии.
Подключение к WiFi сети с шифрованием WPA2.
Этот пример показывает как подключиться к домашней WiFi сети, использующей протокол шифрования WPA2. Так же помимо подключения к сети мы отправим информацию о текущем подключении в монитор последовательного порта.
#include // Библиотека для связи с wifi шилдом #include // Библиотека для работы с wifi подключением char ssid[] = "yourNetwork"; // SSID вашей сети (имя) char pass[] = "secretPassword"; // пароль от вашей сети int status = WL_IDLE_STATUS; // переменная для статуса подключения void setup() < // Открываем серийный порт Serial.begin(9600); while (!Serial) < ; // ждем установки связи >// Проверяем статус подключения wifi shield. Не нужно для плат на базе esp if (WiFi.status() == WL_NO_SHIELD) < Serial.println("WiFi shield не найден"); // дальше не продолжаем while (true); >// пробуем подключиться к Wifi сети while (status != WL_CONNECTED) < Serial.print("Подключение к: "); Serial.println(ssid); // Подключаемся status = WiFi.begin(ssid, pass); // даем 10 секунд на подключение delay(10000); >// Подключение прошло успешно Serial.print("Вы подключены к сети"); printCurrentNet(); // Выводим наш IP и MAC printWifiData(); // IP, MAC роутера и сила сигнала > void loop() < // Проверяем подключение каждые 10 секунд delay(10000); printCurrentNet(); >// Функция для вывода в серийный монитор IP и MAC адресов нашего WiFi шилда void printWifiData() < // узнаем и отправляем наш IP IPAddress ip = WiFi.localIP(); Serial.print("Локальный IP адрес: "); Serial.println(ip); // узнаем и отправляем наш MAC адрес 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); >// Функция для отправки в серийный монитор имени сети к которой мы сейчас подключены void printCurrentNet() < Serial.print("SSID: "); Serial.println(WiFi.SSID()); // Так же отправим МАС адрес роутера 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); // А так же отправим силу сигнала long rssi = WiFi.RSSI(); Serial.print("signal strength (RSSI):"); Serial.println(rssi); // Ну и тип шифрования byte encryption = WiFi.encryptionType(); Serial.print("Encryption Type:"); Serial.println(encryption, HEX); Serial.println(); >
Arduino WiFi web клиент
В этом примере мы отправим HTTP запрос с нашего микроконтроллера. Мы получим в ответ страницу Google поиска с результатами по запросу Arduino. Результатом будет HTML текст, который можно будет просмотреть в окне серийного монитора на компьютере. Так же можно скопировать этот текст в текстовый файл с расширением .html и открыть этот файл с помощью браузера.
#include #include char ssid[] = "yourNetwork"; // SSID вашей сети (имя) char pass[] = "secretPassword"; // пароль от вашей сети int keyIndex = 0; // индекс ключа (нужно только для WEP шифрования с использованием нескольких ключей) int status = WL_IDLE_STATUS; // переменная для статуса подключения //IPAddress server(74,125,232,128); // IP Google если не хотите использовать DNS char server[] = "www.google.com"; // адрес Google с использованием DNS // Инициализируем библиотеку интернет клиента WiFiClient client; void setup() < // Открываем серийный порт Serial.begin(9600); while (!Serial) < ; // ждем подключения >// проверяем работу wifi шилда if (WiFi.status() == WL_NO_SHIELD) < Serial.println("WiFi shield не подключен"); while (true); >// пытаемся подключиться к wifi while (status != WL_CONNECTED) < Serial.print("Подключение к: "); Serial.println(ssid); status = WiFi.begin(ssid, pass); // ждем подключения delay(10000); >Serial.println("Подключен к wifi"); printWifiStatus(); Serial.println("\nНачинаем подключение к серверу. "); if (client.connect(server, 80)) < Serial.println("подключились к серверу"); // Составляем HTTP запрос: client.println("GET /search?q=arduino HTTP/1.1"); client.println("Host: www.google.com"); client.println("Connection: close"); client.println(); >> void loop() < // если есть входящие данные от сервера // то считываем их и выводим в серийный порт while (client.available()) < char c = client.read(); Serial.write(c); >// если сервер отключился то останавливаем клиент if (!client.connected()) < Serial.println(); Serial.println("отключение от сервера"); client.stop(); while (true); >> // Функция для вывода информации о wifi подключении void printWifiStatus() < // выводим имя сети к которой мы подключены Serial.print("SSID: "); Serial.println(WiFi.SSID()); // выводим наш локальный IP адрес IPAddress ip = WiFi.localIP(); Serial.print("IP адрес: "); Serial.println(ip); // выводим силу сигнала long rssi = WiFi.RSSI(); Serial.print("сила сигнала (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); >
Простейший web сервер на Arduino
В этом примере мы запусти свой веб сервер прямо на нашем микроконтроллере. Он будет отдавать простейшую HTML страницу с показаниями, считываемыми с аналоговых пинов. С любого устройства в этой локальной сети можно будет подключиться к серверу и получить эти данные. А если настроить сеть и пробросить порты, то можно подключаться к вашему серверу через интернет из любой точки мира, но это тема для отдельной статьи.
#include #include char ssid[] = "yourNetwork"; // SSID вашей сети (имя) char pass[] = "secretPassword"; // пароль от вашей сети int keyIndex = 0; // индекс ключа (нужно только для WEP шифрования с использованием нескольких ключей) int status = WL_IDLE_STATUS; // переменная для статуса подключения WiFiServer server(80); void setup() < // Открываем серийный порт Serial.begin(9600); while (!Serial) < ; // ждем подключения >// проверяем работу wifi шилда if (WiFi.status() == WL_NO_SHIELD) < Serial.println("WiFi shield не подключен"); while (true); >// пытаемся подключиться к wifi while (status != WL_CONNECTED) < Serial.print("Подключение к: "); Serial.println(ssid); status = WiFi.begin(ssid, pass); // ждем подключения delay(10000); >Serial.println("Подключен к wifi"); printWifiStatus(); // Запускаем сервер server.begin(); > void loop() < // слушаем входящие клиенты WiFiClient client = server.available(); if (client) < Serial.println("Новый клиент"); bool currentLineIsBlank = true; while (client.connected()) < if (client.available()) < char c = client.read(); Serial.write(c); // если пришла пустая строка значит запрос закончился // тогда мы можем отправлять ответ if (c == '\n' && currentLineIsBlank) < // отправляем стандартные http заголовки client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); // закрыть соединение после получения ответа client.println("Refresh: 5"); // автоматическое обновление ответа каждые 5 секунд client.println(); client.println(""); client.println(""); // выводим данные каждого аналогово пина for (int analogChannel = 0; analogChannel < 6; analogChannel++) < int sensorReading = analogRead(analogChannel); client.print("Значение пина "); client.print(analogChannel); client.print(": "); client.print(sensorReading); client.println("
"); > client.println(""); break; > if (c == '\n') < // вы начали новую линию currentLineIsBlank = true; >else if (c != '\r') < // вы получили символ на текущей линии currentLineIsBlank = false; >> > // небольшая задержка на то что бы браузер получил данные delay(1); // закрываем подключение client.stop(); Serial.println("Клиент отключен"); > > // Функция для вывода информации о wifi подключении void printWifiStatus() < // выводим имя сети к которой мы подключены Serial.print("SSID: "); Serial.println(WiFi.SSID()); // выводим наш локальный IP адрес IPAddress ip = WiFi.localIP(); Serial.print("IP адрес: "); Serial.println(ip); // выводим силу сигнала long rssi = WiFi.RSSI(); Serial.print("сила сигнала (RSSI):"); Serial.print(rssi); Serial.println(" dBm"); >
Железо
Стартовый набор с Arduino Mega и RFID Это расширенный стартовый набор. В комплект входит Arduino Mega R3, макетные платы, множество датчиков, управляемые механизмы и необходимые радиоэлектронные компоненты. Полный список.
Плата Arduino Uno R3 Arduino Uno — плата на базе микроконтроллера ATmega328P с частотой 16 МГц. На плате есть все необходимое для удобной и быстрой работы.
WiFi
Enables network connection (local and Internet) using the Arduino WiFi shield.
Author Arduino Website https://www.arduino.cc/en/Reference/WiFi Github https://github.com/arduino-libraries/WiFi Category Communication License Unknown Library Type Official, Retired Architectures Any
With this library you can instantiate Servers, Clients and send/receive UDP packets through WiFi. The shield can connect either to open or encrypted networks (WEP, WPA). The IP address can be assigned statically or through a DHCP. The library can also manage DNS.
Downloads
Filename | Release Date | File Size |
---|---|---|
WiFi-1.2.7.zip | 2016-03-08 | 5.05 MiB |
WiFi-1.2.6.zip | 2015-10-28 | 5.05 MiB |
WiFi-1.2.5.zip | 2015-07-14 | 5.05 MiB |
WiFi-1.2.4.zip | 2015-05-20 | 5.05 MiB |
WiFi-1.2.3.zip | 2015-04-23 | 5.05 MiB |
WiFi-1.2.2.zip | 2015-04-23 | 5.05 MiB |
WiFi-1.2.1.zip | 2015-04-02 | 5.05 MiB |
WiFi-1.2.0.zip | 2015-03-27 | 5.05 MiB |
This website is Open Source, please help improve it by submitting a change on GitHub:
https://github.com/njh/arduino-libraries
The content on this site was last updated: 2023-07-16 00:45:41 +0100