LINUX.ORG.RU
ФорумTalks

рекомендуемый софт/sdk для esp8266

 ,


2

3

Вдохновившись постом про esp8266 я купил себе такой и накатил туда micropython. Было очень весело мигать светодиодиком через интерактивный шелл питона, я давно так не радовался — все мои предыдущие МК требовали гораздо больше секса на начальном этапе. Но счастье длилось недолго — при попытке сделать простейший веб-сервер меня ждали зависоны, ребуты, «memory allocation failed», «'int' object is not callable» (??), OSError: 112, «list index out of range» (??) и прочие «Fatal exception 28(LoadProhibitedCause)». По рандомности глюков очень похоже что бьётся память.

В общем, micropython с гитхаба у меня работает плохо. Что делать? Брать низкоуровневые sdk не хочется — мне бы что-то простое для домохозяек. Может, там арудина хорошо работает или nodemcu (lua)? Требования — чтобы работала периферия (wifi в AP и STA, gpio, SPI, ADC).

PS пока попробую откатить micropython до какого-нить из релизов, вдруг поможет.

UP Похоже что у меня что-то не то с платой питанием :(

Если допустить, что предположение о глючной памяти верное, то как поможет смена фреймворка?

P.S. А memtest или что-то похожее туда не завезли?

atrus ★★★★★ ()

Питон? На МК? У хипстеров совсем крышу сорвало, как я погляжу.

Meyer ★★★★ ()
Ответ на: комментарий от alex4321

Хотя, ещё вопрос что и куда завезли раньше - но мне лень гуглить.

alex4321 ()
Ответ на: комментарий от Meyer

Там его подмножество с ограниченной и оттого более шустрой реализацией, иирц (хотя учитывая что на шутауте для ванильного разница с сишкой бывает за сотню, то даже х4 ускорение сомнительно). Но хипсторам нравится, что это типо как бы питон, можно писать def main(): вместо function main() ... end, круто же.

arturpub ★★ ()

Пользуюсь arduino core duo esp8266, все окей

GanGSISoft ★★ ()
Ответ на: комментарий от atrus

о глючной памяти верное

Я хотел сказать память бьётся глючными модулями. Ещё вариант — не хватает питания МК. Вот это надо бы тоже проверить, но там есть и явные глюки типа sock.send(DATA); sock.close() в действительности ничего не отправляет. Точнее, до браузера ничего не доходит.

true_admin ★★★★★ ()
Ответ на: комментарий от arturpub

можно писать def main(): вместо function main()

Луа очень сильно от питона отличается, его надо «учить». Я выбирал то что уже знаю.

true_admin ★★★★★ ()

nodemcu

Вообще атас! Радует, что хипстерки нам не конкуренты. Кто вообще додумался писать на скриптовых языках под МК?

Meyer ★★★★ ()
Ответ на: комментарий от GanGSISoft

Понял, спасибо. Наверно, это оптимальный вариант. Я надеюсь что OTA заработает потому что для меня это просто киллер-фича.

Если есть минутка, расскажи свои впечатления от работы встроенного вайфая. Я вот свой помучал, модуль реально слабый — там где мобильник с ноутом уверенно ловят связь esp-шка может вообще сети не видеть.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Еще бы! Да от такой хрени у меня сначала когнитивный диссонанс случился, а потом я проникся глубочайшей ненавистью к хипстерам, которые пытаются писать на скриптовых (!!!) ЯП под микроконтроллеры. Сердце кровью обливается, видите ли.

Meyer ★★★★ ()
Ответ на: комментарий от Meyer

я проникся глубочайшей ненавистью

Завидуй молча.

писать на скриптовых (!!!) ЯП под микроконтроллеры

Если ресурсы и производительность позволяют то в чём проблема? На минуточку, весь эмбедед что я видел это набор костылей, подпорок и плохочитаемого говнокода. У меня стойкое ощущение что эмбедщики живут в каком-то своём обособленном мире куда забыли завести умные книжки по программированию. Я поэтому только радуюсь когда есть инструменты позволяющие мне заниматься решением задачи, а не сидеть ночи на пролёт с st-link, gdb, выполнять по шагам ассемблерные инструкции, рыться в даташитах и коде всяких HAL-ов чтобы понять почему оно не работает. У каждого инструмента своё назначение.

В общем, приходи когда будет вменяемый плюсовых HAL для arm. mbed.org не предлагать.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

это набор костылей, подпорок и плохочитаемого говнокода

Явно любительские поделки.

плохочитаемого

Разве что из-за обилия магических чисел (привет, avr). Но там достаточно документацию полистать.

Meyer ★★★★ ()
Ответ на: комментарий от Meyer

привет, avr

Как раз к avr у меня вопросов нет — это очень простой (по сравнению с ARM) МК с периферией которого можно вообще работать напрямую. Для него библиотеки обычно straight-forward. Я про CMSIS и прочее и прочее. Причём, зачастую эти либы в постоянной пертурбации и ломания API.

Явно любительские поделки.

Это то на чём работает индустрия. Но да, я согласен, всё крутится на говнокоде.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Я поэтому только радуюсь когда есть инструменты позволяющие мне заниматься решением задачи

Хотя... Если это что-то для дома и не требующее жесткого реального времени, то почему бы и нет? Главное, чтобы такая мода дальше ардуин и аналогов не вышла.

Meyer ★★★★ ()
Ответ на: комментарий от true_admin

Например, разные датчики делаем на STM32. А веб-интерфейс крутится на raspberry pi)

Meyer ★★★★ ()
Ответ на: комментарий от Meyer

Так наоборот надо это продвигать на стм. А то на этой ардуине даже вебсервер на жс не напишешь. А стм потянет, там уже хоть что-то.

В общем-то воткнуть луа в микроконтроллер много ума не надо, достаточно тупо все сорцы и хидеры в проект кинуть (он с таким расчетом и писался). Экспортировал пару либ для сокетов/хттп, и готово.

arturpub ★★ ()
Ответ на: комментарий от Meyer

разные датчики делаем на STM32

А либы/тулзы какие используете?

true_admin ★★★★★ ()
Ответ на: комментарий от arturpub

Вебсервер можно на RPi каком-нибудь крутить. Китайские клоны нынче дешевые. Приделать к нему CAN модуль и радоваться жизни.

Meyer ★★★★ ()
Ответ на: комментарий от arturpub

А стм потянет

Я так понимаю, тов. Meyer на эту тему и говорит что не потянет. И я как бы с ним согласен, но... те же arduino и mbed.org настолько тяжёлые что по сравнению с ними питон мне уже не кажется проблемой.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

CMSIS таки. Проблем с ним пока не возникало. Из тулзов я использую Vim (пытаюсь осилить Emacs), stlink и GDB.

Meyer ★★★★ ()
Ответ на: комментарий от Meyer

Вот кстати спросить хотел, а для девайсов обычно библиотеки руками переписывают или что? Например недавно я пробовал собирать вундервафлю, в основу которой лег bmp085, так вот родной драйвер-класс для нее это блокирующее говно, которое о событийной модели не слышало, а скорость/точность настраивается путем изменения сорцов руками. В эмбеддеде нет что-ли какого-то стандартного пути, все велосипедят ранлупы сами и потом в дровах ковыряются, или как это все выглядит? Я в итоге тупо копил статистику и выдавал ее после порогового спада, потому что одновременное стандартное io через 9600 убивало семплы десятками, а их и так был не фонтан.

После такого фраза:

Явно любительские поделки.

Кажется чем-то из параллельной вселенной.

arturpub ★★ ()
Ответ на: комментарий от true_admin

Так старшие стм вроде как посильнее старших ардуин?

arturpub ★★ ()
Ответ на: комментарий от Meyer

Я образно уж, по мотивам хейтерства. На самом деле(c) есть куча потенциальных нересурсоемких задач, которые можно бы решать программно дешевым программированием (ака питон, луа), но не будешь же везде полноценный комп втыкать, как по энергопотреблению, так и по стоимости. А вот сунуть скриптовый язык в чип за десять баксов это решение проблемы. Это сейчас все ругаются на дырявость и сомнительность iot, а через десяток лет жить без него не смогут.

arturpub ★★ ()
Ответ на: комментарий от arturpub

bmp085

Готовые либы под такие вещи пишутся китайцами, и как правило, являются лютым говном + комбайн на все случаи жизни. Не вижу ничего сложного в том, чтобы написать десяток строчек для работы по i2c с этим девайсом, сделать сниппет из этого дела и использовать при необходимости.

Meyer ★★★★ ()
Ответ на: комментарий от arturpub

Так старшие стм вроде как посильнее старших ардуин?

Не поверишь, всё нивелируется тормозами жирных либ. Т.е. 8MHz avr arduino работает сравнимо (если не так же) так же как и stm32 на сотню мегагерц если там используются mbed. Я щас не могу найти линк на конкретные замеры, просто поверь что на mbed не получится писать дрова для дисплеев (без грязных оптимизаций под конкретную платформу и в обход либы). Подтверждений этому в гугле очень много, например: https://developer.mbed.org/questions/67957/Speed/?sort=created

Там просто мегатонны плюсового кода с кучей абстракций, даже бинари получаются жирнющие.

true_admin ★★★★★ ()
Ответ на: комментарий от Meyer

CMSIS

Т.е. чтобы, скажем, дёрнуть ногой вы пишите портянки с заполнением кучи структур, с макросами, вдумчивым изучением clock tree, итп перемежая с изучением заголовочных файлов и reference manual на тыщу страниц, так? Ну и любая ошибка (сишечка-то не проверит что аргументы правильные, там все дефайны и магические переменные одного типа) приводит к долгой вдумчивой медитации?

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Обалдеть. Не проще тогда все на луа написать? Кресты позиционируются как ультраоптимизирующие, а жирные абстракции свернуть они чот все равно не могут. Выкинуть нафиг эти абстракции и писать линейный код на примитивном ранлупе с корутинами.

arturpub ★★ ()
Ответ на: комментарий от arturpub

а жирные абстракции свернуть они чот все равно не могут.

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

Моё мнение — надо было для каждой платформы свою реализацию делать со стандартным интерфейсом, а не плодить общие классы и пытаться использовать код много раз на разных платформах. Собстно, вот тут чувак примерно это сделал и получил прирост в 2-5 раз для stm32: https://developer.mbed.org/users/Sissors/code/FastIO/ . Причём, кода там совсем децл. Впрочем, я смотрю, сейчас стоковый mbed оптимизировали. Раньше работа с GPIO микросекунды занимала, щас вот до сотен ns оно спустилось.

true_admin ★★★★★ ()
Ответ на: комментарий от arturpub

Не проще тогда все на луа написать?

Увы, будет ещё раз 10-100 медленнее плюс большой расход памяти. Но да, для медленных приложений почему бы и нет. Скажем, лениво опрашивать датчики и отсылать куда-нить.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

10-100

Уверен, что Майк за десятку забубенит АОТ и решит вопрос в течение месяца. Было бы бабло, все можно порешать.

arturpub ★★ ()
Ответ на: комментарий от true_admin

я себе собрал модуль esp-12e + mp1584 + dht22. все эти модули спаял на макетке 4*7 см. резисторами 10к подтянул все свободные ноги к 3.3 или к земле. работает под nodemcu. бодро работало 1 месяц, отсылало данные на thingspeak, но потом перестало, зашел через usb компорт, умер dht22. а сама плата пашет в целом.

Nurmukh ★★ ()
Ответ на: комментарий от GanGSISoft

Слушай, я взял готовый пример blink led, скомпилил и залил и вот что оно мне пишет:

Sketch uses 219,431 bytes (21%) of program storage space. Maximum is 1,044,464 bytes.
Global variables use 31,124 bytes (37%) of dynamic memory, leaving 50,796 bytes for local variables. Maximum is 81,920 bytes.
Uploading 223584 bytes from to flash at 0x00000000

Как так получилось что помигать светодиодом занимает 220кб постоянной и 31кб оперативной памяти? Это нормально? Или туда входит всё-всё-всё по esp включая дрова WIFI?

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Всё всё не входит, входит только базовый набор, если подключён один хидер ESP8266WiFi.h
Предпологаю что внутри ардуины на апаратном уровне реализован весь функционал, в то время как для esp он реализован программно. Хотя всё равно не знаю почему так много

GanGSISoft ★★ ()
Ответ на: комментарий от true_admin

Работа wifi достаточно хорошая, по дальности проблем не замечал, пинг низкий, только роутер нужен нормальный.
Сталкивался с тем что на моём роутере(полное говно) пинг в локальной сети был 50-100мс и постоянные разрывы, у одного человека на его древнем ноуте тупило.
А так то всё летает

GanGSISoft ★★ ()
Ответ на: комментарий от GanGSISoft

А что крутится на esp?

У меня пока вот сплошные проблемы :( 1) ноутбук вообще не соединяется 2) вебсервер подвисает.

Я запитываю от внешнего источника питания ибо китайцы поскупились на кондёры и от USB работает нестабильно :(.

true_admin ★★★★★ ()
Ответ на: комментарий от true_admin

Крутится вебсокет с постоянным запрос-ответ, то есть каждые 5-50мс(в зависимости от расположения сервера). Работает стабильно. Хотя в первое время со стабильностью какой-то ад был, во первых из-за питания от arduino а во вторых из-за моего кривого кода

GanGSISoft ★★ ()
Ответ на: комментарий от true_admin

Для нормальной работы лучше спаять плату, с резисторами и конденсатором, кнопкой для прошивки

GanGSISoft ★★ ()
Ответ на: комментарий от true_admin

ноутбук вообще не соединяется

Не подключается через USB для прошивки?

GanGSISoft ★★ ()
Ответ на: комментарий от GanGSISoft

По вайфай девайсы не цеплялись. Впрочем, я сейчас накатил micropython, выставил wifi_mode(MODE_11N) и всё волшебным образом заработало.

Я пока вернулся на micropython потому что мне нужен REPL для экспериментов. Каждый раз перекомпилять и заливать новую прошивку занимает время. Да и флешка изнашиваются, в инете пишут что у них достаточно маленький ресурс.

true_admin ★★★★★ ()
Ответ на: комментарий от GanGSISoft

Таки я ошибался, видимо основной размер занимает sdk, с стандарным функционалом esp, а arduino core for esp8266 является обёрткой.
Хотя и тут могу ошибатся

GanGSISoft ★★ ()
Ответ на: комментарий от GanGSISoft

Я так понимаю что полностью открытого sdk не существует и другого пути как линковаться со статическими либами нет.

true_admin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.