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

Без создания WiFi сети.

Создаем свой блок. Вопросы, помощь знатоков.
aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#1

Сообщение aidar_i » 27.07.2020{, 10:29}

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

Обновлено 23.02.2022
Пользовательские блоки последние все На ЕСП32 по желанию можно вывести так же мак адрес передатчика на приемнике.
ESP_NOW NEW.rar
Примеры:
Передача ESP32.flp
Прием ESP32.flp
Обмен между собой 4мя ЕСП32.flp
Загрузите примеры ниже в разные ЕСП, они будут общаться между собой, а один из них будет выводить данные на веб браузер.
Передача данных и прием ESP32 client.flp
Прием данных и передача ESP32 client.flp
Проверил на ЕСП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(){

}
В некоторых версиях Ардуино Иде и плат перестал работать широковещательый режим, но это исправили, читайте об этом здесь
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось aidar_i 28.06.2021{, 20:07}, всего редактировалось 33 раза.

Аватара пользователя
Rovki
Полковник
Сообщения: 4270
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 208
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#2

Сообщение Rovki » 27.07.2020{, 11:08}

Что значит напрямую , без сети вайфай , по проводам что ли?
Электронщик до мозга костей и не только

Аватара пользователя
ussrtk
Рядовой
Сообщения: 36
Зарегистрирован: 06.01.2017{, 12:25}
Репутация: 15

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

#3

Сообщение ussrtk » 27.07.2020{, 11:40}

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

aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#4

Сообщение aidar_i » 27.07.2020{, 11:42}

ESP-NOW, бесконтактный протокол связи по Wi-Fi. Не нужен роутер, не нужно создавать сеть, точки доступа и тп.

Аватара пользователя
ussrtk
Рядовой
Сообщения: 36
Зарегистрирован: 06.01.2017{, 12:25}
Репутация: 15

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

#5

Сообщение ussrtk » 27.07.2020{, 12:10}

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

aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#6

Сообщение aidar_i » 27.07.2020{, 12:10}

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

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

Аватара пользователя
Rovki
Полковник
Сообщения: 4270
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 208
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#7

Сообщение Rovki » 27.07.2020{, 12:38}

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

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

Аватара пользователя
ussrtk
Рядовой
Сообщения: 36
Зарегистрирован: 06.01.2017{, 12:25}
Репутация: 15

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

#8

Сообщение ussrtk » 27.07.2020{, 12:49}

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

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

Аватара пользователя
Rovki
Полковник
Сообщения: 4270
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 208
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#9

Сообщение Rovki » 27.07.2020{, 12:56}

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

Lukum
Рядовой
Сообщения: 59
Зарегистрирован: 06.11.2018{, 18:46}
Репутация: 1
Имя: Алексей

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

#10

Сообщение Lukum » 27.07.2020{, 22:55}

Неоткрывается а 6.3.1

av
Подполковник
Сообщения: 1411
Зарегистрирован: 25.09.2017{, 13:25}
Репутация: 125
Имя: Алексей

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

#11

Сообщение av » 28.07.2020{, 01:28}

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

Brand2
Лейтенант
Сообщения: 377
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 34
Откуда: Haifa
Имя: Alex

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

#12

Сообщение Brand2 » 28.07.2020{, 09:29}

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

aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#13

Сообщение aidar_i » 28.07.2020{, 11:07}

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

Ardudue
Лейтенант
Сообщения: 318
Зарегистрирован: 13.04.2020{, 18:22}
Репутация: 16
Имя: Антон

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

#14

Сообщение Ardudue » 28.07.2020{, 11:13}

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

aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#15

Сообщение aidar_i » 28.07.2020{, 17:27}

Звук , нет!

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

aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#16

Сообщение aidar_i » 30.07.2020{, 00:08}

Закончил ПБ ESP_NOW. В этой версии можно создавать входы и выходы ( в блоке 4 шт, по одной на разные переменные). Входы и выходы создаются и удаляются в параметрах с помощью флажка.
Примеры настроенные на ESP8266:
Передача данных new.flp
Прием данных new.flp
ESP32
Прием данных ESP32 OLED new.flp



Протестировал в железе.
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось aidar_i 31.07.2020{, 12:11}, всего редактировалось 2 раза.

Brand2
Лейтенант
Сообщения: 377
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 34
Откуда: Haifa
Имя: Alex

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

#17

Сообщение Brand2 » 30.07.2020{, 12:04}

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

aidar_i
Полковник
Сообщения: 2410
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 380
Откуда: Уфа
Имя: Айдар
Контактная информация:

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

#18

Сообщение aidar_i » 30.07.2020{, 17:12}

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 выхода (входа). И переменные входов и выходов должны совпадать.

Mico
Рядовой
Сообщения: 7
Зарегистрирован: 04.07.2020{, 10:51}
Репутация: 0
Имя: Дмитрий

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

#19

Сообщение Mico » 30.07.2020{, 17:57}

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

Аватара пользователя
AlexCrane
Капитан
Сообщения: 822
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 258
Откуда: Ульяновск
Имя: Александр

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

#20

Сообщение AlexCrane » 30.07.2020{, 21:13}

aidar_i, Связь односторонняя получается?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Ответить

Вернуться в «Разработка пользовательских блоков»