Coming Soon… BerryCam Express – control your Raspberry Pi camera from ANY Device. by James Moore

BerryCam with themes on iPad and Android

It's been amazing to see what everybody has been doing with BerryCam and I am absolutely delighted with the support and enthusiasm everybody has shown for the app itself. But there was always one thing missing and that was support for all platforms including Android, Windows Mobile or even just your average desktop or laptop. And it wasn't truly open. For new features, they needed to be asked for. And with limited time I was finding it difficult to implement them all...

Nexus 7 running BerryCam Express

So I came to a decision; one that was quite easy to make. End the development lifecycle of the current BerryCam iOS App, refactor the code into a super slim HTML/KnockoutJS web app hosted directly on the Pi and give everybody the chance to run it on any device they wish.

BerryCam TimelapseAnd at the same time, introduce a whole new pile of improvements including timelapse support with time-window capture and user definable capture intervals.  Essentially it's BerryCam and the time-lapse  script merged into one app; with the same easy-to-use front end.

What this does mean, is that inevitably support for the native iOS app will be ended, and in turn the app will be withdrawn from the App Store in a few weeks. But this new version will be so much more easy to set up and use on any device you wish.

And for all you hackers out there; it will be fully open source. So you can continue to enjoy Pi Photography and customise it to your own needs.

Talking of customisation; there's also a pile of new themes that allow you to skin up your app the way you like it. Again, there are no limits to what you can do here and I look forward to seeing pimped-up or super sleek UIs for the app in the future! All the LESS source is part of the app package which will be put up onto the repo soon.

Again, thanks everybody for the support. I'll post an update with the repo links and instructions once it's all finalised! -- Jim

Introducing LEDBorg Express by James Moore


One of the most common questions related to my Raspberry Pi projects is whether or not there is planned availability for Android devices. I'm now looking at doing this from now on for any Pi projects using a more flexible Python-driven web-application base. Starting off with the original LEDBorg app, I have now pushed a web version to the repo. This application lives on the Pi and can be accessed from any device on the same network. This includes any desktop or laptop, smartphone or tablet and as long as it has internet connectivity and a decent browser it will work.

In the coming weeks I'll be doing the same for BerryCam combining its functionality with the Timelapse Camera ensuring that it continues to develop as the various operating systems evolve and extending the app's reach to our friends using Android, Blackberry and Windows Mobile.

You can get the full build of LEDBorg Express on the Repo at

Geló Tutorial 18 – Create colourful lock screen backdrops for iOS7 by James Moore

Coloured Lock Screens in iOS7 using Geló

With the release of iOS7 and the new iPhones, it's all about colour in Apple's new revamp. There has been a widely mixed response to the new look and feel of iOS7, but the whole process has generally been a reductive one - simplifying layouts and interface elements. Where everything was once bezeled or polished and textured, we now have spans of empty space, light space, simple text prompts and subtle layering effects.

The minimal clean lock screen for iOS7 has come in for a bit of criticism in its layout and how certain images will obscure items like the time or 'slide to unlock' prompt. I think to a degree that this forces us to think more about the images we use on these screens, and edit our images accordingly.

In this tutorial, I'll show you how we can make the most of all this shiny new screen space, and enhance your images to create vivid, yet simple lock screen backdrops.


First of all we need to think about composition. Before we edit anything at all, we need to think about the image we want to use, and how it fits into the portrait screen format. If you look at desktop screensavers, or indeed the pre-bundled images on the device, the structure of the images are generally simpler with tight crops on shapes and textures in a range of simple tones.


Most screensaver images have a flatter tonal range in that they do not have areas of high contrast. This eliminates clashes with interface elements and helps the image to blend into the backdrop. That said, certain images with areas of high contrast when coupled with a simpler composition can make for really striking images and backdrops.


Another area to consider is colour. Again, many backdrops opt for subtle colours, mixed with a flatter tonal range. Clashy colours, while striking can break up the layout of the screen and make things like icons and text difficult to see. And sometimes solid areas of colour, like high contrast can swamp overlaid elements so they are not easily visible.

One positive aspect to this can be that  the underlying colour scheme of your images does in turn have an impact on other areas of the whole iOS7 experience; in the notifications centre and control centre. And we can make this work this to our advantage, just as Apple intended.

Update the colour character of your phone with Geló

Making your images work

Using Geló we can take an image with varying levels of contrast and complexity and using simple colouring techniques make them into really cool lock screen images. Using belnd modes like the standard over setting we can intensify colour, neutralise tonal ranges and give images a graphic twist.

Or you could try shapes to break images up into something more abstract. Multiple layered edits using a processed image can create patterns and abstract visual effects. I am actually working on layers for Geló so you need to save out and reload for now.

Take a look at the example images above and see for yourself how you can create striking lock screens with your photos. Don't be afraid to experiment!

Download Geló today and try it for yourself. Your colours with your images.


Simple timelapse camera using Raspberry Pi and a coffee tin by James Moore


Whilst developing BerryCam I thought it would be pretty cool to create a timelapse camera that could be left outdoors over a period of time, to capture a sequence of images that could be later joined together into a video clip. From the outset thoughts turned to housing everything in an 'Illy' coffee tin as it was pretty robust, watertight and could easily contain the Raspberry Pi and battery pack.

What you need

  • Raspberry Pi - Model A or B (A has better battery life)
  • Raspberry Pi camera module installed and set up
  • Illy coffee tin or similar sized container. Watertight and metal is best.
  • Some clear plastic, taped onto outer tin over hole
  • Plastic holder for camera. I used the lid from the case of these batteries
  • Elastic bands to hold the camera and cable in position
  • Battery pack - a 4xAA unit is best for size to power rating - I used this one
  • The Python script. Download from the FotosynLabs repo here

Setting up the camera

A small hole drilled into the side of the tin allows the camera module to peer out of the tin. Living in Scotland rain is always a factor, as is the sea spray where I have been testing the device out. Using some clear plastic - the sort you get on moulded packaging, was ideal to keep everything enclosed and safe from water. But make sure you use an area that is flat and free from scratches or blemishes and that it is of good quality plastic (ie almost perfectly clear).

Showing hole drilled near top of tin with Velcro fasteners
Showing hole drilled near top of tin with Velcro fasteners

Showing hole drilled near top of tin with Velcro fasteners

The camera module was mounted onto a plastic holder to easily allow for handling, adjustment and repositioning using Velcro tabs to mount this to the inside of the tin. Everything is held together with elastic bands, so changes in temperature and moisture won't have as an immediate effect on adhesives. I had originally used electrical tape but the adhesive became soft, slightly gloopy and the pull of the ribbon between the Raspberry Pi and camera module had caused things to move about too easily.

Filling in behind this, is the power supply which keeps everything snug when in use. The particular unit has a handy power switch on top so you can easily switch the device on and off.

Inner workings of tin, all hooked up.
Inner workings of tin, all hooked up.

Inner workings of tin, all hooked up.

Everything loaded into the tin, top - camera module, middle - Raspberry Pi and bottom - battery pack.
Everything loaded into the tin, top - camera module, middle - Raspberry Pi and bottom - battery pack.

Everything loaded into the tin: top - camera module, middle - Raspberry Pi, bottom - battery pack.

Using velcro on the plastic mount means you can easily remove the whole unit whenever you need access. When installing, make sure the camera is level in the tin (the edges of the plastic mount helps when aligned with the inner lip) and ensure the lens has an unobstructed view through the hole by looking through from the outside. If the lens appears centrally in this hole then it should 'see' everything without the edges of the hole creeping into the captured image. Testing is the best option to make sure everything is straight. Grabbing previews quickly with BerryCam is and ideal solution to do this.

Make sure the camera lens has an unobstructed view through the hole drilled into the tin.
Make sure the camera lens has an unobstructed view through the hole drilled into the tin.

Make sure the camera lens has an unobstructed view through the hole drilled into the tin.

With the camera installed - the Raspberry Pi and battery pack can easily be lifted out of the tin to allow of access to the various ports. I find it rests easily on the top of the tin when connecting to a display and keyboard if you need to use the device with a display. SSH works without the need to remove if you have a network connection available.

Using the Python script and setting up Raspbian

Setting up Raspbian to control the camera is pretty easy. Using the script I opted for an automated startup when the device is booted up. That way there's no need for any SSH commands to be issued and it is simply a case of flicking a switch. To do this log into your box using Terminal on the Pi or log in remotely using Terminal or Putty.

ssh pi@XX.XX.XX.XX(where XX.XX.XX.XX is the IP address of your Raspberry Pi)

First of all, we'll need to get the Python script to control the camera. We'll copy this into the /home directory as it's easy to find and a good starting point, but copy to the place the suits you and your build. This is also a good time to create a folder to write images to, and change the permissions to make it writeable. This setup should work as the script writes to the folder /home/timelapse/ as a default; although you can change this if you wish. Just make sure you update the pathway within the Python script itself.

cd /home mkdir timelapse chmod 777 timelapse sudo wget

To check everything is installed, simply type


The script should be visible in the directory. Next, we can automate the startup so the camera activates each time it is powered up. To do we need to add a cron job. This will mean on each boot of the Raspberry Pi the script will activate and begin capturing images.

sudo nano crontab -e

At the bottom of the script insert

@reboot python /home/ &

Of course change /home to the correct pathway where you have the script.

Save this script (CTRL + X) and "Y" Rebooting the device will mean this script executes. On testing I found that it needs a full shutdown before this will reliably work each time. So to reuse the device you'll need to log in, and perform a shutdown with

sudo shutdown "now"

Once you have shut down correctly, you can simply switch on the Raspberry Pi's battery power supply and the script will launch normally when the device boots up. This is easpecially useful if you're deploying the timelapse camera for an extended period outside the range of network connections.

Issues with Crontab

There are some issues with using the above script and restarting the Pi. Dougie Lawson has very kindly posted some advice over on the Raspberry Pi forums on how to use init.d to make things startup more reliably.

A transcript of Dougie's comments below...

Edit add #!/usr/bin/python save it chmod 755 That means you can execute it by typing rather than python, which is a bunch easier.

Then we can use an /etc/init.d script to get it started when the system boots.

Start by copying /etc/init.d/skeleton to /etc/init.d/timelapse. cd /etc/init.d && sudo cp skeleton timelapse edit /etc/init.d/timelapse (use sudo nano or sudo vi) change lines 23 & 24 to refer to the command /home/pi/ you need to start at boot time (the skeleton has good comments). save it. sudo chmod 755 /etc/init.d/timelapse # to make it executable sudo update-rc.d timelapse enable # gets it started at system boot and killed at shutdown

Using the camera will create a folder for each timelapse session. You can change where this saves within the .py file but as a default this is in the same location in a subfolder. This way you can easily grab all the images from a session and then sequence them into an animation or video clip.

The effects and adjustments are all still available as it uses raspistill to capture images. Simply edit these parameters within the script if you want to make changes.

Next thing is to use it! There are no rules but as a suggestion best times are at dawn and dusk when the light is at its most changeable and dramatic. Many photographers refer to this time as the 'Golden Hour'

Shooting overnight proved a bit more tricky with everything in darkness. I guess there would be a trade-off between the required increase in exposure time and battery life. Under normal conditions I was getting around 7.5 hours uptime using standard Durcaell AA batteries and a Raspberry Pi Model B.

The Timelapse Camera set up in position
The Timelapse Camera set up in position

The Timelapse Camera set up in position

In this example I have set up the camera to shoot a big setting on the beach to catch the tide going out, some weather passing over and the clouds moving through the sky. When deploying outside, make sure your tin is securely closed and in a safe position so it won't be blown away or toppled. Using a spirit level smartphone app while rested on top of the tin keeps everything level. And of course make sure the tin is secure and hidden from the view of passers by. Also make sure, if you do use this technique you don't place it in places where such an item may cause alarm.

I did leave a note taped to the top of mine, explaining what it was and politely asking that it not be moved or disturbed. It all depends on where you use the camera but the rural southern coast of Arran with it's rocky shore proved secure enough to leave out for lengthy periods of time.

Once you're got everything in position and level, you're good to go. Simply power up the camera, make sure all is secure and won't be moved by a breeze and leave the camera to do its work.

Post capture and editing

Putting the images together is easy. QuickTime allows you to join a sequence of images together and save out as a video clip. There are other tools out there like Premier and After Effects too. If you find your images are slightly off kilter I recommend running everything through a Photoshop action to remove the offset angle.

You can also combine still frames to make a movie clips using a command line entry like:

cd /<your_timelapse_folder> ls *.jpg > list.txt sudo apt-get install mencoder mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt

It may take some experimentation to get everything the way you want it, but this is a great way to enjoy nature's beauty, the changing light, weather systems and wildlife, even if the weather is inclement.