Как стать автором
Обновить

Комментарии 52

Круто! а просто как UART мост можно использовать? Или только для прошивки?
Здесь получается, что UART под UDP лежит. Комп гоняет данные туда обратно по UDP. А UART валяется под ним на стороне микроконтроллера.
меня практический вопрос интересует: можно ли читать данные с UARTа?
конечно можно. программка по рулению телегой прямо и получает данные с uart по пройденному расстоянию. Как только AVR кидает байт в UART, он тут же появляется в виде UDP пакета на выходе c ESP и отправляется на комп.
А как только комп бросает байт в виде пакета UDP в сторону ESP, он тут же появляется уже снова в виде байта на входе UART микроконтроллера и тот может его прочесть.
Так да. Двусторонняя передача.
ОК, спасибо, просто недавно на esp8266.ru была заруба на тему возможности создания такого моста.
Интересно о чём там можно рубиться? Киньте ссылку пжлст, если есть.
А, я читал. Там немножко другое. Они хотели прозрачный мост, да еще дуплексный, да еще быстрый.
Я согласен, что ESP тогда заикаться начнет.
Если внешний сервер, то ESP8266 не справится — нема RAM для буферизации UART потоков и адаптации скоростей TCP стека уже на 115200. Будут дыры и нарушения синхронизации дуплексных потоков RX/TX на UART.


Просто, обычно с такой скоростью бегать не требуется, да еще за пределы внутренней сети. Мне наоборот, допустим, пришлось делать задержку в 200 милисекунд, когда я на «газ» нажимал на телеге, ибо он сразу зашкаливал.
Но, если надо совсем быстро, то упс…
а я ведь предупреждал не слушать сумасшедшего :-)) в изначальной задаче топикстартера этих требований не было
Да, не, он нормальный. Только дотошный.
Хах. «сумашедший»… видимо ардуиноголовногомозга мешает здраво мыслить и воспринимать толково, пусть и дотошного, но реально разбирающегося человека. Иногда он конечно перегибает палку, но и выкладывает наработок и материалов больше, чем все остальные…
пэвэвэха, перелогиньтесь
Если не знаете, то он тут тоже есть и не под моим ником. ванга фейл.
Так это ж комплимент.
Дотошный — придирчиво, пытливо, настойчиво вникающий в каждую мелочь; въедливый.
Не, лично я pvvx всегда с интересом читаю.
Я то как раз и не в плохом смысле имею в виду, да он иногда прям слишком бросается в дискуссии и поучение других, но в тоже время в разборе кухни RTL871x это очень полезно. Многих это бесит (есть там пара товарищей, у которых судя по постам регулярно бомбит в дискуссиях, АК даже на мат переходил), я же научился на это не обращать внимания и дискутировать по делу, и так дискуссия проходит продуктивно и по делу.
возмжно, в дискуссиях о RTL871x он и полезен, жаль, что в дискуссиях о ESp8266 он бесполезн чуть более, чем полностью
А RTL871x, кстати мертв, так и родившись.
На WEB свалке от него не мало чего основано, по тому же форуму можно увидеть… ну как бы, это дело долгой полемики.
Если народу нравится копеешные ESP, с их глюковатостью и в одной сети если их 5-6, то wi-fi просто ужасный становится — то это выбор народа, не всегда общественное мнение выбирает лучший вариант. (как пример — допотопные AVR8 в ардуино и противовес им более дешевые STM32F0 — с головой их превосходят по периферии и возможностям, только чуть сложнее, но видимо порог вхождения решает)
ага, именно поэтому Arduino (компания) реализовала wifi именно на esp8266 в своей последней флагманской плате.
Как думаете, у них был выбор?
я не испытываю иллюзий по поводу esp8266, но он далеко не так плох, как пытаются представить такие, как вы и пэвэвэха
хм… ок, открываем Официальный сайт: www.arduino.cc/en/Main/Products
Где тут ESP?
Есть с WiFi, но он на Атмеловском чипе
store.arduino.cc/usa/arduino-wifi-101-shield
ну и
store.arduino.cc/usa/arduino-iot-mkr1000-bundle
на АРМ ядре всё.

Не вводите в заблуждению других людей, выдавая поделку Espressif Systems за официальный ардуино шилд.
А про глюковатость ESP8266 я пишу не с чужих слов, а на своём опыте общения с ним, для быстро-поделок пойдет, для серьезных проектов и на перспективу — никак нет.

