• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 МГц
---------------------------------
найдите в инете протокол для вашего брелка.
далее поставьте в колбек прерывания от пина сигнала приемника вывод принятого кода в терминал компа.
а далее вопрос остается открытым - зачем это все надо.
 
Сверху Снизу