• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Lstt

Member
Господа, а зачем делать то, что уже практически реализовано? Для гибкости настроек или для чего? Я бы скромно попросил автора :), включить в свой SDK такой функционал, как управление силовой нагрузкой по GPIO, включая режим диммирования, с обратной связью, возможностью управления несколькими силовыми каналами (220В) по железу, как реализовано http://arduino-ru.blogspot.ru/2009/02/220.html , или здесь http://wiki.dxarts.washington.edu/groups/general/revisions/4dd69/47/, причём по WiFi без дополнительных контроллеров. Очень хотелось бы внедрить это в систему управления освещением в доме, а пока все разработки нацелены либо на метеостанции, либо на светодиодное управление.
 

evh

New member
Господа, а зачем делать то, что уже практически реализовано? Для гибкости настроек или для чего?
Хотя бы из-за того, что нет исходников этого проекта, и не известно что может вставить автор в свой код. И конечно для гибкости настроек, сделать модульную систему и вставлять тот функционал, который тебе нужен, для той же экономии памяти.
 

A_D

Active member
Там включено несколько тестов, в том числе значений в области "для пользователя" RTC_RAM. Снимите его. Он сделан для проверки, используется или нет область памяти RTC, которая "по докам" отдана пользователю. Возможно значения от туда используются либами, но не объявлено (для того он и сделан, чтобы это выявить и найти кто туда лезет). Может что-то ещё. Например на сегодня ещё не определено, почему у модулей такой разброс по показаниям vdd3.3V, а от него зависит "мощность" передатчика. К примеру модуль ESP-12, который дает меньшие показания у меня вообще не греется никак, а ESP-01 - как утюг. По схеме там может быть различие только у номинала резистора (вроде с 31 ноги) и разводке проводников на плате (в первую очередь надо поглядеть фронты от генератора "кварца").
Основные аппаратные различия в 0.9.4 и 0.9.5 в использовании кеща flash. В 0.9.5 это используется активнее и во время исполнения ПО чтений flash больше.
Но скорее всего у вас проявляются просто различия в настройках WiFi модуля...
В 0.9.5 система его старта сменилась.
И не понятно это: Test rtc memory retention... changes, new write
Это первый старт после сброса питания? (Некоторые режимы sleep тоже рубят питание у чипа и RTC память сбрасывается, т.к. на вывод его питания ничего не подведено - для продолжения исследования что там творится у Espressif нужен модуль с выводом питания RTC, а таких пока нет, как и времени мне паять туда проводники...)
Попробовал отключить TEST_RTC_RTNTN (закоментил строку #define TEST_RTC_RTNTN 1 ) зашил - результат получается тот же, сеть создает, при попытке подключения начинает грется активно (хотя уже не так резво, но всеравно в итоге оч горячо) и не подключается.
О, попробовал с телефона приконектится - таки подключился, хотя модуль так же кочегарить начинает в момент подключения. и странички получает таки телефон, но иногда подзатупливает и в момент запроса странички какой либо - модуль опять же начинает греться.. при попытке зайти на страничку ADC он нагрелся и судя по всему залип. в UART последнее что высыпал было это:
srv[80] 192.168.4.2:53410 [3] send: #2208 1460 ...
srv[80] 192.168.4.2:53410 [3] send: #2208 1460 ...
srv[80] 192.168.4.2:53410 [3] send: #220e 894 cf2 dis
srv[80] 192.168.4.2:53410 [3] disconnect
srv[80] 192.168.4.2:53408 [2] send: cf1 #2246 571 dis
srv[80] 192.168.4.2:53408 [2] disconnect
srv[80] 192.168.4.2:53411 [2] listen
srv[80] 192.168.4.2:53411 [2] read: 367 of1[logo.gif] GET f[/logo.gif] #2208 (162) 200 send: #220e 393 cf1 dis
srv[80] 192.168.4.2:53411 [2] disconnect
srv[80] 192.168.4.2:53409 [1] error -8 (Connection aborted)
srv[80] 192.168.4.2:53409 [1] disconnect
srv[80] 192.168.4.2:53412 [1] listen
srv[80] 192.168.4.2:53412 [1] read: 328 of1[adc.htm] GET f[/adc.htm] #2258 (163) 200 send: of2[grfx1.inc] cf2 of2[grfx2.inc] #2258 2610 ...
srv[80] 192.168.4.2:53412 [1] send: #2258 1536 ...
srv[80] 192.168.4.2:53412 [1] send: #2258 1408 ...
srv[80] 192.168.4.2:53412 [1] send: #2258 1536 ...
srv[80] 192.168.4.2:53413 [2] listen
srv[80] 192.168.4.2:53413 [2] read: 331 of3[site.js] GET f[/site.js] #2228 (193) 200 send: #222e 1321 cf3 dis
srv[80] 192.168.4.2:53413 [2] disconnect
srv[80] 192.168.4.2:53412 [1] error -8 (Connection aborted)
srv[80] 192.168.4.2:53412 [1] disconnect
cf2 cf1
немного подождал пока модуль остынет, ничего не переподключал и не трогал, обновил страничку на телефоне заглавную и модуль ответил таки, хотя подозрительно на любую другую не пускает, мол не удается отобразить страницу и сам модуль в моменты запроса начинает грется. (в итоге домучал запросами, что wifi отвалился уже)

Модуль у меня EsP-01, сегодня возьму еще один (такого же типа) и попробую залить на него ту же самую прошивку - возможно же, что подпалил каким либо образом приемопередатчик (когда только пришли модули, с прошивкой еще не облачной - то я по запарке подключил питание напрямую от TTL-232R-3V3 а на нем входы выходы да, 3.3в а вот питание 5в на выход. Модуль на стоковой прошивке нормально работал и отзывался на команды, хотя нагрузки серьезной не было (передача большого обьема данный по wifi). После я подключил питание как надо, через кренку - но все же. Хоть везде и прям кричат, что от 5В чип выгорит, но факт - он остается жив и вполне норм работает.) , хотя маловероятно если на старой прошивке он таки запускается не как утюг. :)

Test rtc memory retention... changes, new write
Да, это первый старт, я не снимаю питание и просто передергиваю CH_EN - эдакий сброс (насколько я понимаю у него эффект аналогичен выводу Reset).
Кст, бывает если нажать на компе подключится к сети и на модуле сбросить опять, то после этой строчки еще появляются строки о подключении такого то клиента к сетке, но на том опять все зависает.
 
Последнее редактирование:

A_D

Active member
Попробовал отключить TEST_RTC_RTNTN (закоментил строку #define TEST_RTC_RTNTN 1 ) зашил - результат получается тот же, сеть создает, при попытке подключения начинает грется активно (хотя уже не так резво, но всеравно в итоге оч горячо) и не подключается.
Модуль у меня EsP-01, сегодня возьму еще один (такого же типа) и попробую залить на него ту же самую прошивку - возможно же, что подпалил каким либо образом приемопередатчик (когда только пришли модули, с прошивкой еще не облачной - то я по запарке подключил питание напрямую от TTL-232R-3V3 а на нем входы выходы да, 3.3в а вот питание 5в на выход. Модуль на стоковой прошивке нормально работал и отзывался на команды, хотя нагрузки серьезной не было (передача большого обьема данный по wifi). После я подключил питание как надо, через кренку - но все же. Хоть везде и прям кричат, что от 5В чип выгорит, но факт - он остается жив и вполне норм работает.) , хотя маловероятно если на старой прошивке он таки запускается не как утюг. :)

Test rtc memory retention... changes, new write
Да, это первый старт, я не снимаю питание и просто передергиваю CH_EN - эдакий сброс (насколько я понимаю у него эффект аналогичен выводу Reset).
Кст, бывает если нажать на компе подключится к сети и на модуле сбросить опять, то после этой строчки еще появляются строки о подключении такого то клиента к сетке, но на том опять все зависает.
А по поводу ПП - я вот жду ESP-03 модули, интересно как там с этим будут дела. Но меня оч смущает на всех платах не то что, разводка... там и земля местами оч криво залита или тоненькой дорожкой идет от конденсатора питания, так же видел что не гнушаются и дорожки от кварца на другую сторону перебрасывать и вести как линии данных до spi flash, а смущает больше всего - по питанию вроде на всех модулях стоит 1 конденсатор! и тот 10мк судя по схемам. нет отдельного для flash, нет отдельных блокирующих (связку стандартную хотя б 0,1 + 10n) у разных входов МК, несмотря на большие частоты самого МК + wifi часть.(взять тот же модуль на nrf24L01 - так там все порядком грамотней сделано).


Offtop:
Чип внутри :)
 
Последнее редактирование:

Algis

New member
За всё время никто не дал никаких предложений, кроме как сделать на его основе TCP2COM. Но для проекта TCP2COM там очень много лишнего...
Для домашней автоматизации был бы очень полезен мост MODBUS/TCP - MODBUS/RTU

я сеичас использую немножко доработанный http://mbus.sourceforge.net/ который запущен в старом ноутбуке с линухом и который также собирает информацию из всех устроиств дома и в нем находятся веб интерфейс
 

A_D

Active member
Взял второй модуль, прошил той же прошивкой. Присмотрелся к модулям - память у них от разных производителей. И этот модуль да, греется, но не так сильно и работает, что с компа, что с сотика!
память на первом, не рабочем - AH1434 25Q40BT , а на втором, что заработал с новой прошивкой от winbond так же 25Q40BVNIG.

