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

Подскажите, пожалуйста, максимальные возможности ESP8266?

pvvx

Активный участник сообщества
Смысл темы же в том, на что способен модуль ESP, чтобы было понятно новичку.

А получается:


Стоит ли играться с этим модулем, если он на большее неспособен да еще и глючит в уже собранных проектах?
На существующих расширениях типа NodeMCU или Arduino пока невозможно. Причина уже многократно описана - глючит китайская часть SDK, на которую они насажены и авторы портирования данных расширений не исправляют китайскую часть SDK и часто не хотят использовать даже простейшие обходы известных ошибок китай-части. Как итог - все расширения на ESP8266 не годятся для чего-то более чем мигать светодиодом.
Tomahawk всё правильно пишет, но и на СИ, используя только Espressif SDK ничего более серьезного, чем мигание 10-ю светодиодами не написать. Espressif SDK использует очень несерьезные алгоритмы, которые переплетаются и приводят к другим ошибкам, в итоге накопившиеся за год исправления в нем занимают большую часть кода и нерационально используют ресурсы чипа. Плюс полное отсутствие документации на внутренности (регистры управления) чипа. Итого - громадный не оптимальный код SDK, который вы удалить или использовать частями для сокращения занимаемых размеров под свою задачу не можете.
Такова политика Espressif - даже встроенный в чип ESP8266 ROM-BIOS (64 килобайтная встроенная масочная или OTP ROM система) имеет десятки уже год известных ошибок, которые до сих пор не исправлены. В последних SDK частично этот код переносится в и так малую IRAM память чипа, пожирая и дублируя ресурсы.
 
Последнее редактирование:

AndreyD

New member
Ну вот, спасибо за развернутые ответы. Это мне и, наверно, ТС было интересно, что на данный момент как ни крути на esp что-то крупное крутиться без глюков не будет.

Остается только играться с диодами, датчиками, релюшками и движками.
 

Kuiper

New member
Народ, всем огромное спасибо за ответы!
Не ожидал, что эта тема будет интересна форумчанам.

По теме топика - выше уже правильно сформулировали что, примерно, можно считать серьезным проектом - устройство на ESP8266, с подключенной периферией до 10 модулей, сложной бизнес-логикой (по аналогии с MVC из программирования), отказоустойчивое (к требованиям устройств гражданского назначения), с некритичными багами.

Суммируя все, что прочитал на форуме и из книги про ESP8266, наверное, можно сказать, что такое устройство создать возможно, но необходимо:
  • писать весь код на C,
  • работать напрямую с GPIO и ESP8266 API, без NodeMCU и других "переходников",
  • оптимально использовать ресурсы - время процессора ESP8266, RAM, Flash.

Я давно хочу перейти на что-то более серьезное, чем подключение готовых модулей и шилдов и прошивка готовых скетчей. ESP8266 - это идеальный вариант начать сейчас, т.к. у этой SoC есть WiFi, полноценный процессор, временная и постоянная память, GPIO для работы с периферией. В принципе, наверное, больше ничего и не нужно, кроме хорошего схемотехника и программиста, а это уже моя задача стать таким человеком.

А как вы думаете, может ли Espressif выложить в открытый доступ недоступную сейчас информацию по схемотехнике и прошивке, чтобы можно было работать напрямую с процессором, что-то менять? Я не разбираюсь в этой "кухне", слишком "железный" уровень для любителя Arduino-шилдов и скетчей, но как бы общее понимание того, что внутри процессора есть АЛУ и другие базовые вещи, к которым Espressif не дает документацию, есть. И если, пусть даже на старые модели, эта информация станет доступна, то каждый сможет перелопатить прошивку вплоть до каждого "винтика", т.е. транзистора и регистра на чипе.

Спасибо!
 

pvvx

Активный участник сообщества
А как вы думаете, может ли Espressif выложить в открытый доступ недоступную сейчас информацию по схемотехнике и прошивке, чтобы можно было работать напрямую с процессором, что-то менять? Я не разбираюсь в этой "кухне", слишком "железный" уровень для любителя Arduino-шилдов и скетчей, но как бы общее понимание того, что внутри процессора есть АЛУ и другие базовые вещи, к которым Espressif не дает документацию, есть. И если, пусть даже на старые модели, эта информация станет доступна, то каждый сможет перелопатить прошивку вплоть до каждого "винтика", т.е. транзистора и регистра на чипе.
Espressif не настроена выкладывать описание внутренностей чипа и якобы свой код управления частью WiFi, мотивируя это тем, что этим воспользуются WiFi хулиганы :) Это из их оф.заявлений. Ту часть кода обработки WiFi , которую они прячут давно есть, но от других чипов и не стыкуется только из-за других внутренних регистров управления.
В общем это просто отговорка, а цель Espressif - не получить нормальных объемов продаж своего чипа, т.к. весь код предлагаемый к нему от Espressif есть большая свалка ошибок и их невозможно исправить на ESP8266 даже если подпишите NDA.
Скорее всего это связано с нарушениями патентов, а Espressif - шарашкина контора...
Такая ситуация вынуждает переходить на SoC других производителей.
Цена малых партий товара определяется временем разработки, а не стоимостью чипа. На ESP8266 ничего стабильного, связанного с WiFi, сделать невозможно. Можно только использовать его CPU, который полностью документирован еще его создателем Tensilica Inc (ныне куплена CADENCE).
 
Последнее редактирование:

Kuiper

New member
@pvvx, большое спасибо за подробный ответ!
Если не сложно, можете, для общего развития, написать, какие есть в свободном доступе альтернативы ESP8266 в той же ценовой нише, возможностях и размерах?
То есть, к примеру, Arduino с WiFi-шилдом уже не подходит как альтернатива из-за больших размеров, высокого потребления тока (Pro Mini и Nano это вообще почти не вариант, очень слабая конфигурация).

Интересно, а занимался ли кто-нибудь из профи сообщества ESP8266 реверс-инжинирингом ESP8266, с целью полноценной работы с ESP8266?

Спасибо!
 

pvvx

Активный участник сообщества
Интересно, а занимался ли кто-нибудь из профи сообщества ESP8266 реверс-инжинирингом ESP8266, с целью полноценной работы с ESP8266?
Кроме своих ковыряний 'Реверс' SDK Espressif и ROM-BIOS для создания открытого SDK пока очень мало находил... Может оно где и есть, но не выползает :)
Пока есть такая версия SDK - meSDK, там указано что ещё не переведено в СИ и не заменено на открытый код.
 
Последнее редактирование:

Kuiper

New member
@pvvx, большое спасибо!

Начал учить Си, постепенно и до уровня работы с ESP8266 дорасту :)
 
Кроме своих ковыряний 'Реверс' SDK Espressif и ROM-BIOS для создания открытого SDK пока очень мало находил... Может оно где и есть, но не выползает :)
Пока есть такая версия SDK - meSDK, там указано что ещё не переведено в СИ и не заменено на открытый код.
Можно ли Ваш sdk использовать с Sming-ом? Полноценная ли выходит замена китайсдк?
 

pvvx

Активный участник сообщества
Можно ли Ваш sdk использовать с Sming-ом? Полноценная ли выходит замена китайсдк?
Нет. Есть отличия и он имеет не все функции из китай-SDK. Он пока является базой для Web-свалки (TCP2UART) и не закончен, как самостоятельный SDK - является начальной "балванкой". Надо до конца переписать и адаптировать все функции из user_interface.o (последней части от китайской libmain.a). Частично она уже переведена, но не адаптирована под свой лад. Тогда от китайской SDK останется только закрытая часть управления аппаратурой WiFi, которую никто переводить в открытый вид не стал.
Требуется много времени и я не проф.программист. Тем более нет никакой поддержки со стороны, а наоборот и одному всё это сложно сделать. По этому он развивается только в сторону моих личных желаний и запросов под мои проекты. А Sming - это Arduino. В Arduino своя концепция, которая не годится для создания серьезных проектов.
 
Последнее редактирование:
Нет. Есть отличия и он имеет не все функции из китай-SDK. Он пока является базой для Web-свалки (TCP2UART) и не закончен, как самостоятельный SDK - является начальной "балванкой". Надо до конца переписать и адаптировать все функции из user_interface.o (последней части от китайской libmain.a). Частично она уже переведена, но не адаптирована под свой лад. Тогда от китайской SDK останется только закрытая часть управления аппаратурой WiFi, которую никто переводить в открытый вид не стал.
Требуется много времени и я не проф.программист. Тем более нет никакой поддержки со стороны, а наоборот и одному всё это сложно сделать. По этому он развивается только в сторону моих личных желаний и запросов под мои проекты. А Sming - это Arduino. В Arduino своя концепция, которая не годится для создания серьезных проектов.
Спасибо за оперативный ответ! Жаль, что СДК пока не пригоден к замене кетай сдк. Вот чего Вы так ардуино не любите? Прям беда какая-то :) В умелых руках из ардуино вполне себе проекты рабочие выходят. Я вон в свое время сделал систему управления освещением именно на arduino pro-mini + Arduino как софтварная платформа. Теперь вот систему управления отоплением на esp8266 мучу на базе Sming-а. Вы как имя нарицательное Ардину используете - мол только диодами помигать и все. Не все только диодами мигают. Да и "супер серьезное" кодение на том же AVR не редко сводится к не всегда удачному повторению кусков того, что Ардуино зовется. Равно как и в esp8266 то же. Справедливости для замечу, что внутреннего полного доверия к esp8266 ПОКА нет. Но к тому же AVR + Arduino - полнейшее, проекту год и он исправно пашетю И именно тогда еще на Ардуино, а не на голом AVR C, писано было. А в esp не столько Arduino-Sming напрягает, он вообще не напрягает. он чаще радует, сколько как раз кетай СДК..Ежли бы кЕтайцы его открыли - просто праздник настал бы. А то читая Ваши заметки по мотивам копания во внутренностях кетай СДК волосы ШУВОЛЯЦЦА :) И еще ИМХО на счет АРдуино как софта - простые вещи надо делать просто, а сложные - сложно.. Если что-то получается сделать на Ардуино, зачем мучаться и ваять все на голом С или С++ от авр или есп? Оптимизировать надо тогда, когда это действительно надо. Когда я проектик под ATiny13/85 делал - там на голом С надо было писать. И хорошенько голову применять, чтоб все оптимально было и лезло в ооогромный абЁм тамошней памяти. А если ресурсов хватает - зачем париться? :)
 

pvvx

Активный участник сообщества
В умелых руках из ардуино вполне себе проекты рабочие выходят.
У каждого своя планка "серьезности проекта" и вроде выше это обсуждалось.
На Arduino я не могу 'запользовать' и 10% возможностей чипа. Только забить его память стыковкой с библиотеками Arduino и их концепцией.
Именно по этому и SDK от китайцев так-же не годится для решения многих задач.
-------
Основное применение ESP8266 я считаю возможно в двух вариантах:

1) Экономичный датчик.

2) Система для внешнего интерфейса к устройству по части WiFi.

Для первого варианта Arduino не годится. Нет возможности сделать экономию питания путем специального загрузчика и разборки надо ли инициализировать SDK и саму систему Arduino. Подробнее описано тут.

Для второго варианта Arduino не содержит нормальной поддержки встроенного Web с дисковой файловой системой, позволяющей держать все необходимые программы управления в чипе, без доступа к внешним интернет ресурсам, но работающим на любом внешнем устройстве имеющем интернет-браузер и экран.
 
Последнее редактирование:

Tomahawk

New member
Alexander V. Ribchansky, для себя поиграться мы ведь не против, можете взять ардуину и попереключать релюшкой за 1500 рублей, если вы любитель. А что будет, если вам потребуется 100 таких устройств? Это уже неоправданно дорого, и на месте работодателя я бы гнал подальше таких специалистов. Я также люблю устройства условно со спичечный коробок, а ардиуну нужно саму куда-то запихать. Так что дело уже не в коде заключается, а в том, чего вы ожидаете получить от проекта и в чём заключается ваша "серьёзность".
 
