Arduino:Примеры/ConnectNoEncryption

Материал из Онлайн справочника
Версия от 12:33, 8 июля 2023; EducationBot (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

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


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

Этот пример показывает, как при помощи модуля Arduino WiFi Shield подключиться к открытой (незашифрованной) 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).

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

Код

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

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

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

 #include <WiFi.h>

char ssid[] = "yourNetwork";     // название вашей сети
int status = WL_IDLE_STATUS;     // статус WiFi

void setup() {
  // Инициализируем последовательную передачу данных и ждем открытия порта:
  Serial.begin(9600); 
  while (!Serial) {
    ; // ждем подключения последовательного порта (нужно только для Leonardo)
  }
  
  // Проверяем наличие 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 open SSID: ");  //  "Пытаемся подключиться к открытому SSID"
    Serial.println(ssid);
    status = WiFi.begin(ssid);

    // Ждем 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);
  
  // Показываем маску подсети:
  IPAddress subnet = WiFi.subnetMask();
  Serial.print("NetMask: ");  //  "Маска подсети: "
  Serial.println(subnet);

  // Показываем шлюз:
  IPAddress gateway = WiFi.gatewayIP();
  Serial.print("Gateway: ");  //  "Шлюз: "
  Serial.println(gateway);
}

void printCurrentNet() {
  // Показываем идентификатор сети (SSID), к которой подключились:
  Serial.print("SSID: ");  //  "Идентификатор сети: "
  Serial.println(WiFi.SSID());

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

См.также

  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

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