воскресенье, 7 июня 2026 г.

w801 wifi http softAP

 На момент написания данной статьи, существует одна интересная альтернатива популярным ESP32 т.е. недорогой производительный микроконтроллер со встроенным wifi модулем w801. Интересен он тем что имеет встроенную оперативную память что существенно упрощает разводку платы для такого микроконтроллера. Несмотря на то что существуют версии ESP32 со встроенной оперативной памятью, W801 всё таки может представлять интерес. Этот микроконтроллер не смог стать настолько же популярным в рунете и обзавестись таким же большим колличеством туториалов для простоты его использования но тем не менее. Помочь с его программированием всё таки довольно неплохо могут нейросети. Особенно хорошо что т.о. получилось создать рабочий код http wifi точки доступа и управлять светодиодом на плате через смартфон, сэкономив при этом большое количество времени. Даже если сгенерированный код не рабочий то делать его не с нуля всё равно получается проще. В общем главное что w801 вполне реально использовать наряду с ESP32 как wifi модуль. О том как скомпилировать и загрузить в микроконтроллер программу (это на самом деле не трудно и даже удобно) есть первые три части серии уроков по w801 поэтому сейчас предлагаю рассмотреть исходный код рабочего примера простого http сервера wifi точки доступа для управления светодиодом на плате get запросами.

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

В начале кода имеются заголовочные файлы:

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


После, задается сама html страница, в массиве символов HTTP_RESPONSE[], на языке разметки html. В ней имеется приветствие и пара кнопок для отправки get запросов включения и выключения светодиода. 

Ещё ниже есть две функции взятые из примера для создания точки доступа. Одна собственно инициализирует точку доступа а другая периодически вызывается в таймере для мониторинга, насколько я понял.


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

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

Ниже нейросеть прокомментировала прием двух аргументов функцией создания точки доступа. Возможно есть какая то другая версия SDK где эта функция перегружена и может принимать один параметр но с данным SDK то вызовет ошибку поэтому нужно передавать две структуры. Одну для настройки точки доступа и вторую с настройками ip адреса, маски подсети и dns.

Ещё есть сгенерированнная нейросетью функция для обработки http трафика. В ней создается сокет для прослушивания очереди клиентов.

Очередь прослушивается в бесконечном цикле. И в ответ на get запрос выдается html страница.

Функция UserMain является стартовой. В ней вызывается функция инициализации точки доступа. Также назначаются идентификатор, пароль, номер канала, шифрование, формат данных и в функцию создания задач передается ранее созданная задача обработки http трафика. Если конечно точка доступа была успешно создана. Тут можно заметить сходство функции tls_os_task_create() с рассмотренной ранее при изучении FreeRTOS функцией xTaskCreate().

Для управления светодиодом можно добавить проверку запроса на наличие параметров перед отправкой HTTP заголовка с HTML страницей. И если например есть параметр с командой включения светодиода то включить светодиод. Если есть параметр с командой выключения светодиода то выключить. Далее, в любом случае, клиенту выдается html страница. Которую также можно немного изменить.

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



В функции UserMain добавлена настройка нужного пина на выход. 

Откомпилировать код можно командой sudo make из корня проекта и загрузить специальной командой

sudo tools/w800/wm_tool -c ttyUSB0 -rs rts -dl bin/w800/w800.fls

а после попробовать подключиться к появившейся точке доступа по wifi с телефона или ноутбука. 

Введя нужный пароль (который мы указали в функции UserMain). То далее мы сможем зайти в браузер по дефолтному адресу и получить веб страницу от микрокнотроллера w801 а также управлять светодиодом на плате по wifi, нажимая кнопки в web интерфейсе. Успешное тестирование кода и платы можно посмотреть на видео

Я думаю, это есть успешное создание wifi http сервера на w801. Данный код можно взять за основу и использовать для создания более сложных проектов. Можно развивать идею дальше и освоить например post запросы, ajax, другие протоколы помимо http, например mqtt который лучше подходит для умного дома и интернета вещей, udp который лучше подходит для передачи видео или https который как http только зашищенный шифрованием.

Адрес биткоин кошелька для поддержки блога - bc1qlhrmmkh77x2lzhqe4lt9qwkglswj64tsqt2l5g

Комментариев нет:

Отправить комментарий