Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/ConnectWithWPA

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Подключение к сети, зашифрованной через 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

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

  1. Arduino - Connect With WPA