Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== ESP12: Поиск доступных сетей ====== ===== Описание ===== В данном мини-проекте рассматривается подключение модуля к контроллеру с помощью Sensor shield, и поиск доступных для подключения сетей Wi-Fi. Модуль общается с контроллером посредством интерфейса UART. Так как на контроллерах UNO (Arduino Uno, Genuino Uno, Smart Uno) всего один аппаратный интерфейс UART, мы будем общаться с контроллером с помощью программного UART интерфейса. Это даёт нам возможность не занимать аппаратный интерфейс, таким образом мы сможем, как минимум, наблюдать за происходящим на Wi-Fi модуле, через монитор Serial-порта контроллера. Изначально модуль настроен на работу с помощью AT-команд. Но вручную писать AT-команды очень неудобно, по нескольким причинам: * Очень велика вероятность ошибиться и ввести неверную AT-команду; * Разбор ответа от контроллера будет довольно ёмким * Скетч будет трудно-читаемым из-за огромного количества кода * Сложно выявить ошибки Поэтому, чтобы общение с модулем было наиболее эффективным, простым и быстрым, мы воспользуемся библиотекой WiFiEsp * [[https://files.smartelements.ru/know_libs/WiFiEsp.zip|Скачать библиотеку WiFiEsp]] Скачайте и установите данную библиотеку в среду разработки Arduino IDE. <WRAP center round tip 80%> Перед началом работы настройте модуль на скорость обмена в 9600 бод. О том как это сделать, рассказано [[main:comm:esp12#Установка скорости обмена данными|на этой странице]]. </WRAP> ==== Шаг 1. Вам потребуется ==== Возьмите необходимые для проекта элементы, представленные в таблице ниже. ^ Что нужно ^ Кол-во, шт ^ | [[httpss://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart Uno]] | 1 | | [[httpss://smartelements.ru/collection/svyaz/product/wifi-modul-esp-12|Wi-Fi модуль ESP-12]] | 1 | | [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-mama-mama|Провода мама-мама]] | 4 | ==== Шаг 2. Подключите Wifi модуль к шилду ==== Выполните подключение модуля в соответствии со схемой ниже. {{ :главная:связь:wifi_sensor_shield_2.png?nolink |}} ==== Шаг 3. Загрузите скетч на контроллер ==== Загрузите скетч, представленный ниже, на контроллер. Предварительно измените значения переменных: * char ssid[] - здесь должно быть Ваше имя WiFi сети * char pass[] - здесь должен быть пароль от Вашей WiFi сети <file Arduino> #include "WiFiEsp.h" //подключение библиотеки WiFiEsp // Эмуляция Serial соединения #ifndef HAVE_HWSERIAL1 #include "SoftwareSerial.h" SoftwareSerial wifiSerial(6, 7); // TX - модуля , RX - модуля #endif char ssid[] = "SmartElements"; //имя сети wifi char pass[] = "1234567890"; //пароль от сети wifi int status = WL_IDLE_STATUS; // статус сети wifi void setup() { //инициализация Serial-соединения для отладки Serial.begin(9600); //инициализация Serial-соединения для ESP-модуля wifiSerial.begin(9600); //инициализация ESP модуля WiFi.init(&wifiSerial); //проверка существования модуля if (WiFi.status() == WL_NO_SHIELD) { Serial.println("WiFi module not present"); //если модуля нет, то не продолжать работу далее while (true); } //вывод MAC-адреса printMacAddress(); } void loop() { //сканирование существующих сетей Serial.println(); Serial.println("Scanning available networks..."); listNetworks(); delay(10000); } /* Процедура выводит MAC-адрес * в монитор Serial-порта. */ void printMacAddress() { //получение MAC-адреса byte mac[6]; WiFi.macAddress(mac); //вывод MAC-адреса char buf[20]; sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", mac[5], mac[4], mac[3], mac[2], mac[1], mac[0]); Serial.print("MAC address: "); Serial.println(buf); } /* Процедура получает список беспроводных сетей * и выводит его в монитор Serial-порта. */ void listNetworks() { //поиск беспроводных сетей в зоне видимости int numSsid = WiFi.scanNetworks(); if (numSsid == -1) { //не найдено ни одной сети Serial.println("Couldn't get a wifi connection"); while (true); } //вывод найденных сетей Serial.print("Number of available networks:"); Serial.println(numSsid); //вывод номера и имени найденных сетей for (int thisNet = 0; thisNet < numSsid; thisNet++) { Serial.print(thisNet); Serial.print(") "); Serial.print(WiFi.SSID(thisNet)); Serial.print("\tSignal: "); Serial.print(WiFi.RSSI(thisNet)); Serial.print(" dBm"); Serial.print("\tEncryption: "); printEncryptionType(WiFi.encryptionType(thisNet)); } } /* Вывод информации о типе шифрования * в обнаруженной сети. */ void printEncryptionType(int thisType) { //вывод типа шифрования switch (thisType) { case ENC_TYPE_WEP: Serial.print("WEP"); break; case ENC_TYPE_WPA_PSK: Serial.print("WPA_PSK"); break; case ENC_TYPE_WPA2_PSK: Serial.print("WPA2_PSK"); break; case ENC_TYPE_WPA_WPA2_PSK: Serial.print("WPA_WPA2_PSK"); break; case ENC_TYPE_NONE: Serial.print("None"); break; } Serial.println(); } </file> ==== Шаг 4. Результат соединения ==== Далее, откройте монитор Serial-порта в Arduino IDE, и посмотрите параметры подключения. Вы увидите информацию вида: <file> [WiFiEsp] Initializing ESP module [WiFiEsp] Initilization successful - 1.5.4 MAC address: 19:FE:56:F1:29:EF Scanning available networks... Number of available networks:9 0) wifi-tat-mm Signal: -76 dBm Encryption: WPA2_PSK 1) NivaForge-WiFi Signal: -88 dBm Encryption: WPA2_PSK 2) MicroTicket-SpB-1 Signal: -87 dBm Encryption: WPA_WPA2_PSK 3) Yana Signal: -94 dBm Encryption: WPA2_PSK 4) 221_470 Signal: -92 dBm Encryption: WPA_WPA2_PSK 5) beeline2102 Signal: -91 dBm Encryption: WPA_WPA2_PSK 6) gansnroses Signal: -75 dBm Encryption: WPA_WPA2_PSK 7) verdict Signal: -84 dBm Encryption: WPA2_PSK 8) TP-LINK_GG113 Signal: -73 dBm Encryption: WPA2_PSK </file> Где выводится список доступных сетей, с данными : * имя сети, которую нашёл модуль * Signal: уровень сигнала сети * Encryption: тип защиты (шифрования) сети