-
Experiments using a D-Link DCS-942L
03/15/2016 at 04:40 • 0 commentsRather than continue to struggle with the lousy low-light performance of the RasPi camera, I bought a purpose-built security camera, the D-Link DCS-942L (also sold as the "Cloud Camera 1200").
This camera is an Ethernet/WiFi device; although I found its WiFi reception so lousy I had to cable it to hardwired Ethernet. It gracefully supports both. This Camera has a smart web server running on it. Among other functions, it can FTP clips and stills to another computer when it detects motion in a pre-selected area of view. So I use this feature to upload captured motion clips to a PyBall, and use the PyBall as a web server to conveniently display what it's seen. The home page displays a live video feed, and the Events page displays a thumbnail collection of all of the motion-detection clips it's captured.
I have a sub-repo posted on Github with the components for this web server. It's very basic and clunky right now, but if you're proficient with Linux you should be able to get it to work.
-
Who's taking the candy?
11/23/2015 at 00:20 • 0 commentsWe live in a neighborhood that's pretty quiet around Halloween, but we leave a bowl of candy out just in case. And it's always empty by the time we get home.
So, who was taking the candy?
I tried to set up a Pyball to find out. This was done in a hurry, so my hacked together image-difference algorithm was not sophisticated. It just captures two images a second apart, finds the difference of the two images, and computes the mean of the RMS of the differences. In Python, using the PIL library, this is:
deltaImg = ImageChops.difference( baseImg, newImg ) deltaStats = ImageStat.Stat( deltaImg ) rmsValue = numpy.mean( deltaStats.rms )
In reasonable light this seemed to work OK. But when I deployed it to watch the candy bowl I ran into some unexpected problems.
- The default low light performance of the RasPi camera is terrible. I think the only way to get anything useful when the light drops to a lower level is to manually control the shutter speed/ISO of the camera (run raspistill and look under "Image parameter commands").
- Having a decoration full of LED lights really threw the camera for a loop. Because the cheap decoration didn't bother to rectify the power to the LEDs, they blink at 30Hz. Depending on when the shutter snapped, this seemed to wildly throw off the camera exposure, and cause a lot of false positives in my simple motion detection.
I'll be looking into more sophisticated algorithms, both for exposure control and motion detection.
So here's the one photo that sort of worked (though the contrast was massively boosted in Photoshop)
-
Updated External Links.
08/25/2015 at 07:12 • 0 commentsUpdated external links with Github repo and the sample video output.
-
Setup File
08/17/2015 at 20:24 • 0 commentsI've posted the scripts I'm currently using on Github. Recently added is a setup script to put all of the components in place. This simplifies setting up an RPi for use with Pyball.
-
Video Posted!
08/17/2015 at 19:49 • 0 commentsI've posted sample time-lapse output from PyBall.
-
Hardware configuration details updated.
08/17/2015 at 03:11 • 0 commentsJust updated with more details about the hardware configuration. In particular, updating the WiFi adapter to a model with a longer antenna solved communications problems with the base station 80 feet away.
-
More software setup details.
05/25/2015 at 05:19 • 0 commentsPost more details of the software environment setup; mostly the basics required to get the Pi online. See the project details, under "Software Setup".
-
Details forthcoming...
04/27/2015 at 01:59 • 0 commentsI wanted to get an initial Pyball up as soon as possible, to record some environmental destruction happening across the street. Meanwhile, I have another set of hardware on order (Ras-pi + camera) I can use as a test platform. Once the software is cleaned up & tested there, I'll post it on Github.