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

Создаем свой блок. Вопросы, помощь знатоков.
WildCat
Лейтенант
Сообщения: 556
Зарегистрирован: 04 июн 2022, 04:14
Имя: Михаил
Благодарил (а): 5 раз
Поблагодарили: 9 раз

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

Сообщение WildCat »

Что значит одновременно передавали информацию?
Каким образом синхронизация передачи устроена?
Wemos1 и Wemos2 передают данные в разных переменных?
Vrungel
Рядовой
Сообщения: 33
Зарегистрирован: 03 июн 2021, 10:33
Откуда: Мариуполь/Биробиджан
Имя: Сергей
Благодарил (а): 19 раз
Поблагодарили: 12 раз

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

Сообщение Vrungel »

На принимающей стороне (ESP32) включите отображение MAC-адреса передатчика.
Далее через сравнение строк определяете откуда прилетела посылка, и в зависимости от того какой вемос передал значение, будете ложить полученное значение в ту или иную переменную.
Примерно так, только переменные вашего типа и в вашем количестве.
Снимок экрана 2024-03-15 115751.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Pauk81
Сержант
Сообщения: 107
Зарегистрирован: 16 ноя 2021, 22:02
Имя: Вячеслав
Благодарил (а): 22 раза

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

Сообщение Pauk81 »

WildCat писал(а): 15 мар 2024, 02:00 Что значит одновременно передавали информацию?
Каким образом синхронизация передачи устроена?
Wemos1 и Wemos2 передают данные в разных переменных?
да именно так, Wemos1 и Wemos2 передают в разных переменных но на экран esp32 выводятся данные с начало с одного Wemos1 а потом с другого Wemos2. То есть данные не остаются постоянно сбрасываются и выводятся по очередности. А нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.

Отправлено спустя 1 минуту 9 секунд:
Vrungel писал(а): 15 мар 2024, 02:08 нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.
нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.

Отправлено спустя 2 часа 37 минут 9 секунд:
WildCat писал(а): 15 мар 2024, 02:00 Что значит одновременно передавали информацию?
Допустим: Wemos1 передал значение температуры и на экране выводится на ПЕРВОЙ СТРОКЕ, измениться значение только когда поменяется температура на датчике в Wemos1.
И Wemos2 тоже передал значение температуры и на экране выводится на ВТОРОЙ СТРОКЕ,измениться значение только когда поменяется температура на датчике в Wemos2.
Когда передаются значения температур от Wemos1 и Wemos2 на ПЕРВОЙ и ВТОРОЙ СТРОКЕ дисплея выводятся значение этих двух Wemos1 и Wemos2

Отправлено спустя 2 минуты 45 секунд:
WildCat писал(а): 15 мар 2024, 02:00 Каким образом синхронизация передачи устроена?
таким образом устроена...

Отправлено спустя 2 часа 27 минут 43 секунды:
WildCat писал(а): 15 мар 2024, 02:00 Wemos1 и Wemos2 передают в разных переменных но на экран esp32 выводятся данные с начало с одного Wemos1 а потом с другого Wemos2. То есть данные не остаются постоянно сбрасываются и выводятся по очередности. А нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.
Wemos1 и Wemos2 передают в разных переменных но на экран esp32 выводятся данные с начало с одного Wemos1 а потом с другого Wemos2. То есть данные не остаются постоянно сбрасываются и выводятся по очередности. А нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.

Отправлено спустя 16 минут 26 секунд:
[ref]WildCat[/ref], посмотрите пожалуйста мою схему..

Отправлено спустя 3 часа 49 минут 21 секунду:
WildCat писал(а): 15 мар 2024, 02:00 посмотрите пожалуйста мою схему..
посмотрите пожалуйста мою схему..

Отправлено спустя 3 часа 25 секунд:
Vrungel писал(а): 15 мар 2024, 02:08 На принимающей стороне (ESP32) включите отображение MAC-адреса передатчика.
Далее через сравнение строк определяете откуда прилетела посылка, и в зависимости от того какой вемос передал значение, будете ложить полученное значение в ту или иную переменную.
Примерно так, только переменные вашего типа и в вашем количестве.
Снимок экрана 2024-03-15 115751.png
Вопрос был в том чтобы данные с обоих вемосов выводились на экран еsp32, НЕ ПЕРИОДИЧЕСКАЯ смена адресов.!!!!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Lukum
Рядовой
Сообщения: 63
Зарегистрирован: 06 ноя 2018, 18:46
Имя: Алексей

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

