I have now refined my "CritterCam" based on experiences to date and am pretty happy with the result. It meets most requirements of the brief though there are one or two refinements that might get added.
In short, the CritterCam is a RPi based device that will operate as a wireless motion detector, capturing images using either a WebCam for 720p resolution or a DSLR for 12mb resolution. It is integrated with a small PHP application that also runs on the RPi courtesy of a LAMP install. The device will operate in either of two modes, the first being the most portable, using a 720p webcam and being based on the OpenCV library. The second uses a USB connected DSLR, in my case a Canon 500D, and relies on the gphoto2 library (libgphoto2) augmented by a wrapper called "piggyphoto". Obviously, portability goes down when you add a DSLR!
The options provided by the CritterCam are shown below:
Usage: CritterCam.py [options]
Options:
-h, --help show this help message and exit
-k, --keep Save a static file (/var/www/camimages/stream.jpg)
and do nothing else
-d DELAY, --delay=DELAY
Delay between captures
-s, --stream Stream timestamped images
-m, --motion Stream time stamped images triggered by motion
-r, --dslr Use DSLR capture rather than using webcam
-t THRESHOLD, --threshold=THRESHOLD
Motion threshold
-v, --verbose Produce extra status and progress messages
Options:
-h, --help show this help message and exit
-k, --keep Save a static file (/var/www/camimages/stream.jpg)
and do nothing else
-d DELAY, --delay=DELAY
Delay between captures
-s, --stream Stream timestamped images
-m, --motion Stream time stamped images triggered by motion
-r, --dslr Use DSLR capture rather than using webcam
-t THRESHOLD, --threshold=THRESHOLD
Motion threshold
-v, --verbose Produce extra status and progress messages
Within it's processing loop CritterCam will check for the existance of several action generating flag files left in the /var/www/ by it's PHP partner:
- Restart.flg - Causes an exit with a zero return code. Invoking shell script loops
- Shutdown.flg - Causes an exit with a one return code. Invoking shell script exits
- Reset.flg - Causes a reset of the current base image to the most recent capture. Useful in case the app itself has not detected a change in background.
- Force.flg - Causes the app to capture a full resolution image even without the motion trigger.
Here is a link to the source code for the CritterCam. It still does some weird stuff now and again and will continue to be enhanced. It is partnered with a PHP application but that app is based on my own forms development environment so is a little complicated to easily make available for download.
The most major enhancement that I would like to add would be an external batter for the DSLR. I know that I could buy one but I already have the AC adapter and am thinking I would just hijack it, add a couple of 5.2mm plugs and sockets, splice in a DC power regulator and have something that could also live on the tripod.
No comments:
Post a Comment