Датчик движения PIR (HC-SR501) ложные результаты с NodeMCU

У меня есть датчик PIR, который я использую для обнаружения движения и включения и ВЫКЛЮЧЕНИЯ света на его основе.

У меня есть PIR, связанный с платой на базе NodeMCU (ESP8266). Я нахожу, что иногда это вызывает ложноположительное значение. Даже когда нет движения. Насколько я понимаю, я думаю, что здесь может быть любая из следующих причин:

  1. У меня есть NodeMCU рядом с ним. Так может быть потому, что его запускает теплота NodeMCU.
  2. Рядом с ним дует горячий воздух. Но я не знаю. Это вызывает ложное срабатывание даже в середине ночи.
  3. Это может быть вызвано комарами.
  4. У меня есть другие электрические провода, идущие рядом.

Я рассматриваю эти сценарии правильно? Если да, то как я могу предотвратить их?

Я попытался положить его в коробку и плотно упаковать. но все равно его ложный триггер. Я проверил даже с несколькими датчиками и у меня такая же проблема.

Есть какие-нибудь предложения по защите этого места? Я также проверяю, чтобы люди ставили конденсатор, чтобы сгладить его. И оказать некоторое сопротивление Вин.

Мой Vin PIR подключен к 5v, а ВЫХОДНОЙ вывод-к D2.

Для справки У меня есть этот код для проверки.

#define SIGNAL_PIN D2

void setup()
{
  Serial.begin(115200);
  pinMode(SIGNAL_PIN, INPUT_PULLUP);
//  digitalWrite (SIGNAL_PIN, LOW);
}


void loop() {

    static uint32_t lastSeenHigh = millis();
    static bool pirState = false;
    Serial.println(digitalRead(SIGNAL_PIN));

    // If it's active then record that fact along with the time
    if (digitalRead(SIGNAL_PIN) == HIGH) {
        lastSeenHigh = millis();
        pirState = true;
    } else {
        if ((millis() - lastSeenHigh) > 10000) {
            pirState = false;
        }
    }

    if (pirState == true) {
        Serial.println("Pir Is active");
    }
//
    if (pirState == false) {
      Serial.println("PIR sensor inactive");
    }
    delay(1000);
}

, 👍2

Обсуждение

Основной датчик PIR (HC-SR501) содержит регулировку чувствительности, которая регулирует диапазон чувствительности. Вот ссылка, которая поможет вам с настройкой [PIR](http://henrysbench.capnfatz.com/henrys-bench/arduino-sensors-and-input/arduino-hc-sr501-motion-sensor-tutorial/), @Vaibhav

я попытался внести коррективы. И это сработало не так, как я хотел., @user3201500

вы можете поделиться своим кодом и схемой?, @Vaibhav

Измените **INPUT_PULLUP** на **INPUT_PULLDOWN**, так как вы ищете ВЫСОКОЕ событие., @Vaibhav

ЛОЛ. Эти датчики и платы настолько дешевы, что я построил два датчика движения. Свет включается только тогда, когда оба соглашаются, что в комнате есть движение. Я использую Домашнего помощника для координации автоматизации, но, возможно, можно было бы сделать что-то хитроумное, чтобы они могли общаться напрямую., @azoe

@azoe, ха-ха, я думал о том, чтобы сделать то же самое. Эта установка хорошо работает, не так ли?, @Jeromy Adofo


4 ответа


1

У меня была та же проблема. PIRs имеют очень чувствительную схему и могут быть вызваны сигналом Wi-Fi от ESP8266. Ответ заключается в том, чтобы раздвинуть их, и при некотором разъединении линий питания вы увидите гораздо лучшую производительность. Мои PIR и ESP теперь находятся на расстоянии пары метров друг от друга, и я использую экранированный кабель, чтобы соединить их вместе.

,

1

У меня была та же проблема. Я пробовал различные решения в сети. Наконец-то я решил свою проблему вот так.

  • Поставил датчик PIR 3,3 В (с платы NodeMCU) вместо 5 В (мой основной блок питания 5 В).
  • Подсоедините кабель VCC (3,3 В) к "ВЫСОКОМУ контакту" триггерных контактов вместо основного (+) контакта.
  • Он не генерирует ложноположительных сигналов около 2 часов.

На самом деле, я применил это решение -> >https://www.youtube.com/watch?v=2HbbQIqJHoE

,

1

Я тоже сталкивался с той же проблемой. Но в конце концов проблема была решена.

Проблема в том, что датчик PIR, поставляемый с ESP8266, может работать как с напряжением 3,3 В, так и с напряжением 5 В. По умолчанию проводка подключена к 5 В, что может нормально работать для устройства Arduino, но не для ESP8266.

Я просто вынул красный кабель (кабель питания) из разъема и подключил с другой стороны, где вы можете видеть H. На этой стороне также есть 3 контакта. Полностью снимите перемычку и подсоедините ее к первому контакту сверху.

Просто убедитесь, что вы оставили GND и выход как есть, но только красный провод будет подключен к первому контакту на другой стороне датчика PIRplease see the attached image.

,

1

Я наклеил немного алюминиевой фольги на кусок коробки из-под хлопьев и сложил его вокруг датчика PIR. Работает как заклинание!

,

Хороший хак, надежен ли он, можете ли вы поделиться изображением, как это выглядит в конце?, @Rahul Sharma