Motion Sensor

written by hek
The **HC-SR501** motion sensor has several nice features such as sensitivity adjustment and trigger delay.

It is very simple to connect the HC-SR501 to your Arduino however this sensor requires 5 VDC so you will need to use a step-up regulator if you are running the 3.3V version of the Arduino Pro Mini.


A small video showing how to build a motion sensor:

Wiring Things Up

Start by connecting the radio module.

Sensor Arduino Comment
VCC VCC (5-20V) Red
OUT Digital pin 3 (D3) Green

Trimpot Sx - Set sensitivity

Trimpot Tx - Trigger length (5sec - 200sec)


Last updated by tekka007, 24 Jul 2022, "Upate CI and HW defs (#1530)"
 * The MySensors Arduino library handles the wireless radio link and protocol
 * between your home built sensors/actuators and HA controller of choice.
 * The sensors forms a self healing radio network with optional repeaters. Each
 * repeater and gateway builds a routing tables in EEPROM which keeps track of the
 * network topology allowing messages to be routed to nodes.
 * Created by Henrik Ekblad <[email protected]>
 * Copyright (C) 2013-2019 Sensnology AB
 * Full contributor list:
 * Documentation:
 * Support Forum:
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 * Version 1.0 - Henrik Ekblad
 * Motion Sensor example using HC-SR501

// Enable debug prints
// #define MY_DEBUG

// Enable and select radio type attached
#define MY_RADIO_RF24
//#define MY_RADIO_NRF5_ESB
//#define MY_RADIO_RFM69
//#define MY_RADIO_RFM95

#include <MySensors.h>

uint32_t SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds)
#define DIGITAL_INPUT_SENSOR 3   // The digital input you attached your motion sensor.  (Only 2 and 3 generates interrupt!)
#define CHILD_ID 1   // Id of the sensor child

// Initialize motion message
MyMessage msg(CHILD_ID, V_TRIPPED);

void setup()
    pinMode(DIGITAL_INPUT_SENSOR, INPUT);      // sets the motion sensor digital pin as input

void presentation()
    // Send the sketch version information to the gateway and Controller
    sendSketchInfo("Motion Sensor", "1.0");

    // Register all sensors to gw (they will be created as child devices)
    present(CHILD_ID, S_MOTION);

void loop()
    // Read digital motion value
    bool tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH;

    send(msg.set(tripped?"1":"0"));  // Send tripped value to gw

    // Sleep until interrupt comes in on motion sensor. Send update every two minute.
    sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME);


NameSize# Downloads
31227sc.pdf854.17 kB7694

Shopping Guide

5pcs HC-SR501 PIR Motion Sensor Module
Detect motion. Features include adjustable sensitivity and trigger delay
Unavailable   Buy
undefined   Buy
Mini PIR Motion Sensor Module
IR Detector Module Pyroelectric Infrared. Small: 10 * 23mm
Unavailable   Buy
undefined   Buy


Sensors & Actuators

Related Content