pvvx
Активный участник сообщества
Разработка ‘библиотеки’ малого Webсервера на ESP8266.
Исходники https://github.com/pvvx/esp8266web
Компилятор тут Unofficial Development Kit for Espressif ESP8266 (c) by CHERTS.
Инструкция по пользованию Eclipse. В данной теме такие вопросы не разбираются (!), тут не школа для обучения азам программирования.
* При прошивке всегда ставим размер Flash 512 Кбайт (4Mbit)! Реальный размер определяется автоматически самой прошивкой.
* Если Flash на модуле более 512 Кбайт, то после подключения к AP "ESP8266" требуется заливка диска программой WEBFS22.exe или эксплорером набрав http://192.168.4.1/fsupload. Можно записать WEBFiles.bin и программатором по адресу 0x80000.
В новых версиях esptool.py берется из директории проекта. Для MakeFile путь к ней автоматически задается в Eclipse с помощью "переменной среды" "CWD". Так-же возможна трансляция и без MakeFile, с автоматической генерацией и заданием всех параметров в самой Eclipse. Для этого необходимо переключить в иконке "Manage configurations for the current progects" на AutoMake и пользоваться иконкой или другими кнопками в Eclipse (иконка с молотком или "Project->Build Project", "Project->Clean"). В этом режиме все установки проекта, вплоть до специальных к каждому файлу, доступны в меню "Project->Properties" при выборе объекта (или всего проекта) в окне "Project Explorer". Прошить flash в этом режиме возможно выбрав в меню "Run->External Tools->FlashProg" или в панели иконок, а так-же изменив режим на "Default(Use Makefile)" и выбрав действие в окне "Make Target".
Страница будет обновляться, по мере доработки web сервера.
Внимание: у модулей ESP-01 нога RTS закорочена на GND проводником под чипом(!) - обязательно отключите FlowControl у TCP2UART - иначе чип сильно греется и глючит.
Конкретные проекты, использующие данный Web-сервер за основу, обсуждаются в отельных темах:
Проект переходника TCP2UART.
Основные цели данной "свалки":
1) Управление конфигурацией WiFi модуля и приложений на ESP8266 с помощью любого устройства с интернет браузером не ниже версии HTTP/1.0.
2) Предусмотреть возможность подключения программных модулей для работы с разной периферией.
3) Использование минимальных затрат web сервером "heap" памяти и других ресурсов ESP8266.
Что уже сделано в текущей версии webсервера:
1) Обслуживание запросов GET/POST/websocket и их разбор.
2) Разбор параметров передаваемых в URI, cookie, контексте HTTP запроса и multipart/form-data в POST.
3) Прием разбитых на множественные tcp пакеты HTTP запросов (общая длина HTTP заголовка ограничена в web_srv_int.h на 3070 байт).
4) Отдача фалов со встроенного диска на flash и обслуживание TCP потока более 600 килобайт/сек.
5) Обработка в отдаваемых сервером файлов с атрибутом "парсить" вставок обрамленных '~'. (К примеру: ~inc:имя файла~ вызывает вставку указанного файла, ~wifi_ap_ip~ вставляет в поток IP ...)
6) Поддержка более десятка одновременно открытых соединений до ограничения памяти.
7) Управление всеми известными параметрами WiFi модуля на ESP8266ex.
Что не будет:
1) Обслуживания пакетных запросов при “Connection: keep-alive” (связано с ограничением памяти у ESP8266 и их негде собирать и хранить для каждого соединения).
Чего нет или “зависло”:
1) Дизайн HTML основных страниц webсервера. Просто некогда этим заниматься. Имеющиеся – это тестовые или предоставленные другими. Приветствуется предоставление дизайна от “сообщества” Никакие претензии и указания ошибок в имеющихся не принимаются. Только при предоставлении полной альтернативы и дизайна всех страниц для всех.
Приложенная программа генерации image диска (WEBFS22.exe):
Требует установленного .NET Framework 2.0
Записывает файловую систему в модуль по инет с нуля при наличии только прошивки самого кода и установке соединения с модулем по WiFi. При смене настроек WiFi укажите их в меню настроек соединения. В меню "Advanced Settings" программа позволяет изменять список расширений ваших исходных файлов использующих переменные dynamic files и какие файлы не сжимать GZIP (Do not Compress). Исходные тексты программы приложены и являются модификацией программы MPFS2.1 от Microchip.
На стандартной flash (512к) максимальный размер файловой системы (WEBFiles.bin) составляет около 256 килобайт. Он находится сразу после всех программных кодов и заканчивается до 0x79000. В последних версиях этот стартовый адрес равен 0x39000 (см. уточнения в bin\readme.txt).
При использовании большей Flash, более чем 512к, адрес записи диска всегда начинается с 0x80000 (512к) и диск использует область до конца flash (на W25Q128 это= 16252928 bytes или 15,5 Mbytes).
Загрузка диска (WEBFiles.bin) во flash при его отсутствии (или наличию) в експлорере можно произвести набрав: http://192.168.4.1/fsupload (где 192.168.4.1 – текущий или по умолчанию IP адрес модуля).
Файлы, вызываемые с диска, при обработке запросов HTTP на ошибки:
400 Bad Request - сервер обнаружил в запросе клиента синтаксическую ошибку.
401 Unauthorized - для доступа к запрашиваемому ресурсу требуется аутентификация.
404 Not found - Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
411 Length Required - для указанного ресурса клиент должен указать Content-Length в заголовке запроса.
414 Request-URI Too Long - сервер не может обработать запрос из-за слишком длинного указанного URL.
418 I'm a teapot - http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol
501 Not Implemented - сервер не понимает указанный в запросе метод.
Имя файлов ошибок строится как "(HTTP номер ошибки).htm". Пример, при ошибке 400, ищется файл с именем "400.htm". Если такого файла на диске нет, то вставляется стандартный внутренний ответ.
Кол-во файлов на диске ограничено до 250.
Изменить настройки WiFi или что-то ещё без наличия загруженного диска во flash, можно подав запрос http://192.168.4.1/ или http://192.168.4.1/web.cgi и передав необходимые переменные в строке URL (?name=value&name=value...), или cookie, или контексте POST форматом multipart/form-data. Пример: посмотреть дамп памяти http://192.168.4.1/web.cgi?hexdmpb0x40200000=1024
При запросе файла с сервера, содержащем в названии 'protect' (каталога или имени) используется авторизация с именем и паролем от AP станции.
При первом старте, после прошивки программы, имеем:
Name: ESP8266
Password: 0123456789
Режим доступа AP по умолчанию 'OPEN'.
Имя AP и её пароль является именем и паролем для входа на "защищенные" страницы сервера и используется для записи диска по http://192.168.4.1/fsupload.
Область сохранения настроек на текущем тесте назначена на 3 сектора в области адресов Flash c 0x79000 по 0x7C000. Их можно очистить, записав туда blank.bin по 3-м адресам: 0x79000, 0x7a000, 0x7b000 в FLASH_DOWNLOAD_TOOLS или в среде Eclipse опцией 'FlashClearSetings'.
Для ускорения загрузки и использования 48 килобайт IRAM вместо 32 проект использует специальный дополнительный загрузчик "RapidLoader". График загрузки с RapidLoaderV2.
Измеренные ТТХ по питанию модуля:
Потребление при передаче на скорости к 1 мегабайт в секунду - пример два графика в конце
Потребление модулем в разных режимах WiFi-sleep модуля и стартовые примеры
Потребление по питанию часов (по ноге RTC_VDD)
Потребление при прошивке модуля с помощью esptool.py
Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/
Потребление с фирменной фичей в режиме ST, при поиске внешней AP.
Скорость реакции ножки RESET по просыпанию от ноги GPIO16 (deep-sleep).
Время от старта модуля до исполнения кода из flash при использовании специального загрузчика = 30 ms.
Запись диска на 16 Мегабайтной Flash из эксплорера происходит примерно за 90 секунд (flash постранично стирается и пишется примерно в 160..180 килобайт в сек).
Исходники https://github.com/pvvx/esp8266web
Компилятор тут Unofficial Development Kit for Espressif ESP8266 (c) by CHERTS.
Инструкция по пользованию Eclipse. В данной теме такие вопросы не разбираются (!), тут не школа для обучения азам программирования.
* При прошивке всегда ставим размер Flash 512 Кбайт (4Mbit)! Реальный размер определяется автоматически самой прошивкой.
* Если Flash на модуле более 512 Кбайт, то после подключения к AP "ESP8266" требуется заливка диска программой WEBFS22.exe или эксплорером набрав http://192.168.4.1/fsupload. Можно записать WEBFiles.bin и программатором по адресу 0x80000.
В новых версиях esptool.py берется из директории проекта. Для MakeFile путь к ней автоматически задается в Eclipse с помощью "переменной среды" "CWD". Так-же возможна трансляция и без MakeFile, с автоматической генерацией и заданием всех параметров в самой Eclipse. Для этого необходимо переключить в иконке "Manage configurations for the current progects" на AutoMake и пользоваться иконкой или другими кнопками в Eclipse (иконка с молотком или "Project->Build Project", "Project->Clean"). В этом режиме все установки проекта, вплоть до специальных к каждому файлу, доступны в меню "Project->Properties" при выборе объекта (или всего проекта) в окне "Project Explorer". Прошить flash в этом режиме возможно выбрав в меню "Run->External Tools->FlashProg" или в панели иконок, а так-же изменив режим на "Default(Use Makefile)" и выбрав действие в окне "Make Target".
Страница будет обновляться, по мере доработки web сервера.
Внимание: у модулей ESP-01 нога RTS закорочена на GND проводником под чипом(!) - обязательно отключите FlowControl у TCP2UART - иначе чип сильно греется и глючит.
Конкретные проекты, использующие данный Web-сервер за основу, обсуждаются в отельных темах:
Проект переходника TCP2UART.
Основные цели данной "свалки":
1) Управление конфигурацией WiFi модуля и приложений на ESP8266 с помощью любого устройства с интернет браузером не ниже версии HTTP/1.0.
2) Предусмотреть возможность подключения программных модулей для работы с разной периферией.
3) Использование минимальных затрат web сервером "heap" памяти и других ресурсов ESP8266.
Что уже сделано в текущей версии webсервера:
1) Обслуживание запросов GET/POST/websocket и их разбор.
2) Разбор параметров передаваемых в URI, cookie, контексте HTTP запроса и multipart/form-data в POST.
3) Прием разбитых на множественные tcp пакеты HTTP запросов (общая длина HTTP заголовка ограничена в web_srv_int.h на 3070 байт).
4) Отдача фалов со встроенного диска на flash и обслуживание TCP потока более 600 килобайт/сек.
5) Обработка в отдаваемых сервером файлов с атрибутом "парсить" вставок обрамленных '~'. (К примеру: ~inc:имя файла~ вызывает вставку указанного файла, ~wifi_ap_ip~ вставляет в поток IP ...)
6) Поддержка более десятка одновременно открытых соединений до ограничения памяти.
7) Управление всеми известными параметрами WiFi модуля на ESP8266ex.
Что не будет:
1) Обслуживания пакетных запросов при “Connection: keep-alive” (связано с ограничением памяти у ESP8266 и их негде собирать и хранить для каждого соединения).
Чего нет или “зависло”:
1) Дизайн HTML основных страниц webсервера. Просто некогда этим заниматься. Имеющиеся – это тестовые или предоставленные другими. Приветствуется предоставление дизайна от “сообщества” Никакие претензии и указания ошибок в имеющихся не принимаются. Только при предоставлении полной альтернативы и дизайна всех страниц для всех.
Приложенная программа генерации image диска (WEBFS22.exe):
Требует установленного .NET Framework 2.0
Записывает файловую систему в модуль по инет с нуля при наличии только прошивки самого кода и установке соединения с модулем по WiFi. При смене настроек WiFi укажите их в меню настроек соединения. В меню "Advanced Settings" программа позволяет изменять список расширений ваших исходных файлов использующих переменные dynamic files и какие файлы не сжимать GZIP (Do not Compress). Исходные тексты программы приложены и являются модификацией программы MPFS2.1 от Microchip.
На стандартной flash (512к) максимальный размер файловой системы (WEBFiles.bin) составляет около 256 килобайт. Он находится сразу после всех программных кодов и заканчивается до 0x79000. В последних версиях этот стартовый адрес равен 0x39000 (см. уточнения в bin\readme.txt).
При использовании большей Flash, более чем 512к, адрес записи диска всегда начинается с 0x80000 (512к) и диск использует область до конца flash (на W25Q128 это= 16252928 bytes или 15,5 Mbytes).
Загрузка диска (WEBFiles.bin) во flash при его отсутствии (или наличию) в експлорере можно произвести набрав: http://192.168.4.1/fsupload (где 192.168.4.1 – текущий или по умолчанию IP адрес модуля).
Файлы, вызываемые с диска, при обработке запросов HTTP на ошибки:
400 Bad Request - сервер обнаружил в запросе клиента синтаксическую ошибку.
401 Unauthorized - для доступа к запрашиваемому ресурсу требуется аутентификация.
404 Not found - Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
411 Length Required - для указанного ресурса клиент должен указать Content-Length в заголовке запроса.
414 Request-URI Too Long - сервер не может обработать запрос из-за слишком длинного указанного URL.
418 I'm a teapot - http://en.wikipedia.org/wiki/Hyper_Text_Coffee_Pot_Control_Protocol
501 Not Implemented - сервер не понимает указанный в запросе метод.
Имя файлов ошибок строится как "(HTTP номер ошибки).htm". Пример, при ошибке 400, ищется файл с именем "400.htm". Если такого файла на диске нет, то вставляется стандартный внутренний ответ.
Кол-во файлов на диске ограничено до 250.
Изменить настройки WiFi или что-то ещё без наличия загруженного диска во flash, можно подав запрос http://192.168.4.1/ или http://192.168.4.1/web.cgi и передав необходимые переменные в строке URL (?name=value&name=value...), или cookie, или контексте POST форматом multipart/form-data. Пример: посмотреть дамп памяти http://192.168.4.1/web.cgi?hexdmpb0x40200000=1024
При запросе файла с сервера, содержащем в названии 'protect' (каталога или имени) используется авторизация с именем и паролем от AP станции.
При первом старте, после прошивки программы, имеем:
Name: ESP8266
Password: 0123456789
Режим доступа AP по умолчанию 'OPEN'.
Имя AP и её пароль является именем и паролем для входа на "защищенные" страницы сервера и используется для записи диска по http://192.168.4.1/fsupload.
Область сохранения настроек на текущем тесте назначена на 3 сектора в области адресов Flash c 0x79000 по 0x7C000. Их можно очистить, записав туда blank.bin по 3-м адресам: 0x79000, 0x7a000, 0x7b000 в FLASH_DOWNLOAD_TOOLS или в среде Eclipse опцией 'FlashClearSetings'.
Для ускорения загрузки и использования 48 килобайт IRAM вместо 32 проект использует специальный дополнительный загрузчик "RapidLoader". График загрузки с RapidLoaderV2.
Измеренные ТТХ по питанию модуля:
Потребление при передаче на скорости к 1 мегабайт в секунду - пример два графика в конце
Потребление модулем в разных режимах WiFi-sleep модуля и стартовые примеры
Потребление по питанию часов (по ноге RTC_VDD)
Потребление при прошивке модуля с помощью esptool.py
Закорачивание I/O выхода вызывает увеличение тока на 50 мА: http://esp8266.ru/forum/attachments/esp-01-gpio15-out-gif.885/
Потребление с фирменной фичей в режиме ST, при поиске внешней AP.
Скорость реакции ножки RESET по просыпанию от ноги GPIO16 (deep-sleep).
Время от старта модуля до исполнения кода из flash при использовании специального загрузчика = 30 ms.
Запись диска на 16 Мегабайтной Flash из эксплорера происходит примерно за 90 секунд (flash постранично стирается и пишется примерно в 160..180 килобайт в сек).
Последнее редактирование: