Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

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

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

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

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

#1

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

Создал ПБ для передачи и приема данных между ESP8266 и ESP8266 (ESP32 и ESP32) , также между ESP8266 и ESP32, без создания WiFi сети (без роутера, точек доступа, напрямую по WiFi).
Работал в новом редакторе ПБ (для его освоения), версия программы 7.0.3.
Блок один, преобразуется при выборе режима работы.
Библиотеки не надо устанавливать.
Передача
Передача данных.flp
(445.34 КБ) 26 скачиваний
Прием
Прием данных.flp
(419.2 КБ) 22 скачивания
Реализовано в примере зажигание штатного светодиода ESP8266. Принимаемые данные смотрите в UART.

Тестировал с платами ESP8266 и ESP32.
Работает отправка данных на несколько плат (один ко многим), прием данных с нескольких плат (много-к-одному).
Последние блоки ЗДЕСЬ.
Блоки, вышеуказанные, созданы для односторонней связи.
2х стороняя связь ЗДЕСЬ.
Блоки для передачи данных можно в проекте использовать несколько, чтобы передавать данные нескольким ESP.
Внимание! Нужно, чтобы входы передатчика и выходы приемника были одинаковы. Нельзя , например, в одном 2 входа (выхода), а в другом 3 выхода (входа). И переменные входов и выходов должны совпадать.
Еще пример
Прием данных ESP32 OLED.flp
(509.2 КБ) 19 скачиваний
Принимаемые данные можно увидеть на дисплее.

Отправлено спустя 15 минут 31 секунду:
СпойлерПоказать
IMG_20200727_123326.jpg
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 01.08.2020{, 07:09}, всего редактировалось 27 раз.

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

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

#2

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

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

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

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

#3

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

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

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

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

#4

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

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

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

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

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

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
Рядовой
Сообщения: 24
Зарегистрирован: 06.01.2017{, 12:25}
Репутация: 5

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

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

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

#10

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

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

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

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

#11

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

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

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

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

#13

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

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

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

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

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

#15

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

Звук , нет!

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

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

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

#16

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

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



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

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

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
Лейтенант
Сообщения: 381
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 81
Откуда: Ульяновск
Имя: Александр

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

#20

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

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

Ответить

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