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

JustACat

Moderator
Команда форума
И при наличии на выводе 6 (ADC Pin ESP8266) напряжения более 1.1В в пару мА чип перезагружается.
Так а в ESP8266_Specifications же есть пункт
8.5 Analog ADC
ESP8266EX also integrates a generic purpose 10-bit analog ADC. The ADC range is from 0V to
1.0V.
It is typically used to measure the voltages from the sensor or battery status. The ADC
cannot be used when the chip is transmitting.
Otherwise the voltage may be inaccurate.
 

Алекс

New member
Про телепузиков - улыбнуло. Нормальные страницы есть смысл рисовать чуть позже. Пока сильно много изменений ежедневных. И что понимать под "нормальными" страницами ? Если конечный результат - готовое устройство, то большинство того что сейчас на сервере выводится - нафиг не надо. Если цель помучить чип, то и так все хорошо.
Про дырку во флэш - ну только из любви к железу. Не так часто сохраняем, даже в период тестов. Да и при стоимости модуля в 3$ ... вы слишком строги.
Насколько я понял smartlink реализуется по-другому. Он ищет точку доступа с определенным именем и если находит - сам к ней цепляется. Не всегда кнопку реализовать можно. А настраивать железяку иногда надо. В своей помойке я пока реализовал возможность таким образом - 5 минут с момента старта StationAP, потом AP глушим. SSID AP_+мак адрес. Но не всегда питание можно передернуть - может железка где в шкафу, или просто высоко висит. Поэтому и сижу, гадаю - как удобнее "смартлинк" реализовать. Чтобы и удобно, и безопасно. А тут вы ...

Я лично рассматриваю девайс как удаленная консоль. Есть дом, на чердаке шкаф, в шкафу - коммутатор. Ключей от чердака - нет. Жильцам ты со своими проблемами и подавно не нужен. Ситуация банальная - сисадмин, или его помощник по дурости/пьяни/незнанию ложат железку. Воскресить - да пожалуйста, через RS232 консоль. Куда проще приехать, и с ноута из машины все сделать. Вот тут и надо реализацию - UART <-> TCP и удобство в настройке, подключении.
 

pvvx

Активный участник сообщества
Про телепузиков - улыбнуло. Нормальные страницы есть смысл рисовать чуть позже. Пока сильно много изменений ежедневных. И что понимать под "нормальными" страницами ? Если конечный результат - готовое устройство, то большинство того что сейчас на сервере выводится - нафиг не надо. Если цель помучить чип, то и так все хорошо.
Про дырку во флэш - ну только из любви к железу. Не так часто сохраняем, даже в период тестов.
По данном поводу - надо делать отдельную тему с готовым устройством. Например TCP2COM.
Да и при стоимости модуля в 3$ ... вы слишком строги.
Цена железа тут не причем. Это требуется для надежности работы конечного устройства. Сохранение не дописано, т.к. ещё есть закрытая часть библиотек в SDK, а там кошмар по этому поводу.
Насколько я понял smartlink реализуется по-другому. Он ищет точку доступа с определенным именем и если находит - сам к ней цепляется.
Это без разницы. Как соединиться к AP с hidden SSID? :) Кто-то должен подать запрос с её именем. Это и перехватываете и используете как хотите. Зачем упираться в дурную реализацию на видео?
smartlink сделан по причине того, что в дурдоиде есть функция для телепузиков соединиться со станцией "xxxxx". И это всё. Т.е. это создано для лейбочки - мол "типа, у нас есть такая никому не нужная фича, а у вас?" :) На что надо ответить - "а у нас в кармане гвоздь!" :p:D
 
Последнее редактирование:

pvvx

Активный участник сообщества
Чем вобщем-то и занимаюсь. Пока результат обнародовать не буду. Убого пока смотрится. Но прототип работает. Единственно - не могу поймать из-за чего примерно раз в сутки виснет.
А web-сервер адаптирован на изучение железа и дальнейший разбор что "спрятал" Espressif. Это пока его главная функция :) Дописываю это http://esp8266.ru/forum/threads/dokumentacija-na-esp8266-na-nashem-sajte-popolnjaemyj-razdel.5/#post-804
Или вот к примеру: у встроенного ADC ref (максимум при значении 1024) на одном из модулей = 0.9918В. Другие пока не пробовал.
Добавил ещё показания напряжения питания модуля (дает встроенная функция):
Power.gif
Вроде есть ещё температура... пока зажму :)
 
Последнее редактирование:

pvvx

Активный участник сообщества
Тот выхлоп, который до user_init, не останавливает. Похоже, user_init вызывается уже после вывода большей части выхлопа бута.
Да. Это отрабатывает встроенная ROM. Иначе бы давно исправили скорость 74880. Но это в масочной ROM самого чипа :(
 

Алекс

New member
А как он мешает ? В случае встраивания куда-нибудь ESP стартует обычно раньше самого девайса. В чем проблема то ?
 

pvvx

Активный участник сообщества
По поводу контроля питания. Включил модуль ESP-12. У него средний делитель для перевода значения readvdd33() вышел 765.
Ранее в другой теме писал:
Функция uint32 readvdd33() дает напряжение питания readvdd33()/1132 = xВ, где 1132 - это среднее значение коэф. для внутреннего ADC (SAR) при вычислении питания к конкретному модулю. Пример: при питании 3.286В получаем значение ~3718(dec)
Т.е. имеем колоссальный разброс от модуля к модулю. Пока проверил 2 - один 1132 ESP-01, второй 765 (ESP-12) - расхождение более 40%. А по данному параметру настраивается передатчик WiFi.
Придется заводить переменную калибровки в каждом модуле и искать причину такого различия....
А ножек для блокирования жалко.
Их много. Вот поведение оставшихся ног у модуля ESP-12, кроме уже известных (RX0,TX0,TX1, всякие "ресеты"):
Start_ESP-12.gif
BIOS врубает встроенную подтяжку к "1" на GPIO15 при старте. Резистором 47кОм не притянуть к gnd (а надо для старта в правильный режим boot). Надо не более 10 кОм. После старта прошивки, встроенная подтяжка к "1" на GPIO15 отключается. Из-за этого, возможно, если модуль зависнет, то малого потребления не выйдет, как пишут в пару uA... На диаграмме видно, момент отключения внутреннего источника тока на пине GPIO15 на 0,3 сек от включения питания.
В итоге имеем 6-ть свободных выводов, без всяких переключений и приключений при старте.
Пока WEB никаких переназначений выводов не делает, кроме UART-овских.
Ещё имеющиеся беды:
1) Не всегда правильно работает WDT.
2) Не проведено питание к RTC и её памяти.
Проблемки имеют взаимосвязь, т.е. параметры WDT (и многое другое) сохраняется именно в RTC_MEM. Надо пробовать запустить внешний источник питания для RTC. Если выйдет - ждать модуля ESP-13 и далее, с выводом питания VDD_RTC (1В). Только после этого можно думать о режимах малого потребления и бешенного старта для передачи информации. Вроде хватает 0.2..0.3 сек от момента полного старта, чтобы передать дцать килобайт и заснуть опять на установленное время. На Lua - этого не выйдет (пока она проинициализится - батарейка уже кончится).
 
Последнее редактирование:

Vit

New member
У меня пока в наличии только ESP01.
А как он мешает ? В случае встраивания куда-нибудь ESP стартует обычно раньше самого девайса. В чем проблема то ?
Во-первых, "обычно" это не то же, что гарантированно, во-вторых, что у кого в каком порядке стартует зависит от многих факторов. Но самое главное, принятые данные нужно закрывать контрольными суммами и т.п., т.е. для поделок не самое вкусное. В случае применения пакетной передачи вопрос отпадает, потому как целостность пакетов всё-равно нужно контролировать. Вот только варианты с фреймингом по символам начала/конца пакета, а не по таймаутам, нужно делать аккуратно, с дополнительными таймаутами и контролем целостности символов. Не страшно, но опять же не для каждой ардуины
 

Sanya_kv

New member
Насколько я понял smartlink реализуется по-другому. Он ищет точку доступа с определенным именем и если находит - сам к ней цепляется. Не всегда кнопку реализовать можно. А настраивать железяку иногда надо. В своей помойке я пока реализовал возможность таким образом - 5 минут с момента старта StationAP, потом AP глушим. SSID AP_+мак адрес. Но не всегда питание можно передернуть - может железка где в шкафу, или просто высоко висит. Поэтому и сижу, гадаю - как удобнее "смартлинк" реализовать. Чтобы и удобно, и безопасно. А тут вы ...
Не совсем так.
Технология SimpleLink (Правильнее её называть SmartConfig) придумана TI (Texas Instruments), предназначена для "простого" добавления устройства в существующую домашнюю WiFi сеть. Рассмотрим пример, есть устройство с одной кнопкой (возможен вариант вообще без кнопки) и Вам его нужно подключить к существующей сети. Самый простой вариант это использование WPS (Тоже пока не реализовано), но имеет существенные недостатки в безопасности, возможно по этому не используется (хотя Филипс в своих лампочках использует именно этот метод). Или каким-нибудь образом сообщить параметры сети устройству. TI в своих модулях (CC3ххх) для этого использует другие 2 решения:

