• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

alexsmd

New member
Не хватает модуля "serial" в pyhon
Спасибо, теперь пошивка собирается нормально. Но не прошивается... Что может быть?

Код:
16:42:01 **** Build of configuration Default for project Web_Base ****
mingw32-make.exe -f C:/Espressif/examples/esp8266web/Makefile FlashAll
C:/Python27/python.exe c:/Espressif/utils/esptool.py -p COM4 -b 74880 write_flash -ff 80m -fm qio -fs 4m 0x00000 ./bin/0x00000.bin 0x0A000 ./webbin/WEBFiles.bin 0x40000 ./bin/0x40000.bin 0x79000 ./bin/clear_eep.bin 0x7C000 ./bin/esp_init_data_default.bin 0x7E000 ./bin/blank.bin
Connecting...
Traceback (most recent call last):
  File "c:/Espressif/utils/esptool.py", line 568, in <module>
    esp.connect()
  File "c:/Espressif/utils/esptool.py", line 160, in connect
    raise Exception('Failed to connect')
Exception: Failed to connect
mingw32-make.exe: *** [FlashAll] Error 1
C:/Espressif/examples/esp8266web/Makefile:159: recipe for target 'FlashAll' failed

16:42:04 Build Finished (took 2s.547ms)

Вроде провода по схеме
 
Последнее редактирование:
Спасибо, теперь пошивка собирается нормально. Но не прошивается... Что может быть?

Код:
16:42:01 **** Build of configuration Default for project Web_Base ****
mingw32-make.exe -f C:/Espressif/examples/esp8266web/Makefile FlashAll
C:/Python27/python.exe c:/Espressif/utils/esptool.py -p COM4 -b 74880 write_flash -ff 80m -fm qio -fs 4m 0x00000 ./bin/0x00000.bin 0x0A000 ./webbin/WEBFiles.bin 0x40000 ./bin/0x40000.bin 0x79000 ./bin/clear_eep.bin 0x7C000 ./bin/esp_init_data_default.bin 0x7E000 ./bin/blank.bin
Connecting...
Traceback (most recent call last):
  File "c:/Espressif/utils/esptool.py", line 568, in <module>
    esp.connect()
  File "c:/Espressif/utils/esptool.py", line 160, in connect
    raise Exception('Failed to connect')
Exception: Failed to connect
mingw32-make.exe: *** [FlashAll] Error 1
C:/Espressif/examples/esp8266web/Makefile:159: recipe for target 'FlashAll' failed

16:42:04 Build Finished (took 2s.547ms)

Вроде провода по схеме
Битрейт правильный выставили в makefile?
 

1801BM1

New member
а замены, позволяющей гибко менять скрипты сборки бинарников нет.
Там от esptool вроде только подсчет суммы требуется, основная работа objcopy делается. Пишу свою утилиту прошивки модуля (из одного самодокументируемого hex-файла, а не кучки неконтролируемых бинарников + краткая инструкция "куда что совать", как сейчас), там будет сумма, опубликую, esptool можно будет выкинуть.
 

Tomahawk

New member
В этом проекте (и примере из UDK) модуль ESP-01 как точка доступа виден до первого сброса или выключения питания, после одного из этих действий AP пропадает и больше не появится, пока снова не прошьём модуль. Т.е. после первой пропажи питания до веб-сервера нельзя будет достучаться. Это какая-то проблема SDK, или можно исправить?
*В примере esphttpd AP обнаруживается после записи файлов blank.bin (0x7E000) и esp_init_data_default.bin (0x7C000), но опять же до первого сброса.
[решено]: стояла перемычка для программирования... :) надо было начинать смотреть с самого простого.
 
Последнее редактирование:

pvvx

Активный участник сообщества
В этом проекте (и примере из UDK) модуль ESP-01 как точка доступа виден до первого сброса или выключения питания, после одного из этих действий AP пропадает и больше не появится, пока снова не прошьём модуль.
Такого не наблюдается. Сколько раз не включай, после перепрошивки, всегда AP с именем "ESP8266" активна, пока не смените в WEB.
Возможно вы неправильно выставляете параметры при записи проектов во flash.
В "Web свалке" всегда при записи выставляется размер flash 512 килобайт, вне зависимости от реального размера flash. Там, при загрузке системы, реальный размер flash определяется автоматически, а заголовок (типа у нас flash 512к) менять нельзя - он задается для правильной работы процедур SDK совместно с проектом Web. Этот параметр задает для SDK где находятся сектора конфигурации WiFi, с которыми у вас проблемы...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Добавлен патч SDRAM Optimization Patch for SDK_v1.2.0:
Код:
Simple WEB version: 0.1.3
OpenLoaderSDK v1.2
Found free IRAM: base: 0x40104c90, size: 29552 bytes
System memory:
data  : 0x3ffe8000 ~ 0x3ffe858c, len: 1420
rodata: 0x3ffe8590 ~ 0x3ffe9264, len: 3284
bss   : 0x3ffe9268 ~ 0x3ffeff48, len: 27872
heap  : 0x3ffeff48 ~ 0x3fffc000, len: 49336
Current 'heap' size: 49088 bytes <-- При старте SDK
....
Current 'heap' size: 46584 bytes <-- После инициализации SDK
heapsize: 45568 в UDP тесте...
heapsize: 40888 при открытых буферах страниц HTTP/Web только на время обработки (http://sesp8266/heap.htm)
Т.е. имеем 40 кило RAM (heap) + буфер в 28 кило IRAM (общая свобода RAM = 68 кило).
 
Последнее редактирование:

alexhi

Member
Изменить настройки 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?hexdmpb0x40279000=1024


Что надо послать чтобы изменить например скорость передачи UART в TCP2UART (в защищенной области) ? Пробывал http://192.168.4.1/web.cgi?uart_0_baud=9600 не работает
 

pvvx

Активный участник сообщества
Что надо послать чтобы изменить например скорость передачи UART в TCP2UART (в защищенной области) ? Пробывал http://192.168.4.1/web.cgi?uart_0_baud=9600 не работает
Чтобы запомнилось для нового старта?
Тогда uart_save=1 для UART0 и uart_save=2 для UART1 или uart_save=3 для обоих (бит указывает номер сохраняемого UART). Запоминает все текущие параметры у UARTx
Полностью:
http://192.168.4.1/web.cgi?uart_0_baud=9600&uart_save=1
Для сохранения системной конфигурации cfg_save=1. Сохраняется:
1. номер TCP порта TCP-UART
2. время (сек) стартового ожидания приема/передачи первого пакета, до авто-закрытия соединения
3. время (сек) до авто-закрытия соединения после приема или передачи
4. номер порта WEB
5. номер порта UDP (sample-debug-test)
6. Флаги:
a) CPU 80/160 MHz ...
б) Проверять ножку RX на сброс конфигурации WiFi или нет
с) Выводить отладочную информации на GPIO2 или нет
д) Закрывать соединение и убивать pcb c TIME_WAIT или нет
е) Включать NetBios или нет
ф) Включать SNTP или нет

А так- же wifi_save=WIFI_MASK, но там сложнее и битовая маска WIFI_MASK используется в нескольких командах: wifi_newcfg=WIFI_MASK, wifi_rdcfg=WIFI_MASK, wifi_read=WIFI_MASK.
WIFI_MASK_MODE 0x00000001 - установки wifi_mode
WIFI_MASK_PHY 0x00000002 - установки phy
WIFI_MASK_CHL 0x00000004 - установки канала
WIFI_MASK_SLEEP 0x00000008 - установки режима wifi_sleep
WIFI_MASK_APIP 0x00000010 - установки IP AP
WIFI_MASK_APCFG 0x00000020 - установки AP config
WIFI_MASK_APDHCP 0x00000040 - установки режима AP DHCP
WIFI_MASK_APIPDHCP 0x00000080 - установки IP для AP DHCP
WIFI_MASK_APMAC 0x00000100 - установки MAC AP
WIFI_MASK_STIP 0x00000200 - установки IP ST
WIFI_MASK_STCFG 0x00000400 - установки IP config
WIFI_MASK_STDHCP 0x00000800 - установки режима ST DHCP
WIFI_MASK_STACN 0x00001000 - установки IP для ST DHCP
WIFI_MASK_STMAC 0x00002000 - установки MAC ST
WIFI_MASK_SAVE 0x00010000 - запомнить установки (только в wifi_newcfg)
WIFI_MASK_REBOOT 0x00020000 - перезапуск (только в wifi_newcfg)
Пример:
wifi_read=0x3FFF - считает все текущие установки WiFi во внутренний конфиг.
wifi_mode=1&wifi_newcfg=0x10001 - применит только изменение mode в ST если текущий mode другой, да сохранит внутренний конфиг.
 
