===== Эксперимент 56. Просмотр списка WiFi сетей =====
Начинаем раздел экспериментов, посвященных работе с сетью и интернет. Наш конструктор имеет микроконтроллер со встроенной поддержкой Wi-Fi. Работу с сетью начнем с того, что посмотрим какие Wi-Fi сети находятся в зоне доступа.
Если у тебя дома нет Wi-Fi, то не беда. Любой Android или iOS смартфон может выполнять роль Wi-Fi роутера. В зависимости от версии операционной системы и графической оболочки, данная функция может включаться по- разному. За справкой обратись к инструкции от своего смартфона.
==== Программный код эксперимента ====
#include
void setup() {
Serial.begin(9600);
Serial.println();
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(500);
}
void loop() {
Serial.println("Scan start");
int n = WiFi.scanNetworks();
Serial.println("Scan done");
if (n == 0) {
Serial.println("no networks found");
} else {
Serial.print(n);
Serial.println(" networks found");
for (int i = 0; i < n; ++i) {
Serial.print(i + 1);
Serial.print(": ");
Serial.print(WiFi.SSID(i));
Serial.print(" (");
Serial.print(WiFi.BSSIDstr(i));
Serial.print(", ");
Serial.print(WiFi.channel(i));
Serial.print(", ");
Serial.print(WiFi.RSSI(i));
Serial.print(", ");
switch(WiFi.encryptionType(i)) {
case AUTH_OPEN: Serial.print("OPEN, ");
case AUTH_WEP: Serial.print("WEP, ");
case AUTH_WPA_PSK: Serial.print("WPA-PSK, ");
case AUTH_WPA2_PSK: Serial.print("WPA2-PSK, ");
case AUTH_WPA_WPA2_PSK: Serial.print("WPA/WPA2-PSK, ");
case AUTH_MAX: Serial.print("AUTH_MAX, ");
}
Serial.print(WiFi.isHidden(i));
Serial.println(")");
}
}
Serial.println();
delay(30000);
}
Сначала мы подключаем стандартную библиотеку ''ESP8266WiFi''.
Устанавливаем режим клиента (наш микроконтроллер может работать и сам как точка доступа, работа в таком режиме будет рассмотрена позже).
WiFi.mode(WIFI_STA);
Принудительно отключается от сети.
WiFi.disconnect();
В основном цикле получаем список доступных сетей
int n = WiFi.scanNetworks();
Выводим список доступных сетей в терминал и ждем 30 секунд.
После этого в терминал будет выведен список сетей. В нашем случае это
Scan start
Scan done
7 networks found
1: TP-LINK_CF44_Ext (00:E0:20:68:5C:73, 2, -78, WPA/WPA2-PSK, 0)
2: TP-LINK_CF44 (C0:25:E9:38:CF:44, 2, -85, WPA/WPA2-PSK, 0)
3: 1125 (50:FF:20:0D:01:25, 7, -71, WPA/WPA2-PSK, 0)
4: Freedom (18:31:BF:02:A2:00, 8, -47, WPA/WPA2-PSK, 0)
5: TP-Link_CFBB (B0:BE:76:88:CF:BB, 1, -90, WPA/WPA2-PSK, 0)
6: NEW_ASUS (04:D9:F5:ED:31:A0, 13, -80, WPA/WPA2-PSK, 0)
7: NEW_ASUS (54:A0:50:71:9E:B0, 13, -90, WPA/WPA2-PSK, 0)
По каждой сети отображается информация:
* SSID — Символическое имя точки доступа
* BSSID — MAC адреса точки доступа
* Channel — номер радио канала WiFi
* RSSI — мощность сигнала
* authmode - Шифрование
* hidden - видимость точки доступа. 0 - видимая, 1 - скрытая
Примерные значения соответствия силы сигнала Wi-Fi и его качества:
* Отличные показатели: от -35 до -50 дБм
* Хорошие показатели: от -50 до -65 дБм
* Удовлетворительные показатели: от -65 до -75 дБм
* Плохие показатели: от -75 до -85 дБм
* Неприемлемые значения: от -85 до -100 дБм
Возможные варианты authmode:
* 0 – open
* 1 – WEP
* 2 – WPA-PSK
* 3 – WPA2-PSK
* 4 – WPA/WPA2-PSK
Из всех этих данных нас в первую очередь интересует, конечно, имя сети. Мы должны убедиться, что нужная нам сеть доступна (домашний Wi-Fi или точка доступа на базе смартфона). Кроме того нужно убедиться, что сигнал достаточно сильный. Если уровень сигнала менее -70, то сигнал слабый и соединение с такой точкой не может быть стабильным. В таком случае необходимо переместиться ближе к точке доступа.