• Система автоматизации с открытым исходным кодом на базе 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).
 
Последнее редактирование:
Сверху Снизу