Introduction: Arduino Cat Detector SD Card Logger

Picture of Arduino Cat Detector SD Card Logger

I used:

an Arduino Uno
a Parallax PIR Motion Sensor
and
a Seeed Studio SD Card Shield


Arduino, shield, sd card, logging shield, storage, logger

Check out This instructable on PIRs in case you didn't know what it is:
https://www.instructables.com/id/PIR-Motion-Sensor-Tutorial/

Step 1: Connect Your PIR Sensor

Picture of Connect Your PIR Sensor
Hook up the PIR Sensor

Ground pin to Ground
VCC pin to 5V
OUT to A5


To better help you understand how to hook it up:
Arduino PinPIR Sensor Pin
GND GND
5V VCC
A5 OUT

Also hook up and LED to pin 9 on the arduino

You might need to use a breadboard to hook it up right.
I've included a Frizing file to illustrate the device hookups.

Step 2: Test Your PIR Sensor

Picture of Test Your PIR Sensor
Now enter this code into your Arduino

void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
  pinMode(A5, INPUT);
}

void loop() {
  if (analogRead(A5) < 1){
    digitalWrite(9, LOW);
    Serial.println("No cats");
  }
  delay(200);
  if (analogRead(A5) > 0){
    digitalWrite(9, HIGH);
    Serial.println("Cat detected");
  }
}

After you hooked up the Motion Sensor and the LED and uploaded your code to the Arduino, wave your hand in front of the sensor. If the LED lights up then you did it right. Sit still for a few seconds and the LED will go off.
You can also open the Arduino Serial Monitor to see whats going on.

Step 3: Connect You SD Card Sheild

Picture of Connect You SD Card Sheild

Now that your Motion Sensor is working you want to log the times is senses motion.
So plug your new SD Card Shield into your Arduino and proceed to hookup the Motion Sensor and LED using the riser pins on the Shield.

All connections should be in the same place like on the Frizting file it shows.

Step 4: Log Your Cats

Picture of Log Your Cats
Now that its all hooked up, upload this code to your arduino:

NOTE: Your going to have to install the updated SDFat Library in order for this to work you can find it at:
http://code.google.com/p/sdfatlib/downloads/list

/* This code was stolen and modified from the examples
provided along with thte sd fat library found at
http://code.google.com/p/sdfatlib/downloads/list
*/
/*
* Append Example
*
* This sketch shows how to use open for append.
* The sketch will append 100 line each time it opens the file.
* The sketch will open and close the file 100 times.
*/
#include <SdFat.h>

// filename for this example
char name[] = "CATS.LOG";

// SD chip select pin
const uint8_t chipSelect = SS;

// file system object
SdFat sd;

// create Serial stream
ArduinoOutStream cout(Serial);

// store error strings in flash to save RAM
#define error(s) sd.errorHalt_P(PSTR(s))
//------------------------------------------------------------------------------
void setup() {
  pinMode(9, OUTPUT);
  pinMode(A5, INPUT);
  Serial.begin(9600);
  if (!sd.begin(chipSelect, SPI_HALF_SPEED)) sd.initErrorHalt();

}
//------------------------------------------------------------------------------
void loop() {
  if (!sd.begin(chipSelect, SPI_HALF_SPEED)) sd.initErrorHalt();
  ofstream sdout(name, ios::out | ios::app);
 
  if (!sdout) error("open failed");
  delay(200);

  if (analogRead(A5) < 1){
    digitalWrite(9, LOW);
    Serial.println("No cats");
  }    
    
  if (analogRead(A5) > 0){
    digitalWrite(9, HIGH);
    int minutes = millis()/1000/60;
    int seconds = millis()/1000;
    int milliseconds = millis();
    //to make it easier to read the time stamps divide number of
    //milisecons by seconds by minuts.
    Serial.print("Cat detected ");
    Serial.print(minutes);
    Serial.print(" minutes ");
    Serial.print(seconds);
    Serial.println(" seconds after arduino boot.");  
    sdout << "Cat detected " << millis()/1000/60 << " minutes " << millis()/1000 << " seconds after arduino boot." << endl;
    sdout.close();
  }
  if (!sdout) error("append data failed");
}

Now let it run for a while. Turn off you Arduino and remove the SD card. You can now plug the SD card into your computer and read the log file your arduino created.

In my final connections I used an additional prototyping shield with a mini breadboard so I could place the whole thing in a small space.

Comments

Tstef (author)2017-06-26

Why is the PIR sensor attached to an analog pin? It is, after all, a digital sensor, i.e. either on (motion) or off (no motion).

babulalgandhi1990 (author)2016-12-02

Could You Please Make Arduino Uno + PIR Sensor + RTC 3231 + SD Card Module Security DataLogger.

Thanks In Advance

u971 (author)2016-01-29

Used this but altered cat to intruder so would know when someone had been in a room,with a sd card shield was much more easy,Made for a good low level security logger.

UtkarshJ (author)2015-05-12

Can you please do tghe same thing with an hcsro4 sensor atleast the code

Fission Chips (author)2014-10-27

Nice! Just a tip: You may, on Step 3, change the title to "Connect your SD card shield. It had some typos. But apart from that, nice work and keep on being an awesome Arduino techie!

Dominic Bender (author)2012-08-27

Cool! I need to dig out some of my scrap PIR-modules and see whether one of them works for this. Already wondering where to put such a contraption...

powerman666 (author)2012-08-25

After completing this project, I thought to myself this could lead to some sort of interactive automated cat toy.

About This Instructable

14,180views

30favorites

License:

Bio: Evil Mad Scientist, Atari Punk Console Maker, Avante Garde Contemporary Artist, Air Metal Musician
More by powerman666:A Simple LED TowerFM Radio Velleman Mini Kit 118RS ModifiedLED Strobe Pumpkin Decoration for Halloween for only $3
Add instructable to: