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

Помогите понять принцип ESPшки. Может я вообще не туда полез?

Ganalooloo

New member
Задача: Есть пульт (в нем только ESP8266 , пара кнопок и TFT дисплей) и есть коробка с мотором и второй ESP8266.
Нажимаем кнопку на пульте - мотор в коробке крутится в одну сторону, нажимаем на пульте другую кнопку - мотор в коробке крутится в другую сторону. НО! при это на моторе есть энкодер. ESP в коробке с мотором считает обороты мотора и передает это число на пульт.
То есть на лицо связь двух ESPшек с передачей друг другу каких то данных.
В данном случае От пульта к мотору что нажата кнопка, От мотора к пульту скоко сделал оборотов.
Я 3ий день ищу и на ютубе и в глубинах инета КАК ПЕРЕДАВАТЬ ДАННЫЕ (простые числа) МЕЖДУ ДВУМЯ ESP... и хоть убейте не могу... Какие то метеостанции (кому? Кому и нахрена они нужны? Если у вас уже ЕСТЬ инет зайдите на яндекс и посмотрите!) , какие то сервера на базе ESP... но по делу - кинуть число 1089 одной ESP и получить в ответ число 8778 - ну нееееееету!
Я делал подобное на NRF модулях - все просто и понятно, нет ни клиента ни сервера, ода слушают эфир и как только распознают "своих" - отвечают, а те в свою очередь тоже "слушают" и принимают. Проблема одна, для этих модулей к каждому надо прикручивать ардуину, а тут уже все в комплекте и высокой частотой проца, что очень нужно в моем случае (16MHz не катит). Но с ESP я такого даже близко не нашел. Или мне пора в отпуск:)))
Помогите а? Я реально спрашиваю в форумах всего второй раз в жизни. обычно все находил сам, а тут тупняк...
 

Юрий Ботов

Moderator
Команда форума
Даже и не знаю как ответить коротко... Вы еще не сказали что за прошивка у esp - native code (Arduino,SDK) или интерпретатор (Lua,JS)... будем думать что native code поскольку вы пишете что "16MHz-не катит".
1. Производитель, славящийся своей скрытностью, позиционировал esp8266 как приемопередатчик wifi с возможностью организации AP или подключения к другой AP со встроенным стеком TCP/IP. И открыл для "простого народа" только эти интерфейсы, а низкоуровневые вещи разглашать не собирается.
2. Высокая частота esp может оказать "медвежью услугу", поскольку реально чип работает под некоей RTOS, которая по своему разумению передает управление программе пользователя, TCP стеку и низкоуровневым процедурам, при этом, разумеется приоритет у низкоуровневых процедур. Люди уже не раз натыкались на проблемы с "отзывчивостью" на события и неравномерностью генерации тактирования для ногодрыговых интерфейсов.
3. Если нужно передать число с одной esp на другую, для этого есть куча методов и вот то что приходит в голову в первую очередь:
- использовать собственно http. С одной стороны AP на нем поднят HTTP сервер. С другой клиент подключающийся к AP и серверу.
клиент кидает число в текстовом виде используя метод GET или POST и получает в ответ от сервера новую "страницу" состоящую из того числа (тоже в виде текста) которое ему посылает сервер. Это метод для Arduino для esp8266. Есть куча примеров в Arduino.
- если скорости не хватает можно перейти на уровень ниже и сделать то же самое на сокетах TCP или даже UDP что еще быстрее но нет гарантии доставки(для пульта это возможно и не страшно). Но тогда придется внимательно читать документацию уже по SDK. Писать можно продолжать в Arduino, там есть примеры как использовать функции SDK в Arduino коде.
4. И да... отпуск это хорошо в любом случае!
 

nikolz

