Willem, from The Secret Batcave in South London, is piqued with irritation by the Shard, which interrupts his view from pretty much everywhere he looks. The Shard, for non-Brits and for those Brits who have been living…in a cave, is 95 storeys of incongruous Qatari-owned phallomorphism designed by the guy behind the Pompidou Centre in Paris. It’s the tallest building in the EU, at 309.6 metres. It’s out of place, madly disproportionate, looms over the city like a great big monument to stupid domineering excess, dwarfs the Wren churches of the City of London and even the converted power station that houses the Tate gallery, and was described by John Prescott as being of “the highest architectural quality,” which really tells you all you need to know.
I do not like the Shard. I’m not a Luddite; I say this as a person with a great fondness for the Erotic Gherkin and the Spiral extension of the V&A that never got built. London’s a living city, and new buildings are part of its evolution. But good architecture has something to say; all the Shard has to say is “Whee! I’m bigger than you!”, while trying to stab you in the eye. (And trying to get you to fork over £25 to go to the top to have a look out of the window. It’s a Tourist Attraction, you see.)
At least I don’t live in London, though. Unlike poor Willem, who has to look at the damn thing every day.
But Willem has realised that his rage can be assuaged with a little dose of sour grapes, and that information is beautiful even if the Shard isn’t, so he’s hooked a Raspberry Pi up to a camera pointing at the thing to remind himself that life at the top of the Shard isn’t always a light-bathed soak in other people’s views.
I live in South London, which means that the everywhere I look the Shard stands over me. Now its reported that a flat in this tower of Babel will cost north of £30 million quid. Lets hope the lifts work.
This wonderful splash of cash got me thinking, basically you buy this flat for the view. Now living in Britain as I do, I know that the weather is not really designed for long distant views. This got me thinking; if its grey and raining for a day, how much does it cost? Quite a lot as it turns out:
£30,000000 / (365 *10) = £8230 a day.
That’s right, rain costs eight grand a day.
Lets just go over those figures a little. We assume a flat costs £30 million, The Telegraph claims its up to £50M, however the estate agents seem to differ and peg it at around £20M. I’ll do what economists do and guess a number and swear its based on an accurate model. Likewise I assume that the average nouveau riche nonce will keep the flat for about ten years (I assume they’ll either die in a car crash, coke overdose, or have to sell it to fund an expensive vice of some sort).
If we plug those numbers into my proprietary financial model algorithm, we see that £30M spread over ten years equates to £8230 a day (with rounding). I also assume that you buy this type of flat for the view. Dividing it further, each rainy hour costs around £342. It’s even higher if you don’t count the night time.
So why do I need a webcam? Well I want to find out how often the shard is obscured by rain, and therefore how much money has been eaten by the British weather and then laugh at the ****s who splashed so much cash.
Presented without comment, because it’s perfect as it is. Thanks to John (would you believe this is his first ever bit of Python?), and thank you Judd! Python script and CAD design are available at NYCCNC.
“You can know the name of that bird in all the languages of the world, but when you’re finished, you’ll know absolutely nothing whatever about the bird … So let’s look at the bird and see what it’s doing—that’s what counts.” – Richard Feynman (well, his dad Melville really)
And how do you see what the bird is doing? With a Raspberry Pi of course. Francis Agius tells us how :
—
A robin visits the table: click for video
Inspired by other web cam posts I wanted to set up a web cam that I could use to record my garden bird table. New to this sort of thing there were several hurdles to overcome! The main two were getting a reliable wireless set up and also being able to run the Raspberry Pi off a battery so I could leave it running free standing outdoors. I also wanted if possible to use Arch Linux as it is a very lean OS, less than 10 seconds to boot up! For wireless network I have used a Tplink WN722N USB stick, this is supported by Arch Linux without any extra difficult setup.
The innards
For power I already had a spare 12 volt car battery and found a fantastic DC to DC converter at Maplin which has two outputs, USB 5v at 0.6 amps good for the the RPi and a second 5 volt output at up to 3 amps perfect for a powered USB hub which runs the camera and the WiFi stick, making it possible to run the whole setup from a single 12 volt car battery power supply. There are probably cheaper ways to get 5 volts from a 12 volt car battery but the Maplin product is very tidy and easy to use. My Raspberry Pi is running Arch Linux with additional packages motion and ffmpeg installed, there are lots of post on how to set these up. I can forward info on my setup if this this will help anyone.
Sealed up and ready for action
So to summarize I am using Arch Linux running motion and ffmpeg, I use ssh connect to my Rpi and start motion running, pictures are captured to the Rpi sd card. On my windows machine Winscp is installed which is great for moving the captured files from the Raspberry Pi to windows.
[Last updated on Feb. 2. 2013 for (2012-12-16-wheezy-raspbian) Kernel Version 3.2.27+]
Three years ago, we bought two small Webcams and since we wanted to used them on Linux and OS X, we went with the UVC and Mac compatible Creative LIVE! CAM Video IM Ultra. This Webcam (Model VF0415) has a high-resolution sensor that lets you take 5.0-megapixel pictures and record videos at up to 1.3-megapixel, supported resolutions include 640×480, 1290×720, and 1280×960. If you like, you can go back and read what I was thinking about the IM Ultra back in 2009. Today, it’s not much used anymore, but may just be the right accessory for an Raspberry Pi.
With the USB Camera attached to the Raspi, lsusb returns something like this:
lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS]
Bus 001 Device 005: ID 041e:4071 Creative Technology, Ltd
Using the current Raspbian “wheezy” distribution (Kernel 3.2.27+), one can find the following related packages, ready for deployment:
luvcview, a camera viewer for UVC based webcams, which includes an mjpeg decoder and is able to save the video stream as an AVI file.
uvccapture, which can capture an image (JPEG) from a USB webcam at a specified interval
While these might be great tools, mpeg-streamer looks like a more complete, one-stop-shop kind-of solution.
Get the mpeg-streamer source code
Either install Subversion (svn) on the Raspberry Pi or use svn installed on your Mac or PC, to get the source-code before using Secure Copy (scp) to copy it over to your Raspi.
Here, I’m using svn, which is already installed on the Mac, before copying the files over to my Raspi, (username pi, hostname is phobos)
cd ~
mkdir tmp
cd tmp
svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
scp -r ./mjpg-streamer pi@phobos:mjpg-streamer
Over on the Raspi, I tried to make the project, but quickly ran into an error messages hinting at a missing library.
ssh pi@phobos
cd mjpg-streamer/mjpg-streamer
make
...
jpeg_utils.c:27:21: fatal error: jpeglib.h: No such file or directory, compilation terminated.
make[1]: *** [jpeg_utils.lo] Error 1
After finding out which libraries were available (apt-cache search libjpeg), I installed libjpeg8-dev like so: sudo apt-get install libjpeg8-dev. And this time got a lot further before hitting the next build error:
After some google-ing, which resulted in installing ImageMagick like so: sudo apt-get install imagemagick, the next build attempt looked much more promissing:
make
..
and ls -lt shows the newly built files on top:
-rwxr-xr-x 1 pi pi 13909 Sep 8 07:51 input_file.so
-rwxr-xr-x 1 pi pi 168454 Sep 8 07:51 input_testpicture.so
-rwxr-xr-x 1 pi pi 31840 Sep 8 07:50 output_http.so
-rwxr-xr-x 1 pi pi 14196 Sep 8 07:50 output_udp.so
-rwxr-xr-x 1 pi pi 19747 Sep 8 07:50 output_file.so
-rwxr-xr-x 1 pi pi 29729 Sep 8 07:50 input_uvc.so
-rwxr-xr-x 1 pi pi 15287 Sep 8 07:50 mjpg_streamer
-rw-r--r-- 1 pi pi 1764 Sep 8 07:50 utils.o
-rw-r--r-- 1 pi pi 9904 Sep 8 07:50 mjpg_streamer.o
MJPG-streamer
MJPG-streamer is a command line tool to stream JPEG files over an IP-based network. MJPG-streamer relies on input- and output-plugins, e.g. an input-plugin to copy JPEG images to a globally accessible memory location, while an output-plugin, like output_http.so, processes the images, e.g. serve a single JPEG file (provided by the input plugin), or streams them according to existing mpeg standards.
Therefore, the important files that were built in the previous step are:
mjpg_streamer – command line tool that copies JPGs from a single input plugin to one or more output plugins.
input_uvc.so – captures such JPG frames from a connected webcam. (Stream up to 960×720 pixel large images from your webcam at a high frame rate (>= 15 fps) with little CPU load.
output_http.so – HTTP 1.0 webserver, serves a single JPEG file of the input plugin, or streams them according to M-JPEG standard.
Starting the Webcam Server
A simple launch command would look like this: ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
Open a Webbrowser on another computer on the LAN and open this url: http://{name or IP-address of the Raspi}:8080
However, experimenting with the resolution and frame rate parameters is well worth it and can improved the outcome.
UVC Webcam Grabber Parameters
The following parameters can be passed to this plugin:
-d
video device to open (your camera)
-r
the resolution of the video device,
can be one of the following strings:
QSIF QCIF CGA QVGA CIF VGA SVGA XGA SXGA
or a custom value like: 640×480
-f
frames per second
-y
enable YUYV format and disable MJPEG mode
-q
JPEG compression quality in percent
(activates YUYV format, disables MJPEG)
-m
drop frames smaller then this limit, useful
if the webcam produces small-sized garbage frames
may happen under low light conditions
-n
do not initalize dynctrls of Linux-UVC driver
-l
switch the LED “on”, “off”, let it “blink” or leave
it up to the driver using the value “auto”
HTTP Output Parameters
The following parameters can be passed to this plugin:
-w
folder that contains webpages in flat hierarchy (no subfolders)
-p
TCP port for this HTTP server
-c
ask for “username:password” on connect
-n
disable execution of commands
I have seen some good results with this ./mjpg_streamer -i "./input_uvc.so -n -f 15 -r 640x480" -o "./output_http.so -n -w ./www"
but even a much higher resolution didn’t impact the actually observed frame-rate all that much: ./mjpg_streamer -i "./input_uvc.so -n -f 15 -r 1280x960" -o "./output_http.so -n -w ./www"
The included Website (http://{name or IP-address of the Raspi}:8080) shows examples for how to connect a client to the Webcam stream. The easiest way is obviously a simple HTML page that works great with Google Chrome and Firefox but not so much with Safari. Anyways, it’s important to specify the width and height that was configured with the output_http.so, in the HTML as well
This is the Raspberry Pi powered by a 5VDC, 700mA battery, with an (Edimax EW-7811Un) USB-WiFi Adapter and the Creative LIVE! CAM Video IM Ultra connected.
Video Lan Client for Viewing and Recording
Using Video Lan Client, you can view and also record the video stream, served by the Raspi.
Recorded Webcam Streamer
Movie, streamed from a Raspberry Pi
Let me know what Webcam software you found that works well on the Raspberry Pi.