Сообщение Lukum »

Есп работает в теплице вынуть её
проблематично, прошиваю по воздуху бинарником,
хочу добавить wifi now чтоб смотреть
температуру удалённо посоветуйте как узнать мак адрес есп 8266?
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

Lukum писал(а): 31 мар 2024, 18:59 Есп работает в теплице вынуть её
проблематично, прошиваю по воздуху бинарником,
хочу добавить wifi now чтоб смотреть
температуру удалённо посоветуйте как узнать мак адрес есп 8266?
Смотрите первое сообщение.
Lukum
Рядовой
Сообщения: 63
Зарегистрирован: 06 ноя 2018, 18:46
Имя: Алексей

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

Сообщение Lukum »

Всё понял как нужно в приёмнике смотреть, а я в передатчике через web искал спасибо
Аватара пользователя
ramonmetelica
Рядовой
Сообщения: 1
Зарегистрирован: 28 янв 2022, 18:40
Имя: Roman

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

Сообщение ramonmetelica »

aidar_i писал(а): 03 дек 2023, 09:54
Phazz писал(а): 02 фев 2023, 15:04 работают (передача данных) только когда на расстояние друг от друга на сентиметров 10.
Прочитал:
WiFi (и ESP-NOW) может работать в 3х режимах - b g n. По умолчанию стоит n. Перед включением ESP-NOW принудительно выставляем b.
n - большая скорость, низкая дальность.
b - наоборот.
Проверьте.
Также пишут ESP32 до 1 км по прямой может, появился новая примочка Long Range для espnow:
Добавить в setup() : esp_wifi_set_protocol( WIFI_IF_STA, WIFI_PROTOCOL_LR);
Добрый всем день!
Где в коде это найти, чтоб изменить дальность связи?
Передатчик на esp32 только один раз передает данные, а потом связь с приемником (esp32) теряется, расстояние между ними - 10м. Когда лежат рядом, то работают стабильно!
Pauk81
Сержант
Сообщения: 107
Зарегистрирован: 16 ноя 2021, 22:02
Имя: Вячеслав
Благодарил (а): 22 раза

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

Сообщение Pauk81 »

Подскажите пожалуйста такой вопрос, снимаю показания с батареи на плате ESP32 вывожу на дисплей 1602 показания всё работает хорошо. Но при установке блока ESP_NOW на плату ESP32 показания пропадают и выводит все нули, в чем причина может быть? Eсли просто добавить блок ESP_NOW, то сразу нет показаний, если блок убрать то все работает.
Аватара пользователя
badr555
Рядовой
Сообщения: 13
Зарегистрирован: 09 май 2022, 12:04
Откуда: Bytom, Poland
Имя: Andrey
Поблагодарили: 2 раза

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

Сообщение badr555 »

Есть просьба для aidar_i, можно для ваших блоков ESP_NOW на плату ESP32 указывать версию FLProg, IDE arduino, необходимых библиотек и их версии а также версии плат ESP32?
Это крайне важно т.к. с выходом новых версий всего этого разношерстного набора где-то что-то обязательно ломается, а у китайского ESPRESSIF это происходит очень часто.
BugoR
Рядовой
Сообщения: 4
Зарегистрирован: 17 окт 2024, 09:23
Имя: Евгений

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

Сообщение BugoR »

Здравствуйте! Подскажите пожалуйста, где искать ответ на такую проблему.
Схема подключения: ESP8266 передатчик - домашняя сеть WiFi (роутер)-приемник ESP32, все работает если установлен широковещательный МАС-адрес. Ставлю на передатчик мас- адрес приемника, обмен данными не работает.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

BugoR писал(а): 23 окт 2024, 06:29 Здравствуйте! Подскажите пожалуйста, где искать ответ на такую проблему.
Схема подключения: ESP8266 передатчик - домашняя сеть WiFi (роутер)-приемник ESP32, все работает если установлен широковещательный МАС-адрес. Ставлю на передатчик мас- адрес приемника, обмен данными не работает.
Значит, где то ошибка, при вставке мак адреса или его определении. Скиньте проект.
Аватара пользователя
badr555
Рядовой
Сообщения: 13
Зарегистрирован: 09 май 2022, 12:04
Откуда: Bytom, Poland
Имя: Andrey
Поблагодарили: 2 раза

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

