Подключение Wi-Fi Esp8266
Обновлено: 20.11.2024
В предыдущих проектах ESP8266 я дал краткое введение в модуль WiFi ESP8266, как начать работу с ESP8266 и Arduino, какова конфигурация контактов модуля ESP8266 ESP-01 и как запрограммировать ESP8266 с помощью Arduino как USB-последовательный интерфейс.
Я также показал вам, как установить прошивку (прошивку AT-команд) на встроенное ПЗУ WiFi-модуля ESP8266.
Одну вещь (и это важно), которую я пропустил (не намеренно), — показать вам, как подключить ESP8266 к сети Wi-Fi.
Итак, без лишних слов позвольте мне показать вам, как подключить ESP8266 к WiFi и использовать его в нашем IoT (Интернете вещей) и других проектах, основанных на WiFi.
ПРИМЕЧАНИЕ:
- Прежде чем продолжить, я настоятельно рекомендую вам ознакомиться с двумя более ранними проектами по WiFi-модулю ESP8266: НАЧАЛО РАБОТЫ С ESP8266 И ARDUINO и КАК ОБНОВИТЬ/ПРОШИВАТЬ ПРОШИВКУ ESP8266.
- Есть много важных вещей, таких как конфигурация контактов модуля ESP8266 (ESP-01), как подключить ESP8266 к Arduino и т. д., о которых вы должны знать заранее, прежде чем приступать к подключению ESP8266 к WiFi.
Обзор
Крошечный WiFi-модуль ESP8266 (ESP-01) творит чудеса в сообществе DIY, поскольку он позволяет таким устройствам, как Arduino, получать доступ к веб-страницам, подключаясь к Интернету.
Модуль Wi-Fi ESP8266 может быть подключен к любому другому микроконтроллеру (например, Arduino или 8051) через UART, и с помощью AT-команд микроконтроллер может управлять ESP8266 (подключаться к WiFi, обновлять прошивку и т. д.). р>
Итак, чтобы использовать WiFi-модуль ESP8266 в наших проектах, связанных с Интернетом, нам нужно сначала подключить ESP8266 к WiFi, а затем получить к нему доступ из Интернета.
Прежде чем вдаваться в подробности о том, как подключить ESP8266 к WiFi, вам необходимо понять режимы работы WiFi модуля ESP8266.
Режимы работы WiFi ESP8266
- Режим станции (STA)
- Программная точка доступа (AP)
- Программная точка доступа + станция
Режим станции (STA)
В режиме станции (STA) WiFi-модуль ESP8266 будет подключен к сети WiFi, которая уже настроена точкой доступа, например WiFi-маршрутизатором.
Программная точка доступа (AP)
Второй режим работы — режим точки доступа (AP). В этом режиме модуль ESP8266 действует как точка доступа и обеспечивает сеть Wi-Fi для других станций (например, мобильных устройств или ноутбуков).
Обычно точка доступа может предоставлять Интернет своим станциям через проводную сеть, но поскольку проводной интерфейс отсутствует, этот режим точки доступа называется программной точкой доступа.
Модуль ESP сначала настраивается в режиме программной точки доступа, а затем настраивается в режиме станции. Это полезно, когда имя пользователя (SSID) и пароль сети Wi-Fi неизвестны.
Программная точка доступа + станция
В третьем режиме WiFi-модуль ESP8266 настроен на работу как в режиме станции, так и в режиме программной точки доступа.
Все эти режимы работы устанавливаются с помощью AT-команд. В этом уроке я расскажу о AT-командах, которые необходимы для подключения ESP8266 к сети WiFi. В отдельном уроке я расскажу о некоторых важных и полезных AT-командах ESP8266.
Схема
Необходимые компоненты
- Модуль Wi-Fi ESP8266 (ESP-01)
- Arduino UNO (достаточно адаптера USB-to-Serial)
- Кнопка
- Ползунок
- Резистор 1 кОм (1/4 Вт)
- Резистор 2,2 кОм (1/4 Вт)
- Подключение проводов
Как подключить ESP8266 к сети WiFi с помощью AT-команд?
Прежде чем посмотреть, как подключить ESP8266 к сети Wi-Fi, вы должны помнить, что WiFi-модуль ESP8266 загружается с прошивкой AT-команд.
Пожалуйста, ознакомьтесь с проектом «КАК ПРОШИВАТЬ ПРОШИВКУ НА ESP8266», прежде чем приступать к подключению WiFi-модуля ESP8266 к сети WiFi.
Итак, после подключения ESP8266 в режиме программирования и проверки наличия прошивки AT-команд, подключите Arduino к компьютеру и откройте последовательный монитор.
В моем случае я установил скорость 115200 бод, а также выбрал опцию «Both NL & CR» в последовательном мониторе Arduino. Измените эти настройки в соответствии с вашими требованиями.
Сначала введите следующую команду, чтобы проверить, успешно ли установлено соединение.
Затем я перезапущу модуль ESP8266 с помощью следующей команды, просто чтобы убедиться, что я начну заново.
Теперь мне нужно установить Режим работы как Режим Станции. Для этого используйте следующую команду.
Режим работы был установлен как режим станции (STA). Теперь, чтобы просмотреть список всех ближайших сетей Wi-Fi, используйте команду, показанную ниже.
Чтобы присоединиться к сети, используйте следующую команду.
Вместо SSID введите имя вашей сети Wi-Fi, а вместо ПАРОЛЯ введите пароль.
В течение нескольких секунд вы получите подтверждение о подключении к WIFI. Чтобы проверить IP-адрес WiFi-модуля ESP8266, введите команду.
Альтернативный способ подключения WiFi-модуля ESP8266 к сети WiFi
Если вы устали вводить все эти AT-команды для подключения WiFi-модуля ESP8266 к сети Wi-Fi, то есть альтернативный способ. В этом методе я буду программировать WiFi-модуль ESP8266 (что означает, что прошивка AT-команды будет стерта). Код для этого показан ниже.
ПРИМЕЧАНИЕ. В коде вместо «ssid» и «пароль» введите данные своей сети Wi-Fi.
Теперь подключите GPIO0 к GND, сбросьте ESP и нажмите кнопку загрузки. WiFi-модуль ESP8266 будет автоматически подключен к указанной сети WiFi, а также ответит IP-адресом.
Заключение
В этом проекте/руководстве я показал вам, как подключить модуль Wi-Fi ESP8266 к сети Wi-Fi, используя как AT-команды, так и программирование. В следующем уроке я расскажу о некоторых важных AT-командах модуля ESP8266.
Таким образом, если вы хотите создать собственный прототип с сетевыми возможностями, вы сможете собирать и публиковать данные из облака, из дома и практически из любого места.
Подключение к Wi-Fi также важно, если вы хотите добавить голосовое управление, например Siri, к устройству Arduino.
В этой статье я покажу вам, как подключить контроллер ESP8266 к Wi-Fi, чтобы вы могли добавить подключение к Интернету в пользовательские прототипы.
Оглавление
Подключите ESP8266 к Интернету
Это руководство предназначено для учащихся среднего уровня. В этом руководстве мы не будем рассматривать основы Arduino.
Если у вас нет базовых знаний в области электроники, программирования и Arduino, я рекомендую ознакомиться с моим курсом Arduino для начинающих и сначала освоить эти навыки.
Однако, если вы уже создали проект с использованием ESP8266 и не можете получить его «в сети» для мониторинга или доступа к облаку, то это руководство проведет вас через этот процесс.
Оборудование, которое вам понадобится
Для этого проекта вам понадобится базовое оборудование. Я рекомендую использовать Wemos D1 Mini или NodeMCU в качестве чипа с поддержкой WiFi.
Комплект Arduino и датчики не являются обязательными. В этой статье мы не будем вдаваться в подробности того, как подключить цепь или публиковать и собирать данные из Интернета.
Однако у нас есть специальный онлайн-курс по робототехнике, в котором эти темы рассматриваются более подробно. Вы можете записаться на этот курс здесь.
Цель этого руководства — показать вам три шага по подключению контроллера Arduino к вашей домашней сети (и WWW), чтобы вы могли использовать его в качестве устройства IoT.
В этом руководстве мы не будем рассказывать, как добавить ESP8266 в диспетчер плат или базовую настройку. Если вы еще не программировали ESP8266 (NodeMCU или Wemos D1 Mini), я рекомендую ознакомиться с нашим руководством по началу работы, прежде чем читать это руководство.
Шаг 1. Настройте Arduino IDE для ESP8266
Сначала используйте Arduino Board Manager для настройки ESP8266. Более подробные инструкции доступны ниже:
После того, как вы настроили плату, включите разъем ESP8266WiFi.
Далее создайте две глобальные переменные для хранения SSID и пароля вашей сети. Это имя и пароль вашей сети Wi-Fi соответственно.
Например, если бы я хотел подключиться к сети, LearnRoboticsWIFI и пароль RoboticsR0ck$ (кстати, не настоящий), то вы бы написали следующие строки :
Затем инициализируйте WiFiClient, называемый клиентом.
Теперь, когда мы позаботились о наших глобальных переменных, мы можем написать метод, который подключает контроллер к сети Wi-Fi, которую мы определили, используя SSID и пароль выше.
Шаг 2.Подключите ESP8266 к вашей сети Wi-Fi (SSID)
Следующим шагом является создание метода connectToWiFi(). Мы можем использовать Serial Monitor для распечатки сообщений при попытке подключения к нашей сети Wi-Fi.
Этот код попытается подключиться к сети 15 раз. Если он не может подключиться, произойдет сбой, и в Serial Monitor будет напечатано сообщение об ошибке.
В противном случае вы увидите, что контроллер подключен.
После написания метода не забудьте вызвать его в процедуре setup(). Мы хотим запустить метод connectToWiFi() только один раз.
И все! Как только вы добавите этот код в свой скетч, вы сможете протестировать его.
СТАНЬТЕ ИНСАЙДЕРОМ ПО ОБУЧЕНИЮ РОБОТОТЕХНИКИ!
Подождите 1 неделю, и я пришлю вам свои лучшие технические советы, которые помогут вам создавать роботов!
Вы успешно подписались!
100% конфиденциальность. Мы не сдаем в аренду и не передаем наши списки адресов электронной почты.
Шаг 3. Проверьте сетевое WiFi-соединение ESP8266
Перед тестированием этой программы убедитесь, что вы добавили правильный сетевой SSID (имя) и пароль.
Затем загрузите полный скетч (с кодом подключения WiFi из шагов 1 и 2) на ESP8266.
Затем откройте Serial Monitor и посмотрите, как происходит инициализация. Вы должны увидеть несколько строк с надписью «Подключение к WiFi».
Контроллер попытается подключиться 15 раз. В случае сбоя вы увидите сообщение «ОШИБКА подключения WiFi».
В идеале вы увидите серию сообщений, распечатываемых на последовательном мониторе:
- "Wi-Fi подключен!"
- "IP-адрес: " плюс назначенный IP-адрес вашего маршрутизатора
- и "Настройка готова"
После того как вы увидите сообщение «Настройка готова», вы готовы начать использовать ESP8266 в сети Wi-Fi. Вы также можете получить доступ (или пропинговать) свое устройство по IP-адресу, который ему был назначен маршрутизатором.
Что можно делать с Arduino с поддержкой Wi-Fi?
Самое приятное в подключении ESP8266 к WiFi заключается в том, что теперь вы можете использовать эти проекты в своей внутренней (домашней) сети или отправлять данные в облачный сервис.
Это полезно для удаленного мониторинга датчиков или устройств, создания проектов Интернета вещей и пользовательских систем домашней автоматизации.
После того, как вы подключите свой ESP8266 к Интернету, возможности того, что вы можете создавать, отслеживать и создавать, станут безграничными.
Ищете проекты для Arduino?
Вот некоторые из наших самых популярных проектов Интернета вещей, которые вы можете попробовать:
Если вам понравилась эта статья, поделитесь ею с другом! Вы также можете поддержать нашу онлайн-публикацию, купив нам кофе.
Бесплатное обучение: как обычные люди могут начать робототехнику и заработать больше денег в своей карьере
Дополните свое резюме ценными техническими навыками, которые помогут вам получить повышение, сменить работу и выделиться из толпы.
👇 👇 👇 👇 👇
Вам также может понравиться
Лиз МиллерЛиз — основатель компании Learn Robotics. Она имеет B.S. в области робототехники от WPI. У Лиз многолетний опыт работы в области робототехники: она работала исследователем робототехники в UPenn, инструктором в Массачусетском технологическом институте и инженером по автоматизации в United Technologies. Лиз пишет технические руководства и создает курсы по автоматизации, которым может следовать каждый. Ее советы и рекомендации помогают инженерам развивать свою карьеру. Лиз является автором более 150 уникальных материалов для этого сайта. Вы можете поддержать ее работу здесь. Узнайте больше об Learn Robotics на странице «О нас».
Как указано в
Есть вопрос? Нужна помощь?
Спасибо, что заглянули! Комментарии больше не модерируются ежедневно.
Прежде чем опубликовать комментарий, подумайте о покупке кофе.
4 комментария
Конечно, было бы неплохо, если бы вы разместили zip-архив с кодом целиком.
чтобы нам, новичкам, не приходилось ломать код из-за забытой скобки
или чего-то еще.
вы должны помнить, что не все так же опытны, как вы, люди, которые зарабатывают этим на жизнь
спасибо, что выслушали и разместили zip
Привет, Джордж, я не буду публиковать почтовый индекс для этого.Это руководство из 3 частей с 3 наборами кода. Если вы соедините 3 набора кода вместе, все будет хорошо. Частью работы над проектами кодирования и электроники является устранение неполадок. И единственный способ стать более опытным — это практиковаться. Удачи, дайте мне знать, как ваш проект получается. ~Лиз из Learn Robotics
Хороший урок, спасибо! Должны ли вы также иметь проверку в своем основном цикле(), чтобы убедиться, что Wi-Fi остается подключенным? А если нет, то снова вызвать connectToWiFi()? Я не вижу, чтобы это делалось, и не уверен, понадобится ли это для восстановления, например, после сброса вашего WiFi-маршрутизатора и т. д.…
Джей, да, ты можешь! ~Лиз из Learn Robotics
Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.
Добавьте робототехнику в свое резюме с помощью этого бесплатного онлайн-курса
Дополните свое резюме ценными техническими навыками, которые помогут вам получить повышение, сменить работу и выделиться из толпы.
ESP8266 предназначен для Wi-Fi. Если вы хотите подключить свой новый модуль ESP8266 к сети Wi-Fi, чтобы начать отправлять и получать данные, это хорошее место для начала. Если вы ищете более подробные сведения о том, как программировать определенные функции сети Wi-Fi, вы также находитесь в нужном месте.
Введение¶
Библиотека Wi-Fi для ESP8266 была разработана на основе ESP8266 SDK с использованием соглашений об именах и общей философии функциональности библиотеки Arduino WiFi. Со временем множество функций Wi-Fi, перенесенных из ESP8266 SDK в esp8266/Arduino, переросло библиотеку WiFi Arduino, и стало очевидно, что нам потребуется предоставлять отдельную документацию о том, что нового и дополнительного.
Эта документация познакомит вас с несколькими классами, методами и свойствами библиотеки ESP8266WiFi. Если вы новичок в C++ и Arduino, не волнуйтесь. Мы начнем с общих понятий, а затем перейдем к подробному описанию членов каждого конкретного класса, включая примеры использования.
Объем функций, предлагаемых библиотекой ESP8266WiFi, довольно обширен, поэтому это описание разбито на отдельные документы, отмеченные :arrow_right:.
Быстрый старт¶
Надеюсь, вы уже знакомы с тем, как загрузить скетч Blink.ino в модуль ESP8266 и заставить мигать светодиод. Если нет, воспользуйтесь этим руководством от Adafruit или другим замечательным руководством, разработанным Sparkfun.
Чтобы подключить модуль ESP к Wi-Fi (как подключить мобильный телефон к точке доступа), вам понадобится всего пара строк кода:
В строке WiFi.begin("имя-сети", "pass-to-network") замените имя сети и pass-to-network на имя и пароль сети Wi-Fi, к которой вы хотите подключиться. к. Затем загрузите этот скетч в модуль ESP и откройте последовательный монитор. Вы должны увидеть что-то вроде:
Фактическое подключение к Wi-Fi инициализируется вызовом:
Процесс подключения может занять пару секунд, и мы проверяем, завершился ли он в следующем цикле:
Цикл while() будет продолжаться до тех пор, пока WiFi.status() отличается от WL_CONNECTED . Цикл завершится, только если статус изменится на WL_CONNECTED .
В последней строке будет напечатан IP-адрес, назначенный модулю ESP DHCP:
Если вы не видите последнюю строку, а видите все больше и больше точек . , то скорее всего в скетче неправильно введено имя или пароль к сети Wi-Fi. Подтвердите имя и пароль, подключившись с нуля к этой сети Wi-Fi с ПК или мобильного телефона.
Примечание. если соединение установлено, а затем по какой-то причине потеряно, ESP автоматически повторно подключится к последней использовавшейся точке доступа, как только она вернется в сеть. Это будет сделано автоматически библиотекой Wi-Fi без вмешательства пользователя.
Это все, что вам нужно для подключения ESP8266 к Wi-Fi. В следующих главах мы объясним, какие интересные вещи можно делать с помощью ESP после подключения.
Кто есть кто¶
Устройства, которые подключаются к сетям Wi-Fi, называются станциями (STA). Подключение к Wi-Fi обеспечивается точкой доступа (AP), которая действует как концентратор для одной или нескольких станций. Точка доступа на другом конце подключена к проводной сети. Точка доступа обычно интегрируется с маршрутизатором для обеспечения доступа из сети Wi-Fi в Интернет. Каждая точка доступа распознается по SSID (идентификатору набора услуг), который по сути представляет собой имя сети, которое вы выбираете при подключении устройства (станции) к Wi-Fi.
Модули ESP8266 могут работать как станция, поэтому мы можем подключить их к сети Wi-Fi. Он также может работать как программная точка доступа (soft-AP) для создания собственной сети Wi-Fi.Когда модуль ESP8266 работает как программная точка доступа, мы можем подключать другие станции к модулю ESP. ESP8266 также может работать как в режиме станции, так и в режиме программной точки доступа. Это обеспечивает возможность построения, например. ячеистые сети.
Библиотека ESP8266WiFi предоставляет широкий набор методов (функций) и свойств C++ для настройки и работы модуля ESP8266 в режиме станции и/или программной точки доступа. Они описаны в следующих главах.
Описание класса¶
Библиотека ESP8266WiFi разбита на несколько классов. В большинстве случаев при написании кода пользователь не интересуется этой классификацией. Мы используем его, чтобы разбить описание этой библиотеки на более удобные части.
В главах ниже описаны все вызовы функций (методы и свойства в терминах C++), перечисленные в конкретных классах ESP8266WiFi. Описание проиллюстрировано примерами приложений и фрагментами кода, чтобы показать, как использовать функции на практике. Эта информация разбита на следующие документы.
Станция¶
Режим станции (STA) используется для подключения модуля ESP к сети Wi-Fi, установленной точкой доступа.
Класс Station имеет несколько функций, упрощающих управление подключением Wi-Fi. В случае потери соединения ESP8266 автоматически переподключится к последней использовавшейся точке доступа, как только она снова станет доступна. То же самое происходит при перезагрузке модуля. Это возможно, поскольку ESP сохраняет учетные данные последней использованной точки доступа во флэш-памяти (энергонезависимой). Используя сохраненные данные, ESP также повторно подключится, если эскиз был изменен, но код не изменил режим Wi-Fi или учетные данные.
Ознакомьтесь с отдельным разделом с примерами .
Программная точка доступа¶
Точка доступа (AP) — это устройство, которое предоставляет доступ к сети Wi-Fi другим устройствам (станциям) и подключает их к проводной сети. ESP8266 может обеспечить аналогичную функциональность, за исключением того, что у него нет интерфейса для проводной сети. Такой режим работы называется программной точкой доступа (soft-AP). Максимальное количество станций, которые могут быть одновременно подключены к программной точке доступа, может быть установлено от 0 до 8, но по умолчанию равно 4.
Режим программной точки доступа часто используется в качестве промежуточного шага перед подключением ESP к сети Wi-Fi в режиме станции. Это когда SSID и пароль к такой сети заранее не известны. ESP сначала загружается в режиме программной точки доступа, поэтому мы можем подключиться к нему с помощью ноутбука или мобильного телефона. Затем мы можем предоставить учетные данные для целевой сети. Затем ESP переключается в режим станции и может подключаться к целевому Wi-Fi.
Еще одно удобное применение режима программной точки доступа — настройка ячеистых сетей. ESP может работать как в режиме программной точки доступа, так и в режиме станции, поэтому он может действовать как узел ячеистой сети.
Посмотрите отдельный раздел с примерами .
Чтобы подключить мобильный телефон к точке доступа, вы обычно открываете приложение настроек Wi-Fi, перечисляете доступные сети и выбираете нужную точку доступа. Затем введите пароль (или нет), и вы вошли. Вы можете сделать то же самое с ESP. Функциональность сканирования и составления списка доступных сетей в диапазоне реализуется классом сканирования.
Посмотрите отдельный раздел с примерами .
Клиент¶
Класс Client создает клиентов, которые могут получать доступ к службам, предоставляемым серверами, для отправки, получения и обработки данных.
Ознакомьтесь с отдельным разделом со списком функций
Мульти WiFi¶
ESP8266WiFiMulti.h можно использовать для подключения к сети WiFi с самым сильным сигналом WiFi (RSSI). Для этого требуется зарегистрировать одну или несколько точек доступа с SSID и паролем. Он автоматически переключается на другую сеть Wi-Fi при потере соединения Wi-Fi.
Безопасный клиент и сервер BearSSL¶
BearSSL::WiFiClientSecure и BearSSL::WiFiServerSecure являются расширениями стандартных классов Client и Server, в которых подключение и обмен данными с серверами и клиентами осуществляется по защищенному протоколу. Он поддерживает TLS1.2 с использованием широкого спектра современных шифров, хэшей и типов ключей.
Защищенные клиенты и серверы требуют значительных объемов дополнительной памяти и обработки для включения своих криптографических алгоритмов. Как правило, одновременно может обрабатываться только одно защищенное клиентское или серверное соединение, учитывая небольшой объем ОЗУ, присутствующий на ESP8266, но существуют методы снижения этого требования к ОЗУ, подробно описанные в соответствующих разделах.
BearSSL::WiFiClientSecure содержит дополнительную информацию об использовании и настройке соединений TLS.
BearSSL::WiFiServerSecure обсуждает доступный режим сервера TLS. Сначала прочтите и поймите BearSSL::WiFiClientSecure, так как сервер использует большинство тех же концепций.
Посмотрите отдельный раздел с примерами .
Сервер¶
Класс серверов создает серверы, которые предоставляют функциональные возможности другим программам или устройствам, называемым клиентами.
Клиенты подключаются к серверу для отправки и получения данных и доступа к предоставляемым функциям.
Ознакомьтесь с отдельным разделом с примерами/списком функций.
Класс UDP позволяет отправлять и получать сообщения протокола пользовательских дейтаграмм (UDP). UDP использует простую модель передачи «запустил и забыл» без гарантии доставки, заказа или защиты от дублирования. UDP предоставляет контрольные суммы для проверки целостности данных и номера портов для адресации различных функций в источнике и получателе дейтаграммы.
Ознакомьтесь с отдельным разделом с примерами/списком функций.
Общий¶
Есть несколько функций, предлагаемых SDK ESP8266, но отсутствующих в библиотеке Arduino WiFi. Если такая функция не вписывается ни в один из классов, описанных выше, она, скорее всего, будет в универсальном классе. Среди них обработчик для управления событиями Wi-Fi, такими как подключение, отключение или получение IP-адреса, изменения режима Wi-Fi, функции для управления спящим режимом модуля, преобразование имени хоста в IP-адрес и т. д.
Ознакомьтесь с отдельным разделом с примерами/списком функций.
Диагностика¶
Существует несколько методов диагностики и устранения неполадок, связанных с подключением к Wi-Fi и сохранением соединения.
Проверка кодов возврата¶
Почти каждая функция, описанная в главах выше, возвращает некоторую диагностическую информацию.
Такая диагностика может предоставляться в виде простого логического типа true или false для указания результата операции. Вы можете проверить этот результат, как описано в примерах, например:
Некоторые функции предоставляют больше, чем просто двоичную информацию о состоянии. Хорошим примером является WiFi.status() .
Эта функция возвращает следующие коды, описывающие, что происходит с соединением Wi-Fi:
0 : WL_IDLE_STATUS, когда Wi-Fi находится в процессе смены статусов
1 : WL_NO_SSID_AVAIL, если настроенный SSID недоступен
3 : WL_CONNECTED после успешного установления соединения
4 : WL_CONNECT_FAILED, если соединение не удалось
6 : WL_CONNECT_WRONG_PASSWORD, если пароль неверен
7 : WL_DISCONNECTED, если модуль не настроен в режиме станции
Рекомендуется отображать и проверять информацию, возвращаемую функциями. Это упростит разработку приложений и устранение неполадок.
Использовать printDiag¶
Для распечатки ключевой диагностической информации Wi-Fi доступна специальная функция:
Пример вывода этой функции выглядит следующим образом:
Используйте эту функцию, чтобы предоставить снимок состояния Wi-Fi в тех частях кода приложения, которые, как вы подозреваете, могут дать сбой.
Включить диагностику Wi-Fi¶
По умолчанию вывод диагностики из библиотек Wi-Fi отключен при вызове Serial.begin . Чтобы снова включить вывод отладки, вызовите Serial.setDebugOutput(true) . Чтобы вместо этого перенаправить вывод отладки на Serial1, вызовите Serial1.setDebugOutput(true) . Дополнительные сведения о диагностике с использованием последовательных портов см. в документации.
Ниже приведен пример вывода для примера скетча, описанного выше в разделе «Быстрый старт», с Serial.setDebugOutput(true) :
Тот же скетч без Serial.setDebugOutput(true) распечатает только следующее:
Включить отладку в IDE¶
Arduino IDE предоставляет удобный способ включения отладки для определенных библиотек.
Что внутри?¶
Если вы хотите подробно проанализировать, что находится внутри библиотеки ESP8266WiFi, перейдите непосредственно в папку ESP8266WiFi репозитория esp8266/Arduino на GitHub.
Чтобы упростить анализ, вместо просмотра отдельных заголовков или исходных файлов используйте один из бесплатных инструментов для автоматического создания документации.Указатель классов в главе «Описание классов» выше был подготовлен в кратчайшие сроки с использованием отличного Doxygen, который является стандартным де-факто инструментом для создания документации из аннотированных источников C++.
Инструмент просматривает все заголовки и исходные файлы, собирая информацию из форматированных блоков комментариев. Если разработчик определенного класса аннотировал код, вы увидите это, как в примерах ниже.
Если код не аннотирован, вы все равно увидите прототип функции, включая типы аргументов, и можете использовать предоставленные ссылки, чтобы перейти прямо к исходному коду, чтобы проверить его самостоятельно. Doxygen обеспечивает действительно отличную навигацию между элементами библиотеки.
Некоторые классы ESP8266WiFi не аннотированы. При подготовке этого документа Doxygen оказал огромную помощь в быстрой навигации по почти 30 файлам, составляющим эту библиотеку.
В этом кратком руководстве показаны различные способы повторного подключения платы ESP8266 NodeMCU к сети Wi-Fi после потери соединения. Это может быть полезно, если ESP8266 временно теряет сигнал Wi-Fi; ESP8266 временно находится вне зоны действия Wi-Fi роутера; роутер перезагружается; маршрутизатор теряет интернет-соединение или другие ситуации.
У нас есть аналогичное руководство для платы ESP32:
Повторно подключиться к сети Wi-Fi после потери соединения
ESP8266 может автоматически переподключаться к маршрутизатору в случае сбоя Wi-Fi. Например, если ESP8266 подключен к вашему маршрутизатору, и вы внезапно отключили его, когда он снова включится, ESP8266 может автоматически повторно подключиться. Однако многие наши читатели сообщают о ситуациях, когда ESP8266 не подключается повторно. В таких случаях вы можете попробовать одно из других следующих предложений (продолжить чтение).
Чтобы повторно подключиться к Wi-Fi после потери соединения, вы можете использовать WiFi.setAutoReconnect(true); затем WiFi.persistent(true); для автоматического повторного подключения к ранее подключенной точке доступа:
Добавьте эти предыдущие строки сразу после подключения к сети Wi-Fi. Например:
Вот полный пример использования этого метода. Каждые 30 секунд он печатает статус соединения Wi-Fi. Вы можете временно отключить маршрутизатор и увидеть изменение статуса Wi-Fi. Когда маршрутизатор снова включится, он должен автоматически подключиться.
Другой альтернативой является вызов WiFi.disconnect() с последующим вызовом WiFi.begin(ssid,password), когда вы заметили, что соединение было потеряно (WiFi.status() != WL_CONNECTED)
Кроме того, вы также можете попробовать перезапустить ESP8266 с помощью ESP.restart() при потере соединения.
Вы можете добавить что-то вроде приведенного ниже фрагмента кода в функцию loop(), которая время от времени проверяет, подключена ли доска, и пытается восстановить соединение, если связь потеряна.
Не забудьте объявить предыдущие переменные Millis и interval. Интервал соответствует периоду времени между каждой проверкой в миллисекундах (например, 30 секунд):
Вот полный пример.
В этом примере показано, как подключиться к сети, и каждые 30 секунд выполняется проверка наличия соединения. Если это не так, он отключается и пытается снова подключиться.
Есть также функция WiFi.reconnect(). Однако после нескольких попыток у нас не получилось. Если кто-нибудь знает, есть ли какой-нибудь трюк, чтобы заставить его работать, поделитесь, пожалуйста.
Вы также можете использовать события Wi-Fi, чтобы обнаружить, что соединение было потеряно, и вызвать функцию, которая обработает, что делать, когда это произойдет (см. следующий раздел).
События Wi-Fi ESP8266 NodeMCU
ESP8266 может обрабатывать различные события Wi-Fi. Благодаря событиям Wi-Fi вам не нужно постоянно проверять состояние Wi-Fi. Когда происходит определенное событие, оно автоматически вызывает соответствующую функцию обработки.
Следующие события очень полезны для определения того, было ли соединение потеряно или восстановлено:
- onStationModeGotIP: когда ESP8266 переходит к последнему этапу подключения: получает свой сетевой IP-адрес;
- onStationModeDisconnected: когда ESP8266 больше не подключен к точке доступа.
Перейдите к следующему разделу, чтобы увидеть пример приложения.
Повторное подключение к сети Wi-Fi после потери соединения (события Wi-Fi)
События Wi-Fi могут быть полезны для обнаружения потери соединения и попытки повторного подключения сразу после этого (используйте событие onStationModeDisconnected). Вот пример кода:
Как это работает?
В этом примере мы добавили два события Wi-Fi: когда ESP8266 подключается и получает IP-адрес, и когда он отключается.
Когда станция ESP8266 подключится к точке доступа и получит ее IP-адрес (событие onStationModeGotIP), будет вызвана функция onWifiConnect():
Функция onWifiConnect() просто выводит сообщение об успешном подключении ESP8266 к сети Wi-Fi и его локальный IP-адрес. Однако вы можете изменить функцию, чтобы выполнять любую другую задачу (например, загорание светодиода, указывающее на успешное подключение к сети).
Когда ESP8266 теряет соединение с точкой доступа (событие onStationModeDisconnected), вызывается функция onWifiDisconnect().
Эта функция выводит сообщение о том, что соединение было потеряно, и пытается восстановить соединение:
Подведение итогов
В этом кратком руководстве показаны различные способы повторного подключения платы ESP8266 NodeMCU к сети Wi-Fi после потери соединения (если это не происходит автоматически).
Для получения дополнительной информации о функциях Wi-Fi ESP8266 рекомендуем ознакомиться с документацией:
Одним из лучших применений возможностей Wi-Fi ESP8266 является создание веб-серверов. Если вы хотите использовать платы ESP8266 NodeMCU или ESP32 для создания проектов веб-сервера, вам может понравиться наша электронная книга:
Читайте также: