===== Эксперимент 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, то сигнал слабый и соединение с такой точкой не может быть стабильным. В таком случае необходимо переместиться ближе к точке доступа.