Alexander V. Ribchansky, для себя поиграться мы ведь не против, можете взять ардуину и попереключать релюшкой за 1500 рублей, если вы любитель. А что будет, если вам потребуется 100 таких устройств? Это уже неоправданно дорого, и на месте работодателя я бы гнал подальше таких специалистов. Я также люблю устройства условно со спичечный коробок, а ардиуну нужно саму куда-то запихать. Так что дело уже не в коде заключается, а в том, чего вы ожидаете получить от проекта и в чём заключается ваша "серьёзность".
Вот Вы бы только кого-то куда-то гнали. :) Опять же все должно быть ЦЕЛЕСООБРАЗНО. Если вправду над о налаживать выпуск сотен и тысяч железок, то да, правильно не просто интегрировать палту с ардуино (даже про мини) а все же сделать свою плату, на которой спецом все нужное от atmeg-и развести, а не нужное - не трогать, оно безусловно компактнее выйдет, но если это еденичные не требовательные по габаритам проекты - то зачем делать свою плату? не вижу смысла. Проще про-мини взять и вперед. Равно как и с esp8266, мне не прийдет в голову заниматься разводкой своей платы под именно проц + память, а не взять готовую сборку по типу esp-12. Проект должен быть ну уж оочень требовательным, чтоб нельзя было использовать готовую сборку. И да, платы разводить и делать умею и вопрос не в том, что только проводочками с разъёмчиками готовые шилды тыкать могу :) Вопрос исключительно в целесообразности простое делать сложно. А вообще это все философия. Ни меня никто не заставляет что-то делать, равно как и я не навязываю и не заставляю делать кого-то что-то.. Просто дискутируем :)
 

pvvx

Активный участник сообщества
Давайте рассмотрим простой гипотетический проект к примеру выключателя лампочки.
От модуля требуется:
1) Система простой настройки системы. Уровни ‘секретности’ (безопасности/шифраций) и указание внешней стыковки (AP и т.д.)
2) Память и логирование с расчетом времени работы когда включался с возможностью записи события смены лампочки чтобы узнать её ресурс и прочее.
3) Драйверы стыковки с системами уровнем выше по разным распространенным протоколам в инет.

Если всё это ведется на сторонней стороне, то мы получаем не автономный проект и невозможность использования его как одиночного устройства. А если всё это реализовано, то такой контроллер подходит практически под все варианты использования.
Сравните это с возможностями Arduino и увидите нецелесообразность её использования из-за малых недочетов, таких как ужасная файловая система spiffs и ужасная стабильность работы. Ещё Arduino не дает решения вывода накопленной информации для пользователя данного устройства на имеющемся у него оборудовании без привлечения стороннего софта и сервиса (часто оплачиваемого).
-------
Попробуйте разобрать и пример создания частного простого инструментального устройства как “управляемый блок питания для радиолюбителя” с интерфейсом по WiFi, чтобы уменьшить стоимость путем не включения в проект графических панелей и системы его управления c логированием...
Думаете ему необходим "облачный сервис"? :) (БП выбран т.к. он имеет всего 2 управляемых параметра - ток и напряжение. Но в итоге они выливаются в целую систему параметров необходимых для информации человека...)
 
Последнее редактирование:
Давайте рассмотрим простой гипотетический проект к примеру выключателя лампочки.
-грызь-
Сравните это с возможностями Arduino и увидите нецелесообразность её использования из-за малых недочетов, таких как ужасная файловая система spiffs и ужасная стабильность работы. Ещё Arduino не дает решения вывода накопленной информации для пользователя данного устройства на имеющемся у него оборудовании без привлечения стороннего софта и сервиса (часто оплачиваемого).
Что не так со spiffs? Что в нем не так? Я не пробовал использовать ее мега активно по типу 10-20 записей в час. Но с задачей отдавать веб-странички да конфиг хранить на ура справляется. Весьма вероятно, что активное ее использование приводит к чему-то "плохому" поделитесь плз своим опытом. Чего не хватает тому же esp-12+ sming + web interface чтоб через веб интерфейс дать возможность скачать файл лежащий на spiff с накопленными данными?? о каком оборудовании и оплачиваимых сервисах речь?? В чем ужасная стабильность esp-12 + sming? У меня железка в виде esp-12 + 2 x 74hc165 для расширения ввода и 2 x 74hc595 для расширения вывода + ds18b20 + web interface with AJAX (запрос свежей температуры каждые 4 секунды) + логика полезной работы девайса в плане управления системой отопления работал на наработку 2 недели. Потом просто надо было выключить, а так бы и дальше работало. Очень интересует опыт наработки на отказ в плане железа и софта для esp8266 (+Sming). Сам на уровне эмоций НЕ особо спокойно себя чувствую в плане надежности. Но мои тесты пока радуют.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Что не так со spiffs? Что в нем не так?
Скорость отдачи и записи файлов на уровне менее 1 килобайта в сек при наличии на диске заполнения более половины пространства. В его описании от создателя это указано.
Web требует отдачи в среднем до 10-ти файлов сек. Иначе им пользоваться невозможно.
Посмотрите чего хотят пользователи от web-свалки. Последний вопрос в том, как обеспечить комфортную работу с 40 файлами на одной страничке :)
Это возникло из-за попытки создания интерактивной настройки модуля и написания web страниц на популярном ПО генерирующим десятки файлов css и js.
В процессе удалось добиться на ESP8266 (при обсуждении и попытках как-то исправить в обсуждениях не вошедших в открытую часть форума) этого:
ttttt36.gif
И данной скорости вроде хватило... т.к. текшая скорость работы web-свалки с HTTP на уровне в 2 раза менее чем на стороннем накопителе HDD (seek 9 ms)
Повторите это на sming.
 
Скорость отдачи и записи файлов на уровне менее 1 килобайта в сек при наличии на диске заполнения более половины пространства. В его описании от создателя это
-грызь-
И данной скорости вроде хватило... т.к. текшая скорость работы web-свалки с HTTP на уровне в 2 раза менее чем на стороннем накопителе HDD (seek 9 ms)
Повторите это на sming.
Наверное ПОКА не повторю. Спасибо, что просветили в ограничении по скорости spiffs, не знал об этом. Однако мои проекты ПОКА не уперлись в отдачу большого числа файлов и пока нет требования в высокой скорости отдачи. Больше напрягает корявость отдачи больших файлов в интернет через НАТ (что ГСМ, что 3Г что АДСЛ, пох что) мы с Вами уже дискутировали на эту тему. Там все в кетай СДК уперлос и идиотизм с большим МТУ..
 

pvvx

Активный участник сообщества
Там все в кетай СДК уперлос и идиотизм с большим МТУ..
Но это же решилось.
И не стоит сравнивать то, что вас устраивает, с запросами других. Про то, что SDK обеспечивает протирание дырки в Flash и её выходу из строя при частых deep-sleep в течении нескольких месяцев тоже говорилось.
Как итог - Arduino пока не может позволить создавать на ESP8266 более менее интерактивный и надежный софт и цели у него совершенно другие - оно создано для вечерних поделок пользователя не сильно знакомого с программированием и другими техническими знаниями. По этому имеет массу ограничений. Т.е. узкую сферу применения.
Серьезное обучение программированию на ней тоже накладывает ограничения, возникающие от того, что цель Arduino скрыть нижний слой работы с аппаратной частью. В итоге получается 'специалист' не знающий реальных аппаратных уровней современного оборудования и очень ограниченный про выбору дальнейших систем программирования (только высокий уровень, без возможности создания системного ПО). Что и наблюдается в обществе - мигание светодиодом с его подключением к выводу контроллера уже приравнено к геройству. :)
 
Последнее редактирование:

Ann

New member
Хочу поинтересоваться кому удалось получить наибольшую битовую ( байтовую ) скорость потока данных в от модуля, без подвисания. И как долго получалась непрерывная работа.
 
Сверху Снизу