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

Arduino:Примеры/ConnectWithWEP

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

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

Контакты:

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


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

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

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

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

Цепь

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

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

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

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

WiFiShield bb.png

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

Код

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

См.также

  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 WEP