Well-known member
Задача: Есть пульт (в нем только ESP8266 , пара кнопок и TFT дисплей) и есть коробка с мотором и второй ESP8266.
Нажимаем кнопку на пульте - мотор в коробке крутится в одну сторону, нажимаем на пульте другую кнопку - мотор в коробке крутится в другую сторону. НО! при это на моторе есть энкодер. ESP в коробке с мотором считает обороты мотора и передает это число на пульт.
То есть на лицо связь двух ESPшек с передачей друг другу каких то данных.
В данном случае От пульта к мотору что нажата кнопка, От мотора к пульту скоко сделал оборотов.
Я 3ий день ищу и на ютубе и в глубинах инета КАК ПЕРЕДАВАТЬ ДАННЫЕ (простые числа) МЕЖДУ ДВУМЯ ESP... и хоть убейте не могу... Какие то метеостанции (кому? Кому и нахрена они нужны? Если у вас уже ЕСТЬ инет зайдите на яндекс и посмотрите!) , какие то сервера на базе ESP... но по делу - кинуть число 1089 одной ESP и получить в ответ число 8778 - ну нееееееету!
Я делал подобное на NRF модулях - все просто и понятно, нет ни клиента ни сервера, ода слушают эфир и как только распознают "своих" - отвечают, а те в свою очередь тоже "слушают" и принимают. Проблема одна, для этих модулей к каждому надо прикручивать ардуину, а тут уже все в комплекте и высокой частотой проца, что очень нужно в моем случае (16MHz не катит). Но с ESP я такого даже близко не нашел. Или мне пора в отпуск:)))
Помогите а? Я реально спрашиваю в форумах всего второй раз в жизни. обычно все находил сам, а тут тупняк...
Если хотите сделать как на NRF, то читайте протокол ESP-NOW. Так и наберите в инет.
 

AndrF

Active member
Если вам надо сделать быстро и по простому - смотрите примеры.

На деле все просто - научитесь работать с Blynk...

Ну и простенький пример. Передавать данные - через тот же Blynk.

А вот считать обороты все же лучше внешним контроллером. У ESP-ки могут быть пропуски, так как она вынуждена обслуживать WiFi...
 
Последнее редактирование:

gerkimuyda

New member
Передавать данные - через тот же Blynk.
Чтобы передать оперативные данные на 50 сантиметров, гонять их на внешний забугорный сайт и с бешенной задержкой в несколько секунд их выводить?
Ребята, давайте мыслить трезво o_O
 

NeoroN

Member
TCP подключение позволяет передавать данные в двухстороннем режиме. На коробке с мотором запускаете сервер, на коробке с экраном клиент. Клиент подключается к серверу на определенный порт(авторизуется или нет - дело ваше) и начинается двухсторонний обмен, отправляя раз в секунду "lide\r\n" или "forw\r\n" и "back\r\n", при нажатии кнопок. Получая при этом "lide\r\n" от сервера или "turns:340\r\n". Если не получили "lide\r\n" в течении 5 сек, то надо разрывать подключение и переподключаться(вайфай виснет иногда).
 

nikolz

Well-known member
Данная задача оптимально решается либо UDP с подтверждением от сервера,сервер одна из ESP,
либо ESP-NOW - обмен ESP-ESP самый быcтрый способ.
-------------------
можно сделать схему звезда где в центре поставить сервер на компе.
Тогда можно контролировать и весь трафик обмена.
 

AndrF

Active member
Чтобы передать оперативные данные на 50 сантиметров, гонять их на внешний забугорный сайт и с бешенной задержкой в несколько секунд их выводить?
Ребята, давайте мыслить трезво o_O
Тогда зачем ESP-шка? Обычный радиомодуль.
 

gerkimuyda

New member
Зачем радиомодулем? Достаточно ик- светодиодов. Так сделано управление на детских вертолетиках.
(Вот видите, я тоже принял вашу игру против производителя устройства, которое у ТС, только ТС от этого не легче...)
 

Ganalooloo

New member
Спасибо большое что все так рьяно пишете:))

Я пороюсь и посмотрю что за ESP-NOW если он самый быстрый.
Для внесения ясности скажу еще вот что:
представьте себе управление роботом с пульта. Мне не нужны сторонние и третьи руки типа какого то облачного сайта и так далее. робот будет работать в поле где нет раутеров и интернета. Простой робот который что то поднимает за определенное число шагов и опускает. О! Отличный пример - шлагбаум. Но еще на пульте будет энкодер - крутишь его - с пульта идут данные о количестве оборотов, идут потоком, не прекращаясь пока крутишь энкодер, и приёмник - другая ESP с мотором тоже поворачивает мотор на принятое число шагов. Вот тут как я понимаю нужна скорость связи что бы небыло рывков мотора, пропусков данных. То есть однозначно две ESP общаются между собой напрямую. Кстати я купил две ESP 12е, тут просто интересовались что за моделька. Так вот когда я экспериментировал с NRF модулями, там было все ок, крутилось без задержек и пропусков, но эти NRF чертовски тяжело настраивать на запуск и я сильно не уверен в качестве связи. По этому решил использовать WiFi которые уже отточили и данные передадутся с большей вероятностью чем радиомодуля. Ну и повторюсь - для каждого NRF нужен микроконтроллер а ESP12 уже в сборе и с частотой 160MHz. Для особо дотошных напишу - что экодер мотора что энкодер на пульте сажаются на прерывания (само собой с фильтром на землю через кондей, что бы убрать "дребезг") .
 