Вы отстали от жизни. Самые последняя плата Arduino — Primo.
Погуглите. Сильно удивитесь.
Кстати, в esp8266 там прошивка, которую Ваш друг пэвээвэха облил дерьмом, но это мелочи

Уж ардуиной не занимаюсь, извиняюсь, что не слежу за трендами в этой теме для хоуммейкеров…
И ссылки видимо не комильфо приводить, ок, приведу за вас:
store.arduino.cc/usa/arduino-primo

Мда, 3 МК на одной плате и цена добротная (а все почему то ESP-01 юзают, странно...), норм, хомячки схавают.

И ванговать у вас плохо получается, завязывайте… мы не дружим…

Слушайте, ну нельзя так позорно сливаться :-)) хомячки, три Мк :-)))
Тезис был другой

И в чём слив? Первое моё сообщение было о pvvx и вы до сих пор ничего толком не привели для его «очернения» так скажем по факту. А только и обливаете его грязью просто так и еще в друзья другим записываете… прям как на форуме определённые товарищи-тролли, которые ничего своего не выкладывают, да только тыкают всех носом и рассказывают как же правильно то делать надо. Так что, спорить с обиженным на pvvx не вижу смысла, сами знаете что возят на обиженных… удачи в проектах!

Ответил ниже

НЛО прилетело и опубликовало эту надпись здесь
Сложно сказать. Глубоко я его не знаю. Если для передачи данных, то за TCP и UDP поспевает, Но там что, в крайнем случае миллисекунды же.
А так надо в RTOS ковыряться, смотреть, какие возможности она обеспечивает. Это на форум по ESP
esp8266.ru/forum
это к чему?
Это к тому, что не обязательно писать под rtos, можно взять любимый вами суперцикл.
Так это только кажется, что будет любимый нами суперцикл. А что там будет в реальности знает только ужасная rtos. Если я правильно понимаю, там ардуино обертка, под ней API NodeMCU или API rtos и все это работает в итоге все равно под управлением rtos?
Тогда у вас там сегодня будут одни тайминги, завтра другие, потому, что параллельно другая задача запустится, про которую только rtos знает, а послезавтра она вообще килнет ваш процесс, потому что у нее где-то утечка и памяти не хватает. А атмел, за что купил, за то продал. под программой голое железо.
Простите, я даже потерялся, что ответить на эту яростную тираду. Смешались в кучу кони, люди, RTOS, NodeMCU и ардуино. Что значит «это только кажется, что будет суперцикл»?

Там нет никакого API внизу. Там просто подключенные Arduino-библиотеки к родному SDK, дабы не изучать его функции, а писать в привычной среде привычными функциями(и то, и то говно, но не будем об этом).
API NodeMCU — это что вообще за зверь? Системные луашные функции? Каким они боком к си вообще? Что такое «API rtos»? Функции для управления процессами в ртосе? Опять же, каким они боком к си и суперциклу?

Все проще. Для ESP8266 есть два официальных SDK: NON-OS SDK и RTOS SDK. Первое — это как раз таки голое железо. Разве что только там запускается системный таймер, который периодически передает управление на часть кода, который управляет работой WiFi. Но так как там 80 МГц и 32 бита, оно на порядок-два быстрее атмела с его 8 МГц и 8 битами, поэтому то, что периодически управление куда-то передается, заметно не будет. Если у вас есть задачи, где на 80 МГц нельзя даже отвлечься — есть запрет прерываний для критичных участков, некоторое время оно может подождать. В остальном, там точно такой же микроконтроллер, как и у атмела, на котором выполняется та же самая программа, которая пишется на таком же си, и которая оборачивается в while(1) после инициализации периферии. Какие утечки, там 100 килобайт памяти, вы что, собрались там что-то динамически выделять? Там все статично в начале выделяется(за редким исключением), и никаких утечек быть не может.

RTOS SDK — уже интереснее. Там уже есть некая простая операционка, которая позволяет реализовывать многозадачность. В сочетании с нормальной скоростью контроллера, это уже позволяет нафигачить туда кучу процессов, которые будут выполняться вместе, и получить очень удобную среду для разработки.
Что вы понимаете под «изучением ртос»? Они же все одинаковые. Десять функций для управления процессами(старт, стоп, пауза, послать сообщение, принять сообщение и так далее), пара-тройка видов таймеров, все. Ужасного ноль, разработку ускоряет. И там тоже выделение памяти статичное.

Ну, API ОС вроде общее понятие.
набор готовых классов, процедур, функций, структур и констант, предоставляемых операционной системой для использования во внешних программных продуктах. Используется программистами при написании всевозможных приложений.


