Arduino:Примеры/wifi101ConnectWithWEP

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Подключение к WEP-зашифрованной WiFi-сети (WiFi Shield 101)[1]

Этот пример показывает, как при помощи модуля WiFi Shield 101 или платы MKR1000 подключиться к WEP-зашифрованной 802.11b/g сети. При успешном подключении на мониторе порта IDE Arduino будет показано соответствующее сообщение.

Необходимое оборудование

  • Модуль Arduino WiFi Shield 101
  • Плата Arduino или Genuino Zero (или MKR1000)

Цепь

7-ой цифровой контакт используется в качестве контакта для «рукопожатия» между WiFi Shield 101 и платой, т.е. ни для каких других целей его использовать не следует.

Также для этого примера вам понадобится доступ к беспроводной 802.11b/g сети, подключенной к интернету. Кроме того, вам надо будет поменять сетевые настройки в самом скетче, чтобы они соответствовали идентификатору вашей сети (SSID).

Пароли к сетям с WEP-шифрованием – это шестнадцатеричные строки, называемые «ключами». WEP-зашифрованные сети могут иметь 4 разных ключа, и каждый из них присвоено собственное значение «индекса ключа».

Таким образом, для подключения к WEP-зашифрованной сети вам понадобится SSID, ключ и индекс ключа.

На картинке выше модуль WiFi Shield 101 установлен поверх платы Arduino/Genuino Zero.

Код

/*
Этот скетч подключается к WEP-зашифрованной WiFi-сети,
а затем выводит на Serial Monitor различные сетевые данные
вроде MAC-адреса WiFi Shield, полученного IP-адреса и т.д.

Если вы используете 40-битный WEP, то вам понадобится ключ длиной 
в 10 символов, а символы должны быть шестнадцатеричными (0-9 или A-F).
Например, ключ «ABBADEAF01» для 40-битного WEP будет работать,
а «ABBADEAF» и «ABBAISDEAF» – нет. Первый слишком короткий, а второй
содержит символы «I» и «S», которые не являются шестнадцатеричными.

Для 128-битного WEP понадобится строка длиной в 26 символов.
Например, подойдет строка «D0D0DEADF00DABBADEAFBEADED», т.к. она
состоит из 26 символов и все они находятся в пределах диапазонов
0-9 и A-F. 

Цепь:
* WiFi Shield, подключенный к Arduino

Создан 13 июля 2010 пользователем dlf (Metodo2 srl),
модифицирован 31 мая 2012 Томом Иго (Tom Igoe).
*/

#include <SPI.h>
#include <WiFi101.h>


char ssid[] = "yourNetwork";                     // SSID (название) вашей сети
char key[] = "D0D0DEADF00DABBADEAFBEADED";       // ключ к вашей сети
int keyIndex = 0;                                // индекс ключа к вашей сети
int status = WL_IDLE_STATUS;                     // статус WiFi

void setup() {
  // Инициализируем последовательную передачу данных и ждем открытия порта: 
  Serial.begin(9600); 
  while (!Serial) {
    ; // ждем подключения последовательного порта (нужно только для плат со штатным USB-портом)
  }

  // Проверяем наличие Shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");  //  "WiFi Shield не подключен"
    // Дальше не продолжаем:
    while(true);
  } 

  // Пытаемся подключиться к WiFi-сети:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to WEP network, SSID: ");  //  "Пытаемся подключиться к WEP-сети, SSID: "
    Serial.println(ssid);
    status = WiFi.begin(ssid, keyIndex, key);

    // Ждем подключения в течение 10 секунд:
    delay(10000);
  }

  // Когда подключились :
  Serial.print("You're connected to the network");  //  "Вы подключились к сети"
  printCurrentNet();
  printWifiData();
}

void loop() {
  // Проверяем подключение к сети каждые 10 секунд:
  delay(10000);
  printCurrentNet();
}

void printWifiData() {
  // Показываем на Serial Monitor IP-адрес WiFi Shield:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");  //  "IP-адрес: "
  Serial.println(ip);
  Serial.println(ip);

  // Показываем свой MAC-адрес:
  byte mac[6];  
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");  //  "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() {
  // Показываем SSID сети, к которой подключились:
  Serial.print("SSID: ");  //  "SSID: "
  Serial.println(WiFi.SSID());

  // Показываем MAC-адрес роутера, к которому подключились:
  byte bssid[6];
  WiFi.BSSID(bssid);    
  Serial.print("BSSID: ");  //  "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):");  //  "Мощность сигнала (RSSI):"
  Serial.println(rssi);

  // Показываем тип шифрования:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");  //  "Тип шифрования:"
  Serial.println(encryption,HEX);
  Serial.println();
}

См.также

  1. WiFi library – Your reference for the WiFi101 Library.
  2. WiFi Shield – Product details for the WiFi 101 Shield.
  3. MKR1000 – Product details for the MKR1000 board.
  4. Connect No Encryption - Demonstrates how to connect to an open network.
  5. Connect With WPA - Demonstrates how to connect to a network that is encrypted with WPA2 Personal.
  6. Scan Networks - Displays all WiFi networks in range.
  7. Simple Web Server WiFi – Turn on and off an LED accessing this simple Web Server.
  8. UDP NTP Client - Query a Network Time Protocol (NTP) server using UDP.
  9. WiFi Chat Server - Set up a simple chat server.
  10. WiFi Web Client - Connect to a remote webserver.
  11. WiFi Web Client Repeating - Repeatedly make HTTP calls to a server.
  12. WiFi Web Server - Serve a webpage from the WiFi shield with Analog Input values.
  13. WiFi Send Receive UDP String - Send and receive a UDP string.

Внешние ссылки