Прием и передача на китайских модулях 433MHz (ESP8266)

ikari81
Offline
Зарегистрирован: 19.02.2021

Есть ESP8266, к ней был подключен приемник 433MHz, использовалась библиотека rc-switch. Прием работал исправно. Потребовалось, чтобы тот же модуль изредка передавал данные. Был подключен передатчик.

Экземпляр объекта для него отдельный. Пытаюсь передать данные и после прекращается прием. Пробовал перед передачей выключать прием:

 mySwitch.disableReceive();
 mySwitch2.sendTriState("00000FFF0F0F");
 mySwitch.enableReceive();

Но прием не возобновляется, слежу за этим в отладке. Кто пробовал делать прием/передачу на этих модулях на одном mcu?

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ikari81 пишет:
Кто пробовал делать прием/передачу на этих модулях на одном mcu?

Вы забыли написать на каких именно. Различных модулей на 433МГц как биоматериала за баней.

ikari81
Offline
Зарегистрирован: 19.02.2021

ЕвгенийП пишет:

ikari81 пишет:
Кто пробовал делать прием/передачу на этих модулях на одном mcu?

Вы забыли написать на каких именно. Различных модулей на 433МГц как биоматериала за баней.

Самые обычные, FS1000A и XY-MK-5V, по отдельности работают нормально.

Пробовал во время передачи запрещать прерывания, чтобы пин не реагировал на приемник, но опять останавливается прием.

ets_intr_lock();
 mySwitch2.sendTriState("00000FFF0F0F");
 ets_intr_unlock();

 

b707
Offline
Зарегистрирован: 26.05.2017

ikari81 пишет:

[

Пробовал во время передачи запрещать прерывания, чтобы пин не реагировал на приемник, но опять останавливается прием.

сорри за тупой вопрос - надеюсь вы подключаете приемник и передатчик на разные пины?

ikari81
Offline
Зарегистрирован: 19.02.2021

b707 пишет:

ikari81 пишет:

[

Пробовал во время передачи запрещать прерывания, чтобы пин не реагировал на приемник, но опять останавливается прием.

сорри за тупой вопрос - надеюсь вы подключаете приемник и передатчик на разные пины?

Конечно на разные. Приемник 5, передатчик 4.



pinMode(D1, INPUT);
 pinMode(D2, OUTPUT);
 digitalWrite(D2,0);
 mySwitch.enableReceive(D1);
 mySwitch2.enableTransmit(D2);

Это в сетапе. NodeMCU.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ikari81 пишет:

FS1000A и XY-MK-5V

Ну, вот так и надо писать. Потому, что 

ikari81 пишет:

обычные

только стиральные порошки бывают.

Ну, код Вы не привели, остаётся только догадки строить.

Скорее всего Вы используете два объекта вместо одного (как Вы написали) и в том, который предназначен для отправки не полностью вырубили приём (это очень трудно сделать, чтобы не вырубить и во втором). А раз так, то после отправки, этот модуль ТОЖЕ включается на приём (см. функцию RCSwitch::transmit). Вот они у Вас там вдвоём и принимают.

Почему не использовать один объект для приёма и отправки, как делают все нормальные люди? Эта библиотека вообще крайне плохо относится к нескольким объектам.

ikari81
Offline
Зарегистрирован: 19.02.2021

Мне тогда проще добавить свою процедуру отправки, которую я делал для avr.