• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь приёмник 433МГц и NodeMCU

Boriso

New member
Никак не могу заставить работать приёмник 433МГц и rc-switch. С другими датчиками поигрался - работают, а вот с этим никак. Чтобы не привязываться к библиотеке тестирую следующим кодом:

Код:
#define timeSeconds 2
const int led = LED_BUILTIN;
const int rSensor = D3;
unsigned long now = millis();
volatile unsigned long lastTrigger = 0;
volatile boolean startTimer = false;

ICACHE_RAM_ATTR void detectsSignal() {
  if (!startTimer) {
    Serial.println("Interrupt!!!");
    digitalWrite(led, LOW);
    startTimer = true;
    lastTrigger = millis();
  }
}

void setup() {
  Serial.begin(115200);
  delay(100);
  pinMode(rSensor, INPUT_PULLUP);
//  pinMode(rSensor, INPUT);
//  attachInterrupt(digitalPinToInterrupt(rSensor), detectsSignal, RISING);
  attachInterrupt(digitalPinToInterrupt(rSensor), detectsSignal, CHANGE);
  pinMode(led, OUTPUT);
  digitalWrite(led, HIGH);
}

void loop() {
  now = millis();
  if(startTimer && (now - lastTrigger > (timeSeconds*1000))) {
    Serial.println("Stopped...");
    digitalWrite(led, HIGH);
    startTimer = false;
  }
}
Проблема в том, что прерывания идут постоянно. При использовании rc-switch ничего не происходило вообще. Пробовал разные пины, питание подавал как через USB (компьютер/зарядка), так и через YwRobot. Перепробовал три разных датчика (MX-RM-5V, RF-5V, GD-RXV6D) и два NodeMCU - результат одинаковый, а новогоднего чуда не произошло.

Подскажите, пожалуйста, что надо сделать, чтобы надёжнее всего заставить работать связку приёмнка с esp8266?
 

Вложения

nikolz

Well-known member
Никак не могу заставить работать приёмник 433МГц и rc-switch. С другими датчиками поигрался - работают, а вот с этим никак. Чтобы не привязываться к библиотеке тестирую следующим кодом:

Код:
#define timeSeconds 2
const int led = LED_BUILTIN;
const int rSensor = D3;
unsigned long now = millis();
volatile unsigned long lastTrigger = 0;
volatile boolean startTimer = false;

ICACHE_RAM_ATTR void detectsSignal() {
  if (!startTimer) {
    Serial.println("Interrupt!!!");
    digitalWrite(led, LOW);
    startTimer = true;
    lastTrigger = millis();
  }
}

void setup() {
  Serial.begin(115200);
  delay(100);
  pinMode(rSensor, INPUT_PULLUP);
//  pinMode(rSensor, INPUT);
//  attachInterrupt(digitalPinToInterrupt(rSensor), detectsSignal, RISING);
  attachInterrupt(digitalPinToInterrupt(rSensor), detectsSignal, CHANGE);
  pinMode(led, OUTPUT);
  digitalWrite(led, HIGH);
}

void loop() {
  now = millis();
  if(startTimer && (now - lastTrigger > (timeSeconds*1000))) {
    Serial.println("Stopped...");
    digitalWrite(led, HIGH);
    startTimer = false;
  }
}
Проблема в том, что прерывания идут постоянно. При использовании rc-switch ничего не происходило вообще. Пробовал разные пины, питание подавал как через USB (компьютер/зарядка), так и через YwRobot. Перепробовал три разных датчика (MX-RM-5V, RF-5V, GD-RXV6D) и два NodeMCU - результат одинаковый, а новогоднего чуда не произошло.

Подскажите, пожалуйста, что надо сделать, чтобы надёжнее всего заставить работать связку приёмнка с esp8266?
upload_2020-1-5_11-48-4.png

цитата:
Модуль MX-RM-5V представляет из себя сверхрегенеративный приёмник.
На выходе применяется компаратор LM358 (аналоги: КР1040УД1, КР1053УД2, КР1401УД5, GL358, NE532, OP295, OP290, OP221, OPA2237, TA75358P).
Приёмник чувствителен к пульсациям.
Небольшие пульсации по шине питания могут расцениваться приёмником как сигнал, после чего модуль может не реагировать на передатчик.
Для снижения пульсаций как раз и предназначался конденсатор C3, на котором сэкономил разработчик.
Для уменьшения влияния пульсаций на приёмник, так же желательно либо сам приёмник, либо устройства, вносящие пульсации (ШИМ, сервоприводы и т.д.), питать от отдельного стабилизированного источника питания.
Дроссель L2 может быть представлен на плате в SMD исполнении или в виде дросселя с аксиальными выводами, как в моём случае.
Чувствительность приемника: 100дБм (50Ω). Питание может быть в пределах 4,5 - 5В, ток потребления 4 мА.
Модули работают в широком диапазоне температур от −10 до +70°C.
Приёмник и передатчик могут работать без внешних антенн.
Для увеличения качества связи можно применить антенну в виде четвертьволнового вибратора (173мм), которая представляет из себя кусок одножильного провода, подключенного к соответствующим контактам.
Так же можно использовать антенну в виде полуволнового вибратора (345 мм) или отрезок провода равный длине волны (691 мм).
Разрабатывая какие-либо проекты на базе этих модулей стоит упомянуть про возможные недостатки:
1.
Ввиду того что на данной частоте работает много различных устройств, все они создают шумы, которыми могут мешать друг другу.
2.
Низкая скорость передачи данных. Максимальная пропускная способность передатчика около 8 кб/сек, а приёмника 5 кб/сек.
-------------------
Поэтому у Вас буду постоянно идти прерывания.
Вы должны сами обрабатывать сигнал и распознавать что это -шум или ваш сигнал с передатчика.
Есть два варианта решения проблемы:
1) Написать крутую прогу для передатчика и приемника с коррекцией ошибок и распознаванием преамбулы.
2) выкинуть эти игрушки и взять другие
 

