Things used in this project

Hardware components:
Photon new
Particle Photon
13285 01
PIR Motion Sensor (generic)
The particle maker kit sensor works great, however any generic PIR sensor could possibly
Software apps and online services:
Google sheets
Google Sheets


Photon to PIR sensor
Battery pack attachment is not shown.
Photon pir diagram mabtelnamz
Interior Construct
20170412 192208 6bvm1vjwjm
Exterior Construct
20170412 192347 iy7tzbnblm
20170412 204039 jsefcpnhaz
This is the full video explanation
Motion Sense Graph
This graph is a live feed of the motion sensor that gives a timestamp when it is activated.


Motion SensorJSON
// This #include statement was automatically added by the Particle IDE.
#include "lib1.h"

int inputPin = D0;              // choose the input pin (for PIR sensor)
int ledPin = D1;                // LED Pin
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status

int calibrateTime = 10000;      // wait for the thingy to calibrate

void setup()
  pinMode(ledPin, OUTPUT);
  pinMode(inputPin, INPUT);     // declare sensor as input


void loop()

  // if the sensor is calibrated
  if ( calibrated() )
  // get the data from the sensor

    // report it out, if the state has changed

void readTheSensor() {
  val = digitalRead(inputPin);

bool calibrated() {
  return millis() - calibrateTime > 0;

void reportTheData() {

  // if the sensor reads high
  // or there is now motion
  if (val == HIGH) {
    // the current state is no motion
    // i.e. it's just changed
    // announce this change by publishing an eent
    if (pirState == LOW) {
      // we have just turned on
      Particle.publish("Motion Detected", "Motion Detected", PRIVATE);
      // Update the current state
      pirState = HIGH;
      setLED( pirState );
    String tempMessage = "1";
    Particle.publish("googleDocs", "{\"my-name\":\"" + tempMessage + "\"}", 60, PRIVATE);
    Particle.publish("pushbullet", "Teacher Tracker: your teacher is back. RUN!", 60, PRIVATE);
  } else {
    if (pirState == HIGH) 
      // we have just turned of
      // Update the current state
      pirState = LOW;
      setLED( pirState );
 void setLED( int state )
  digitalWrite( ledPin, state );
void publish() {
// Get some data
String data = String(10);
// Trigger the integration
Particle.publish("Motion detected", data, PRIVATE);
// Wait 60 seconds
int inputPin = D0;              // choose the input pin (for PIR sensor)
int ledPin = D7;                // LED Pin
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status

void setup()
        Particle.subscribe("Motion Detected", data, MY_DEVICES);

void data (const char *event, const char *data){
        if(strcmp(data, "Motion Recieved")==0)
            digitalWrite (ledPin, HIGH);
            Serial.println("Motion Recieved");


Jose Giacopini

It's always fine



Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback


Similar projects you might like

Other Clocks
  • 183
  • 3

Work in progress

A combination of 3 different clocks in one frame.

ConnectTheDots with Particle Azure IoT Hub Integration
  • 554
  • 6


This project will allow you to connect your Particle device into an Azure IoT Hub for viewing data in real-time through an ASP.NET web app!

Weather Aware Sprinkler Controller
  • 1,291
  • 16

Full instructions

6 station Photon controller uses the Weather Underground API to prevent watering when windy, rainy, or too cold.

Christmas Gift Box
  • 3,602
  • 595

Full instructions

Christmas Gift Box plays music and sends an email when it is opened.

Simple Environmental Monitoring
  • 1,536
  • 13

Full instructions

Particle Photon circuit allowing the display of environmental conditions (light, temperature, humidity, pressure) using the Blynk app.

  • 245
  • 2


Yet another temperature-humidity sensor publishing to dweeter, with WiFi auto-disconnect and a push button to read daily max and min values.

Add projectSign up / Login