Разработка ‘библиотеки’ малого webсервера на esp8266.

Sam_Arcanum

New member
День добрый!
скачал и установил UDK. установил python27.
а вот проект собрать не смог - просит pyserial.
вот только загвоздка - у меня сеть за файрволом и пип заблокирован. пусериал не установить.
как отвязать сборку прошивки от пусериала или как установиь пусериал в обход pip?
 

Andy Korg

Moderator
Команда форума
.. как установиь пусериал в обход pip?
отсюда:
Если нужно скачать пакет из альтернативного источника, вы можете задать URL или локальный адрес на компьютере:

easy_install http://адрес_репозитория.ру/директория/пакет-1.1.2.zip
 

Sam_Arcanum

New member
Самуил Германович Арканум:
почитал. понял что на работе это принциапиально не получится и сделал на ноуте.
короч мои косяки я поправил:
1) установил всё по инструкции + питон 27 + пу сериал
2) скачал два проекта: ваш и pvvx. распаковал и убрал -master из имени папок.
3) каждому сделал свой воркспейс.
4) попробовал скомпилить. pvvx скомпилился. ваш проект - нет. жалуется что webbin нету а он есть.
манипуляции прям вот только что.

mingw32-make.exe: *** [D:/projects/eclipse/andy_korg/esp8266web/Makefile:256: .subdirs] Error 1
 

Sam_Arcanum

New member
выбрал user_config.h #define PROGECT_NUMBER 2
и словил вот такие ошибки:

------------------------------------------------------------------------------
Section| Description| Start (hex)| End (hex)|Used space
------------------------------------------------------------------------------
data| Initialized Data (RAM)| 3FFE8000| 3FFE837C| 892
rodata| ReadOnly Data (RAM)| 3FFE837C| 3FFE89AC| 1584
bss| Uninitialized Data (RAM)| 3FFE89B0| 3FFEE8C8| 24344
lit4| Uninitialized Data (IRAM)| 40105110| 40105CF0| 3040
text| Uncached Code (IRAM)| 40100000| 40105110| 20752
irom0_text| Cached Code (SPI)| 40207000| 4023C089| 217225
------------------------------------------------------------------------------
Entry Point : 4010013C call_user_start()
Total Used RAM : 50612
Free IRam : 8976 or 25360 (option 48k IRAM)
Free Heap : 55100
Total Free RAM : 80460
------------------------------------------------------------------------------
Add rapid_loader...
0+1 records in
0+1 records out
176 bytes (176 B) copied, 0 seconds, Infinity B/s
45+1 records in
45+1 records out
23264 bytes (23 kB) copied, 0.001 seconds, 23 MB/s
C:/Python27/python.exe D:/projects/eclipse/pvvx/esp8266web/ovls.py .output/eagle/image/eagle.app.v6.out ../ld/labels.ld
mingw32-make[1]: Leaving directory 'D:/projects/eclipse/pvvx/esp8266web/app'
mingw32-make[1]: Entering directory 'D:/projects/eclipse/pvvx/esp8266web/ovls'
mingw32-make[2]: Entering directory 'D:/projects/eclipse/pvvx/esp8266web/ovls/10dof'
mingw32-make[3]: Entering directory 'D:/projects/eclipse/pvvx/esp8266web/ovls/10dof/main'
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -Wall -Wno-pointer-sign -fno-tree-ccp -mno-target-align -mno-serialize-volatile -foptimize-register-move -Wundef -Wall -Wstrict-aliasing -Wpointer-arith -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -DICACHE_FLASH -DPBUF_RSV_FOR_WLAN -DLWIP_OPEN_SRC -DEBUF_LWIP -I ./include -I ../include -I ../../include -I D:/projects/eclipse/pvvx/esp8266web/include -I D:/projects/eclipse/pvvx/esp8266web/app/include -o .output/eagle/obj/mpu9250.o -c mpu9250.c
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -Wall -Wno-pointer-sign -fno-tree-ccp -mno-target-align -mno-serialize-volatile -foptimize-register-move -Wundef -Wall -Wstrict-aliasing -Wpointer-arith -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -DICACHE_FLASH -DPBUF_RSV_FOR_WLAN -DLWIP_OPEN_SRC -DEBUF_LWIP -I ./include -I ../include -I ../../include -I D:/projects/eclipse/pvvx/esp8266web/include -I D:/projects/eclipse/pvvx/esp8266web/app/include -o .output/eagle/obj/hspi_master.o -c hspi_master.c
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -Wall -Wno-pointer-sign -fno-tree-ccp -mno-target-align -mno-serialize-volatile -foptimize-register-move -Wundef -Wall -Wstrict-aliasing -Wpointer-arith -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -DICACHE_FLASH -DPBUF_RSV_FOR_WLAN -DLWIP_OPEN_SRC -DEBUF_LWIP -I ./include -I ../include -I ../../include -I D:/projects/eclipse/pvvx/esp8266web/include -I D:/projects/eclipse/pvvx/esp8266web/app/include -o .output/eagle/obj/main.o -c main.c
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -Wall -Wno-pointer-sign -fno-tree-ccp -mno-target-align -mno-serialize-volatile -foptimize-register-move -Wundef -Wall -Wstrict-aliasing -Wpointer-arith -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -DICACHE_FLASH -DPBUF_RSV_FOR_WLAN -DLWIP_OPEN_SRC -DEBUF_LWIP -I ./include -I ../include -I ../../include -I D:/projects/eclipse/pvvx/esp8266web/include -I D:/projects/eclipse/pvvx/esp8266web/app/include -o .output/eagle/obj/bmp280.o -c bmp280.c
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar ru .output/eagle/lib/libmain.a .output/eagle/obj/mpu9250.o .output/eagle/obj/hspi_master.o .output/eagle/obj/main.o .output/eagle/obj/bmp280.o

