ESP8266 with PIR Motion Sensor: Complete Guide





The ESP8266 is a versatile Wi-Fi-enabled microcontroller that can be used for a wide range of IoT and automation projects. In this comprehensive guide, we will explore how to use an ESP8266 with a Passive Infrared (PIR) motion sensor to create your own motion-activated projects. PIR sensors are affordable, easy to use, and highly effective at detecting human or animal movement within their range.

Working Principle

What is a PIR Sensor?

Image of pir sensor with it's pcb

A PIR sensor, short for Passive Infrared sensor, is designed to detect changes in infrared radiation. It can sense the heat emitted by living beings or objects with a temperature above absolute zero. PIR sensors consist of a pyroelectric sensor and a special lens that allows them to detect changes in the surrounding infrared radiation.

How Does a PIR Sensor Work?

PIR sensors work based on the principle that moving objects emit heat in the form of infrared radiation. When an object moves within the sensor’s field of view, it causes a change in the amount of infrared radiation reaching the sensor. The sensor detects this change and triggers an output signal.

PIR sensors typically have two pyroelectric sensors placed in a symmetrical arrangement. When no motion is detected, the sensors generate equal and opposite signals, which cancel each other out. However, when motion occurs, one sensor’s output becomes larger than the other, resulting in a measurable voltage difference.


To get started with an ESP8266 and a PIR sensor, you’ll need the following components:

  • ESP8266 board (e.g., NodeMCU)
  • PIR motion sensor
  • Jumper wires

Here’s how to wire the components:

  1. Connect VCC: Connect the sensor’s VCC (Voltage Common Collector) pin to the 3.3V output on the ESP8266.
  2. Connect GND: Connect the sensor’s GND (Ground) pin to any of the ESP8266’s GND pins.
  3. Connect OUT: Connect the sensor’s OUT (Output) pin to one of the ESP8266’s digital pins (e.g., GPIO2).


int pirPin = 2;  // Define the digital pin where the PIR sensor is connected
int ledPin = 13; // Define the built-in LED pin

void setup() {
  pinMode(pirPin, INPUT);  // Set the PIR sensor pin as INPUT
  pinMode(ledPin, OUTPUT); // Set the LED pin as OUTPUT
  Serial.begin(115200);   // Initialize serial communication

void loop() {
  int pirState = digitalRead(pirPin); // Read the PIR sensor state

  if (pirState == HIGH) {
    digitalWrite(ledPin, HIGH);  // Turn on the LED when motion is detected
    Serial.println("Motion detected!");
    delay(1000); // Wait for 1 second
  } else {
    digitalWrite(ledPin, LOW); // Turn off the LED when no motion is detected


In this guide, we’ve explored how to use an ESP8266 with a PIR motion sensor to detect motion and control an LED. You can expand on this project by integrating it into various applications, such as security systems, automatic lighting, or interactive displays. PIR sensors are versatile and can add a layer of intelligence to your ESP8266-based IoT projects.

FAQ (Frequently Asked Questions)

Q1: Can PIR sensors detect any motion?

PIR sensors are designed to detect living beings or objects that emit infrared radiation. They are less sensitive to slow or small movements and may not detect non-thermal motion.

Q2: How can I adjust the sensitivity of a PIR sensor?

Many PIR sensors have adjustable sensitivity and time delay settings. Refer to the datasheet of your specific sensor model to find information on adjusting these parameters.

Q3: Can I use multiple PIR sensors together?

Yes, you can use multiple PIR sensors together to cover a larger area for motion detection. Each sensor should be connected to a separate input pin on the ESP8266.

Troubleshooting Q&A

Q1: My PIR sensor is always triggered. What should I do?
  • Check your wiring and ensure that the sensor is properly connected.
  • Adjust the sensitivity and time delay settings on the sensor if available.
  • Make sure there are no heat sources or moving objects in the sensor’s field of view.
Q2: The LED doesn’t turn on when motion is detected. What could be the issue?
  • Verify your wiring connections.
  • Ensure that the LED and its current-limiting resistor are connected correctly.
  • Check if the PIR sensor is working by observing its output with a serial monitor.

With the knowledge gained from this guide, you can start creating your own motion-activated ESP8266 projects and explore the possibilities of PIR sensors in IoT and automation applications.

Leave a Reply

Your email address will not be published. Required fields are marked *

Explore our other blogs.

  • 8-bit vs. 32-bit Microcontrollers in Today’s Projects

  • Nintendo Sues Creators of Popular Switch Emulator Yuzu, Citing Piracy Concerns

  • Raspberry Pi CPU Temperature Range – Everything You Need to Know

  • image of tunnel

    Reverse Tunneling with Raspberry Pi: A Comprehensive Guide