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

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

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

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
(213.52 КБ) 483 скачивания
Здесь подкорректировал в блоке приема выход мак адреса передатчика, замените в ПБ.
Примеры:
Передача ESP32.flp
(3.34 МБ) 358 скачиваний
Прием ESP32.flp
(3.8 МБ) 310 скачиваний
Обмен между собой 4мя ЕСП32.flp
(5.36 МБ) 315 скачиваний
Загрузите примеры ниже в разные ЕСП, они будут общаться между собой, а один из них будет выводить данные на веб браузер. В этих примерах включите штатный клиент и создайте страницу веб браузера. Проверил на ЕСП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
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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

#2

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

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

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

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

#3

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

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

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

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

#4

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

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

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

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
Полковник
Сообщения: 3122
Зарегистрирован: 24.12.2016{, 16:55}
Репутация: 675
Откуда: Уфа
Имя: Айдар
Контактная информация:

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
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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}
Репутация: 17

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
Полковник
Сообщения: 4872
Зарегистрирован: 22.04.2016{, 17:25}
Репутация: 269
Откуда: Чехов
Имя: Анатолий
Контактная информация:

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
Рядовой
Сообщения: 63
Зарегистрирован: 06.11.2018{, 18:46}
Репутация: 1
Имя: Алексей

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

#10

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

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

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

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

#11

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

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

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

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

#12

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

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

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

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

#13

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

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

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

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

#14

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

Звук , нет!

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

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

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

#15

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

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



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

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

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

#16

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

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

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

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

#17

Сообщение 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 )

#18

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

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

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

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

#19

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

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

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

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

#20

Сообщение aidar_i » 30.07.2020{, 21:18}

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

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

Ответить

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