Самуил Германович Арканум, [06.10.19 18:05]
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar: creating .output/eagle/lib/libmain.a
mingw32-make[3]: Leaving directory 'D:/projects/eclipse/pvvx/esp8266web/ovls/10dof/main'
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -nostartfiles -nodefaultlibs -nostdlib -LD:/projects/eclipse/pvvx/esp8266web//lib -TD:/projects/eclipse/pvvx/esp8266web//ld/overlay.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,-Map -Wl,.output/eagle/image/eagle.app.v6.map -Wl,--start-group -lmgcc main/.output/eagle/lib/libmain.a -Wl,--end-group -o .output/eagle/image/eagle.app.v6.out
main/.output/eagle/lib/libmain.a(main.o):(.text+0x4): undefined reference to `mdb_buf'
main/.output/eagle/lib/libmain.a(main.o): In function `drv_recv':
main.c:(.text+0x174): undefined reference to `mdb_buf'
main/.output/eagle/lib/libmain.a(hspi_master.o):(.text+0x24): undefined reference to `copy_s1d4'
main/.output/eagle/lib/libmain.a(hspi_master.o): In function `hspi_cmd_write':
hspi_master.c:(.text+0x82): undefined reference to `copy_s1d4'
collect2.exe: error: ld returned 1 exit status
mingw32-make[2]: Leaving directory 'D:/projects/eclipse/pvvx/esp8266web/ovls/10dof'
mingw32-make[2]: *** [../Makefile:181: .output/eagle/image/eagle.app.v6.out] Error 1
mingw32-make[1]: *** [Makefile:128: .subdirs] Error 2
mingw32-make[1]: Leaving directory 'D:/projects/eclipse/pvvx/esp8266web/ovls'
mingw32-make.exe: *** [D:/projects/eclipse/pvvx/esp8266web/Makefile:276: .subdirs] Error 2

17:58:35 Build Finished (took 53s.9ms)


то есть что-то есть но с ошибками

если выбрать user_config.h #define PROGECT_NUMBER 0
то собирается всё без ошибок
 

pvvx

Активный участник сообщества
выбрал user_config.h #define PROGECT_NUMBER 2
и словил вот такие ошибки:
PROGECT_NUMBER 2 - это была опция проекта для собственной проработки. Там ручками надо исключать и включать необходимые компоненты. Для игры "сборка по кнопке" она не предназначена. Это просто как заготовка для дальнейшего собственного проекта.
 

Sam_Arcanum

New member
PROGECT_NUMBER 2 - это была опция проекта для собственной проработки. Там ручками надо исключать и включать необходимые компоненты. Для игры "сборка по кнопке" она не предназначена. Это просто как заготовка для дальнейшего собственного проекта.
разобрался. над было тупо удалять всё что связано с ovl из makefile
скомпилилось, прошилось, запустилось.
ну, теперь могу своё что-то бодяжить с вебформой.
з.ы. знаю что есп8266 устарела. но их меня 8 штук. не солить же
 

Alexander

Member
Столкнулся вот с какой проблемой. Начал монитрить аптайм и увидел, что более 1,5 часов не работает без перезагрузки. Был очень удивлен, т.к. даже с прошивкой ESPeasy, при прочих равных, перезагружается гораздо реже - от раза в несколько ней до нескольких раз в деь. Наблюдал пару недель. Только у меня такая проблема?
 

pvvx

Активный участник сообщества
Столкнулся вот с какой проблемой. Начал монитрить аптайм и увидел, что более 1,5 часов не работает без перезагрузки. Был очень удивлен, т.к. даже с прошивкой ESPeasy, при прочих равных, перезагружается гораздо реже - от раза в несколько ней до нескольких раз в деь. Наблюдал пару недель. Только у меня такая проблема?
Когда-то, годы назад, когда этот проект ещё ковырял, тесты показывали время работы без перезагрузок более месяца... Только ручное.
На главной странице web-а отображается время последнего старта.

Но, когда начал заниматься другими модулями WiFi, был обнаружен глюк у ESP8266 связанный с перезагрузкой или выходом в режим аппаратного зависания с глушением всей WiFi сети, происходящий от сильных сигналов других модулей. Уточнение было в сторону "автоматической подстройки частоты" - где то там в закрытых дровах ESP8266 сносит голову... Какая прошивка или версия SDK - безразлично.
На том работать с ESP8266 перестал - количество глюков чипа и его закрытого ПО превзошло все пределы...
 

pvvx

Активный участник сообщества
Создайте идеальные условия для ESP8266 - проработает без завсисов и прочего долго.
Смотрите питание и внешние импульсы, т.к. чип очень боится импульсной помехи и не проходит никакие тесты по этому делу.
В web-свалке много кривого кода и ошибок, найденных позже, но они не критические и к перезагрузке не приводят. А так-же много опций и без описания как и что там у вас никто вам не поможет разобраться в перезагрузках...
 
был обнаружен глюк у ESP8266
Может не все так плохо. Ребята работают, правят баги. На их сайте написано про поддержку Supporting China Mobile’s And-link Platform, Supporting China Telecom’s IoT Platform и тд. Те чипы работают. Новый SDK ESP8266_RTOS_SDK-3.1.1. В DS масса обновлений (прилагаю).
 

Вложения

Alexander

Member
Может не все так плохо. Ребята работают, правят баги. На их сайте написано про поддержку Supporting China Mobile’s And-link Platform, Supporting China Telecom’s IoT Platform и тд. Те чипы работают. Новый SDK ESP8266_RTOS_SDK-3.1.1. В DS масса обновлений (прилагаю).
Возможно, но к сожалению данный проект заброшен. У меня uptime более нескольких часов не получается, в то время как espeasy может работать неделями без перезагрузки в абсолютно той же аппаратной конфигурации. Но там с http сервером какие-то беды - периодически зависает наглухо и помогает только передергивание питания. При этом на пинги модуль отвечает, хоть и с задержкой.
Впрочем, я не знаю в чем проблема. Сбрасывается только переменная с аптаймом, иных проблем не замечено. Нужно разбираться.
 

Alexander

Member
Проверил различные варианты:
работа в режиме STATIONAP_MODE;
работа в режиме STATION_MODE;
работа в режиме SOFTAP_MODE;
B, G и N режимы.
Uptime не достигает и 2 часов.
Проверял добавив в footer.inc строку
Код:
Время работы: <span id='uptime'></span><br><br>
Либо реально периодическая перезагрузка, либо что-то не так с переменной uptime.
Ну, или я что-то неправильно делаю.

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

pvvx

Активный участник сообщества
Может не все так плохо. Ребята работают, правят баги. На их сайте написано про поддержку Supporting China Mobile’s And-link Platform, Supporting China Telecom’s IoT Platform и тд. Те чипы работают. Новый SDK ESP8266_RTOS_SDK-3.1.1. В DS масса обновлений (прилагаю).
Пока они там рабботают, чип уже морально и технически устарел.
Что ещё не сделает Espressif, чтобы втюхать свой глюкодром, который никому не нужен, кроме первых опытов с WiFi для детей? Другого то рынка сбыта их "продукции" нет.
 

aloika

Active member
Либо реально периодическая перезагрузка, либо что-то не так с переменной uptime.
Ну, или я что-то неправильно делаю.
Проект этот рабочий, и аптайм при благоприятных условиях годами сохраняется.
Нужно смотреть:

1) схему
2) питание

Также при некоторых внешних условиях (наличие рядом некоторых других модулей/точек доступа) может наблюдаться нестабильная работа. Из таких роутеров - Tenda (как минимум модель MW3).

Лучше берите проект на RTL8710, он в этом плане стабильнее.
 

Alexander

Member
Лучше берите проект на RTL8710, он в этом плане стабильнее.
В смысле перейти на RTL8710?
Я пока решил вот как поступить. Сделаю всё критичное на старой доброй ATmega 32, там и с портами нет напряга, а на ESP8266 только связь с внешним миром.
Были мысли вообще отказаться от ESP8266 в пользу NRF24L01+, но пока не решился по 2 причинам:
1. лень городить огород с адресацией, когда устройств более 6;
2. для датчиков хорошо, для устройства, которое может оказаться автономно работающим - плохо.
По п.2 я вот что имею в виду. Как пример, у меня есть тестер аккумуляторов. Сейчас решил собрать новую версию. Работает устройство длительно - проведение КТЦ и возможно не 1 раз. Нужно настроить программу испытаний, присматривать иногда за процессом и логировать данные. Сейчас это сделано при помощи кнопок, LCD от Nokia 1100 и USB<->UART. Вот это все стоит заметно дороже TSP8266, я по старости лет ничерта не вижу на LCD от Nokia 1100 даже в очках, пользуюсь лупой. Да еще провода нужно тягать и для посмотреть идти к устройству. Вот и решил для таких целей использовать ESP8266. Хотел сначала и логику на ней сделать, да ну его ... с такой стабильностью.
Что касается схемы и питания... Ну, не знаю. Сейчас кроме подтяжки на RESET, CH_PD, GPIO0, GPIO2 и GPIO15, поставил емкости на RESET, CH_PD и ADC. Посмотрю, как будет себя вести.
О! пока писал сообщение, модуль снова ресетнулся после примерно 1:08:00 работы. Не знаю сколько точно.
 

Alexander

Member
На главной странице web-а отображается время последнего старта.
oops. вот этот момент я упустил. Сейчас не трогая само устройство перезагрузил стандартный webfiles.bin и увидел "PowerStartTime: 07.01.2020 19:23:13" Получается, что переменная uptime сбрасывается по непонятной причине. Надо будет посмотреть.
 

Alexander

Member
Да, вот еще. Может кто подскажет, как организовать запись и чтение web переменных по uart?
 

aloika

Active member
Что касается схемы и питания... Ну, не знаю. Сейчас кроме подтяжки на RESET, CH_PD, GPIO0, GPIO2 и GPIO15, поставил емкости на RESET, CH_PD и ADC. Посмотрю, как будет себя вести.
upload_2020-1-7_22-55-43.png
Вот примерно такая схема должна быть в плане подтяжек и обвязки... это кусок моей схемы, вниз пошло на uart к другому МК.
 

aloika

Active member
В смысле перейти на RTL8710?
ESP8266 устарело и вроде как там есть проблемы со стабильностью. RTL8710 более новый и главное, к нему у pvvx тоже есть аналогичная "свалка". "Свалка" вполне рабочая и стабильная. Кроме того, "свалка" для RTL сделана на основе SDK на RTOS (в отличие от "свалки" для ESP8266). Опять же обвязки для RTL нужно гораздо меньше. Также там в SDK есть элементарные примеры, в том числе и по работе с UART.

Да, вот еще. Может кто подскажет, как организовать запись и чтение web переменных по uart?
Читайте, понимайте web_int_vars.c и web_int_callbacks.c . Далее, разбирайтесь, как принимать/отправлять данные UART. Принимаете определенную последовательность в UART - изменяете нужную переменную. Изменили переменную в веб - отправляете какую-нибудь последовательность в UART.

Но опять же, не мучайтесь с ESP, берите RTL сразу. Там проще и логичнее это всё, в свалке для ESP полно какой-то магии, которую только pvvx понимает.
 
Сверху Снизу