Страница 1 из 20

ESP_NOW, передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 10:29}
aidar_i
Создал ПБ для передачи и приема данных между ESP8266 и ESP8266 (ESP32 и ESP32) , также между ESP8266 и ESP32, без создания WiFi сети (без роутера, точек доступа, напрямую по WiFi).
Блок один, преобразуется при выборе режима работы.
Библиотеки не надо устанавливать.
Блоки на старом редакторе здесь.

Обновлено 23.02.2022
Пользовательские блоки последние все На ЕСП32 по желанию можно вывести так же мак адрес передатчика на приемнике.
ESP_NOW NEW.rar
(213.52 КБ) 476 скачиваний
Здесь подкорректировал в блоке приема выход мак адреса передатчика, замените в ПБ.
Примеры:
Передача ESP32.flp
(3.34 МБ) 352 скачивания
Прием ESP32.flp
(3.8 МБ) 306 скачиваний
Обмен между собой 4мя ЕСП32.flp
(5.36 МБ) 303 скачивания
Загрузите примеры ниже в разные ЕСП, они будут общаться между собой, а один из них будет выводить данные на веб браузер. В этих примерах включите штатный клиент и создайте страницу веб браузера. Проверил на ЕСП32 , точка доступа тоже работает.
Примеры подойдут и для ЕСП8266, только замените на блоки для ЕСП8266.

Видео от Грачика.
СпойлерПоказать
Внимание! Нужно, чтобы входы передатчика и выходы приемника были одинаковы. Нельзя , например, в одном 2 входа (выхода), а в другом 3 выхода (входа). И переменные входов и выходов должны совпадать.
https://habr.com/ru/post/502260/

Скетч для получения мак адреса ESP.

Код: Выделить всё

#ifdef ESP32
  #include <WiFi.h>
#else
  #include <ESP8266WiFi.h>
#endif

void setup(){
  Serial.begin(115200);
  Serial.println();
  Serial.print("ESP Board MAC Address:  ");
  Serial.println(WiFi.macAddress());
}
 
void loop(){

}
В некоторых версиях Ардуино Иде и плат перестал работать широковещательый режим, но это исправили, читайте об этом здесь

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 11:08}
Rovki
Что значит напрямую , без сети вайфай , по проводам что ли?

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 11:40}
ussrtk
Rovki писал(а):
27.07.2020{, 11:08}
Что значит напрямую , без сети вайфай , по проводам что ли?
Надо взять блок и посмотреть. Просто так спросить - это зачем? Понятно, что автор говорит о том, что не используется локальная сеть.
Неужели действительно есть мысль, что там обмен по порту????? Или просто прикалываетесь? Странно.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 11:42}
aidar_i
ESP-NOW, бесконтактный протокол связи по Wi-Fi. Не нужен роутер, не нужно создавать сеть, точки доступа и тп.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 12:10}
ussrtk
aidar_i писал(а):
27.07.2020{, 11:42}
ESP-NOW, бесконтактный протокол связи по Wi-Fi. Не нужен роутер, не нужно создавать сеть, точки доступа и тп.
Cпасибо за работающий пример построения ПБ в новой среде FlProg

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 12:10}
aidar_i
Испытал передачу с 2х ESP8266 на один ESP32. Чтобы узнать с какого модуля идут данные нужно, например, в строке написать название модуля или нумеровать в цифровом входе блока и блоком сравнения направить куда надо. Аналогично можно получать данные от множества модулей ESP.

Отправлено спустя 9 минут 50 секунд:
ussrtk писал(а):
27.07.2020{, 12:10}
Cпасибо за работающий пример построения ПБ в новой среде FlProg
Пожалуйста! Экспериментирую с новым редактором. Эти блоки, думаю, еще придется доводить, чтобы , например, можно было входы для данных самому выбирать. Здесь пока я вывел все варианты, неиспользуемые нужно удалять вручную. Или создавать блоки для них отдельно.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 12:38}
Rovki
ussrtk писал(а):
27.07.2020{, 11:40}
Rovki писал(а):
27.07.2020{, 11:08}
Что значит напрямую , без сети вайфай , по проводам что ли?
Надо взять блок и посмотреть. Просто так спросить - это зачем? Понятно, что автор говорит о том, что не используется локальная сеть.

Неужели действительно есть мысль, что там обмен по порту????? Или просто прикалываетесь? Странно.
Я за то что бы название отражала суть ,а не вводило в заблуждение ..Ибо локальная сеть это любая сеть в том числе между двумя устройствами и даже сеть RF или блютуз ...
Надо говорить не про локальную есть ,а про альтернативный протокол обмена данными для ESP8266 и ESP32
Вот тут теория https://habr.com/ru/post/502260/

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 12:49}
ussrtk
Rovki писал(а):
27.07.2020{, 12:38}
ussrtk писал(а):
27.07.2020{, 11:40}
Надо взять блок и посмотреть. Просто так спросить - это зачем? Понятно, что автор говорит о том, что не используется локальная сеть.

Неужели действительно есть мысль, что там обмен по порту????? Или просто прикалываетесь? Странно.
Я за то что бы название отражала суть ,а не вводило в заблуждение ..Ибо локальная сеть это любая сеть в том числе между двумя устройствами и даже сеть RF или блютуз ...
Надо говорить не про локальную есть ,а про альтернативный протокол обмена данными для ESP8266 и ESP32
Ни секунды не сомневался, что вы все прекрасно понимаете. И понятно, что вы таким постом указали на необходимость точной терминологии в заголовке.
Но и в свою очередь, я думаю, вам понято, что мой пост - не претензия. А призыв помогать и только.
Спасибо.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 12:56}
Rovki
ussrtk писал(а):
27.07.2020{, 12:49}
Rovki писал(а):
27.07.2020{, 12:38}
Я за то что бы название отражала суть ,а не вводило в заблуждение ..Ибо локальная сеть это любая сеть в том числе между двумя устройствами и даже сеть RF или блютуз ...
Надо говорить не про локальную есть ,а про альтернативный протокол обмена данными для ESP8266 и ESP32
Ни секунды не сомневался, что вы все прекрасно понимаете. И понятно, что вы таким постом указали на необходимость точной терминологии в заголовке.
Но и в свою очередь, я думаю, вам понято, что мой пост - не претензия. А призыв помогать и только.
Спасибо.
Вы ошибаетесь ,я не сразу врубился в пост , потому и задал вопрос (а не придирался) . И хорошо ,что Айдар отредактировал содержание 1 поста , теперь понятно. :smile427:

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 27.07.2020{, 22:55}
Lukum
Неоткрывается а 6.3.1

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 28.07.2020{, 09:29}
Brand2
aidar_i, загрузил примеры,но не передает ничего,пишет в монитор порта
Last Packet Send Status: Delivery fail
соответственно в приемнике только 0 пишет
Может проблемма в МАС адресе принимающего устройства?
Если да,то как мне узнать мас адрес приемника?
ESP WEMOS передатчик
ESP32 приемник

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 28.07.2020{, 11:07}
aidar_i
Да мак адрес нужно в параметрах записать!
В первый пост добавлю скетч, чтобы считать его.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 28.07.2020{, 11:13}
Ardudue
aidar_i писал(а):
27.07.2020{, 10:45}
Создал ПБ для передачи и приема данных между ESP8266 и ESP8266 (ESP32 и ESP32) , также между ESP8266 и ESP32, без создания WiFi сети (без роутера, точек доступа, напрямую по WiFi).
звук пролезет?

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 28.07.2020{, 17:27}
aidar_i
Звук , нет!

Отправлено спустя 4 часа 26 минут 29 секунд:
Обновил блоки. Сейчас работает отправка данных на несколько плат (один ко многим), прием данных с нескольких плат (много-к-одному).
Подправил ошибки работы с ESP8266 на прием и на передачу с ESP32.
Научился создавать входы с помощью флажка с изменением кода. Начал переделывать этот блок дальше. Будет возможность выбирать необходимые входы и выходы.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 30.07.2020{, 00:08}
aidar_i
Закончил ПБ ESP_NOW. В этой версии можно создавать входы и выходы ( в блоке 4 шт, по одной на разные переменные). Входы и выходы создаются и удаляются в параметрах с помощью флажка.
Примеры настроенные на ESP8266:
Передача данных new.flp
(1.11 МБ) 444 скачивания
Прием данных new.flp
(744.57 КБ) 404 скачивания
ESP32
Прием данных ESP32 OLED new.flp
(828.2 КБ) 322 скачивания



Протестировал в железе.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 30.07.2020{, 12:04}
Brand2
aidar_i, При указании в блоке передачи ESP32 выскакивает ошибка при компиляции во 2 строке:
esp-now.h No such file ore directory
Если же указать esp8266,и использовать в качестве приемника ESP32 ,то передача и прием проходит нормально .
Наверное указание типа приемника не так и важно.
Еще заметил,при отключении передатчика ,приемник продолжает выдавать данные,которые он принимал перед этим как ни в чем не бывало,а это не всегда хорошо.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 30.07.2020{, 17:12}
aidar_i
Brand2 писал(а):
30.07.2020{, 12:04}
При указании в блоке передачи ESP32 выскакивает ошибка при компиляции во 2 строке:
esp-now.h No such file ore directory
Если же указать esp8266,и использовать в качестве приемника ESP32 ,то передача и прием проходит нормально .
Вы просто запутались.
Когда в параметрах меняете контроллер, в проекте лучше тоже нужно менять (для ESP32, если проект настроен на ESP8266, появляется лишний код который дает ошибку), лучше скопируйте проект и вторую на другой контроллер настройте. Так же не забудьте в ардуино иде тоже поменять.

Отправлено спустя 7 минут 58 секунд:
Brand2 писал(а):
30.07.2020{, 12:04}
Наверное указание типа приемника не так и важно.
Очень важно! ESP32 (#include <WiFi.h>, #include <esp_now.h>) и ESP8266 (#include <ESP8266WiFi.h>, #include <espnow.h>) используют разные библиотеки!
Коды приемника и передатчика не влияют друг на друга. Просто нужно, чтобы входы передатчика и выходы приемника были одинаковы. Нельзя , например, в одном 4 входа (выхода), а в другом 3 выхода (входа). И переменные входов и выходов должны совпадать.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 30.07.2020{, 17:57}
Mico
aidar_i правильно я понял, у "мастера" читаем MAC адрес и данные читаем через блок приема,а в настройках "слейва" указываем прочитанный МАС адрес. Если два устройства отправляют то в строке отправляем имя "слейва",мастер сравнивает принятую строку и в соответствии с именем "слейва" сохраняет куда надо. А если два слейва одновременно посылать будут,то тут как? Вдруг так совпадет.

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 30.07.2020{, 21:13}
AlexCrane
aidar_i, Связь односторонняя получается?

ESP_NOW передача данных между ESP8266 ( ESP32 )

Добавлено: 30.07.2020{, 21:18}
aidar_i
Mico писал(а):
30.07.2020{, 17:57}
aidar_i правильно я понял, у "мастера" читаем MAC адрес и данные читаем через блок приема,а в настройках "слейва" указываем прочитанный МАС адрес. Если два устройства отправляют то в строке отправляем имя "слейва",мастер сравнивает принятую строку и в соответствии с именем "слейва" сохраняет куда надо.
Мак адрес читаем у приемника и вставляем в блок передатчика. Передатчик передает данные только устройству с этим мак адресом.
Mico писал(а):
30.07.2020{, 17:57}
А если два слейва одновременно посылать будут,то тут как? Вдруг так совпадет.
Данные идут пакетом, чей то все равно придет первым.

Отправлено спустя 2 минуты 5 секунд:
AlexCrane писал(а):
30.07.2020{, 21:13}
Связь односторонняя получается?
В этих блоках, да!
Позже сделаю блоки для двухсторонней связи.