Esp32 подключение к wifi

Обновлено: 05.07.2024

Платы ESP32 весьма популярны в виду низкой цены, неплохой вычислительной мощности (процессор 200МГц), развитого SDK с поддержкой как MicroPython так и Arduino IDE, наличием GPIO c поддержкой периферии (SPI, I2C и пр) и беспроводной связи (WiFi, Bluetooth). Сегодня мы посмотрим, что можно сделать на такой плате ценой всего лишь около 12$.


Мы рассмотрим разные варианты использования WiFi, от простого коннекта к сети до WiFi-сниффера. Для тестов понадобится любая плата с ESP32 (лучше с OLED-экраном, как на картинке) и Arduino IDE.

Для тех кому интересно как это работает, продолжение под катом.

Я не буду писать, как подключить библиотеки ESP32 к Arduino IDE, желающие могут посмотреть здесь. Отмечу лишь, что у данной платы есть особенность — для загрузки кода из Arduino IDE нужно во время заливки нажать и подержать кнопку Boot. В остальном, использование платы ничем не отличается от обычных Arduino.

Теперь приступим к коду. Все примеры кода полностью готовы к использованию, их можно просто скопировать и вставить в Arduino IDE.

1. Подключение к WiFi и получение точного времени

Раз уж на плате есть WiFi, самое простое что мы можем сделать, это подключиться к существующей WiFi-сети. Это общеизвестно, и работало еще на ESP8266. Однако просто так подключиться и ничего не делать неинтересно, покажем как загрузить точное время по NTP. С помощью нижеприведенного кода нашу плату с ESP несложно превратить в настольные (или для гиков 100lvl наручные:) часы.


Код довольно прост, интересно что поддержка NTP уже встроена в стандартные библиотеки, и ничего доустанавливать не нужно. Для работы OLED-экрана нужно установить библиотеку SSD1306.

Переменные ssid и password нужно будет заменить на параметры реальной точки доступа, в остальном, все работает «из коробки».

2. WiFi точка доступа

Разумеется, мы можем не только подключиться к точке доступа, но и создать свою. В данном примере мы запустим мини веб-сервер, открыть который можно например, со смартфона. Отдельно можно отметить обработку события SYSTEM_EVENT_AP_STACONNECTED, что позволяет узнать, сколько клиентов подключалось к нашей точке доступа.

Фото того, как это работает, показано на КДПВ.


При запуске программы на экране будет отображено имя точки доступа и IP-адрес. Подключившись со смартфона к точке доступа, можно в браузере набрать IP и увидеть содержимое web-страницы.

Сервер будет работать и без OLED-экрана, в этом случае отладочную информацию можно смотреть с помощью Serial Monitor в Arduino IDE.

3. WiFi точка доступа с DNS


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

4. WiFI Sniffer


Это может пригодиться например, для «умного дома», чтобы узнать когда владелец вернулся домой. Некоторые компании используют MAC-адреса устройств для мониторинга посетителей, чтобы потом показывать им в гугле таргетированную рекламу.

5. WiFi Packet Monitor


Другой пример использования promiscuous mode — графический мониторинг активности канала, также как и в предыдущем случае, подключения к самой сети не требуется.

Исходный код был взят здесь, из него была убрана поддержка записи на SD (на плате её все равно нет) и был исправлен баг с графической библиотекой. Переключать номер канала для мониторинга можно либо нажатием кнопки (на плате её тоже нет:) либо посылкой соответствующего числа через Serial Monitor в Arduino IDE.

Одна плата ESP32 может мониторить только 1 канал, но при дешевизне этих плат вполне можно сделать вот так:

Заключение

Как можно видеть, в плане соотношения возможностей и цены, ESP32 довольно интересны, и в любом случае, намного функциональнее обычных Arduino. Эксперименты с WiFi также довольно занимательны, на плате можно держать не только вполне функционирующий веб-сервер (даже с поддержкой websockets), но и изучить работу WiFi и MAC более детально.

В целом, модули ESP32 интересны тогда, когда возможностей Arduino уже не хватает, а использовать Raspberry Pi с Linux еще избыточно. Кстати, вычислительные возможности ESP32 позволяют использовать даже модуль камеры, так что плату можно использовать в качестве беспроводного видеозвонка или прототипа для домашней системы видеонаблюдения.

В сетях Wi-Fi микроконтроллер ESP32 может работать и как станция, и как точка доступа, и в обоих режимах одновременно. В этом руководстве мы покажем, как настроить ESP32 в качестве точки доступа с использованием среды программирования Arduino IDE.

Как настроить точку доступа на ESP32 для веб-сервера

В большинстве проектов мы подключали микроконтроллер ESP32 к беспроводному маршрутизатору. При этом появляется доступ к ESP32 через локальную сеть. Тогда маршрутизатор служил точкой доступа, а ESP32 был настроен как станция. А для управления микроконтроллером ESP32 необходимо было подключиться к маршрутизатору (локальной сети).

Как настроить точку доступа на ESP32 для веб-сервера

Но если вы настроите микроконтроллер ESP32 как точку доступа (как в местах общественного беспроводного доступа), вы сможете подключиться к ESP32 с помощью любого устройства с интерфейсом Wi-Fi без необходимости соединения с маршрутизатором.

Простыми словами, когда вы настраиваете ESP32 как точку доступа, вы создаёте свою собственную сеть Wi-Fi, а находящиеся поблизости устройства с интерфейсом Wi-Fi (станции) могут подсоединяться к микроконтроллеру (например, смартфон или компьютер).

Как настроить точку доступа на ESP32 для веб-сервера

Здесь мы покажем, как настроить ESP32 как точку доступа для своего проекта с веб-сервером. В этом случае вам не понадобится подключаться к маршрутизатору для управления микроконтроллером ESP32. Так как ESP32 не подключается далее к более широкой сети (в отличие от маршрутизатора), она называется мягкая точка доступа (soft Access Point).

Установка ESP32 в Arduino IDE

Для среды Arduino IDE существует дополнение, которое позволяет программировать микросхему ESP32 посредством этой среды и её языка программирования.

Код для создания точки доступа на ESP32

В этом примере мы модифицируем веб-сервер на микроконтроллере ESP32 из прошлого руководства, чтобы добавить возможность работы в качестве точки доступа. То, что мы здесь представим, должно отлично работать с любым примером, представляющим собой веб-сервер на ESP32.

Загрузите приведённый ниже код, чтобы настроить микроконтроллер ESP32 как точку доступа.

ESP32 DevKit — это универсальная платформа для разработки IoT-решений.


Программирование на C++


Для начала работы с платформой ESP32 DevKit на языке C++ скачайте и установите на компьютер интегрированную среду разработки Arduino IDE. По умолчанию среда IDE настроена только на AVR-платы. Для платформы ESP32 DevKit добавьте в менеджере плат поддержку платформ на модуле ESP32. Выберите платформу ESP32 DevKit: Инструменты Плата DOIT ESP32 DEVKIT V1 .

После выполненных действий плата ESP32 DevKit готова к программированию через Arduino IDE.

Подробности о функциях и методах работы ESP32 на языке C++ читайте на ESP32 Arduino Core’s.

Примеры работы для Arduino

ESP32 может подключиться к Wi-Fi сети, создать собственную точку доступа, представляться сервером и клиентом, формировать GET и POST запросы. Также микроконтроллер имеет два АЦП и датчик Хола.

Пример WebClient

После подключения к Wi-Fi микроконтроллер напишет в COM порт ответ от сервера.


Пример Analog WebServer

ESP32 имеет 15 аналоговых пинов. Выведем через веб-интерфейс значения с 36, 39 и 34 пина.

Когда микроконтроллер подключится к Wi-Fi сети, в монитор порта будет выведен IP-адрес веб-страницы с данными. Получить к ней доступ можно из локальной сети, перейдя по указанному IP-адресу. Скопируйте IP-адрес из монитора порта и вставьте в адресную строку браузера. Если вы подключены к той же локальной сети, что и ESP32, то вы увидите веб-интерфейс.

Пример blink WebServer

Создадим WEB-сервер на порту 80. С помощью веб-интерфейса будем мигать светодиодами на 16 и 17 пинах.


При переходе по IP-адресу из монитора порта, выводится веб-страница с кнопками.

Программирование на JavaScript


Для старта с платформой Wi-Fi Slot на языке JavaScript скачайте и установите интегрированную среду разработки — Espruino Web IDE.

Подробнее о функциях и методах работы ESP32 на языке JavaScript читайте документацию на Espruino.

Элементы платы


Мозг платформы

Платформа для разработки ESP32 DevKit основана на модуле ESP32-WROOM с чипом ESP32-D0WDQ6 от Espressif.


Чип ESP32-D0WDQ6

Чип ESP32-D0WDQ6 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле), в которую входит 2-ядерный 32-битный процессор Tensilica Xtensa LX6 с блоками памяти ROM на 448 КБ и SRAM на 520 КБ. В кристалле также расположены беспроводные технологии Wi-Fi/Bluetooth, радио-модуль, датчик Холла и сенсор температуры.

Для работы с чипом необходима внешняя Flash-память и другая электронная обвязка. Кристалл ESP32-D0WDQ6 является основой на базе которой выпускаются модули с необходимой периферией: например ESP32-WROOM или ESP32-WROVER .

Модуль ESP32-WROOM

ESP32-WROOM — модуль с чипом ESP32-D0WDQ6, Flash-памятью на 4 МБ и всей необходимой обвязкой, которые спрятаны под металлическим кожухом. Pins SCK/CLK, SDO/SD0, SDI/SD1, SHD/SD2, SWP/SD3 and SCS/CMD, namely, GPIO6 to GPIO11 are connected to the integrated SPI flash integrated on the module and are not recommended for other uses.