API NodeMCU — я так понимаю абстракция следующего уровня от энтузиастов, позволяющая быстро создавать кучу функционала, типа тех же серверов, PWM, ну и там куча всего чуть ли не сотня наименований. Но она же не на железе по идее стоит, а пользуется сервисами RTOS, то же создание потоков и т.д. Так же как и ваш проект, Ардуино обертка, о котором вы говорили.

Это о конях и людях.
Но, когда у вас сервер и несколько потоков, вы же не на голом железе NoN OS SDK их же не напишите? Значит надо брать RTOS SDK?

А ОС есть ОС, может для вас она и простая, но операционные системы вообще как таковые к классу простых программ никогда не относилась, даже со времен CP/M. Можно в них лезть разбираться, но жизнь коротка. А насчет быстродействия, ну у меня проц 3 ГГЦ и памяти терабайты, а зависнуть «на подумать» для Windows легче легкого. Она конечно не реального времени, но и там не 3 ГГц процессор. Да, ресурсов больше, чем у атмел и скорость выше, но при работе под ОС, не факт что быстрее получится в итоге.
API NodeMCU — я так понимаю абстракция следующего уровня от энтузиастов, позволяющая быстро создавать кучу функционала, типа тех же серверов, PWM, ну и там куча всего чуть ли не сотня наименований. Но она же не на железе по идее стоит, а пользуется сервисами RTOS, то же создание потоков и т.д.

Очередная порция треша. API NodeMCU — это по сути, сишные функции из официального SDK, обернутые в луа, ибо те функции вызывать из луа нельзя. Ну и плюс прослойка кода на си для поддержки всякого реалтайма вроде драйверов устройств, когда нужна скорость. Сервера там есть в поставке SDK, равно как и PWM.
Так же как и ваш проект, Ардуино обертка, о котором вы говорили.

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

Мой проект? Любимый нами суперцикл? Шта?
И кажется, я вам только что рассказывал, что esp8266-arduino не имеет отношения к RTOS SDK.

Но, когда у вас сервер и несколько потоков, вы же не на голом железе NoN OS SDK их же не напишите? Значит надо брать RTOS SDK?

Какие несколько потоков? Что вы несете? Зачем там несколько потоков? Они-то и на компах не всегда нужны, сервер прекрасно работает в одном потоке. А на микроконтроллере потоки вообще не нужны, все прекрасно реализуется даже без ОС: по прерыванию пришедшего сетевого пакета запускается функция, которая переносит данные этого пакета в буфер, потом по таймеру запускается обработка сетевого стека, которая разбирает этот буфер. Если в буфере POST/GET запрос — отправляем в ответ страничку. Все. Никаких потоков, никакого RTOS, только два вида прерываний.

А ОС есть ОС, может для вас она и простая, но операционные системы вообще как таковые к классу простых программ никогда не относилась, даже со времен CP/M. Можно в них лезть разбираться, но жизнь коротка. А насчет быстродействия, ну у меня проц 3 ГГЦ и памяти терабайты, а зависнуть «на подумать» для Windows легче легкого. Она конечно не реального времени, но и там не 3 ГГц процессор. Да, ресурсов больше, чем у атмел и скорость выше, но при работе под ОС, не факт что быстрее получится в итоге.

Больше ада! Знаете, что напомнило?
image
Я вам попытаюсь в последний раз объяснить, но чувствую, смысла будет мало.

1)«операционные системы вообще как таковые к классу простых программ никогда не относилась». Так вам не надо разбираться, как она написана. Вам надо понять, как с ней работать. Как с ней работать — это десяток функций. Иные библиотеки сложнее бывают. Жизнь коротка — так себе аргумент, см. картинку.

2)«А насчет быстродействия, ну у меня проц 3 ГГЦ и памяти терабайты, а зависнуть «на подумать» для Windows легче легкого.»
А как вы думаете, что означают буковки RT? Я вас удивлю, но они означают Real Time. А это значит, что она кардинально отличается от windows.
Аргумент звучит как «а насчет послушания собак, вот у меня жена в два раза больше весит, а команд моих не слушается». Как бы и не должна, это же жена не операционка реального времени, у нее задача другая малость. В RTOS вы можете в любом момент выключить таймеры, заблокировать прерывания и получить монопольный доступ к железу. В винде вы этого сделать уже не можете, у вас в какой-то момент на очередном тике отберут ресурсы со словами «поигрался сам, дай поиграть другим процессам».

3)«Да, ресурсов больше, чем у атмел и скорость выше, но при работе под ОС, не факт что быстрее получится в итоге»
Если что, RTOS на контроллерах — совсем не то, что ОС общего назначения, и даже совсем не то, что взрослые RTOS на больших компах. Тут RTOS — это от 2 до 10кб кода, который почти не тратит ресурсы на себя, а лишь исполняет роль продвинутого планировщика.
А что, вам серьезно надо быстрее? Вы боитесь, что вам не хватит скорости, чтобы рулить тележкой? Это же очень нетребовательная задача. Вам не надо быстрее. Если бы надо было — вы бы уже пересели на FPGA. А если ваша задачи удовлетворяет атмега с 8(или сколько там) МГц, то Xtensa с 80 МГц и ртос тем более удовлетворит.
Вам(и куче других разработчиков) не надо быстрее. А вот удобство разработки и отладки — это очень, очень критичный плюс к удобству.
Молодец, умный. Хорошо объяснил.
На самом деле про ОС мне сильно заяснять не надо было, у меня Танненбаум «Современные ОС» уже не раз перечитана. Но по RTOS там, да всего один абзац, so я перенёс автоматом с более сложных систем. Логично, что там попроще.

Вот, только поменьше пафоса и пренебрежения к собеседнику.
И тогда жизнь у вас наладится и возможно появится та самая привлекательная девушка с маленькой грудью о которой вы мечтаете.

Вот, только поменьше пафоса и пренебрежения к собеседнику.

Пафоса? О чем вы? Скорее раздражения от того, что приходится объяснять несколько раз одно и то же.

И тогда жизнь у вас наладится и возможно появится та самая привлекательная девушка с маленькой грудью о которой вы мечтаете.

Ого. Вот это удар. Пойду плакать в одиночестве. Не уверен, что смогу пережить такое.
Сможете пережить. Я в вас, почему-то, уверен.
Все плохо. Для реалтайма надо писать драйвер на си.
После подключения к ESPlorer, тот немножко поформатирует ESP модуль, информируя вас соответствующими сообщениями. (главное в этот момент ничего не трогать), а затем ребутнет ESP. Можно начинать работу по загрузке LUA программ.

Ничего ESPlorer подобного не делает. Это делает сама прошивка — при первом запуске она форматирует флешку под spiffs, а потом перезагружается. Трогать можно — модулю пофиг в этом время на все. Даже если ему питание обрубить, он просто не запишет флаг «форматировано» и при следующем старте начнет форматировать заново.
А ну, да, скорее оно и так. Просто пишет на консоль своё.
Но ни один вменяемый человек конечно трогать во время «чего-то там formatting» не будет.
Но ни один вменяемый человек конечно трогать во время «чего-то там formatting» не будет.

Есть отличия человека, который понимает, как оно устроено, и «вменяемого», который не хочет понимать, а будет писать «главное в этот момент ничего не трогать» из опасения, как бы чего не вышло.
Да спору нет, молодости всегда свойственен сверх оптимизм и сверх смертность. Это как у электриков. Старый электрик всегда работает, как будто всё под напряжением, хотя у него на щитке все отключено и даже замок висит. А молодой не парится сильно, мол всё нормально: «Я же всё обесточ… ».
4. У вас нет времени или желания изучать на языке вероятного противника нативный SDK и RTOS не очень широко известной в миру компании (это ж все-таки не Микрософт), а также ждать и верить в их патчи и апдейты.

Простите, а у вас на avr тоже ртос? Нет? Тогда что вам мешало писать все это на арудиновской обертке над стандартным sdk с суперциклом?
А зачем мне писать на ардуиновской обертке над стандартным sdk с суперциклом???
Чтобы не изучать страшную RTOS, конечно же!
Спасибо за участие… Но я и так её не изучаю.
А как мне в ESP программу загрузить, кстати, без проводов? Если я напишу, допустим скетч на этой обертке.
Что значит «без проводов»? Вы имеете ввиду OTA-обновление?
Вот готовые приложения для sming(тоже суперцикл, но без ардуины): github.com/SmingHub/Sming/wiki/rBoot-and-OTA-updating и для esp8266-arduino: esp8266.github.io/Arduino/versions/2.0.0/doc/ota_updates/ota_updates.html
Я имел в виду, прошивку своего кода во flash память ESP. Есть там вариант беспроводной загрузки?
Ну вы ссылочки-то почитайте, там это и описано. Это называется OTA-обновление.
А, да вроде, есть такая фигня. Но на тонкого ценителя. Не знаю как другим, но что-то мне сложно разобраться, как всё это запустить уже у себя.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации