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

pvvx

Активный участник сообщества
Собственно и паять-то не обязательно. Плату развести, отдать китайцам ( Seeed Studio, ets ) в работу. Им-же сборку заказать. У Cherts ( попутно так-же поблагодарю хозяина площадки, спасибо ) магазин есть. Там организовать продажу. Маржу не загонять и спрос будет.
Это надо ждать, а хОтчЕтся щАс. По этому взял дремель и "выпилил" за полчаса макетки-переходники для тестов:
ESP_01_and_12_sm.jpg
 

elAlex

New member
Я подобное себе на макетке сваял. Была мысль развести плату, сделать по местному да пересадить комплектуху с родного модуля. Пока не до того. Подбираю скаду что-бы собирать данные с модулей.
 

pvvx

Активный участник сообщества
Я подобное себе на макетке сваял. Была мысль развести плату, сделать по местному да пересадить комплектуху с родного модуля. Пока не до того. Подбираю скаду что-бы собирать данные с модулей.
С готовой платой не сделать тестов. Я вот припаял туда резисторы на подтяжки и ко входу ADC на корпус - теперь не измерить входные токи утечки входов и встроенных подтяжек к VCC или GND... А иногда это надо, для определения, что там напрограммировали китайцы (вход это или OK, или ...) ...
 

elAlex

New member
Я пока так глубоко не копал ( вообще если для Вас подобное - хобби, то у меня комплекс неполноценности думая что у Вас работа ). Да и интереснее рассматривать не один модуль но систему сбора и управления.
 

pvvx

Активный участник сообщества
Дополнительный конденсатор с обратной стороны, близко к выводам питания процессора, убрал проблему.
А SDK-ашная функция, выводящая "periodic_cal" не мешает? Она там многое творит...
И, в принципе, нехорошо держать постоянно открытое соединение на TCP. Надо делать периодические реконекты для стабильности всей цепочки соединения.
Я пока так глубоко не копал ( вообще если для Вас подобное - хобби, то у меня комплекс неполноценности думая что у Вас работа ). Да и интереснее рассматривать не один модуль но систему сбора и управления.
Работа у меня другая, но частично пересекается. Пока данный модуль использовать "в работе" невозможно. Когда будут все исходники, тогда и будет возможно начать обсуждать возможности его использования для реальных проектов. А так - это игрушка.
 
Последнее редактирование:

Algis

New member
А SDK-ашная функция, выводящая "periodic_cal" не мешает? Она там многое творит...
И, в принципе, нехорошо держать постоянно открытое соединение на TCP. Надо делать периодические реконекты для стабильности всей цепочки соединения.
Что-то мешает... примерно раз через 100 - 200 запросов ответа нет.
Соединение открытым не поддерживается, программа на PHP в сервере открывает сокет, шлет запрос, до секунды ждет ответа, закрывает сокет. Так каждые 3 секунды.
 

Andy Korg

Moderator
Команда форума
Сляпал на основе "свалки" часы на esp-12. Правда при сбросе чипа прошивка как бы стартует, а потом замирает на некоторое время. Чего там такое происходит разбираться пока не буду, но другим будет наверно интересно.
 

pvvx

Активный участник сообщества
... хотел бы использовать HTTP Web конфигурации для настройки WiFi в этом проекте https://github.com/sfranzyshen/esp8266_tpm2net_ws2812 , но я не могу это сделать. Пожалуйста, вы можете посоветовать, как это сделать, спасибо.
Используйте исходные коды. Запретов на их использование кем либо нет. Создайте свои собственные HTML файлы и почистите ненужные процедуры...
Настройки Wi-Fi описаны в Web_base\app\web\wifi.c.
Use the source code Web-server. There are no restrictions on use. Create your own html files and clean unnecessary funtions/procedures...
Settings WiFi described in Web_base\app\web\wifi.c
 

anakod