Сообщение badr555 »

Не компилируется: Текст ошибки:
Проект от aidar_i
► Показать
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
badr555
Рядовой
Сообщения: 13
Зарегистрирован: 09 май 2022, 12:04
Откуда: Bytom, Poland
Имя: Andrey
Поблагодарили: 2 раза

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

Сообщение badr555 »

aidar_i
Сецчас проверил все Ваши примеры из первого сообщения ни один не работает:
FLProg вресии: 7.5.0, 8.2.3 - не работает.
Объясните мне тупому, как заставить это работать?
Менял версии библиотек, плат - не работает. Ваши примеры не изменял, использовал как есть. В COM-порт выводятся данные только при старте, далее тишина.
Аватара пользователя
badr555
Рядовой
Сообщения: 13
Зарегистрирован: 09 май 2022, 12:04
Откуда: Bytom, Poland
Имя: Andrey
Поблагодарили: 2 раза

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

Сообщение badr555 »

Проблема решилась, заменой портативной версии 7.5.0 на установочную 7.5.0.
BugoR
Рядовой
Сообщения: 4
Зарегистрирован: 17 окт 2024, 09:23
Имя: Евгений

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

Сообщение BugoR »

работает только с широковещательным адресом
У вас нет необходимых прав для просмотра вложений в этом сообщении.
BugoR
Рядовой
Сообщения: 4
Зарегистрирован: 17 окт 2024, 09:23
Имя: Евгений

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

Сообщение BugoR »

MAC адрес без ошибок я его сверил в двух местах, на роутере в таблице DHCP-клиенты и на приемнике отправкой MAC адреса в USART
slonikx
Рядовой
Сообщения: 2
Зарегистрирован: 03 ноя 2024, 11:49
Имя: Андрей

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

Сообщение slonikx »

Приветствую! Спасибо автору за блок. Возник такой вопрос – как добавить возможность смены канала? Согласно документации Espressif можно выбирать один из 14 каналов при связи через ESP-NOW, но пока не разобрался, где в коде это реализовано. Нашел такие строки, похоже на то, что нужно:

esp_now_peer_info_t peerInfo;
peerInfo.channel = 0;
peerInfo.encrypt = false;


Однако, замена нуля цифрами от 1 до 14 не дала результатов. Когда на приемнике и передатчике (оба ESP 32, оба в режиме приема-передача) установлена ​​одна цифра вместо нуля, нет двусторонней связи. Может ли кто-то подсказать?
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 13 раз
Поблагодарили: 100 раз
Контактная информация:

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

Сообщение aidar_i »

slonikx писал(а): 13 ноя 2024, 18:44 Приветствую! Спасибо автору за блок. Возник такой вопрос – как добавить возможность смены канала? Согласно документации Espressif можно выбирать один из 14 каналов при связи через ESP-NOW, но пока не разобрался, где в коде это реализовано. Нашел такие строки, похоже на то, что нужно:

esp_now_peer_info_t peerInfo;
peerInfo.channel = 0;
peerInfo.encrypt = false;


Однако, замена нуля цифрами от 1 до 14 не дала результатов. Когда на приемнике и передатчике (оба ESP 32, оба в режиме приема-передача) установлена ​​одна цифра вместо нуля, нет двусторонней связи. Может ли кто-то подсказать?
Установка канала:
esp_wifi_set_promiscuous(true);
esp_wifi_set_channel(channel, WIFI_SECOND_CHAN_NONE);
esp_wifi_set_promiscuous(false);
Сканирование канала
int32_t channel = getWiFiChannel(ssid);
Pauk81
Сержант
Сообщения: 107
Зарегистрирован: 16 ноя 2021, 22:02
Имя: Вячеслав
Благодарил (а): 22 раза

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

Сообщение Pauk81 »

Доброго времени суток всем! Подскажите пожалуйста добрые люди не могу разобраться с передачей ESP-NOW
с платой ESP32 и прием передача на Wemos D1, что делаю неверно в скейче архив вложен
cуть такова:

При подключении платы ESP32 устанавливается связь с Вемос_1 и, Вемос_2 на дисплее стату (Ок),(пример в архиве)
Когда на этой плате ESP32 включить кнопку на пине D4
устанавливается связь с Вемос_1 и, или Вемос_2 пример (моргания светодиодов на Вемос_1 и Вемос_2)
если шлейф оборвался идет передача, на плату ESP32 загораеться светодиод передача идет нормально
Но как только отключить питание на Вемос_1 или Вемос_2
на плате ESP32 светодиод остается гореть, и на дисплее статус (Ок) - Ложный сигнал.
Как сделать так чтобы : Если на Вемос_1 или Вемос_2, нет питания или обрыв, связи с потеря расстояния, и т.д.
на дисплее был статус (No) и светодиод чтобы не горел, до тех пор пока не будет опять установлена связь с одним из Вемосов

А главное: Если шлейф Вемос_1 или Вемос_2 находится выключен как сделать так чтобы контроллер уходил в сон?
И сразу посыпался как только опять будет обрыв шлейфа, передал и опять уснул.
Но дисплее показывал статус подключения (Ок) конечно же если есть соединение.

Может кто посоветует другую связь установки, но без роутера и интернета.
Может можно реализовать передачу и прием на самом Wifi между устройствами.
P.S. Использую ОС Windows 7/64 версию Flprog 7.3.8
Спасибо Всем.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Pauk81
Сержант
Сообщения: 107
Зарегистрирован: 16 ноя 2021, 22:02
Имя: Вячеслав
Благодарил (а): 22 раза

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

Сообщение Pauk81 »

Pauk81 писал(а): 15 мар 2024, 23:08
WildCat писал(а): 15 мар 2024, 02:00 Что значит одновременно передавали информацию?
Каким образом синхронизация передачи устроена?
Wemos1 и Wemos2 передают данные в разных переменных?
да именно так, Wemos1 и Wemos2 передают в разных переменных но на экран esp32 выводятся данные с начало с одного Wemos1 а потом с другого Wemos2. То есть данные не остаются постоянно сбрасываются и выводятся по очередности. А нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.

Отправлено спустя 1 минуту 9 секунд:
Vrungel писал(а): 15 мар 2024, 02:08 нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.
нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.

Отправлено спустя 2 часа 37 минут 9 секунд:
WildCat писал(а): 15 мар 2024, 02:00 Что значит одновременно передавали информацию?
Допустим: Wemos1 передал значение температуры и на экране выводится на ПЕРВОЙ СТРОКЕ, измениться значение только когда поменяется температура на датчике в Wemos1.
И Wemos2 тоже передал значение температуры и на экране выводится на ВТОРОЙ СТРОКЕ,измениться значение только когда поменяется температура на датчике в Wemos2.
Когда передаются значения температур от Wemos1 и Wemos2 на ПЕРВОЙ и ВТОРОЙ СТРОКЕ дисплея выводятся значение этих двух Wemos1 и Wemos2

Отправлено спустя 2 минуты 45 секунд:
WildCat писал(а): 15 мар 2024, 02:00 Каким образом синхронизация передачи устроена?
таким образом устроена...

Отправлено спустя 2 часа 27 минут 43 секунды:
WildCat писал(а): 15 мар 2024, 02:00 Wemos1 и Wemos2 передают в разных переменных но на экран esp32 выводятся данные с начало с одного Wemos1 а потом с другого Wemos2. То есть данные не остаются постоянно сбрасываются и выводятся по очередности. А нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.
Wemos1 и Wemos2 передают в разных переменных но на экран esp32 выводятся данные с начало с одного Wemos1 а потом с другого Wemos2. То есть данные не остаются постоянно сбрасываются и выводятся по очередности. А нужно чтобы остались данные с Wemos1 и пришли с Wemos2, пока на одном из них не изменяться значение.

Отправлено спустя 16 минут 26 секунд:
[ref]WildCat[/ref], посмотрите пожалуйста мою схему..

Отправлено спустя 3 часа 49 минут 21 секунду:
WildCat писал(а): 15 мар 2024, 02:00 посмотрите пожалуйста мою схему..
посмотрите пожалуйста мою схему..

Отправлено спустя 3 часа 25 секунд:
Vrungel писал(а): 15 мар 2024, 02:08 На принимающей стороне (ESP32) включите отображение MAC-адреса передатчика.
Далее через сравнение строк определяете откуда прилетела посылка, и в зависимости от того какой вемос передал значение, будете ложить полученное значение в ту или иную переменную.
Примерно так, только переменные вашего типа и в вашем количестве.
Снимок экрана 2024-03-15 115751.png
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость