BREAKING NEWS

28 October 2015

Arduino Cat Detector SD Card Logger


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

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


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
GNDGND
5VVCC
A5OUT

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.

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.

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.


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:


/* 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.



Share this:

Post a Comment

 
Back To Top
Distributed By Blogger Templates | Designed By OddThemes