Подключение Wi-Fi Nodemcu

Обновлено: 21.11.2024

Таким образом, если вы хотите создать собственный прототип с сетевыми возможностями, вы сможете собирать и публиковать данные из облака, из дома и практически из любого места.

Подключение к 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 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 для создания проектов веб-сервера, вам может понравиться наша электронная книга:

В этом примере мы будем отправлять показания датчика BME280 с одной платы на другую. Приемник отобразит показания на OLED-дисплее.

Если у вас есть плата ESP32, вы можете прочитать это специальное руководство: ESP32 Client-Server Wi-Fi Communication.

Посмотреть видеодемонстрацию

Чтобы увидеть, как работает проект, вы можете посмотреть следующее демонстрационное видео:

Обзор проекта

Чтобы лучше понять, как все работает, взгляните на следующую диаграмму.

Необходимые детали

Для этого руководства вам понадобятся следующие компоненты:

Установка библиотек

Для этого руководства вам необходимо установить следующие библиотеки:

Библиотеки асинхронного веб-сервера

Эти библиотеки недоступны для установки через диспетчер библиотек. Итак, вам нужно разархивировать библиотеки и переместить их в папку установочных библиотек Arduino IDE.

Кроме того, вы можете перейти в Sketch > Включить библиотеку > Добавить библиотеку .ZIP… и выбрать библиотеки, которые вы только что загрузили.

Библиотеки BME280

С помощью диспетчера библиотек Arduino можно установить следующие библиотеки. Перейдите в Sketch > Включить библиотеку > Управление библиотеками и найдите имя библиотеки.

Библиотеки I2C SSD1306 OLED

Для взаимодействия с OLED-дисплеем вам потребуются следующие библиотеки. Их можно установить через Arduino Library Manager. Перейдите в Sketch > Включить библиотеку > Управление библиотеками и найдите имя библиотеки.

Сервер ESP8266 представляет собой точку доступа (AP), которая прослушивает запросы по URL-адресам / Temperature , / Humidity и / Pressure. Когда он получает запросы по этим URL-адресам, он отправляет последние показания датчика BME280.

Для тестирования мы используем датчик BME280, но вы можете использовать любой другой датчик, изменив несколько строк кода (например, DHT11/DHT22 или DS18B20).

Схема

Подключите ESP8266 к датчику BME280, как показано на следующей схеме.

BME280ESP8266
VIN/VCC 3,3 В
GND GND
SCL GPIO 5 (D1)
SDA GPIO 4 (D2)

Загрузите следующий код на свою доску.

Как работает код

Включите следующие библиотеки для взаимодействия с датчиком BME280.

В следующих переменных определите сетевые учетные данные вашей точки доступа:

Мы задаем для SSID значение ESP8266-Access-Point , но вы можете присвоить ему любое другое имя. Вы также можете изменить пароль. По умолчанию установлено значение 123456789 .

Создайте экземпляр датчика BME280 с именем bme .

Создайте асинхронный веб-сервер на порту 80.

Затем создайте три функции, которые возвращают температуру, влажность и давление в виде строковых переменных.

В setup() инициализируйте Serial Monitor для демонстрационных целей.

Настройте ESP8266 в качестве точки доступа с указанными ранее именем SSID и паролем.

Затем обработайте маршруты, по которым ESP8266 будет прослушивать входящие запросы.

Например, когда сервер ESP8266 получает запрос по URL-адресу /temperature, он отправляет температуру, возвращенную функцией readTemp(), в виде символа (поэтому мы используем метод c_str()).

То же самое происходит, когда ESP получает запрос по URL-адресам /humidity и /pressure.

Следующие строки инициализируют датчик BME280.

Наконец, запустите сервер.

Поскольку это асинхронный веб-сервер, в loop() ничего нет.

Тестирование сервера ESP8266

Загрузите код на свою плату и откройте Serial Monitor. У вас должно получиться следующее:

Это означает, что точка доступа установлена ​​успешно.

Теперь, чтобы убедиться, что он прослушивает запросы температуры, влажности и давления, вам нужно подключиться к его сети.

На смартфоне перейдите в настройки Wi-Fi и подключитесь к ESP8266-Access-Point. Пароль 123456789.

При подключении к точке доступа откройте браузер и введите 192.168.4.1/температура

Вы должны получить значение температуры в браузере:

Попробуйте этот URL-адрес для влажности 192.168.4.1/humidity :

Наконец, перейдите на 192.168.4.1/давление URL:

Если вы получаете достоверные показания, это означает, что все работает правильно. Теперь вам нужно подготовить другую плату ESP8266 (клиент), чтобы сделать эти запросы для вас и отобразить их на OLED-дисплее.

Схема

Подключите OLED-дисплей к плате ESP8266, как показано на следующей схеме.

< /tr>< /tr>
PinESP8266
Vin 3,3 В
GND GND
SCL GPIO 5 (D1)
SDA GPIO 4 (D2)

Загрузите следующий код на другой ESP8266 (клиент):

Как работает код

Необходимо создать экземпляр WiFiMulti.

Вставьте сетевые учетные данные сервера ESP8266. Если вы изменили сетевые учетные данные по умолчанию на сервере ESP8266, вам следует изменить их здесь, чтобы они соответствовали друг другу.

Включите библиотеки для взаимодействия с OLED-дисплеем:

Установите размер OLED-дисплея:

Создайте экранный объект с размером, который вы определили ранее, и с протоколом связи I2C.

Инициализируйте строковые переменные, в которых будут храниться значения температуры, влажности и давления, полученные сервером.

Установите временной интервал между каждым запросом. По умолчанию установлено значение 5 секунд, но вы можете изменить его на любой другой интервал.

В setup() инициализируйте OLED-дисплей:

Примечание. Если ваш OLED-дисплей не работает, проверьте его адрес I2C с помощью эскиза сканера I2C и соответствующим образом измените код.

Подключите клиент ESP8266 к сети сервера ESP8266.

Вы можете использовать в своих проектах следующую функцию для упрощения кода:

Эта функция используется для получения с сервера показаний температуры, влажности и давления.

Распечатайте эти показания в Serial Monitor для отладки.

Затем отобразите температуру на OLED-дисплее:

Наконец, показания давления:

Мы используем таймеры вместо задержек, чтобы делать запрос каждые x секунд. Вот почему у нас есть переменные previousMillis, currentMillis и функция millis(). У нас есть статья, в которой показана разница между таймерами и задержками, которая может быть вам полезна (или прочтите Таймеры ESP8266).

Тестирование клиента ESP8266

Это то, что вы должны увидеть на последовательном мониторе клиента ESP8266.

Показания датчиков также отображаются на OLED-дисплее.

Вот оно! Две ваши платы ESP8266 взаимодействуют друг с другом.

Подведение итогов

В демонстрационных целях мы показали, как отправлять показания датчика BME280, но вы можете использовать любой другой датчик или отправлять любые другие данные. Другие рекомендуемые датчики:

У нас есть похожее руководство для ESP32, которое может оказаться вам полезным:

Мы надеемся, что вам понравился этот урок. Мы готовим больше подобных руководств. Так что следите за обновлениями и подписывайтесь на наш блог!

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, в которых подключение и обмен данными с серверами и клиентами осуществляется по защищенному протоколу. Он поддерживает TLS 1.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 файлам, составляющим эту библиотеку.

Читайте также: