Найти в Дзене
narod stream

Урок 31. Wi-Fi. STA. HTTP Server. Параметры

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

Мы подключим к плате светодиод RGB и будем со странички кнопками управлять его отдельными кристаллами — зажигать их и гасить. Пока для этого мы будем использовать GET-запросы. Обычно целесообразнее использовать запросы POST, которые передают информацию, невидимую в строке браузера, но мы пойдём от простого к сложного.

Таким образом, схема нашего урока будет состоять из отладочной платы с контроллером ESP32 и RGB-светодиода, подключенного через токоограничивающие резисторы номиналом 220 Ом к ножкам порта контроллера 21, 22 и 23. Общий провод светодиода я подключил к ножке питания 3,3 вольта платы, так как у меня светодиод с общим анодом. Если у кого-то он с общим катодом, то подключается общий провод светодиода, соответственно, к общему проводу платы.

Итак, вот наша схема

Подключим нашу плату к порту USB компьютера.

А так как мы также контент для передачи клиента будем располагать в файловой системе SPIFFS, то проект был сделан из проекта прошлого урока с именем WIFI_STA_HTTP_SERVER_SPIFFS и получил новое имя WIFI_STA_HTTP_SERVER_PARAM.

Откроем наш проект в Espressif IDE и добавим для наших светодиодов новые пункты в меню в файле Kconfig.projbuild после пункта LED_GPIO

Соберём проект и убедимся, что новые пункты появились, заодно и логин с паролем впишем, если у кого неправильный

-2

Пока ненадолго оставим наш проект и займёмся файлом страницы нашего клиента index.html.

Файл мы данный создадим новый и для начала будет у него вот такое вот содержимое

У нас получится страничка с шестью кнопками. При нажатии на них будут теперь отправляться серверу соответствующие параметры. Если мы нашу страничку сейчас откроем в браузере, то получим вот такой вид

-3

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

Также добавим данный класс к кнопкам в форме

Посмотрим теперь нашу страничку

-4

Ну теперь получше. Кнопки также видоизменяются при наведении и нажатии на них.

Сохраним наш файл в раздел SPIFFS нашей платы. Как это делать, мы уже хорошо знаем.

Теперь продолжим работу с проектом.

В файле main.c в функции app_main настроим наши ножки портов и установим на них высокий уровень. Общий анод, как никак

В файле http.h подключим заголовочный файл для работы с GPIO

Перейдём в файл http.c и в функции download_get_handler объявим символьный указатель и переменную для размера

Узнаем, есть ли в запросе параметры. Если есть, то вернётся их размер, если нет, то ноль. Также выведем данный размер в терминал

Если параметры всё-таки есть, то запросим память под строку

Теперь запросим сами параметры. Если всё удачно, то объявим небольшой символьный массив

Если имя параметра red, то узнаем его значение и выведем в терминал, а также зажжём или погасим соответствующий кристалл светодиода

Аналогично поступим с другими цветами

Выйдем из цикла с запросом значения и очистим память

Вот, в принципе, и весь код. Всё просто, когда есть нормальная библиотека. Представьте, если бы мы парсили параметры самостоятельно. Кода получилось бы значительно больше.

Соберём код, прошьём контроллер, узнаем сетевой адрес платы в терминале и запросим нашу страничку в браузере

-5

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

-6
-7
-8

Также можем зажечь все кристаллы одновременно

-9

Можем комбинировать по два разных кристалла

-10
-11
-12

Засчёт автоматического цветобаланса (что видно из окрашивания платы в разные цвета) тяжело увидеть реальный цвет, но, тем не менее, самое главное, что наша задумка работает как надо. Мы можем со странички клиента управлять чем угодно на сервере.

Итак, на данном уроке мы научились в нашем сервере HTTP работать с параметрами, переданными клиентом. Понятно, что хочется передать клиенту обратно информацию о том, что его команда выполнена, но это позже, когда будем работать с запросами POST и при помощи AJAX получать в браузере клиента информацию от сервера и все результаты размещать в любом месте страницы, причём без её полной перезагрузки, что имеет место у нас в данном уроке.

Всем спасибо за внимание!

Оригинал статьи находится здесь.

<<Предыдущий урок | Следующий урок>>

Исходный код

Утилита для работы с файловой системой SPIFFS: mkspiffs

Недорогие отладочные платы ESP32 можно купить здесь
Недорогие отладочные платы ESP32/ESP32-C3/ESP32-S3 можно купить
здесь
Логический анализатор 16 каналов можно приобрести
здесь
Многофункциональный переходник CJMCU FT232H USB к JTAG UART FIFO SPI I2C можно купить
здесь

Видео в Rutube

Программирование МК ESP32. Урок 31. Wi-Fi. STA. HTTP Server. Параметры

Видео в Дзен

Видео в Youtube

Что-то пошло не так, и нам не удалось загрузить комментарии. Попробуйте ещё раз
Рекомендуем почитать
Как сделать Wi-Fi дома быстрее и удобнее? Делимся секретами
Человечество когда-то наверняка избавится от всех проводов, и даже стационарные компьютеры получат свободу — их отвяжут от кабелей. Хотя не ПК единым жив интернет, поэтому вместе с A1 рассказываем, как сделать Wi-Fi быстрее и удобнее в квартире, где соседские точки доступа мешают друг другу и меряются, у кого интерференция больше. Где в квартире поставить «главный» Wi-Fi-роутер? И что мешает сигналу? Чтобы понять, как сделать лучше, нужно знать, почему может быть плохо и что нужно учитывать. Место размещения Wi-Fi-точки зависит от ряда переменных...
5 секретов идеального WI-FI которые скрывают провайдеры
Вы когда-нибудь замечали, как в одних уголках квартиры интернет летает, а в других еле ползёт? Оказывается, дело не всегда в провайдере. Эксперт с 15-летним стажем в сетевых технологиях раскрывает главные правила размещения роутера, о которых молчат монтажники. По данным Росстата за 2024 год, каждый третий абонент домашнего интернета в России недоволен качеством соединения. При этом в 89% случаев проблема решается банальной перестановкой роутера. Вот что говорит статистика: "Современные роутеры — как капризные артисты...
Как сделать свой сервер? Что такое NAS сервер и RAID?
В наше время практически у каждого есть огромный объём личных цифровых данных, которые с трудом умещаются на компьютере. Это и различные рабочие файлы, архив домашних фото и видео, и так далее. И если вы работаете с графикой, фото или видеосъемкой, то объем этих данных действительно колоссален. Лично я столкнулся с проблемой дефицита места на компьютере, и для понимания поясню. У меня сейчас установлено в ПК жёстких дисков на 7,5 террабайт суммарно, не включая системный ССД. И места катастрофически не хватает...
Следующая статья
Документы, вакансии и контакты