Boriso

New member
2) выкинуть эти игрушки и взять другие
Большое спасибо за подробный ответ. Когда смотрел варианты подключения, то везде очень похожие были, но, возможно, что производители экономят и всё.

Можете подсказать конкретную модель приёмника, которая будет надёжной для использования? В идеале, чтобы продавалась у нас и не надо было заказывать из-за границы.
 

nikolz

Well-known member
Большое спасибо за подробный ответ. Когда смотрел варианты подключения, то везде очень похожие были, но, возможно, что производители экономят и всё.

Можете подсказать конкретную модель приёмника, которая будет надёжной для использования? В идеале, чтобы продавалась у нас и не надо было заказывать из-за границы.
Опишите подробнее задачу, дальность, скорость передачи, бюджет.
У нас вы купите "сделано в китае", но дороже в 2-3 раза.
 

Boriso

New member
Опишите подробнее задачу, дальность, скорость передачи, бюджет.
У нас вы купите "сделано в китае", но дороже в 2-3 раза.
Хочу на NodeMCU задублировать управление с 433МГц брелока. С передатчиками (есть уже FS1000A и GD-TX10-v1.0) пока не экспериментировал, поскольку для отправки кода вначале его надо получить, а с этим и проблема.

То есть сейчас задача - максимально просто получить с 433МГц брелока код и протокол, чтобы потом его отправить через rc-switch или другую библиотеку. И брелок, и компьютер под рукой, поэтому расстояние на приём любое. Если есть что-то за 2-3 тысячи, то отлично. Если без ожидания посылки из Китая будет дороже, то можно тоже рассмотреть.
 

pvvx

Активный участник сообщества
Обычно брелок передает закодированный сигнал. Если его тупо дублировать, то ничего не сработает - не совпадет код.
Наглядно посмотреть что передает (и работает ли вообще) брелок можно путем подключения к щупу осциллографа свч диода.
Поднести брелок и нажать кнопку:
upload_2020-1-5_16-40-12.png
Вот такая последовательность у первого попавшегося брелка...
Как будете вычислять код (для новой посылки)? :)
 

pvvx

Активный участник сообщества
для отправки кода вначале его надо получить, а с этим и проблема.
При использовании к примеру диода Д405Б и петли в пару см, при подносе брелка получите от 200 мВ сигнал.
Д405Б хорош тем, что не умирает от статики и не пробивается в ужасных полях СВЧ и прочих наводках при тыркании руками/ногами/проводами. Т.е. очень живучий, по сравнению с другими :p
 

Boriso

New member
Как будете вычислять код (для новой посылки)? :)
Считаю, что точно подойдёт один из семи протоколов sui77/rc-switch

Слишком наворочено, да и сигнал вроде повторили, но не сработало. Может быть слишком хорошего мнения о производителях, но сигнализации должны были бы каждый раз передавать новый/модифицированный код.

А вот по поводу диода не понял(
 

pvvx

Активный участник сообщества
А вот по поводу диода не понял(
Вам надо было принять код с вашего брелка.
Такой диод и петля из провода достаточны для считывания посылок при подносе брелка. Т.е. приемник не нужен.
 

Boriso

New member
Такой диод и петля из провода достаточны для считывания посылок при подносе брелка. Т.е. приемник не нужен.
То есть можно напрямую будет через землю в цифровой GPIO воткнуть петлю и ESP8266 начнёт распознавать сигнал без потока шумных прерываний?
 

pvvx

Активный участник сообщества
То есть можно напрямую будет через землю в цифровой GPIO воткнуть петлю и ESP8266 начнёт распознавать сигнал без потока шумных прерываний?
Да, если настроить контур приема...
Если без настройки - может потребоваться транзистор для усиления в пару раз, или прием вести на ADC ESP...
 

nikolz

Well-known member
Хочу на NodeMCU задублировать управление с 433МГц брелока. С передатчиками (есть уже FS1000A и GD-TX10-v1.0) пока не экспериментировал, поскольку для отправки кода вначале его надо получить, а с этим и проблема.

То есть сейчас задача - максимально просто получить с 433МГц брелока код и протокол, чтобы потом его отправить через rc-switch или другую библиотеку. И брелок, и компьютер под рукой, поэтому расстояние на приём любое. Если есть что-то за 2-3 тысячи, то отлично. Если без ожидания посылки из Китая будет дороже, то можно тоже рассмотреть.
Как я понял, у Вас есть брелок и приемник и вы хотите прочитать код с брелка. Верно?
В вашей постановке задачи нет надобности что-то покупать.
---------------------
для начала посмотрите эту подборку :
Открыть шлагбаум Came | Технохрень
Радиотракт брелков автомобильных сигнализаций. / Радио / Сообщество EasyElectronics.ru
Сравнительный обзор устройств дистанционного управления на частоте 433 МГц
Обзор сравнение доступных приемников и передатчиков диапазона 433 MHz для поделок
Управление шлагбаумом с помощью Arduino UNO и радиопередатчика 433 МГц
---------------------------------
найдите в инете протокол для вашего брелка.
далее поставьте в колбек прерывания от пина сигнала приемника вывод принятого кода в терминал компа.
а далее вопрос остается открытым - зачем это все надо.
 
Сверху Снизу