1. Пользователь переводит устройство в режим добавления (устройство при этом переходит в режим снифера), на компьютере\планшете\телефоне выполняет добавление новой (скрытой) сети, при этом в качестве имени добавляемой указывает параметры существующей сети в заданном формате ([Perfix][ssidlen]…)

Это видно из ролика, который Вы привели:
Добавляемое устройство находясь в режиме снифера, отлавливает этот запрос, в следствии чего оно узнаёт имя, пароль и тип шифрования домашней сети.
Подробно здесь: http://processors.wiki.ti.com/index.php/CC3000_First_Time_Configuration
2. Тоже что и первое, только используется уязвимость при передачи broadcast udp запросов (досконально тему не изучил, в процессе).
Пользователь на компьютере\планшете\телефоне, находясь в домашней сети, через приложение выполняет отправку пакета (предположительно broadcast udp), в котором указаны параметры добавляемой сети. Устройство в режиме снифера, отлавливает это пакет, …

Чуть подробнее здесь. http://processors.wiki.ti.com/index.php/CC3000_Smart_Config
 
Последнее редактирование:

Sanya_kv

New member
К "телепузикам" можно отнести процентов >95 населения. К этой категории я отношу и себя (Хочется иметь устройство с одной кнопкой "Сделать всё").
Наиболее удобная технология на ной взгляд, это WPS. При использовании её даже имя сети знать не обязательно.
 
Последнее редактирование:

pvvx

Активный участник сообщества
К "телепузикам" можно отнести процентов >95 населения. К этой категории я отношу и себя (Хочется иметь устройство с одной кнопкой "Сделать всё").
Наиболее удобная технология на ной взгляд, это WPS. При использовании её даже имя сети знать не обязательно.
Вот это правильная технология, а те (смартлинки) - только для лейбочки - аля "У меня в кармане гвоздь" (с) TI и Филипс :)
WPS к "телепузикам" не относится. Это не исполнение прошитой в мозг рекламной ритуальной акции. Ещё бы кнопку убрать ... :)

Скорость - мелочи. Для "прозрачного" моста этот мусор нежелателен. А ножек для блокирования жалко.
Решается миркухой в sot23 (типа PIC10(L)F320/322 6-Pin) Она вам отследит и отключит всё, да даст ещё ADC и жесткий WDT. Но придется пожертвовать пару uA питания :)
 
Последнее редактирование:

Sanya_kv

New member
Вот это правильная технология
К сожалению WPS не на всех роутерах есть. Для удобства использования устройства, необходимо предусмотреть ещё вариант. Думаю вариант broadcast udp от TI будет оптимальным.
Насколько я понял за неделю разбирательств, библиотека WiFi достаточно серьезно переплетена с lwip. Так просто избавиться от неё не получится. Жаль.
 
Последнее редактирование:

pvvx

Активный участник сообщества
К сожалению WPS не на всех роутерах есть. Для удобства использования устройства, необходимо предусмотреть ещё вариант. Думаю вариант broadcast udp от TI будет оптимальным.
А у меня приоритет AP а не Station у ESP8266. Обратная сторона.. :)

Насколько я понял за неделю разбирательств, библиотека WiFi достаточно серьезно переплетена с lwip. Так просто избавиться от неё не получится. Жаль.
бесповоротно, десятками функций из каждой либы + пользование его mem/lbuf процедурами. Отсоединяется только всё целиком. В BIOS что-то с WiFi есть - там и транспортный протокол на RS-232 для этого заточен (SLIP Frame http://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol).
rom_chip_v5_rx_init(), rom_chip_v5_tx_init() ...
Но как я понял ROM работает в выделенном от общей памяти куске, а он мал. Следовательно надо переинициализировать управление памятью на всю RAM.
 
Последнее редактирование:

Sanya_kv

New member
Но как я понял ROM работает в выделенном от общей памяти куске, а он мал. Следовательно надо переинициализировать управление памятью на всю RAM.
У чипа одно адресное пространство. Думаю код из ROM ни куда не грузится. А с разу от туда выполняется.
 
Последнее редактирование:
Сверху Снизу