Рядом с кожухом расположена миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Металлический кожух экранирует компоненты модуля и тем самым улучшает электромагнитные свойства.

Модуль является основной, на которой выполняются промышленные устройства или отладочные платы, например: ESP32 DevKit или ESP32-Sense Kit .

USB-UART преобразователь

Преобразователь USB-UART на микросхеме CP2102 обеспечивает связь модуля ESP32-WROOM с USB-портом компьютера. При подключении к ПК — платформа ESP32 DevKit определяется как виртуальный COM-порт.

Разъём micro-USB

Разъём micro-USB предназначен для прошивки и питания платформы ESP32 DevKit с помощью компьютера.

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания платформы.
LED Пользовательский светодиод на 2 пине микроконтроллера. При задании значения «высокого уровня» светодиод включается, при «низком» – выключается.

Кнопка EN

Кнопка предназначена для ручного сброса программы — аналог кнопки RESET обычного компьютера.

Кнопка BOOT

Кнопка служит для ручного перевода модуля в режим прошивки:

Регулятор напряжения

Линейный понижающий регулятор напряжение AMS1117-3.3 обеспечивает питание микроконтроллера. Выходное напряжение 3,3 вольта с максимальным током 1 А.

Распиновка


Пины питания

VIN: Пин для подключения внешнего источника напряжения в диапазоне от 5 до 14 вольт. 3V3: Пин от стабилизатора напряжения с выходом 3,3 вольта и максимальных током 1 А. Регулятор обеспечивает питание модуля ESP32-WROOM.

Порты ввода/вывода

В отличие от большинства плат Arduino, родным напряжением ESP32 DevKit является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить микроконтроллер!

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

Сегодня я хотел-бы рассказать про ESP32.
ESP-WROOM32 это Wi-Fi и Bluetooth модуль на одной плате, который внешне похож на старый ESP8266, но отличается тем что он более мощный и у него имеется больше количество портов ввода вывода, а также пониженным энергопотреблением.
Перед вами модуль ESP32 на отладочной плате:

Подключенный ESP32

Подключение.

Подключается ESP32 к компьютеру через обычный Android USB шнур (которым заряжается телефон).
После того как вы подключили W-Fi модуль, у вас появится сеть, которая будет называться как-то так, цифры могут отличаться:
ESP_B3FFA6

Найденная сеть esp_b3ffa6

Найденная сеть esp_b3ffa6

Скачиваем и благодарим

Скачиваем и благодарим

После скачивания файла, запускаем его с Правами администратора (Правой кнопкой мыши по файлу – Запуск от имени администратора).
Далее установка:
На первой странице жмем далее, по-ихнему Next

На следующей оставляем все по умолчанию, опять далее

Ставим первую галочку (по желанию) - это добавление на рабочий стол иконок.

Далее в выпадающем окне выбираем текстовый редактор который у вас будет использоваться для редактирования текстовых файлов, у меня Notepad++, поэтому я выбираю USE Notepad++ as Git’s default editor жмем Next.

Выбор текстового редактора Notepad++

Выбор текстового редактора Notepad++

Скачивание Notepad++

Далее, в остальных окошках везде: Next.

После окончания установки убираем галочку с нижней и нажимаем Finish.

Окончание установки

Видим один ярлык Git Bash, но сейчас он нам не нужен.
Заходим в папку, в которую установился Git.
Скорее всего это C:\Program Files\Git
Заходим там в папку cmd и открываем git-gui

Программа Git Gui

Программа Git Gui

В Source Location нужно вставить ссылку

В Source Location нужно вставить ссылку

Жмем Clone и ждем окончания работы программы.

Скачивание файлов с GitHub

Скачивание файлов с GitHub

Окно Git Gui (esp32)

Окно Git Gui (esp32)

Когда появится окно Git Gui (esp32) открываем путь, который вы вписывали в Target Directory и переходим в папку tools (Получается вот так C:\Users\Max\Documents\Arduino\hardware\espressif\esp32\tools), там запускаем файл get.exe, ждем пока скачаются и установятся необходимые файлы.

Get.exe скачивает файлы

Get.exe скачивает файлы

После того как get.exe закончит свою работу, подключаем наш ESP32 к компьютеру, теперь драйвера должны корректно установиться. В диспетчере устройств у меня появится Silicon Labs CP210x USB to UART Bridge.
Запускаем Arduino. Во вкладке Инструменты – Плата выбираем ESP32 Dev Module.

Выбор платы ESP32

Выбор платы ESP32

Выбор скорости

Далее выбираем Файл – Примеры – WiFi – WiFiScan и нажимая на модуле ESP32 кнопку BOOT, далее нажимаем загрузить скетч.

Выбор примера WiFiScan

Выбор примера WiFiScan

Готово. Теперь если открыть монитор порта и поставить вместо 9600 -> 115 200, у покажутся все сети, которые есть вокруг.

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