Последнее редактирование:

alexhi

Member
Спасибо это заработало,только свежая версия с гитхаба не собирается пишет нет файла:
web_int_callbacks.c:23:19: fatal error: webfs.h: No such file or directory
[HASHTAG]#include[/HASHTAG] "webfs.h"
../Makefile:165: recipe for target '.subdirs' failed
 

pvvx

Активный участник сообщества
Спасибо это заработало,только свежая версия с гитхаба не собирается пишет нет файла:
web_int_callbacks.c:23:19: fatal error: webfs.h: No such file or directory
[HASHTAG]#include[/HASHTAG] "webfs.h"
../Makefile:165: recipe for target '.subdirs' failed
Исправил, добавил webfs.h... Хотел раскидать проект по раздельным пакетам, переименовал часть файлов, но не успел (пока нет на это времени) и вернул на место, но этот забыл отметить, что входит в тот проект. Надо добавлять новые разные либы и многое замещается...
 

alexhi

Member
Похоже еще что то потерялось :(

web/.output/eagle/lib/libweb.a(web_srv.o):(.irom0.text+0x4): undefined reference to `WEBFSGetBytesRem'
web/.output/eagle/lib/libweb.a(web_srv.o):(.irom0.text+0x8): undefined reference to `WEBFSClose'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `web_inc_fp':
web_srv.c:(.irom0.text+0x38): undefined reference to `WEBFSGetBytesRem'
web_srv.c:(.irom0.text+0x46): undefined reference to `WEBFSClose'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `Close_web_conn':
web_srv.c:(.irom0.text+0xaa): undefined reference to `WEBFSClose'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `head_find_ctr':
web_srv.c:(.irom0.text+0x2f0): undefined reference to `fatCache'
web_srv.c:(.irom0.text+0x2f8): undefined reference to `WEBFSOpen'
web_srv.c:(.irom0.text+0x31f): undefined reference to `WEBFSOpen'
web_srv.c:(.irom0.text+0x34e): undefined reference to `WEBFSGetBytesRem'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `web_inc_fopen':
web_srv.c:(.irom0.text+0x365): undefined reference to `WEBFSClose'
web_srv.c:(.irom0.text+0x398): undefined reference to `isWEBFSLocked'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `webserver_open_file':
web_srv.c:(.irom0.text+0x560): undefined reference to `WEBFSClose'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `web_inc_fclose':
web_srv.c:(.irom0.text+0x5b8): undefined reference to `WEBFSStubs'
web_srv.c:(.irom0.text+0x5d0): undefined reference to `WEBFSGetArray'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `webserver_send_fdata':
web_srv.c:(.irom0.text+0x707): undefined reference to `WEBFSGetArray'
web_srv.c:(.irom0.text+0x768): undefined reference to `WEBFSGetArray'
web_srv.c:(.irom0.text+0xa44): undefined reference to `WEBFS_max_size'
web_srv.c:(.irom0.text+0xa48): undefined reference to `WEBFS_base_addr'
web_srv.c:(.irom0.text+0xa50): undefined reference to `WEBFSInit'
web_srv.c:(.irom0.text+0xa54): undefined reference to `WEBFSGetFilename'
web/.output/eagle/lib/libweb.a(web_srv.o): In function `webserver_received_data':
web_srv.c:(.irom0.text+0x12fe): undefined reference to `WEBFS_max_size'
web_srv.c:(.irom0.text+0x134e): undefined reference to `WEBFS_base_addr'
web_srv.c:(.irom0.text+0x15f9): undefined reference to `WEBFSInit'
web_srv.c:(.irom0.text+0x16b6): undefined reference to `WEBFSGetFilename'
web_srv.c:(.irom0.text+0x1b94): undefined reference to `WEBFSInit'
web/.output/eagle/lib/libweb.a(web_int_callbacks.o): In function `get_new_url':
web_int_callbacks.c:(.irom0.text+0x730): undefined reference to `numFiles'
web_int_callbacks.c:(.irom0.text+0x78c): undefined reference to `WEBFS_curent_size'
web/.output/eagle/lib/libweb.a(web_int_callbacks.o): In function `web_int_callback':
web_int_callbacks.c:(.irom0.text+0x1c86): undefined reference to `WEBFS_base_addr'
web_int_callbacks.c:(.irom0.text+0x1c90): undefined reference to `WEBFS_curent_size'
web_int_callbacks.c:(.irom0.text+0x200a): undefined reference to `WEBFS_base_addr'
web_int_callbacks.c:(.irom0.text+0x2036): undefined reference to `WEBFS_curent_size'
web_int_callbacks.c:(.irom0.text+0x2065): undefined reference to `WEBFS_max_size'
collect2.exe: error: ld returned 1 exit status
../Makefile:217: recipe for target '.output/eagle/image/eagle.app.v6.out' failed
mingw32-make[1]: *** [.output/eagle/image/eagle.app.v6.out] Error 1
 

pvvx

Активный участник сообщества
Похоже еще что то потерялось :(
https://github.com/pvvx/esp8266web/blob/master/app/web/webfs.c
Вроде синхронизовал git. Проверил, скачал zip - пашет.
Просто не люблю git и сложившуюся систему построения проектов в UDK (с дублями всех либов и их исходников к каждому проекту в его каталоге). Возникает путаница с новыми частями исходников, которые идут в разные проекты...
По тому извиняюсь, что в git часто получаю бардак. Пишите, если что не так - как увижу и будет доступ к компу, сразу исправлю.
Релиза то у данной свалки всё равно не будет :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Слепил тестовую отсылку samples ADC.
Отсылает UDP пакетами по 1024 байта 512 значений ADC снятых по прерыванию аппаратного таймера. Шаг задается с 1 по 20000 Гц.
Управление пока тестовое:
Debug and Test -> UDP Wave Port
Сначала надо установить UDP port. Это инициализирует драйвер, если port != 0. При 0 -> закроет драйвер.
Потом надо задать частоту samples. Это запускает передачу UDP пакетов по мере набора.
Отсылка в данном случае идет по IPADDR_BROADCAST + назначенный port.
Если требуется задать конкретный порт, то сначала надо установить UDP port в меню HTTP.
Потом обратиться к данному порту по UDP - передать букву "A". Это инициализирует ip и port куда будут выдаваться samples ip и port-ом с которого обратились.
Потом обратиться к порту UDP и дать команду пуска "F=частота". "S" - стоп. Если ip задан, то включать/выключать можно уже в web станице...
Кому не нравится делают свой интерфейс управления IP и порта куда будет отсылать ADC... :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Покрутил ещё 'UDP wave port' - работает теперь нормально. Передает 14 битные замеры с ADC до 20кГц со всеми шумами, т.к. расширено на всё что можно было выудить с ADC (пока для примера хватит - поток 40 000 байт в секунду). Фильтруйте на приеме.
 
Привет Pvvx!
Тестирую, интересно:).
14бит - шумит... +/-0x0030 ;)
На выборке этот ADC требует большой ток -видно модуляцию.
Понятно, макет. Ему нужно давать c ОУ Rвых =600 Ом. и до 8-10 бит надо резать:p.Да и почему макс. значение =0x3ff8 ?

Нужен еще в установках и local Port (как Lua делали, что бы принимать на PWM), и с WEB частота пока не устанавливается.:(
 
Последнее редактирование:
Наверное у же на форуме обсуждали этот ADC
я думал что аппаратный есть, а так SAR программный, внутри чипа компаратор с интегратором ?:(
Если программный тогда как разрядность ADC поменять?
 
Последнее редактирование:

pvvx

Активный участник сообщества
На выборке этот ADC требует большой ток -видно модуляцию.
Не заметил никакой модуляции.
Счас лень включать эталонном гену и настраивать, но СoolEdit кажет нормально:
1kHz_sin_max.gif
Просто синус 1 кHz с перебором по амплитуде... :)
Да и почему макс. значение =0x3ff8 ?
Потому, что вставлена китай-коррекция. Я её не менял и не подбирал для каждой частоты и каждого чипа с разными внешними цепями, а оставил что поставили китайцы. Тут она, в нескольких строчках https://github.com/pvvx/esp8266web/blob/master/app/driver/wdrv.c
Нужен еще в установках и local Port (как Lua делали, что бы принимать на PWM), и с WEB частота пока не устанавливается.:(
Всё там уже есть. И управляется и с web и с UDP.
Вообще-то это для примитивного НЧ осцилла с супер гальванической развязкой в несколько метров :), чтобы казать на экране какого смартфона или ещё чего подешевле. Каналов - сколько ESP модулей включите :)
А шумит у вас питание и плохая разводка. Нету там шума в 7 бит (+-0x30).
 
Последнее редактирование:
Сверху Снизу