used:
an Arduino Uno
a Parallax PIR Motion Sensor
and
a 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 Pin | PIR 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.
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.
Post a Comment