All things Raspberry Pi and Time Lapse

Archive for the ‘Pictures’ Category

LED Notification Light Box

The Hypnocube was a great project and I am very happy with it. It is amazing to just turn on and watch it! But I was never able to figure out how to program it to my own custom animations. I have not used that programming language before, and it is quite complex! Then I stumbled across this great tutorial on Instructables where it is shown how to create a project that connects to Twitter and changes color based on the “mood” that it found. The main hardware is an arduino, a shield to connect to wifi, an RGB LED, and a frosted acrylic container. This seemed like a great project, but I decided that I would use it for gmail notifications and other ideas instead. Based on this tutorial here at Adafruit I already knew how to turn on and off the LED to accomplish this using a Rasbperry Pi. And instead of building my own acrylic box I bought this one from Amazon. It came clear, so I also bought some 400 grit sandpaper. By rubbing the sandpaper in a circular path, the box soon had that “frosted” look. The instructables project was where I got the idea on how to frost the acrylic. He was frosting the sheets of acrylic before he made the box, which would have been easier to do I am sure. The tight corners made it difficult to get it totally frosted in some places. But the advantage of my box is that it doesn’t have the glue in the corners. And since it was cheap I am happy with the route that I took. And after spending some time sanding I got all of the hard to get spots enough that it doesn’t show.

The Raspberry Pi has enough pins to individually control 7 normal LEDs. So for my project that means two RGB LED’s and one more regular LED. I put the two RGB LEDs side by side then added two more white LEDs on either side to form a diamond shape. Both white LEDs are controlled together, so they are both on or both off. However since the Raspberry Pi only has one PWM pin, I would only be able to get full values of each of the color. So for example RED would be on, while GREEN and BLUE were off. Or RED and GREEN were on, but BLUE was off. Or all three were on. But I would not be able to get a mixture of those, like RED being at 40% and GREEN at 90% and BLUE at 20%. However there is some software that makes that possible. It basically turns the full values on and off really fast to simulate PWM. The link for that code is here on GitHub. So now I will be able to make any mixture of those RGB values. It works great and is very simple to use.

The next issue was the fact that my Adafruit breadboard wires are really short and that would look pretty terrible to have them all lose. And the LED box would have to be really close to the Raspberry Pi.  Then I thought about a regular network cable and did some research on the type of wire was used in them. Turns out it is very similar to the breadboard wires. So I ask on the Raspberry Pi forum if it would work to use a network cable instead of the short breadboard wires and was told that it should work just fine. Voltage drop was the only issue mentioned as a possible problem, but after measuring it, I can say that there was no voltage drop. A regular Cat5 network cable has 8 wires. And I would be using all of them. The six pins of the RGB LEDs and the one pin for the two white LEDs would use 7 wires. That left the 8th wire to be used for ground. I used a mini breadboard to handle the resistors and the connection to the Raspberry Pi and it works better than I thought it might! So now the LED box can be a few feet away from the Raspberry Pi.

After assembling everything in the box came the time for writing the code. I started with the example from Adafruit, but changed it to suit my LED setup. So now every 5 minutes the script check to see if there is an email, and if so it flashes red and white for about 30 seconds. Another script that I worked on was to get it to fade between the three main colors. That takes about a minute to make a full cycle through the colors and looks pretty amazing.

All of this was fun and awesome, but it had to be run from the command line. I decided to fix that. There is a great tutorial that explains how to install Lighttpd (A lightweight webserver) and PHP here. I just ignored the parts about MySQL as I do not need that right now. Once that was all setup and configured I wrote a simple basic webpage with a button for each of the main colors. I also added a button to turn it all off, and another to fade through all the colors – it calls the script that fades the colors . I accomplished this through a PHP page that executes the correct shell script. So now from any web enabled device that is connected to our wifi network, anyone can turn on the LED box easily and simply.

Below are some pictures showing how the box looks when lit different colors (no these are not just photoshopped to “show” the different colors) and the last one shows the wiring nightmare underneath!

IMG_9939 IMG_9943 IMG_9952 IMG_9953 IMG_9954 IMG_9955 IMG_9957 IMG_9960

And here is a quick screenshot of the web interface to control the LED box…

Screenshot_2013-03-18-22-26-15

Anyone have any other ideas for the LED light box?

Hypnocube

I recently found the Hypnocube 4Cube, which is a grid of 64 RGB (Red/Green/Blue) LEDs laid out 4 LEDs wide, by 4 LEDs long, by 4 LEDs high. Pictures are at the bottom of this post. I wrote a little bit about in in my previous post here (bottom of the post). I decided to buy one and I am glad that I did! It was a very fun kit to build. It looks amazing at night with the lights off and the LEDs flashing different patterns and colors. I did a time lapse video as I built the cube and that is posted here (http://vimeo.com/59026344). The video is pretty long (10 minutes) but I think it is worth it to see some of the details in building. The pdf with building instructions is available from Hypnocube to download here (it is the 4Cube link – and the jig instructions are right below that).

I wrote a script (below) that used ImageMagick from the Linux command line added the date stamp onto the pictures. Basically it changed directories into the folder, then for each file it got the date and time from that picture, then put that stamp onto the picture. After this step I used an action in Photoshop to crop the images and do some basic image adjusting.

#!/bin/bash
var=$1
for x in $var
do
cd $x
for y in `ls`
do
name=`identify -format %[EXIF:DateTime] $y | cut -d “:” -f1-5`
convert $y -pointsize 50 -fill white -annotate +1000+1000 “$name” $y
done
cd ..
done

Their manual only includes instructions for Windows. But that wasn’t where I wanted to have it connected. After some searching around I figured out that the Hypnocube was located at /dev/ttyACM0 by running “dmesg | grep tty” and it was listed there. Then I installed the “screen” command and then typed in the command “screen /dev/ttyACM0 38400” and it works just like a putty session from Windows. Then to exit out of screen “CTRL+a+d” and it will exit. To return back to the session “screen -r” and it goes back to the session again. This works from a Fedora Linux desktop and also from a Debian based Linux distribution on a Raspberry Pi. This offers some really cool options like controlling the Hypnocube from my Android by using ConnectBot which is a ssh client for Android. So I can ssh into the Raspberry Pi or my desktop and then using the screen command I can “login” to the Hypnocube. Then using their commands I can switch to the next visualization or the previous one. I can lock it on the current one or pause it.

Pictures….

IMG_0009 IMG_0035IMG_0057IMG_0040IMG_5989IMG_5994IMG_5992IMG_9900IMG_9877

Gertboard Arrived!

My gertboard arrived today! So I setup the soldering stuff and went to work on the practice board from Elenco that I bought from Amazon. And I found out real quick that the soldering iron that I have is not high enough quality. The tip did not get evenly hot which made it hard to solder. So I decided to buy a different soldering iron. I bought this one from Adafruit as they have Raspberry Pi and lots of other awesome electronics and DIY kits/parts. So I am assuming that since they say that this soldering iron is a good entry-level tool that it should be worth it. So now the only problem is waiting for that to ship…

I was looking up some instructional videos about the gertboard and came across these three from Element14.

Advice about assembly – Surface mount – Through hole

And as mentioned in this video at approximately 6:10 he says that there was only 10 jumper wires that came with the kit, and there are 12 LEDs. So there is not enough jumper cables to connect all 12 LEDs at the same time. So in addition to the soldering iron I bought a pack of these F/F jumper wires and also a pack of M/M jumper wires.  This gives me the option of creating my own M/F jumper wires by combining one of each. And these come in packs of 40 so I should have plenty!

Adafruit is a really awesome website. And Sparkfun is really amazing too!

Here is a picture of what all arrived in the package from Newark. Gertboard on the left. Small components in bags in the center. And some of the bigger chips in anti-static bags on the right.

IMG_0914

Next two images are of the GPIO cable coming out of the case that I posted about previously.

IMG_0909 IMG_0910

The next two images are of the bare Gertboard. First one is the top of the board, and the second is the bottom of the board.

IMG_0912 IMG_0913

ImageMagick scripts

I found this post here about a guy who took all of his shots from a year and compiled them into a single image. This sounded like a cool idea, but I could never find the code for how this was accomplished. But I figured that it shouldn’t be too hard so I set about doing it for myself. I have 21 images so far and I compiled them into these two images. One from right to left. And the other from bottom to top.

Once I have more images it should look better as each section will be considerably smaller. I achieved these results using a command line program called ImageMagick on Linux. It was a very simple install ‘yum install ImageMagick’ (notice the capital letters) since I am using Fedora and that was all. Debian based distros may be something like ‘sudo apt-get install ImageMagick’ but I have not tried it. The weird thing though was that I was actually using the command line tool ‘convert’ from the command line instead of ‘ImageMagick’. Great documentation available at their site about the usage here. And documentation specifically about the cropping here. The command line usage looks like this:

convert input_file XxY+X+Y output_file

The program uses the X and Y axis for where to crop. The top left corner of the image is 0x0. The +X+Y is offset from that initial 0x0. Check out the scripts below for actual usage in the script. I did the math before I ran the script and that is where the 92 and 73 come from. I took the dimension of the image and divided by the number of images that I had. So the first image is 2048 wide and I had 21 images. Then I rounded that number down to get the 92 that was used in the script.

This first script is for the top image cutting columns of the image.

#!/bin/bash
# jamesmiller
# get list of files in current directory
files=`ls | grep “^rasplapse*”`
# set the initial crop point
x_factor=0
# for each file in the current directory
for x in $files
do
# ImageMagick convert program to crop the image
convert $x -crop 92×0+$x_factor+0 column_$x
# add to the initial crop point so the next image
# is not the same strip as the previous image
x_factor=$((x_factor + 92))
# add a border of white
#convert column_$x -border 1x column_$x
done
# get the list of newly created images
column_files=`ls | grep “^column*”`
# add all of the strips of images into one image
convert $column_files +append column_file.jpg

This script is for the bottom image cutting rows of the image.

#!/bin/bash
# jamesmiller
# get list of files in current directory
files=`ls -r | grep “^rasplapse*”`
# set the initial crop point
x_factor=0
# for each file in the current directory
for x in $files
do
# ImageMagick convert program to crop the image
convert $x -crop 0x73+0+$x_factor row_$x
# add to the initial crop point so the next image
# is not the same strip as the previous image
x_factor=$((x_factor + 73))
done
# get the list of newly created images
row_files=`ls -r | grep “^row*”`
# add all of the strips of images into one image
convert $row_files -append row_file.jpg

The very last line of each script is what compiles all of the strips of images into one image. NOTE: these scripts are meant to be executed in the folder containing the images. And they may need to be modified to suit other uses depending on the file naming structure and so forth.

I also tried these scripts using the pictures that were taken every 2 minutes. But even separating them out into three different pictures it didn’t turn out that neat. There was very little change across the picture because not that much moved in a single day.

Looking forward to using this technique on more pictures like the pictures shown above once I have more images!

Aside

Raspberry Pi case for test Pi

I recently bought a second Raspberry Pi to experiment with (and hopefully connect to a gertboard) while the original Raspberry Pi is taking pictures. And I decided to buy a case for this one. And in this post I am talking about a real case, as in a case meant for a Raspberry Pi and not  a security camera like my other Raspberry Pi is housed in. After lots of searching I finally found a case I liked, but it had bad reviews. So I decided against that one. I really liked the clear case idea because hiding the Raspberry Pi in a colored case seemed pointless. Then I found Built-toSpec’s case and I really liked it – except it was black or a somewhat transparent purple. On his website it mentioned that his custom laser services offered clear acrylic so I contacted him and ask how much it would cost for a clear version of the Raspberry Pi case. Turns out he had already made some that were clear. So I ordered a clear one and it arrived really fast. It took awhile to put together because of having to peel all of the protective layers off, but it went fast after that. It is held together by 4 screws in the ends and fits together nicely. It has slots in the top for the expansion pins and a slot for a GPIO cable.

The gertboard is supposedly being shipped by Newark. However, it was supposed to ship around the end of November, then that changed to first of November, and now it is back to end of November. So maybe by the end of the year I will have one… Hopefully…

Below are pictures of the Raspberry Pi in the case.

ImageImageImageImageImageImageImageImage

Everything is accessible, but the Pi is still nicely protected. And it is clear and study. This case is awesome!

Back up and running

It is all setup again – as of Saturday – and should be taking pictures. Here is a shot of what it looks like now. All of the tomato plants have been removed and the new ones will be planted soon.

Something that started to concern me was Daylight Savings time. This would be a problem if the camera changed time and then the power went out. The raspberry pi would pull the new time and it would be an hour off of what it was before. I contacted Canon about this potential issue. And they tried to sell me one of their newer cameras that has this feature. But they said that the Canon Powershot A510 does not have this feature. I could not find this option on the SX100 either. However this is a good thing as it means I am safe from having to worry about that. It will definitely be something to think about in the future however.

I changed the way the scripts were written and so I will post them and the updated crontab hopefully sometime early next week.

Some pictures that it shot before stopping

Here is the first image that it took on 8-26 at 12noon.

And this image was taken on 9-3 at 12noon.

It is not very clear in this format, but if you download both images and then flip back and forth there is a major change in the plants in the 9 days from the first one to second one. I am hoping to see more of these differences as the plants grow!

Unfortunately it only took pictures for 9 days and that is too short to make into a timelapse…. And when it was taking a picture every 2 minutes it had focusing problems. There is no way to set a manual focus, however I thought I had that accomplished using focuslock in gphoto2. The focus lock seemed to work just fine for the once a day picture but not the other. There was nothing that was moving drastically from each shot so it was weird that it didn’t focus right.

Still planning to setup for the second time this weekend!

Tag Cloud