ESP8266 – Mini PIR

Table of Contents

Sources

				
					//    _  ___          __   _     _
//   | || \ \        / /  | |   (_)
//   | || |\ \  /\  / /__ | |__  _
//   |__   _\ \/  \/ / _ \| '_ \| |
//      | |  \  /\  / (_) | |_) | |
//      |_|   \/  \/ \___/|_.__/|_|.com
//
// PIR I used: https://unusualelectronics.co.uk/wordpress/wp-content/uploads/Pir-AS312.pdf
// Switch delay is about 2 seconds.
// Tested with NodeMCU v3

#define LED LED_BUILTIN // Define the LED ure using

int oldTime;
int oldValue;

void setup() {
  //Init INPUT/OUTPUT
  pinMode(D2, INPUT_PULLUP);
  pinMode(LED, OUTPUT);
  //Init Serial
  Serial.begin(115200);

  delay(250);
  Serial.println("");
  Serial.println("");
  Serial.println("  _  _ __   v1.0   __     _      _ ");
  Serial.println(" | || |\\ \\        / /    | |    (_)");
  Serial.println(" | || |_\\ \\  /\\  / /___  | |__   _ ");
  Serial.println(" |__   _|\\ \\/  \\/ // _ \\ | '_ \\ | |");
  Serial.println("    | |   \\  /\\  /| (_) || |_) || |");
  Serial.println("    |_|    \\/  \\/  \\___/ |_.__/ |_|");
  Serial.println("");

  // Tests the LED if it works
  for (int i = 0; i <= 5; i++) {
    digitalWrite(LED, LOW);
    delay(200);
    digitalWrite(LED, HIGH);
    delay(200);
  }

  oldTime = millis();
  Serial.println("Initialization done");
}

void loop() {
  // Reads D2 value
  int value = digitalRead(D2);

  // Checks the Value
  if (value == 0 && oldValue == 1) {
    oldValue = 0;
    Serial.println("Value = 0");

    Serial.print("Time since last change: ");
    Serial.print((millis() - oldTime) / 1000);
    Serial.println("s");
    oldTime = millis();

    digitalWrite(LED, HIGH);
  }
  else if (value == 1 && oldValue == 0) {
    oldValue = 1;
    Serial.println("Value = 1");

    Serial.print("Time since last change: ");
    Serial.print((millis() - oldTime) / 1000);
    Serial.println("s");
    oldTime = millis();

    digitalWrite(LED, LOW);
  }
  delay(50);
}
				
			

Leave a Comment