Arduino:Примеры/ConnectWithWPA

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Подключение к сети, зашифрованной через WPA[1]

Этот пример показывает, как при помощи модуля Arduino WiFi Shield подключиться к 802.11b/g сети, зашифрованной через WPA2 Personal.

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

  • Сетевой модуль Arduino WiFi Shield;
  • Плата Arduino, совместимая с Shield;

Цепь

WiFi Shield для SPI-соединения с модулем HDG104 использует 10-ый, 11-ый, 12-ый и 13-ый контакты. Для управления SS-контактом SD-карты используется 4-ый цифровой контакт.

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

Для сетей, использующих шифрование через WPA или WPA2 Personal, нужны SSID и пароль. Правда, если ваша сеть использует шифрование через WPA2 Enterprise, Shield к ней подключиться не сможет.

WiFiShield bb.png

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

Код

  1 /*
  2 Этот скетч подключается к WiFi-сети, зашифрованной через WPA
  3 или WPA2 Personal. Затем он печатает на Seral Monitor различные
  4 сетевые характеристики вроде MAC-адреса WiFi Shield, полученного
  5 IP-адреса и т.д.
  6 
  7 Цепь:
  8 * WiFi Shield, подключенный к Arduino
  9 
 10 Создан 13 июля 2010 пользователем dlf (Metodo2 srl),
 11 модифицирован 31 мая 2012 Томом Иго (Tom Igoe).
 12 */
 13 
 14  #include <WiFi.h>
 15 
 16 char ssid[] = "yourNetwork";     // SSID (название) вашей сети 
 17 char pass[] = "secretPassword";  // пароль к вашей сети
 18 int status = WL_IDLE_STATUS;     // статус WiFi
 19 
 20 void setup() {
 21   // Инициализируем последовательную передачу данных и ждем открытия порта:
 22   Serial.begin(9600); 
 23   while (!Serial) {
 24     ; // ждем подключения последовательного порта (нужно только для Leonardo)
 25   }
 26   
 27   // Проверяем наличие Shield:
 28   if (WiFi.status() == WL_NO_SHIELD) {
 29     Serial.println("WiFi shield not present");  //  "WiFi Shield не подключен"
 30     // Дальше не продолжаем:
 31     while(true);
 32   } 
 33 
 34  // Пытаемся подключиться к WiFi-сети:
 35   while ( status != WL_CONNECTED) { 
 36     Serial.print("Attempting to connect to WPA SSID: ");  //  "Пытаемся подключиться к SSID с WPA-шифрованием: "
 37     Serial.println(ssid);
 38     // Подключаемся к сети с шифрованием WPA/WPA2:    
 39     status = WiFi.begin(ssid, pass);
 40 
 41     // Ждем подключения в течение 10 секунд:
 42     delay(10000);
 43   }
 44    
 45   // Мы подключились, поэтому начинаем печатать данные: 
 46   Serial.print("You're connected to the network");  //  "Вы подключились к сети"
 47   printCurrentNet();
 48   printWifiData();
 49 
 50 }
 51 
 52 void loop() {
 53   // Проверяем сетевое подключение каждые 10 секунд:
 54   delay(10000);
 55   printCurrentNet();
 56 }
 57 
 58 void printWifiData() {
 59   // Показываем IP-адрес вашего WiFi Shield:
 60   IPAddress ip = WiFi.localIP();
 61     Serial.print("IP Address: ");  //  "IP-адрес: "
 62   Serial.println(ip);
 63   Serial.println(ip);
 64 
 65   // Показываем MAC-адрес:
 66   byte mac[6];  
 67   WiFi.macAddress(mac);
 68   Serial.print("MAC address: ");  //  "MAC-адрес: "
 69   Serial.print(mac[5],HEX);
 70   Serial.print(":");
 71   Serial.print(mac[4],HEX);
 72   Serial.print(":");
 73   Serial.print(mac[3],HEX);
 74   Serial.print(":");
 75   Serial.print(mac[2],HEX);
 76   Serial.print(":");
 77   Serial.print(mac[1],HEX);
 78   Serial.print(":");
 79   Serial.println(mac[0],HEX);
 80  
 81 }
 82 
 83 void printCurrentNet() {
 84   // Показываем SSID сети, к которой подключились:
 85   Serial.print("SSID: ");  //  "SSID: "
 86   Serial.println(WiFi.SSID());
 87 
 88   // Показываем MAC-адрес роутера, к которому подключились:
 89   byte bssid[6];
 90   WiFi.BSSID(bssid);    
 91   Serial.print("BSSID: ");  //  "BSSID: "
 92   Serial.print(bssid[5],HEX);
 93   Serial.print(":");
 94   Serial.print(bssid[4],HEX);
 95   Serial.print(":");
 96   Serial.print(bssid[3],HEX);
 97   Serial.print(":");
 98   Serial.print(bssid[2],HEX);
 99   Serial.print(":");
100   Serial.print(bssid[1],HEX);
101   Serial.print(":");
102   Serial.println(bssid[0],HEX);
103 
104   // Показываем мощность приемного сигнала:
105   long rssi = WiFi.RSSI();
106   Serial.print("signal strength (RSSI):");  //  "Мощность сигнала (RSSI):"
107   Serial.println(rssi);
108 
109   // Показываем тип шифрования:
110   byte encryption = WiFi.encryptionType();
111   Serial.print("Encryption Type:");  //  "Тип шифрования:"
112   Serial.println(encryption,HEX);
113   Serial.println();
114 }

См.также

  1. ConnectNoEncryption : Demonstrates how to connect to an open network
  2. ConnectWithWEP : Demonstrates how to connect to a network that is encrypted with WEP
  3. ConnectWithWPA : Demonstrates how to connect to a network that is encrypted with WPA2 Personal
  4. ScanNetworks : Displays all WiFi networks in range
  5. WiFiChatServer : Set up a simple chat server
  6. WiFiWebClient : Connect to a remote webserver
  7. WiFiWebClientRepeating: Repeatedly make HTTP calls to a server
  8. WiFiWebServer : Serve a webpage from the WiFi shield

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