nikolz

Well-known member
Спасибо большое что все так рьяно пишете:))

Я пороюсь и посмотрю что за ESP-NOW если он самый быстрый.
Для внесения ясности скажу еще вот что:
представьте себе управление роботом с пульта. Мне не нужны сторонние и третьи руки типа какого то облачного сайта и так далее. робот будет работать в поле где нет раутеров и интернета. Простой робот который что то поднимает за определенное число шагов и опускает. О! Отличный пример - шлагбаум. Но еще на пульте будет энкодер - крутишь его - с пульта идут данные о количестве оборотов, идут потоком, не прекращаясь пока крутишь энкодер, и приёмник - другая ESP с мотором тоже поворачивает мотор на принятое число шагов. Вот тут как я понимаю нужна скорость связи что бы небыло рывков мотора, пропусков данных. То есть однозначно две ESP общаются между собой напрямую. Кстати я купил две ESP 12е, тут просто интересовались что за моделька. Так вот когда я экспериментировал с NRF модулями, там было все ок, крутилось без задержек и пропусков, но эти NRF чертовски тяжело настраивать на запуск и я сильно не уверен в качестве связи. По этому решил использовать WiFi которые уже отточили и данные передадутся с большей вероятностью чем радиомодуля. Ну и повторюсь - для каждого NRF нужен микроконтроллер а ESP12 уже в сборе и с частотой 160MHz. Для особо дотошных напишу - что экодер мотора что энкодер на пульте сажаются на прерывания (само собой с фильтром на землю через кондей, что бы убрать "дребезг") .
ESP-NOW это протокол обмена короткими сообщениями (похож на протокол NRF)
Отличается от NRF мощностью передатчика (в 100 раз больше)
NRF быстрее устанавливает связь.
В Вашем случае нужно более подробнее считать требуемую скорость обмена.
если короткими посылками то ESP-NOW или UDP.
Но можно использовать TCP открыть соединение и работать , закрыть, когда работа закончится.
Возможно такой режим будет максимально быстрым так как канал надо открыть в начале сеанса управления один раз.
-------------------------
Не имеет значения какой протокол будет использован, если одна из ESP будет точкой доступа.
Тогда работайте где угодно, так как эта ESP и будет создавать вам сеть.
----------------------
 

Ganalooloo

New member
ESP-NOW это протокол обмена короткими сообщениями (похож на протокол NRF)
Отличается от NRF мощностью передатчика (в 100 раз больше)
NRF быстрее устанавливает связь.
В Вашем случае нужно более подробнее считать требуемую скорость обмена.
если короткими посылками то ESP-NOW или UDP.
Но можно использовать TCP открыть соединение и работать , закрыть, когда работа закончится.
Возможно такой режим будет максимально быстрым так как канал надо открыть в начале сеанса управления один раз.
-------------------------
Не имеет значения какой протокол будет использован, если одна из ESP будет точкой доступа.
Тогда работайте где угодно, так как эта ESP и будет создавать вам сеть.
----------------------
Ох...
Уж извините но видимо не мой это модуль. Не идет с ним. Ни одного ПРОСТОГО объяснения с РАБОТАЮЩИМИ примерами не нашел пока. Кучу воды льют, кучу не нужной инфы и ориентированы на тех у кого уже работает. Начал искать ESP-NOW примеры... Нашел ОДИН красивый видос с примерами... так нет же, ну каким надо быть мудаебом если ты пытаешь объяснить другим людям что то и нахерачиваешь в пример кучу лишнего хлама? ЗА ЧЕМ???? В итоге пример даже не компилится!!!! Нахреначил какой то Ватсон, каких то инклюдов лишних и не приатачил их к примеру! Ну вот как так можно? За нафига тогда писать что то обучающее???? Ппц. разозлил. И главное - половина ссылок сука как работает ESP в машине!!!!!!!! Это уже ваще вынос мозга.

Есть у кого простые ДВА скреча для двух ESP с выводом в серал порт - послал, принял, ответил. Все! Больше ничего не надо, остальное люди уже и так поймут!:)))
 

rst

Member
Вот тут как я понимаю нужна скорость связи что бы небыло рывков мотора, пропусков данных.
NRF позволяет скорости передачи до 2 Мбит/сек. Вы сможете крутить энкодер с такой скоростью, чтобы не успеть прокачать эти данные через NRF???

Ну и повторюсь - для каждого NRF нужен микроконтроллер а ESP12 уже в сборе и с частотой 160MHz. Для особо дотошных напишу - что экодер мотора что энкодер на пульте сажаются на прерывания (само собой с фильтром на землю через кондей, что бы убрать "дребезг") .
И я ещё раз повторюсь - существует целая куча микроконтроллеров со встроенным радио-модулем. И отлично документированных в отличие от ESP.
И без крутящегося внутри WiFi-стека (который вам не нужен).
И как тут уже заметили: ещё не факт, что получите устойчивую работу с энкодером из-за особенностей выделения времени пользовательскому ПО внутри ESP.

PS: И чтоб вы знали - дребезг подавляют не кондеями.
 

rst

Member
(Вот видите, я тоже принял вашу игру против производителя устройства, которое у ТС, только ТС от этого не легче...)
Из контекста вопросов/ответов автора видно, что ему не нужен WiFi как таковой, а нужен радиоканал. Отсюда и мой совет.
 

Ganalooloo

New member
NRF позволяет скорости передачи до 2 Мбит/сек. Вы сможете крутить энкодер с такой скоростью, чтобы не успеть прокачать эти данные через NRF???


И я ещё раз повторюсь - существует целая куча микроконтроллеров со встроенным радио-модулем. И отлично документированных в отличие от ESP.
И без крутящегося внутри WiFi-стека (который вам не нужен).
И как тут уже заметили: ещё не факт, что получите устойчивую работу с энкодером из-за особенностей выделения времени пользовательскому ПО внутри ESP.

PS: И чтоб вы знали - дребезг подавляют не кондеями.
А можно Вы не будете сюда больше писать? У меня нет времени на споры но я не хочу что бы Вы тут пудрили мозги людям. Не знаете электронику и основы - не надо лезть. И конечно, дребезг устраняют водкой, после нее руки не трясутся. Какое то время. Кондеи тут ваще не причем. А читать надо ВНИМАТЕЛЬНО! Третий раз повторяю - к NRF нужен процессор. Мне это не надо. Я не ищу других плат с контроллерами и радиомодулями. Я спросил - может ESP? Мне пишут что может! Все, выбор сделан, надо пробовать.
И теперь речь идет о ESP.
Как их соединить в ESP-NOW.
 

nikolz

Well-known member
Ох...
Уж извините но видимо не мой это модуль. Не идет с ним. Ни одного ПРОСТОГО объяснения с РАБОТАЮЩИМИ примерами не нашел пока. Кучу воды льют, кучу не нужной инфы и ориентированы на тех у кого уже работает. Начал искать ESP-NOW примеры... Нашел ОДИН красивый видос с примерами... так нет же, ну каким надо быть мудаебом если ты пытаешь объяснить другим людям что то и нахерачиваешь в пример кучу лишнего хлама? ЗА ЧЕМ???? В итоге пример даже не компилится!!!! Нахреначил какой то Ватсон, каких то инклюдов лишних и не приатачил их к примеру! Ну вот как так можно? За нафига тогда писать что то обучающее???? Ппц. разозлил. И главное - половина ссылок сука как работает ESP в машине!!!!!!!! Это уже ваще вынос мозга.

Есть у кого простые ДВА скреча для двух ESP с выводом в серал порт - послал, принял, ответил. Все! Больше ничего не надо, остальное люди уже и так поймут!:)))
Если пишите на СИ то возьмите документацию на SDK там есть все функции.На сайте разработчика ESP есть примеры.
ESP-NOW примеров мало, так как в основном на ESP грузят готовые скрипты на дурине.
Для вашей задачи готового решения нет.
Я тестировал на СИ ESP-NOW. Результаты где-то на форуме.
Вашу задачу можно решить на ESP, но на CИ.
Судя по вашим эмоциональным высказываниям, вам надо набраться терпения, так как надо будет много освоить.
Успехов.
 

Ganalooloo

New member
Если пишите на СИ то возьмите документацию на SDK там есть все функции.На сайте разработчика ESP есть примеры.
ESP-NOW примеров мало, так как в основном на ESP грузят готовые скрипты на дурине.
Для вашей задачи готового решения нет.
Я тестировал на СИ ESP-NOW. Результаты где-то на форуме.
Вашу задачу можно решить на ESP, но на CИ.
Судя по вашим эмоциональным высказываниям, вам надо набраться терпения, так как надо будет много освоить.
Успехов.
Я пишу в Arduino. В принципе пофиг где писать, просто грузить скреч удобней.

Но складывается ощущение что тут просто никто не пробовал соединять две ESP в режиме ESP-NOW. Ни примеров ни док на этом сайте нет . Это что, какой то секрет большой?
Показать просто пример, без наворотов, в 5 строчек, даже без сериал порта! Не ужели это ппц как сложно? И видимо да, сложно.
 
Сверху Снизу