В качестве эксперемента перекинул местами память на модулях. Прошивка при этом одинаковая - так и осталось, модуль который грелся и через раз кое как работал - так и греется, а другой - вполне в теплом режиме, но работает.
И да, на них разница значения Power такая:
На умеренно теплом и рабочем - около 4,42 +\-0,01 прыгает иногда.
На горячем и залипающем - 4,45 -0,01 +0,02.
 

Вложения

Последнее редактирование:

pvvx

Активный участник сообщества
Кто-то спрашивал RTS/CTS:
new1.gif
Добавил, вместе с инверсией входов/выходов (DSR/DTR добавляется опцией в uart.h, т.к. не нужны, а пины едят).
Аппаратный 'Loop Back' c 'Flow Control' одновременно не работают - особенность чипа.
ets_timer_arm_new() не любит некоторые значения (в us) и иногда не заряжает таймер :(
Для домашней автоматизации был бы очень полезен мост MODBUS/TCP - MODBUS/RTU

я сеичас использую немножко доработанный http://mbus.sourceforge.net/ который запущен в старом ноутбуке с линухом и который также собирает информацию из всех устроиств дома и в нем находятся веб интерфейс
У меня своих либов Modbus(TCP/RTU) хватает на все CPU/MCU и не думал что это проблема. Позже вставлю, счас занят другим...
http://mbus.sourceforge.net/ не соответствует спецификации ModBus. В нем нет проверок пауз в 1,5 и 4,5 символа и т.д. Но, если всё сделать по стандарту, то половина modbus устройств не будет работать, т.к. описанное и прочие задержки в них не реализованы (т.е. они не соответствуют стандарту ModBus).
 
Последнее редактирование:

pvvx

Активный участник сообщества
И да, на них разница значения Power такая:
На умеренно теплом и рабочем - около 4,42 +\-0,01 прыгает иногда.
На горячем и залипающем - 4,45 -0,01 +0,02.
Вот это и странно. Почему на ESP-12 при том-же коэффициенте деления 3.3В? От куда разница в 30..40%, при всём одинаковом? На ESP-01 у чипа ESP8266ex дата 252014 + POHV54, на ESP-12 302014 + POVVo1. Но краска и маркировка различаются. Китайцы клонировали свои микросхемы? Или отбраковка?
Измерил резисторы в 12k - отклонения в третьем знаке. На светодиод стоят в обоих типах модулях 2.2k.
Возможно, что перегрев у ESP-01 связан с висящими входными ножками. Тем более он сильно проявляется, когда к модулю подносится экран при передаче или если рукой измерять температуру чипа. При этом у него потребляемый ток улетает за 300mA (1Вт)... Когда при передаче у ESP-12 - номинально 70..100mA
 
Последнее редактирование:

A_D

Active member
Посмотрел на своих модулях - да, как и у Вас 252014 + POHV54. Заказывал у разных продавцов, на обоих модулях разные только чипы памяти, остальное идентичное.
 

Algis

New member
http://mbus.sourceforge.net/ не соответствует спецификации ModBus. В нем нет проверок пауз в 1,5 и 4,5 символа и т.д. Но, если всё сделать по стандарту, то половина modbus устройств не будет работать, т.к. описанное и прочие задержки в них не реализованы (т.е. они не соответствуют стандарту ModBus).
Да, задержек там нет, только болтается неисползованная ф-я tty_delay()
скорей всего из-за этого коммуникация с моими самодельными ModBus устройствами время от времени нарушается...
пришлось предусмотреть повтор пакетов и оставить только как временное решение.
 

pvvx

Активный участник сообщества
Да, задержек там нет, только болтается неисползованная ф-я tty_delay()
скорей всего из-за этого коммуникация с моими самодельными ModBus устройствами время от времени нарушается...
пришлось предусмотреть повтор пакетов и оставить только как временное решение.
А как с fifo в UART определить задержку в 1,5 символа? :) Никак, только если не использовать fifo. А оно у всех современных CPU/MCU. Т.е. стандарт modbus умер или требуется специализированный MCU на линии RS-485.
Большая половина устройств cmodbusRTUиспользует полудуплекс на RS-485 и программно переключают направление передачи с неопределенной задержкой. Это тоже нарушает спецификацию, если задержки переключения драйвера шины RS-485 не успевают уложиться в нормы (до 1,5 символа).
Из-за этого возникает псевдо-modbus в котором задержки между пакетами и т.д. сваливают на пользователя в настойках и они болтаются у каждого устройства в неизвестных пределах, т.к. не могут подержать аппаратно :)
 
Последнее редактирование:

Algis

New member
А как с fifo в UART определить задержку в 1,5 символа? :) Никак, только если не использовать fifo. А оно у всех современных CPU/MCU. Т.е. стандарт modbus умер или требуется специализированный MCU на линии RS-485.
Приходятся не использовать, собирать байты "вручную" в функции прерывания UART, это не критичьно для домашних устройств где кличество данных невелико и помещается в один пакет (например данные самодельного трехфазного элокросчетчика на ADE7758), недостаток откупается легкостю реализации.

Кстати, как поправить Makefile вашего проекта ? (который в Makefile.zip), сейсас он не генерирует bin файлов прошивки, нет переменных TARGET, FLAVOR...
я только второй раз в жизни открыл Makefile, тяжело сразу разобраться... все свои проекты на stm32 обычно делаю в IAR Embedded Workbench.
 

evh

New member
Кстати, как поправить Makefile вашего проекта ? (который в Makefile.zip), сейсас он не генерирует bin файлов прошивки, нет переменных TARGET, FLAVOR...
я только второй раз в жизни открыл Makefile, тяжело сразу разобраться... все свои проекты на stm32 обычно делаю в IAR Embedded Workbench.
Прочитать ReadMe.txt :). Распаковать в каталог (папку) на уровень выше, при этом старый не затирать.
 

pvvx

Активный участник сообщества
Приходятся не использовать, собирать байты "вручную" в функции прерывания UART, это не критичьно для домашних устройств где кличество данных невелико и помещается в один пакет (например данные самодельного трехфазного элокросчетчика на ADE7758), недостаток откупается легкостю реализации.
Где же эта легкость, если для этого надо принимать по одному символу и иметь 3 таймера на микросекунды с реакцией всей системы в наны :). Таких операционных систем с real-time практически нет, но на тупом MCU это реализуется запросто, т.к. у него всего одна задача.

Кстати - никто не разбирался с внутренним дельта-сигма преобразователем, подключаемым к любому GPIO у ESP8266?
0x60000368 GPIO_SIGMA_DELTA [31:17]
SIGMA_DELTA_ENABLE [16] R/W 1: enable sigma-delta; 0: disable
SIGMA_DELTA_PRESCALAR [15:8] R/W Clock pre-divider for sigma-delta.
SIGMA_DELTA_TARGET [7:0] R/W target level of the sigma-delta. It is a signed byte.
И у каждого вывода:
GPIO_PINxx_SOURCE [bit0] R/W 1: sigma-delta; 0: GPIO_DATA
 
Последнее редактирование:

pvvx

Активный участник сообщества
Спасибо, работает :)не заметил что надо на уровень выше...
Так получилось, когда использовались makefile от проектов Espressif (они обращаются на уровень ниже к главному makefile), а Unofficial Developer Kit ещё не содержал нормальной системы с make файлами. Теперь надо менять, но лень.
А можно еще глупые вопросы по UART-TCP, или оно еще не допилено ? У меня как-то странно работает просто. Не могу понять почему связь рвет.
Теперь не рвет. USR-TCP232-Test.exe продержал соединение 24 часа (115200 baud ESP-12). Потом выключил. Ещё не сделана установка RTS сигнала при отсутствии соединения. Т.е. вроде он сам аппаратно выставляется при заполнении fifo UART, но при новом соединении я опустошаю fifo rx/tx... А для TCP2COM надо что-бы RTS выставлялся сразу при разрыве и отсутствии соединения по TCP - необходимо переключать I/O RTS на режим порта или выключать аппаратный flow control и использовать soft flow в UART, когда нет соединения...
 
Последнее редактирование:

Algis

New member
Где же эта легкость, если для этого надо принимать по одному символу и иметь 3 таймера на микросекунды с реакцией всей системы в наны :). Таких операционных систем с real-time практически нет, но на тупом MCU это реализуется запросто, т.к. у него всего одна задача.
Для наших любительских проектов тоже можно нарушить спецификацию и использоать один таймер только для определения конца кадра
 
Последнее редактирование:

Algis

New member
Еще вопрос насчет TCP2UART,
попробовал считать данные с самодельного контроллера системы отопления, там все в формате json,
в загруженной картинке видно как красной линией помеченные куски теряется, при считывании через роутер с прошитым openwrt и ser2net, данные прходят без потерь.
В чем может быть проблема ? в каком месте смотреть ?
 

Вложения

pvvx

Активный участник сообщества
В чем может быть проблема ? в каком месте смотреть ?
В программе терминала. Она имеет десятки ошибок.
Для наших любительских проектов тоже можно нарушить спецификацию и использоать один таймер только для определения конца кадра
Так и сделан терминал. :)
 
Сверху Снизу