Moderator
Команда форума
Что-то мешает... примерно раз через 100 - 200 запросов ответа нет.
Соединение открытым не поддерживается, программа на PHP в сервере открывает сокет, шлет запрос, до секунды ждет ответа, закрывает сокет. Так каждые 3 секунды.
По-моему это очень напоминает проблему с которой столкнулся я. Единственное у меня при равномерном использовании (когда ESP'шка успевает отрабатывать входящие запросы) все вроде стабильно работает, а так те же симптомы.
 

pvvx

Активный участник сообщества
По-моему это очень напоминает проблему с которой столкнулся я. Единственное у меня при равномерном использовании (когда ESP'шка успевает отрабатывать входящие запросы) все вроде стабильно работает, а так те же симптомы.
Посмотрите лог Wireshark

Проскакивающие "красные сообщения" - это эксплорер скипнул прием, по причине нового запроса с обновлением...
RST_ACK.gif
Большинство эксплореров, при обращении к серверу HTTP по порту 80 сразу открывают более 5-ти соединений и надеются получить “Connection: keep-alive”. Ели обращение идет не по 80 порту, то они стесняются и открывают всего одно соединение. На ESP8266 держать десятки открытых соединений невозможно, тем более “стеков запросов” от експлореров, по тому сервер их закрывает через установленные в конфиге web_srv 5 сек. Эксплореры этому сильно сопротивляются и обычно начинается бардак с закрытием/открытием пустых соединений :) Держат они их, похоже, для того чтобы узнать, что ничего не сменилось на сервере и он активен и подобное...
При возможности держать всего 4-ре соединения очень смешно выглядит espconn. Эксплорер на открытое 5-ое соединение получает “досвидание” и по этому ответу часто считает, что запрашиваемого ресурса вообще нет :) Но это уже отдельная тема... про бедный Espressif... AT и Lua... :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
anakod - в примерах к web есть TestHeap. Он через установленное ползунком время в ms запрашивает файл с web-а. Работает часами, без warning в Wireshark до её переполнения.
При остановке на какое-то время (десятки сек) коммуникаций с ESP8266, следующий, первый, запрос получает тайм-ауты в десятки секунд. C LwIP это не связано - это фича от Espressif, "зеленых" сетевых коммуникаций, роутеров, route и ... :)
Ещё у нас LwIP v1.4.0, а не v1.4.1. и исходники вложены в "свалку".
Добавил пример Debug Functions->Upload Bin->Deep Sleep. Когда модуль у вас будет восстанавливаться после разных режимов Deep Sleep, то считайте, что всё Ok.
Но пока этого нет. После выхода из некоторых режимов Deep Sleep соединение работает первые несколько секунд, а потом всё. AP отваливается навсегда и только пляски с бубном с ногами сброса и т.д. и питанием модулей возвращают её к жизни....
В SDK 0.9.5 есть ещё фича от Espressif - если назначить режим wifi_set_opmode(0), то при следующей перезагрузке будет вечный "протектед". Список ошибок SDK уже давно переполнен. А сообщать их Espressif-цам уже никто не будет - они тогда всё закроют.
 
Последнее редактирование:

folny

New member
Thank you for your reply I tried pasting the code but I could not do it properly please can you show in detail how do I do thank you.
 

folny

New member
Hi

Today I have long been trying to compile the code but I did not succeed in compiling I still displays some error please you can try to compile yourself ? Here is my error message.

08:23:55 **** Build of configuration Default for project Web_base ****
mingw32-make.exe -f C:/Espressif/examples/Web_base/Makefile all
mingw32-make[1]: Entering directory 'C:/Espressif/examples/Web_base/app'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/user'
DEPEND: c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -M -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -DLWIP_OPEN_SRC -DPBUF_RSV_FOR_WLAN -DEBUF_LWIP -I include -I ./include -I ../include -I ./ -I ../../include -I ../../include/eagle user_main.c
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/user'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/user'
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Os -g -O2 -Wpointer-arith -Wundef -Werror -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -D__ets__ -DICACHE_FLASH -DLWIP_OPEN_SRC -DPBUF_RSV_FOR_WLAN -DEBUF_LWIP -I include -I ./include -I ../include -I ./ -I ../../include -I ../../include/eagle -o .output/eagle/debug/obj/user_main.o -c user_main.c
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-ar ru .output/eagle/debug/lib/libuser.a .output/eagle/debug/obj/user_main.o
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/user'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/driver'
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/driver'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/web'
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/web'
mingw32-make[2]: Entering directory 'C:/Espressif/examples/Web_base/app/lwip'
mingw32-make[3]: Entering directory 'C:/Espressif/examples/Web_base/app/lwip/api'
mingw32-make[3]: Leaving directory 'C:/Espressif/examples/Web_base/app/lwip/api'
mingw32-make[3]: Entering directory 'C:/Espressif/examples/Web_base/app/lwip/app'
mingw32-make[3]: Leaving directory 'C:/Espressif/examples/Web_base/app/lwip/app'
mingw32-make[3]: Entering directory 'C:/Espressif/examples/Web_base/app/lwip/core'
mingw32-make[4]: Entering directory 'C:/Espressif/examples/Web_base/app/lwip/core/ipv4'
mingw32-make[4]: Leaving directory 'C:/Espressif/examples/Web_base/app/lwip/core/ipv4'
mingw32-make[3]: Leaving directory 'C:/Espressif/examples/Web_base/app/lwip/core'
mingw32-make[3]: Entering directory 'C:/Espressif/examples/Web_base/app/lwip/netif'
mingw32-make[3]: Leaving directory 'C:/Espressif/examples/Web_base/app/lwip/netif'
mingw32-make[2]: Leaving directory 'C:/Espressif/examples/Web_base/app/lwip'
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -Lc:/Espressif/ESP8266_SDK/lib -nostdlib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -lwpa -lmain lwip/.output/eagle/debug/lib/liblwip.a driver/.output/eagle/debug/lib/libdriver.a web/.output/eagle/debug/lib/libweb.a user/.output/eagle/debug/lib/libuser.a -Wl,--end-group -o .output/eagle/debug/image/eagle.app.v6.out
user/.output/eagle/debug/lib/libuser.a(tpm2net.o): In function `tpm2net_recv':
tpm2net.c:(.irom0.text+0x5c): undefined reference to `espconn_regist_recvcb'
tpm2net.c:(.irom0.text+0x60): undefined reference to `espconn_create'
user/.output/eagle/debug/lib/libuser.a(tpm2net.o): In function `tpm2net_init':
C:\Espressif\examples\Web_base\app\user/tpm2net.c:36: undefined reference to `espconn_regist_recvcb'
C:\Espressif\examples\Web_base\app\user/tpm2net.c:37: undefined reference to `espconn_create'
collect2.exe: error: ld returned 1 exit status
../Makefile:200: recipe for target '.output/eagle/debug/image/eagle.app.v6.out' failed
mingw32-make[1]: Leaving directory 'C:/Espressif/examples/Web_base/app'
mingw32-make[1]: *** [.output/eagle/debug/image/eagle.app.v6.out] Error 1
C:/Espressif/examples/Web_base/Makefile:148: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2

08:23:58 Build Finished (took 3s.686ms)
 

pvvx

Активный участник сообщества
Today I have long been trying to compile the code but I did not succeed in compiling I still displays some error please you can try to compile yourself ? Here is my error message.
C:\Espressif\examples\Web_base\app\user/tpm2net.c:36: undefined reference to `espconn_regist_recvcb'
C:\Espressif\examples\Web_base\app\user/tpm2net.c:37: undefined reference to `espconn_create'
Web_base\app\include\user_config.h: #define USE_ESPCONN 1
 

Algis

New member
Может кто знает что в esp8266 там намудрено с выводом перевода в режим программирования GPIO0 ?
Программирование почти всегда не получается с первого раза, полез смотреть с осцыллографом.... обычно там из-за подтяжки болтается 3.3в, при программировании и замыкании на землю получается 0в но через ~250 ms вывод превращается в выход и начинает выдавать импульсы с частотой около 4,8MHz и вывод DTR конвертера USB2UART на CP2102 его не может удержать в низком положении, запись срывается.... имульсы через некоторое время пропадает... иногда нет, иногда появляется даже сразу после ресета. Иногда помогает длительное лежание в выключенном состоянии...
 

Вложения

pvvx

Активный участник сообщества
Может кто знает что в esp8266 там намудрено с выводом перевода в режим программирования GPIO0 ?
Это выход CLK_OUT. Активен всё время когда работает ROM (поле любого сброса до инициализации SDK, всё время в режиме программирования). Дублирует частоту "кварца" - 26MHz:
GPIO0.gif
При включении хоть через 10к к DTR FT модуля однозначно переключает режимы загрузки (программирование/работа). Для уверенного включения модуля, кроме резисторов на RESET и CH_PD к +3.3V необходимо подключить GPIO15 на корпус через резистор 1..10к, а GPIO16 (в китай-доке) замкнуть с RESET (я их соединил резистором вроде на 470Ом, а RTS с FT-шки через диод на RESET) .
Другое дело, что глючит SDK и особенно после deep_sleep...
 
Последнее редактирование:

Algis

New member
Это выход CLK_OUT. Активен всё время когда работает ROM (поле любого сброса до инициализации SDK, всё время в режиме программирования). Дублирует частоту "кварца" - 26MHz:
При включении хоть через 10к к DTR FT модуля однозначно переключает режимы загрузки (программирование/работа). Для уверенного включения модуля, кроме резисторов на RESET и CH_PD к +3.3V необходимо подключить GPIO15 на корпус через резистор 1..10к, а GPIO16 (в китай-доке) замкнуть с RESET (я их соединил резистором вроде на 470Ом, а RTS с FT-шки через диод на RESET) .
Другое дело, что глючит SDK и особенно после deep_sleep...
Точно, в Module Application Design Guide написано что "GPIO0 output is flipped (output clk signal with the same
frequency as Crystal clk ).", тогда все понятно.

После соединения GPIO0 и DTR не напрямую а через 1ком, а RST с RTS через диод, прошиватся стал гораздо стабильнее.
Спасибо.
 

folny

New member
Hi pvvx

Thank you for your help code no longer works properly I would still ask whether it is possible to upload the firmware ? so that the pass VEBFiles thanks.
 
Сверху Снизу