<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6760842257812702697</id><updated>2012-01-08T20:56:06.420Z</updated><category term='linux'/><category term='arduino'/><category term='apache'/><category term='diy'/><category term='eee'/><category term='rs485'/><category term='perspective'/><category term='php'/><category term='photography'/><category term='gadgets'/><category term='apple'/><category term='tutorial'/><category term='streaming'/><category term='drunk'/><category term='wii'/><category term='lasers'/><category term='lenses'/><category term='timelapse'/><category term='i2c'/><category term='computers'/><category term='rs232'/><category term='pcb'/><category term='electronics'/><category term='Blogging'/><category term='compression'/><category term='xmas'/><category term='modding'/><category term='iphone'/><category term='focal length'/><category term='hacks'/><category term='ipod'/><category term='holidays'/><category term='twitter'/><category term='windows'/><category term='tv'/><category term='ubuntu'/><category term='plc'/><category term='high speed photography'/><title type='text'>Paddy's Blog</title><subtitle type='html'>This is my general blog for my innermost thoughts and feelings. Unfortunately I can add posts from my mobile so there may be a lot of crazy rants on here</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-7428307097860951880</id><published>2011-01-23T02:49:00.002Z</published><updated>2011-01-23T02:53:44.687Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='timelapse'/><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='modding'/><category scheme='http://www.blogger.com/atom/ns#' term='diy'/><title type='text'>My first (good) timelapse</title><content type='html'>Had a great day today! Finally used my &lt;a href="http://pskillenrules.blogspot.com/2011/01/arduino-based-camera-controller.html"&gt;Arduino camera controller&lt;/a&gt; for something useful - making a timelapse photo of our photo society's portrait session&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" src="http://www.youtube.com/embed/rCkQ1WwaJoA" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=rCkQ1WwaJoA"&gt;http://www.youtube.com/watch?v=rCkQ1WwaJoA&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-7428307097860951880?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/7428307097860951880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=7428307097860951880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/7428307097860951880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/7428307097860951880'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2011/01/my-first-good-timelapse.html' title='My first (good) timelapse'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/rCkQ1WwaJoA/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-9137562644880374237</id><published>2011-01-17T12:53:00.011Z</published><updated>2011-01-28T13:29:16.651Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='timelapse'/><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='lasers'/><category scheme='http://www.blogger.com/atom/ns#' term='high speed photography'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='modding'/><category scheme='http://www.blogger.com/atom/ns#' term='diy'/><title type='text'>Arduino Based Camera Controller</title><content type='html'>&lt;span style="font-weight: bold;"&gt;The motivation&lt;/span&gt;&lt;br /&gt;After seeing  &lt;a href="http://www.diyphotography.net/high-speed-photography-let-arduino-turn-the-lights-off-for-you"&gt;Matt Richardson&lt;/a&gt;'s video about his high-speed photography controller, I thought to myself "Wow, I want one of those!" And I had all the necessary bits, so I set about building one.&lt;br /&gt;&lt;br /&gt;This post isn't going to be a how-to (I'll write one if enough people offer to buy me beer), but just general boasting about what it does.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What can it do?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_1R2pAAV4qGM/TULBtANG9QI/AAAAAAAAH7k/idoLVCbZZTM/s1600/_MG_6533.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/TULBtANG9QI/AAAAAAAAH7k/idoLVCbZZTM/s320/_MG_6533.JPG" alt="" id="BLOGGER_PHOTO_ID_5567225068276610306" border="0" /&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULBsxUswTI/AAAAAAAAH7c/ixFEQS3wJtk/s1600/_MG_6532.JPG"&gt;&lt;br /&gt;&lt;/a&gt;Ok, so I now  have a device which can trigger my camera's shutter, fire off a flashgun  or turn a bunch of sockets on and off at my command. Just think of the possibilities!! It's basically up to me and what program I write.&lt;br /&gt;&lt;br /&gt;Taking Matt's lead, I first created a program to take photos of popping balloons. Here's a rough outline of the process:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Start the process (by pressing a button)&lt;/li&gt;&lt;li&gt;Arduino turns room lights off (via a relay attached to an extension lead)&lt;/li&gt;&lt;li&gt;Camera shutter opens&lt;/li&gt;&lt;li&gt;Arduino waits for sound of balloon popping&lt;/li&gt;&lt;li&gt;I stick a pointy thing in a balloon&lt;/li&gt;&lt;li&gt;Arduino hears the sound, and fires off the external flash unit&lt;/li&gt;&lt;li&gt;Camera shutter closes&lt;/li&gt;&lt;li&gt;Room lights turn on&lt;/li&gt;&lt;li&gt;Paddy has a beer to celebrate a successful day's work&lt;/li&gt;&lt;/ol&gt;For an explaination of the above, see my next post (&lt;span style="color: rgb(255, 0, 0);"&gt;LINK COMING SOON&lt;/span&gt;). For some results, see my &lt;a href="http://www.flickr.com/photos/pskillen/tags/arduino/"&gt;Flickr Arduino tag&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've also created a timelapse Arduino program, which allows me to repeatedly take photos a certain number of seconds apart - I created a simple video of a candle burning away, seen below&lt;br /&gt;&lt;br /&gt;&lt;iframe title="YouTube video player" class="youtube-player" type="text/html" src="http://www.youtube.com/embed/3upM8y4VZNM?rel=0" allowfullscreen="" frameborder="0" height="390" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The parts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULBsxUswTI/AAAAAAAAH7c/ixFEQS3wJtk/s1600/_MG_6532.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULBsxUswTI/AAAAAAAAH7c/ixFEQS3wJtk/s320/_MG_6532.JPG" alt="" id="BLOGGER_PHOTO_ID_5567225064281915698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What I've used (essential stuff)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1x Arduino Pro (though most Arduinos are suitable)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1x Quad opto-isolator&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1x 7d remote trigger (sabbotaged for its connector and cable) - A cheap knock-off one was ideal because it cost about £5 ($8)&lt;/li&gt;&lt;li&gt;Various pieces of stripboard&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Various colours of wire - For wiring up the circuit, but I also used a lot to make the tails to go off to the external stuff like the flash and camera&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Non-essential stuff (added for the cool factor)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Real time clock module - allowing for more accurate timelapses&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lots of male and female PCB pin headers - these make up the plugs for wires, or the slots to plug the Arduino in so it can be removed easily&lt;br /&gt;&lt;/li&gt;&lt;li&gt;4x LEDs (various colours) to show the status&lt;/li&gt;&lt;li&gt;2x PCB-mount buttons to set the functions&lt;/li&gt;&lt;li&gt;Transistors - Arduino can't source enough current to power LEDs itself (though I'm told it can sink it - can any confirm?)&lt;/li&gt;&lt;li&gt;Piezo transducer - to pick up loud sounds&lt;/li&gt;&lt;li&gt;Photodiode - to pick up the light from a laser pointer (laser tripwire!)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Various resistors - they're boring, but ya need 'em&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Stuff I didn't add (but would love to)&lt;br /&gt;&lt;ul&gt;&lt;li&gt;LCD status screen&lt;/li&gt;&lt;li&gt;Ion cannon - not really essential for this project, but how cool would it be if you could take photos and then blow stuff up?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Some requirements I aimed for&lt;/span&gt;&lt;br /&gt;Functionality:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Control the camera focus and shutter (obviously) - the "how" is discussed below&lt;/li&gt;&lt;li&gt;Control an external flash gun - also discussed below&lt;/li&gt;&lt;li&gt;Two buttons to program the device - so I don't have to download a new program every time I want to change between "take picture when lights are bright" and "take picture when lights are dark" modes, for example&lt;/li&gt;&lt;li&gt;4 LEDs to display the status - in the end only 3 of mine worked, but it's still plenty&lt;/li&gt;&lt;/ul&gt;Expandability:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Inputs and outputs should be as generic as possible&lt;/span&gt;&lt;br /&gt;This wasn't always possible (i.e. for the camera connector) but where I could, I tried to make the inputs and outputs generic. For example, the relay to switch the sockets on and off is on a separate piece of stripboard, and just plugs into a simple digital out. This means I can design as many little plugins as I can think of and still use the same main board&lt;/li&gt;&lt;li&gt;Input buttons have ports to plug external buttons in (so I can carry a button around with me, instead of having to be right beside the controller)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Camera Control&lt;/span&gt;&lt;br /&gt;The camera (in this case a Canon EOS 7d) is controlled via the cable from a remote shutter release (about £5 on Amazon). These shutter releases (at least for Canon) are just simple switches. There are three wires in the cable - ground, focus and shutter. Connect focus to ground, the camera enters "focus" mode (like half-pressing your shutter button). Connect shutter to ground... well you get the idea.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULBtm4ZjLI/AAAAAAAAH7s/3JO0BRkqrMI/s1600/_MG_6534.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULBtm4ZjLI/AAAAAAAAH7s/3JO0BRkqrMI/s320/_MG_6534.JPG" alt="" id="BLOGGER_PHOTO_ID_5567225078658731186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In order to isolate my very expensive and love-of-my-life camera from my shoddy soldering, I used an opto-isolator. These little devices look like a standard IC chip, and basically consist of an LED on one side, and a photo-diode on the other. Apply a voltage to the input side, LED lights up, photo-diode allows a current through on the other side. You'll notice that there is no direct electrical connection between the input and output side - there's no need to worry about frying your camera if you short something out on the other side of the isolator, it provides about 7,500V of electrical isolation (or so the datasheet says).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Flash Control&lt;/span&gt;&lt;br /&gt;I needed to be able to control an external flash to really get that "motion-stopping" effect. I have two external flashguns - a YN-460 and YN-468. The trigger for both of these is a hotshoe, which means the flashgun provides a 6V voltage on the center pin, and when this is brough to ground (via another contact around the edge of the shoe), the flash will fire. This sounds like another job for an opto-isolator!&lt;br /&gt;&lt;br /&gt;To make things easier for me (and because I don't have any hotshoe adapters) I added a small homemade sync port, which you can &lt;a href="http://pskillenrules.blogspot.com/2011/01/adding-sort-of-pc-sync-port-to-yn-460.html"&gt;read about here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;External lighting control&lt;/span&gt;&lt;br /&gt;This was such a good idea from Matt's video that I couldn't not do it!&lt;br /&gt;&lt;br /&gt;Matt had a fancy extension lead with a digital input for turning it off and on. I don't have such crazy technology, so I had to make one myself.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_1R2pAAV4qGM/TULCu1WN06I/AAAAAAAAH8U/kTdDlAqumWc/s1600/_MG_6539.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/TULCu1WN06I/AAAAAAAAH8U/kTdDlAqumWc/s320/_MG_6539.JPG" alt="" id="BLOGGER_PHOTO_ID_5567226199233385378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;What you see above is a small piece of stripboard, with relay which opens or closes based on a digital signal it receives from the Arduino. I've cut the live wire in a 4-way extension lead, and inserted the relay in the gap.&lt;br /&gt;&lt;br /&gt;There's a little bit of circuitry so that the low current 5v output signal from the Arduino can power a 12v relay coil, but other than that it's very simple.&lt;br /&gt;&lt;br /&gt;Because this board needs 12v, I usually power it directly, and I've added a socket so I can take power from this board and take it to my main board (which has the Arduino). The main board has an onboard regulator to give me 5v.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Inputs&lt;/span&gt;&lt;br /&gt;In this iteration there are 4 &lt;span style="color: rgb(0, 0, 0);"&gt;(3?)&lt;/span&gt; inputs - two buttons and a socket for a photodiode. I know I'd said I was trying to keep everything generic, but I didn't have the awesome idea of having additional bits of stripboard with extra circuitry at that stage.&lt;br /&gt;&lt;br /&gt;One of the buttons also has a socket, so that I can plug an external button with a long wire on it. This gives me freedom to move around the scene, makeing life so much easier!&lt;br /&gt;&lt;br /&gt;There's room for other inputs too, and another socket for an opto-isolator, but I haven't got round to doing the wiring yet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Arduino Code&lt;/span&gt;&lt;br /&gt;This is coming in my next blog post. &lt;span style="color: rgb(255, 0, 0);"&gt;[INSERT LINK HERE]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The results&lt;/span&gt;&lt;br /&gt;For the results, see my &lt;a href="http://www.flickr.com/photos/pskillen/tags/arduino/"&gt;Flickr Arduino tag&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More info&lt;/span&gt;&lt;br /&gt;Find me at &lt;a href="http://flickr.com/pskillen"&gt;flickr.com/pskillen&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Some more parts&lt;/span&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULCuHwPeBI/AAAAAAAAH8M/jD1mNuUF7wM/s1600/_MG_6538.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/TULCuHwPeBI/AAAAAAAAH8M/jD1mNuUF7wM/s320/_MG_6538.JPG" alt="" id="BLOGGER_PHOTO_ID_5567226186994513938" border="0" /&gt;&lt;/a&gt;Remote control button&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_1R2pAAV4qGM/TULCtlR8UYI/AAAAAAAAH8E/z09Onmn79u0/s1600/_MG_6537.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/TULCtlR8UYI/AAAAAAAAH8E/z09Onmn79u0/s320/_MG_6537.JPG" alt="" id="BLOGGER_PHOTO_ID_5567226177740624258" border="0" /&gt;&lt;/a&gt;Piezo transducer&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_1R2pAAV4qGM/TULBud1QOJI/AAAAAAAAH78/RFnO2H7A1cs/s1600/_MG_6536.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/TULBud1QOJI/AAAAAAAAH78/RFnO2H7A1cs/s320/_MG_6536.JPG" alt="" id="BLOGGER_PHOTO_ID_5567225093409486994" border="0" /&gt;&lt;/a&gt;Real time clock module&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_1R2pAAV4qGM/TULBt9AnNrI/AAAAAAAAH70/UVXrcsCTLcU/s1600/_MG_6535.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/TULBt9AnNrI/AAAAAAAAH70/UVXrcsCTLcU/s320/_MG_6535.JPG" alt="" id="BLOGGER_PHOTO_ID_5567225084598761138" border="0" /&gt;&lt;/a&gt;Connecting wires&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-9137562644880374237?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/9137562644880374237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=9137562644880374237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/9137562644880374237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/9137562644880374237'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2011/01/arduino-based-camera-controller.html' title='Arduino Based Camera Controller'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1R2pAAV4qGM/TULBtANG9QI/AAAAAAAAH7k/idoLVCbZZTM/s72-c/_MG_6533.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-6137839509626226543</id><published>2011-01-07T00:54:00.007Z</published><updated>2011-01-07T01:27:21.589Z</updated><title type='text'>Adding a (sort-of) PC sync port to a YN-460 flashgun</title><content type='html'>As part of a larger project today I needed to sync my flashgun with an Arduino. Since I don't have any hotshoe connectors or anything like that, I decided to add a sync port to the flash itself.&lt;br /&gt;&lt;br /&gt;Now I've read more than a few posts about people adding PC sync ports to their flashes (especially the YN-46x series), but since I don't own a single PC sync cable or any kind of connectors, I decided to go with a more breadboard/Arduino friendly option.&lt;br /&gt;&lt;br /&gt;This hack doesn't impare the function of the flashgun in any way - it  still functions as a normal flashgun, via the hotshoe or optical slave.  It's just got an extra connector.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_1R2pAAV4qGM/TSZlt8Q-WvI/AAAAAAAAH6c/G7s-2xBS98I/s1600/IMG_0363.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/TSZlt8Q-WvI/AAAAAAAAH6c/G7s-2xBS98I/s320/IMG_0363.JPG" alt="" id="BLOGGER_PHOTO_ID_5559242629981297394" border="0" /&gt;&lt;/a&gt;What you see above is the finished product - the addition is just a tiny 2-pin PCB header, like the ones you get on the Arduino itself. It's cheap, tiny and versatile, and it fits right into the base of the unit.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_1R2pAAV4qGM/TSZmsEcUDrI/AAAAAAAAH6k/wB866ms_4lU/s1600/IMG_0369.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 250px; height: 168px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/TSZmsEcUDrI/AAAAAAAAH6k/wB866ms_4lU/s320/IMG_0369.JPG" alt="" id="BLOGGER_PHOTO_ID_5559243697328230066" border="0" /&gt;&lt;/a&gt; &lt;a href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TSZoF55EMmI/AAAAAAAAH6s/VdG3dBZHu-8/s1600/IMG_0372.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 250px; height: 168px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/TSZoF55EMmI/AAAAAAAAH6s/VdG3dBZHu-8/s320/IMG_0372.JPG" alt="" id="BLOGGER_PHOTO_ID_5559245240684261986" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And that's the inside of the base. I've simply drilled a few 3mm holes in the side, cleaned up the hole with a knife, and slid the connector in.&lt;br /&gt;&lt;br /&gt;The connector (seen above right) is 2.56mm pitch female PCB header (the big black strip). It comes in rows of 20 and needs to be cut to size. You can do this with a knife (carefully, and on a cutting mat!). It's pretty cheap on eBay, which is good, because I go through stacks of it!&lt;br /&gt;&lt;br /&gt;Once I had the hole drilled and the connector slid in place, I soldered from the terminals on the new connector to the terminals on the existing connector. Finally, I covered the whole thing in Uhu glue to keep it secure (I forgot that the centre pin moves up and down - DON'T PUT GLUE ON THE CENTER PIN)&lt;br /&gt;&lt;br /&gt;What I have now is a flashgun which can be hooked up to a breadboard for use with an Arduino. To trigger the flash, simply join the two leads together (either physically, with a physical switch, or with some kind of electronic switch)&lt;br /&gt;&lt;br /&gt;Check out my next blog post (still to be written) to see what you can achieve with a Canon 7d, flashgun, Arduino, laser, and things which will break or pop or explode&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-6137839509626226543?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/6137839509626226543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=6137839509626226543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6137839509626226543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6137839509626226543'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2011/01/adding-sort-of-pc-sync-port-to-yn-460.html' title='Adding a (sort-of) PC sync port to a YN-460 flashgun'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1R2pAAV4qGM/TSZlt8Q-WvI/AAAAAAAAH6c/G7s-2xBS98I/s72-c/IMG_0363.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-4639929947461829548</id><published>2011-01-03T15:37:00.003Z</published><updated>2011-01-03T15:41:41.099Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='photography'/><category scheme='http://www.blogger.com/atom/ns#' term='perspective'/><category scheme='http://www.blogger.com/atom/ns#' term='lenses'/><category scheme='http://www.blogger.com/atom/ns#' term='focal length'/><category scheme='http://www.blogger.com/atom/ns#' term='compression'/><title type='text'>Effect of focal length on perspective compression</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TSHtxW2befI/AAAAAAAAH6U/MtAD7T_RXME/s1600/perspective%2Bdistortion2.JPG"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 71px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/TSHtxW2befI/AAAAAAAAH6U/MtAD7T_RXME/s320/perspective%2Bdistortion2.JPG" alt="" id="BLOGGER_PHOTO_ID_5557984847355148786" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/TSHtvGpo8DI/AAAAAAAAH6M/u9Hw_8Bwwig/s1600/perspective%2Bdistortion.jpg"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/TSHtvGpo8DI/AAAAAAAAH6M/u9Hw_8Bwwig/s320/perspective%2Bdistortion.jpg" alt="" id="BLOGGER_PHOTO_ID_5557984808646799410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div id="description_div5320418272" class="photo-desc insitu-trigger insitu-highlight"&gt;&lt;p id="yui_3_2_0_1_1294069071818673"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;First post in a loooooong time! I've since picked up a new hobby, so you're going to be seeing a lot of posts about photography&lt;/span&gt;&lt;/span&gt;!&lt;br /&gt;&lt;/p&gt;&lt;p id="yui_3_2_0_1_1294069071818673"&gt;It's  a well known fact that using a longer focal length lens, and then  stepping backwards so you can still fit your subject in frame, will  "compress" the perspective in your image (i.e. make background objects  appear a lot closer to your foreground). &lt;/p&gt;&lt;p id="yui_3_2_0_1_1294069071818677"&gt;What  I haven't been able to find out until today was the effect of using  different focal lengths, but keeping the same shooting position and  cropping the image down to the same field of view. Seems that this has  no (or very little) effect on perspective. &lt;/p&gt;&lt;p id="yui_3_2_0_1_1294069071818680"&gt;Any  slight differences in the image above are probably due to the effect of  lens distortion (barrelling, pin cushioning), or me forgetting to focus  on the same point for each frame.&lt;/p&gt;&lt;p id="yui_3_2_0_1_1294069071818683"&gt;Images above taken with a Canon EOS 7d (1.6x FOVCF), using a 28mm f/2.8, 50mm f/1.8 and the awesome 70-200mm f/4.0 USM. All shots taken at f/4.0&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-4639929947461829548?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/4639929947461829548/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=4639929947461829548' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4639929947461829548'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4639929947461829548'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2011/01/effects-of-focal-length-on-perspective.html' title='Effect of focal length on perspective compression'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1R2pAAV4qGM/TSHtxW2befI/AAAAAAAAH6U/MtAD7T_RXME/s72-c/perspective%2Bdistortion2.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-4737432117307118492</id><published>2010-04-19T22:35:00.003+01:00</published><updated>2010-04-19T22:38:40.354+01:00</updated><title type='text'>My Dissertation: Open Source SCADA System</title><content type='html'>Just a quick note to say that I've uploaded my dissertation to SourceForge. It is an open source, Java based SCADA package.&lt;br /&gt;&lt;br /&gt;SourceForge link is: &lt;a href="https://sourceforge.net/projects/ocpscada/"&gt;https://sourceforge.net/projects/ocpscada/&lt;/a&gt;&lt;br /&gt;And the wiki link is: &lt;a href="http://sourceforge.net/apps/mediawiki/ocpscada/"&gt;http://sourceforge.net/apps/mediawiki/ocpscada/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More details will follow, I'm sick of typing by now - I just spent the day filling my wiki&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-4737432117307118492?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/4737432117307118492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=4737432117307118492' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4737432117307118492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4737432117307118492'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2010/04/my-dissertation-open-source-scada.html' title='My Dissertation: Open Source SCADA System'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-3361923835053416235</id><published>2010-01-02T13:41:00.003Z</published><updated>2010-01-02T14:07:38.563Z</updated><title type='text'>My New Year's Resolutions, 2010</title><content type='html'>It's hard to improve upon perfection, but there are a few things I want to do to improve about myself:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get more exercise (&gt; 3x a week)&lt;/li&gt;&lt;li&gt;Get over 70% in all my modules&lt;/li&gt;&lt;li&gt;Start a personal website with one of the many domain names&lt;/li&gt;&lt;li&gt;Expand my friend group&lt;/li&gt;&lt;li&gt;Take up a sport&lt;/li&gt;&lt;li&gt;Get good at CoD:MW2 online&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;li&gt;Make 3 more resolutions ;)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-3361923835053416235?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/3361923835053416235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=3361923835053416235' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3361923835053416235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3361923835053416235'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2010/01/my-new-years-resolutions-2010.html' title='My New Year&apos;s Resolutions, 2010'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-3695423550822935123</id><published>2009-10-23T14:41:00.002+01:00</published><updated>2009-10-23T14:51:33.737+01:00</updated><title type='text'>A short diatribe about floating point numbers</title><content type='html'>Floats. They're great! You can store really large or really small numbers in them with ease (provided they're supported by your compiler). Most processors even have built in instructions for playing with them. However, they are an imprecise number, which means that whatever value you try to put in may not be the value you get out.&lt;br /&gt;&lt;br /&gt;Take for example the counter system I installed in a factory - the processor we used could only support 16-bit integers, or 32-bit floats. I thought, "Great! 32-bit floats go all the way up to ~4bn, we'll never have bigger counts than that". And we wont. The problem is, just because they can count to 4bn, doesn't mean that they can count ever number in between.&lt;br /&gt;&lt;br /&gt;I knew about this problem, but I thought it only applied to small fractions after the decimal point. Unfortunately (as I discovered today with 100+ counters), there are also whole numbers it cannot display.&lt;br /&gt;&lt;br /&gt;The first one of these (on a 32-bit float) is 16,777,217. So whenever you try to increment the counter after 16,777,216, the processor adds 1 to the number, then stores it back in the float as the closest representable number (16,777,216). Do you see the problem?&lt;br /&gt;&lt;br /&gt;There's a very good reason for this, which I really don't want to have to explain because I hate working with the binary representations of floats. If you have to know, try the Wikipedia article on &lt;a href="http://en.wikipedia.org/wiki/IEEE_754-2008" target="_blank"&gt;IEEE 754-2008&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So, long story short: &lt;span style="font-weight: bold;"&gt;do not use floats for counters&lt;/span&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-3695423550822935123?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/3695423550822935123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=3695423550822935123' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3695423550822935123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3695423550822935123'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/10/short-diatribe-about-floating-point.html' title='A short diatribe about floating point numbers'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-6267949705252094325</id><published>2009-08-15T20:15:00.030+01:00</published><updated>2009-08-17T21:04:17.604+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='rs232'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='rs485'/><title type='text'>An Arduino and RS485</title><content type='html'>I love being a student! It gives you tonnes of perks, such as free industrial samples from semiconductor companies. I just got my order of MAX485 ICs through the post this morning, so I've spent the day playing around with Arduino and RS485 comms. I'm now going to share my experiences with you&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The aim of this demo is to simulate some serial data on an Arduino and send it via RS485 to a computer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;RS485? Say what?&lt;/span&gt;&lt;br /&gt;485 is a standard very similar to RS232 (the serial port used on an Arduino and your PC). RS485 improves upon 232 by removing the limitation of distance (up to 4000ft) and allows more than two devices to communicate using a single line, though it does this at the cost of using more wires between the devices&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What you'll need for this demo:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;2x MAX485 ICs (or equivalent)&lt;/li&gt;&lt;li&gt;1x Arduino&lt;/li&gt;&lt;li&gt;1x breadboard (2 preferably)&lt;/li&gt;&lt;li&gt;Jumper wires&lt;/li&gt;&lt;li&gt;2x 150R resistors&lt;br /&gt;&lt;/li&gt;&lt;li&gt;FTDI cable or breakout board&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ok, so how's it done?&lt;/span&gt;&lt;br /&gt;For this you're going to need a Maxim MAX485 (or equivalent) IC. This IC will take RS232 signals and perform the voltage level conversions required to turn them into 485 signals.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SocQEMW_ioI/AAAAAAAAGYU/0kw2DDlcHZs/s1600-h/max485+pins.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 119px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SocQEMW_ioI/AAAAAAAAGYU/0kw2DDlcHZs/s400/max485+pins.png" alt="" id="BLOGGER_PHOTO_ID_5370278744885791362" border="0" /&gt;&lt;/a&gt;The MAX485 has 8 pins:&lt;br /&gt;&lt;ol style="text-align: justify;"&gt;&lt;li&gt;RO - Receiver out&lt;/li&gt;&lt;li&gt;RE - Receiver enable (enabled when this pin is LOW)&lt;/li&gt;&lt;li&gt;DE - Driver enable (enabled when this pin is HIGH)&lt;/li&gt;&lt;li&gt;DI - Driver in (the transmitter pin)&lt;/li&gt;&lt;li&gt;GND - Ground (0V)&lt;/li&gt;&lt;li&gt;A - Connect to pin A of the other 485 IC&lt;/li&gt;&lt;li&gt;B - Connect to pin B of the other 485 IC&lt;/li&gt;&lt;li&gt;Vcc - Power, in my case +5V&lt;/li&gt;&lt;/ol&gt;I'm not going to go into the basics on breadboarding, but you should place one MAX485 on each breadboard (or on two halves of one breadboard).&lt;br /&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;Wire up the power and ground. Try to use a battery for the transmitter. You can take power from the FTDI board for the receiver. This proves that there's only two wires (the comm) wires going between the devices.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Wire pin A to the other pin A&lt;/li&gt;&lt;li&gt;Wire pin B to the other pin B&lt;/li&gt;&lt;li&gt;On each IC, a 150R resistor goes between pin A and B&lt;br /&gt;&lt;/li&gt;&lt;li&gt;On the receiver side, wire pin RE to 0V&lt;/li&gt;&lt;li&gt;On the transmitter side, wire pin DE to 5V&lt;/li&gt;&lt;li&gt;On the transmitter, wire digital pin 0 (TX) from the Arduino to DI&lt;/li&gt;&lt;li&gt;On the receiver, wire pin RO on the 485 to the RX pin of the FTDI board&lt;/li&gt;&lt;/ul&gt;Ok.. that's about it as far as wiring goes. Now for some code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code:&lt;/span&gt;&lt;br /&gt;The code for this project is reallllly simple. We're just wanting to simulate some data coming from the Arduino, and pick it up using the FTDI. I uploaded this simple sketch to my Arduino:&lt;br /&gt;&lt;br /&gt;&lt;div style="border: 1px solid rgb(0, 0, 0); margin-left: 4em; margin-right: 4em; text-align: justify;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;#define LED_PIN     13;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;int i;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;boolean b;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;void setup() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Serial.begin(57600);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; i = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; b = false;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; pinMode(LED_PIN, OUTPUT);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Serial.println("Init() complete"); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;void loop() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; i ++;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; Serial.println(i);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; b = !b;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; digitalWrite(LED_PIN, b);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; delay(1000);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Upload that to your Arduino and you should see the LED flashing roughly every 1 second. This means that it's sending serial data every 1 second. Now plug in your FTDI board to the PC and open up serial monitor in the Arduino IDE. If you have everything wired correctly, you'll see a number appearing in the window each time the Arduino sends something. Cool eh?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[UPDATE]&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Handling two way communications:&lt;/span&gt;&lt;br /&gt;The MAX485 and equivalents are only &lt;span style="font-weight: bold;"&gt;half duplex&lt;/span&gt;, meaning that they only support sending data in &lt;span style="font-weight: bold;"&gt;one direction at a time&lt;/span&gt;. This is fine, but it means you're going to need to account for that in your code.&lt;br /&gt;&lt;br /&gt;It is possible to get &lt;span style="font-weight: bold;"&gt;full duplex&lt;/span&gt; versions of the MAX485 (I can't remember the part number right now). These bypass the need for any of the stuff below, but you will need &lt;span style="font-weight: bold;"&gt;four&lt;/span&gt; wires running between each device. Not a problem if you're running short distances, but it gets expensive if you have ~4000ft of cable. Anyway, it's pretty easy to get past the limitations of half duplex...&lt;br /&gt;&lt;br /&gt;Remember the RE and DE pins? They specify whether the chip is in receive (RX) or transmit (TX) mode. If we control these from a pin on the Arduino we can leave the chip in RX mode, wait till something is received, and then change to TX mode to reply. Luckily the DE pin has a NOT gate on it, so you can drive both pins from one pin on your Arduino.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note: &lt;/span&gt;From this point on you will need two Arduinos, as the FTDI board can't control the MAX485 in the way we want.&lt;br /&gt;&lt;br /&gt;If you take a wire from your Arduino's digital pin 2, and wire it to DE, and then take another jumper wire and wire DE to RE, that will handle the TX/RX mode of the chip. Do this for both chips.&lt;br /&gt;&lt;br /&gt;One of your Arduinos will need to be the master of the "network". This is typical in 485 applications, where there are several slave devices taking cues from a master. The master will query a slave, then change to RX mode. The slave will receive the command, and change to TX mode to send its response. After the response both devices change back to their normal mode.&lt;br /&gt;&lt;br /&gt;At this point in your project you should probably specify exactly what a "command" is. They usually go along the lines of:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;[START BYTE][COMMAND][PARAMS][END BYTE]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;or even:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(153, 0, 0);font-family:courier new;" &gt;[START BYTE][DEVICE NUMBER][COMMAND][PARAMS][END BYTE]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It's up to you to specify what the start byte and end byte are. You also have to specify how long and what the commands are (1 byte will provide 255 commands), and how long the parameters are (whether they're a fixed length or not).&lt;br /&gt;&lt;br /&gt;Below, I'll use 0xFF (255) as the start and end bytes, and 0x01 as the command (send status). The slave device will be number 0x05. Params are optional and may be any length (zero or more whole bytes).&lt;br /&gt;&lt;br /&gt;The resulting communications between the two devices would look something like this:&lt;br /&gt;&lt;table style="border: 1px solid rgb(0, 0, 0); text-align: left; border-spacing: 0.25em; margin: 0.25em; padding: 0.25em;"&gt;&lt;tr style="background-color: rgb(153, 255, 255);"&gt;&lt;td style="width: 5em;"&gt;Step&lt;/td&gt;&lt;td style="width: 50%;"&gt;Master&lt;/td&gt;&lt;td style="width: 50%;"&gt;Slave&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;Prepare command&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;0xFF 0x05 0x01 0xFF&lt;/span&gt;&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;Send command&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;Change to RX mode&lt;br /&gt;Set pin 2 to LOW&lt;/td&gt;&lt;td&gt;Receive serial data&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;0xFF 0x05 0x01 0xFF&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;td&gt;Parse serial data&lt;br /&gt;Start byte ok, ID byte OK, command = send status, end byte ok&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;td&gt;Change to TX mode&lt;br /&gt;Set pin 2 to HIGH&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;td&gt;Send response (&lt;span style="color: rgb(102, 0, 0);"&gt;0x05&lt;/span&gt; = ID, &lt;span style="color: rgb(102, 0, 0);"&gt;0x01&lt;/span&gt; = status ok)&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;0xFF 0x05 0x01 0xFF&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;Receive serial data&lt;/td&gt;&lt;td&gt;Change back to RX mode&lt;br /&gt;Set pin 2 to LOW&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;Change back to TX mode&lt;br /&gt;Set pin 2 to  HIGH&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;Parse data....&lt;/td&gt;&lt;td&gt;Waiting&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;This is just an example of very basic comms between two device, but you can do a lot with it. I'm using something similar for my &lt;a href="http://pskillenrules.blogspot.com/2009/08/arduino-backplane-experiment.html"&gt;Arduino Backplane Experiment&lt;/a&gt;, only with I2C instead of serial.&lt;br /&gt;&lt;br /&gt;I haven't gotten around to writing the code for two-way communications yet. Hopefully I've explained it well enough so you can have a stab at it. If anyone's feeling really stuck, give me a shout in the comments or on Twitter (&lt;a href="http://twitter.com/paddypluggedin"&gt;@paddypluggedin&lt;/a&gt;) and I'll try and throw some code together&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-6267949705252094325?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/6267949705252094325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=6267949705252094325' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6267949705252094325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6267949705252094325'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/08/arduino-and-rs485.html' title='An Arduino and RS485'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1R2pAAV4qGM/SocQEMW_ioI/AAAAAAAAGYU/0kw2DDlcHZs/s72-c/max485+pins.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-4829725370541142564</id><published>2009-08-08T16:42:00.017+01:00</published><updated>2009-08-12T16:52:51.246+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='plc'/><category scheme='http://www.blogger.com/atom/ns#' term='i2c'/><title type='text'>Arduino Backplane Experiment</title><content type='html'>Just as an experiment I thought I'd try this...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My motivation:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/Sn2nC_kXgWI/AAAAAAAAGXk/e5zJCm1NhW8/s1600-h/005.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 215px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/Sn2nC_kXgWI/AAAAAAAAGXk/e5zJCm1NhW8/s320/005.JPG" alt="" id="BLOGGER_PHOTO_ID_5367630000761045346" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pictured above is an Allen Bradley SLC-500 PLC. We use these a lot in work to automate industrial processes. They're very expensive, and all they are is a simple motherboard connecting daughter boards. The first slot is the CPU and does all the processing, and the rest of the cards are "dumb" cards which add different kinds of inputs or outputs, counters, comms, etc. Have I mentioned that they're very expensive?&lt;br /&gt;&lt;br /&gt;My hope is to copy this modular, "slot in" design, so someone could just slide in a new pre-programmed module in their rack. This concept could be used to add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Additional digital or analog IO&lt;/li&gt;&lt;li&gt;A real time clock&lt;/li&gt;&lt;li&gt;EEPROM card&lt;/li&gt;&lt;li&gt;Pre-built sensor cards&lt;/li&gt;&lt;li&gt;Dedicated counter modules&lt;/li&gt;&lt;li&gt;GPS modules&lt;/li&gt;&lt;li&gt;Ethernet, or XBee or other RF comms&lt;/li&gt;&lt;li&gt;Flash storage cards&lt;/li&gt;&lt;li&gt;Motor, servo and stepper drivers&lt;/li&gt;&lt;li&gt;RS485 comms card&lt;/li&gt;&lt;/ul&gt;Each of these "cards" would be a board with the appropriate pins brought out and connectors to suit its configured purpose. They would come pre-programmed, so you just slot them in and they work.&lt;br /&gt;&lt;br /&gt;The whole idea is not dissimilar to the Arduino "shield" idea, but I'm using I2C to connect them instead of all the pins. The trouble with the stackable shield idea is that pretty soon you'll get two cards that want to use the same pin, and then they can't be used together. Using I2C you have a theoretical limit of 255 devices&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/Sn2ixF6uTaI/AAAAAAAAGXc/B9gRFT9Z8AU/s1600-h/IMG_0276.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/Sn2ixF6uTaI/AAAAAAAAGXc/B9gRFT9Z8AU/s400/IMG_0276.JPG" alt="" id="BLOGGER_PHOTO_ID_5367625295181270434" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Above you can see my half-finished product. I've used a bunch of Arduino Pros, which have a 6 pin header on one side supplying power and serial comms. This plugs into an 8-pin female header on the motherboard. The remaining two pins are the I2C pins (analog 4 and 5), which I had to bring down using some wire and a couple of pins.&lt;br /&gt;&lt;br /&gt;Each of these cards will eventually be configured to perform a particular task&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Motherboard&lt;/span&gt;&lt;br /&gt;The motherboard itself is a bit of strip board, connecting each of the pins to the corresponding pin of every daughter board (with the exception of the serial pins, 'cos serial can't work that way).&lt;br /&gt;&lt;br /&gt;There's a set of male headers beside every card, this basically brings out the serial pins so I can connect my FTDI board to each card for debugging (not all are wired yet).&lt;br /&gt;&lt;br /&gt;There should also be a 3-pin header beside each board for addressing (see the next section)&lt;br /&gt;&lt;br /&gt;Oh I almost forgot, hiding away between the two leftmost boards is an I2C RTC module. I do plan to use this later...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Addressing&lt;/span&gt;&lt;br /&gt;In order for I2C to work, each slave device needs a unique address. I don't want to have to reprogram the individual daughter cards after they've been configured, so I've brought down digital pins 11-13 to the motherboard. These pins will be either wired to +5v or 0v, depending on which slot they're in. These 3 inputs are then used to calculate the I2C address, giving 8 possible addresses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Demo&lt;/span&gt;&lt;br /&gt;In the picture you can see three of the Pros connected to a Duemilanove as the main CPU. As a very simple test program I have the CPU turning on the LED on each of the expansion boards in turn, then waiting, and turning them off again, to create a kind of chaser effect.&lt;br /&gt;&lt;br /&gt;Eventually there'll be 5 Pros connected to the backplane (I don't have enough female header strips to complete the board today). I honestly don't know what I'm going to do with it afterwards, but I think this demonstrates a good proof of concept and I hope someone can think of a good use for this arrangement :).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[UPDATED] Source code:&lt;/span&gt;&lt;br /&gt;The code's still  not quite finished yet, but it now supports all the basic pin commands, except with an extra parameter to specify the card you want to address:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;digitalRead()&lt;/li&gt;&lt;li&gt;digitalWrite()&lt;/li&gt;&lt;li&gt;analogRead()&lt;/li&gt;&lt;li&gt;pinMode()&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I've left in the "turn on LED" and "turn off LED" commands for good measure. The hardware addressing still isn't implemented yet either because I've run out of PCB headers.&lt;br /&gt;&lt;br /&gt;CPU code - &lt;a href="http://paddyvs.mine.nu/arduino/Backplane_CPU.pde"&gt;here&lt;/a&gt;&lt;br /&gt;Expansion board code - &lt;a href="http://paddyvs.mine.nu/arduino/Backplane_Card1.pde"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;More photos&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SoLktNvyRgI/AAAAAAAAGYM/Jj455q6g3k0/s1600-h/IMG_0281.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SoLktNvyRgI/AAAAAAAAGYM/Jj455q6g3k0/s200/IMG_0281.JPG" alt="" id="BLOGGER_PHOTO_ID_5369105171214386690" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SoLksgWMFkI/AAAAAAAAGYE/bZ53xnbiajs/s1600-h/IMG_0280.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SoLksgWMFkI/AAAAAAAAGYE/bZ53xnbiajs/s200/IMG_0280.JPG" alt="" id="BLOGGER_PHOTO_ID_5369105159027430978" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SoLksdV9rVI/AAAAAAAAGX8/em_7HQxVXdc/s1600-h/IMG_0278.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SoLksdV9rVI/AAAAAAAAGX8/em_7HQxVXdc/s200/IMG_0278.JPG" alt="" id="BLOGGER_PHOTO_ID_5369105158221180242" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SoLkrkaG3aI/AAAAAAAAGX0/CKTrn55IYYc/s1600-h/IMG_0276.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SoLkrkaG3aI/AAAAAAAAGX0/CKTrn55IYYc/s200/IMG_0276.JPG" alt="" id="BLOGGER_PHOTO_ID_5369105142937738658" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SoLkrNVFjjI/AAAAAAAAGXs/75yFxurkxAs/s1600-h/IMG_0273.JPG"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer; width: 200px; height: 150px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SoLkrNVFjjI/AAAAAAAAGXs/75yFxurkxAs/s200/IMG_0273.JPG" alt="" id="BLOGGER_PHOTO_ID_5369105136742665778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As always, comments, suggestions and fan mail are greatly appreciated&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-4829725370541142564?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/4829725370541142564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=4829725370541142564' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4829725370541142564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4829725370541142564'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/08/arduino-backplane-experiment.html' title='Arduino Backplane Experiment'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1R2pAAV4qGM/Sn2nC_kXgWI/AAAAAAAAGXk/e5zJCm1NhW8/s72-c/005.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-8942085565353998971</id><published>2009-08-01T11:30:00.000+01:00</published><updated>2009-08-01T11:31:17.941+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogging'/><title type='text'>iPhones are great things</title><content type='html'>Just spent £1.79 on an app to blog from my phone. Lets see how it goes...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Post From My iPhone&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-8942085565353998971?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/8942085565353998971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=8942085565353998971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/8942085565353998971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/8942085565353998971'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/08/iphones-are-great-things.html' title='iPhones are great things'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-4965661309853250399</id><published>2009-07-02T23:36:00.003+01:00</published><updated>2009-07-02T23:56:10.061+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>My version of the BakerTweet</title><content type='html'>In case you haven't heard about the awesomeness, the BakerTweet (&lt;a href="http://www.bakertweet.com/"&gt;www.bakertweet.com&lt;/a&gt;) is an Arduino based twitter client. It's a little box that sits on the wall of a bakery, and whenever something tasty comes out of the oven, the baker can select the product and let the world know via Twitter that there's a fresh batch of croissants ready.&lt;br /&gt;&lt;br /&gt;I thought this was a great idea! And I've been wanting an excuse to hook my Arduino up to twitter for ages.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What you'll need:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Arduino board (I'm using the Duemilanove)&lt;/li&gt;&lt;li&gt;Ethernet shield&lt;/li&gt;&lt;li&gt;LCD shield&lt;/li&gt;&lt;li&gt;3 push buttons (if your LCD shield doesn't come with them)&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;How to do it:&lt;/span&gt;&lt;br /&gt;All the elements of this project are already widely available. People have been using the official Arduino Ethernet shield to sent Twitter updates for ages. My problem was that I bought the much cheaper, ENC28J60 based Ethernet shield by &lt;a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=4"&gt;nuelectrnoics&lt;/a&gt;. It wasn't until tuxgraphics.org brought out their new TCP/IP stack, and &lt;a href="http://blog.thiseldo.co.uk/"&gt;Andy&lt;/a&gt; modded it for the Arduino that I was able to send Twitter updates from it.&lt;br /&gt;&lt;br /&gt;The LCD shield also proved a bit of a hassle. Mine is also from &lt;a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=2"&gt;nuelectronics&lt;/a&gt; and wouldn't sit properly on top of the Ethernet shield. The RJ45 socket from the lower shield is a lot higher than the pin headers, and there were some through-hole pins from the buttons poking through making it impossible for the two boards to mate.&lt;br /&gt;&lt;br /&gt;I soon solved that though by desoldering most of the buttons, shortening the leads, and re-soldering them in a surface mount fashion. They work just fine, and the two boards will now mate (not perfectly, but enough to make a solid connection).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Code:&lt;/span&gt;&lt;br /&gt;The code for my Arduino sketch is located &lt;a href="http://paddyvs.mine.nu/arduino/TwitterWithLCD.pde"&gt;here&lt;/a&gt;. Basically, you just plug the board into an Internet router (over a wired LAN), power the Arduino somehow, and then use the buttons to scroll through the possible tweets. Once you've found the one you like, click the send button and it'll post the tweet to your Twitter account.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's Next?&lt;/span&gt;&lt;br /&gt;I'd love to make this thing wireless, using a WiFi card. I bet they aren't cheap though....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-4965661309853250399?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/4965661309853250399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=4965661309853250399' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4965661309853250399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4965661309853250399'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/07/my-version-of-bakertweet.html' title='My version of the BakerTweet'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-6177129516502722673</id><published>2009-07-01T20:16:00.008+01:00</published><updated>2009-07-01T20:42:32.343+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='wii'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='modding'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Cheap Joystick and Accelerometer for Arduino from Wii Nunchuck</title><content type='html'>For ages now I've been wanting to play with an accelerometer but didn't really fancy paying £20-25 for the privilege. I'd also seen a lot of posts about people using the joystick from a Wii Nunchuck to control robots, servos, cameras, etc, which I didn't have a lot of interest in. Then I remembered that the Nunchuck controller actually has an accelerometer built in. Long story short, I'm now short one Nunchuck and plus one accelerometer.&lt;br /&gt;&lt;br /&gt;The economics of this one really work out, since a Nunchuck is usually only about £15, and communicates over I2C which saves on IO. So far, the lowest price accelerometer I've found was over £20 and communicated using 3x analogue signals.&lt;br /&gt;&lt;br /&gt;Obviously I'm not the first to make this realisation. A quick Google search took me to &lt;a href="http://www.windmeadow.com/node/42"&gt;http://www.windmeadow.com/node/42&lt;/a&gt;, which gives a great tutorial on how to wire it up and gives a sample sketch to get you up and running.&lt;br /&gt;&lt;br /&gt;I wanted a way to visualize the data coming out, just so I could see how it looks when I make a few gestures or use the buttons and joystick. I'm not the greatest fan of Processing (mainly because I haven't used it an awful lot) but I am a big fan of Java. I created a program which shows me the current levels of each of the 5 axes (x, y, z, joystick x, joystick y), and the 2 buttons. It also graphs the xyz-axes over time. Cool eh?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/Sku8H3_8pxI/AAAAAAAAGXU/P5w9OtnCrfg/s1600-h/Screenshot-Paddy%27s+Nunchuck+Reading+App.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 219px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/Sku8H3_8pxI/AAAAAAAAGXU/P5w9OtnCrfg/s400/Screenshot-Paddy%27s+Nunchuck+Reading+App.png" alt="" id="BLOGGER_PHOTO_ID_5353579425537238802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As with most of my programs it needs a lot of attached Jar files, so here's my Eclipse &lt;a href="http://paddyvs.mine.nu/arduino/NunchuckReader.zip"&gt;workspace folder&lt;/a&gt; in zip format. &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Note:&lt;/span&gt; you'll need to tweak the Windymedow sample sketch a little to work for my Java program - specifically you'll need to change the value separator in the "print()" function to a comma, not a tab.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-6177129516502722673?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/6177129516502722673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=6177129516502722673' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6177129516502722673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6177129516502722673'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/07/cheap-joystick-and-accelerometer-for.html' title='Cheap Joystick and Accelerometer for Arduino from Wii Nunchuck'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1R2pAAV4qGM/Sku8H3_8pxI/AAAAAAAAGXU/P5w9OtnCrfg/s72-c/Screenshot-Paddy%27s+Nunchuck+Reading+App.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-46751354553259215</id><published>2009-06-28T16:09:00.006+01:00</published><updated>2009-06-28T16:42:56.300+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='lasers'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Arduino + Laser Pointer + Servos = Homemade Laser Cannon</title><content type='html'>After discovering how ridiculously easy it was to control a servo motor from the Arduino, I wondered what 2 servos and a laser pointer could do...&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/UUm-SWC7hHg&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/UUm-SWC7hHg&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Long story short, I now have a computer controlled laser cannon muhahha!&lt;br /&gt;&lt;br /&gt;The whole thing is controlled via serial commands, which let me:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Control pitch (Y) and yaw (X)&lt;/li&gt;&lt;li&gt;Turn the laser on and off&lt;/li&gt;&lt;li&gt;Make the laser flash or not&lt;/li&gt;&lt;li&gt;Follow a pre-programmed "sweep" pattern&lt;/li&gt;&lt;li&gt;Control whether or not the laser turned off while moving and on again&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SkeM1X8MqRI/AAAAAAAAGXE/hMLGD7iQDCg/s1600-h/Screenshot-Paddy%27s+Laser+Controller+App.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SkeM1X8MqRI/AAAAAAAAGXE/hMLGD7iQDCg/s320/Screenshot-Paddy%27s+Laser+Controller+App.png" alt="" id="BLOGGER_PHOTO_ID_5352401530740582674" border="0" /&gt;&lt;/a&gt;I started by sending the commands by hand from the Arduino IDE, but then I wrote a Java app that let me control all the options using a GUI, which made things a lot easier. It can also record the position of the laser at given times, and play these back, allowing the laser to follow a path:&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/S0eBx_QijE0&amp;hl=en&amp;fs=1&amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/S0eBx_QijE0&amp;hl=en&amp;fs=1&amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Finally, I added some physical aiming controls (two variable resistors to control X and Y). This makes it a lot easier to point it at objects, and I can use it along side the Java interface.&lt;br /&gt;&lt;br /&gt;If you want to build your own, the Arduino PDE file is &lt;a href="http://paddyvs.mine.nu/arduino/SerialToServoPos.pde"&gt;here&lt;/a&gt;. There's not much actual "building" required - if you have two servos, Blu Tac them together and sticky tape a laser pointer on the side. I'm using a heavy shot glass as a frim base for mine ;)&lt;br /&gt;&lt;br /&gt;The laser pointer and servos drew too much power for my Arduino to handle on its own, so I have them hooked up to an external 4.5V supply. The servos have a separate +V and signal wire so they were easy enough to wire up, but I had to use a transistor to switch the laser pointer.&lt;br /&gt;&lt;br /&gt;I'm not quite finished the Java app yet, but if you're interested leave a comment and I'll post what I have so far.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-46751354553259215?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/46751354553259215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=46751354553259215' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/46751354553259215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/46751354553259215'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/06/arduino-laser-pointer-servos-homemade.html' title='Arduino + Laser Pointer + Servos = Homemade Laser Cannon'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1R2pAAV4qGM/SkeM1X8MqRI/AAAAAAAAGXE/hMLGD7iQDCg/s72-c/Screenshot-Paddy%27s+Laser+Controller+App.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-3952561170462382558</id><published>2009-06-25T11:06:00.007+01:00</published><updated>2009-06-25T14:48:52.134+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='arduino'/><category scheme='http://www.blogger.com/atom/ns#' term='gadgets'/><title type='text'>Arduino Based Data Logger</title><content type='html'>Well I thought it was about time I actually finished a project I started (enough to boast about online anyway). I recently bought myself an &lt;a href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove"&gt;Arduino&lt;/a&gt; and just about every attachment under the sun, and have really been stumped for interesting projects to do with it.&lt;br /&gt;&lt;br /&gt;I decided to build myself a makeshift data logger to sample the temperature and brightness of my bedroom during the night. Temperature was the main variable I was looking for, but I thought brightness would let me compare this to when the sun came up, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;Hardware used:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1x Arduino Duemilanove&lt;/li&gt;&lt;li&gt;1x Prototyping breadboard&lt;/li&gt;&lt;li&gt;1x Light Dependent Resistor (LDR)&lt;/li&gt;&lt;li&gt;1x Thermistor (RTD)&lt;/li&gt;&lt;li&gt;2x Resistors&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2x 1024Kbit EEPROM chips (Microchip 24aa1025)&lt;/li&gt;&lt;li&gt;Some jumper wires&lt;/li&gt;&lt;li&gt;An LED&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Description of Parts:&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Arduino&lt;/span&gt; (&lt;a href="http://www.arduino.cc/"&gt;www.arduino.cc&lt;/a&gt;)&lt;br /&gt;"An Arduino is an open source electronics prototyping platform," according to their website. It consists of a circuit board with a processor and memory, some digital and analog inputs and outputs and usually a USB port. You can also get attachments that give them screens, ethernet ports, bluetooth, etc. People have done some pretty awesome things with them, from cat flaps that Twitter whenever their cats come home, to flight controllers for UAVs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Breadboard&lt;/span&gt;&lt;br /&gt;Pretty standard piece of electronic prototyping kit. A breadboard is a plastic board with holes in it that let you plug wires and other discrete electronic components together. I got mine from Maplin Electronics (in the UK), though you can get them at pretty any electrical retailler&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Light Dependent Resistor (LDR) and Thermistor (RTD)&lt;/span&gt;&lt;br /&gt;In case you're wondering, RTD stands for "Resistance Temperature Detector," and basically means a resistor that changes it's value based on how h ot it is. An LDR works on the same principal (except with light instead of heat). I got these off eBay, though again you can get them from anywhere&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EEPROM Chips&lt;/span&gt;&lt;br /&gt;EEPROM (Electronically Erasable Programmable Read Only Memory) chips are used to store the data once I've acquired and processed it. The chips I'm using are made by Microchip (the guys who make PIC processors), and communicate over I2C, which only uses two wires from the Arduino (saves on IO). I got mine for free 'cos im a student from &lt;a href="http://sample.microchip.com/"&gt;Microchip Direct&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Building the Circuit&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;:&lt;/span&gt;&lt;br /&gt;There's not a lot of point in me including a circuit diagram. If you're familiar at all with the Arduino you'll know it has a bunch of analog voltage inputs. I wired the RTD and LDR up in &lt;a href="http://en.wikipedia.org/wiki/Voltage_divider"&gt;voltage divider&lt;/a&gt; style setups and plugged Vout from each into the an analog input (AN0 and AN1 in my case).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SkNoCyF8JBI/AAAAAAAAFOE/_tzAl5ZlSoc/s1600-h/photo2.jpg"&gt;&lt;img style="cursor: pointer; width: 200px; height: 150px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SkNoCyF8JBI/AAAAAAAAFOE/_tzAl5ZlSoc/s200/photo2.jpg" alt="" id="BLOGGER_PHOTO_ID_5351235179261994002" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SkNoCvQWmnI/AAAAAAAAFN8/JBUnPoKrSEo/s1600-h/photo.jpg"&gt;&lt;img style="cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SkNoCvQWmnI/AAAAAAAAFN8/JBUnPoKrSEo/s200/photo.jpg" alt="" id="BLOGGER_PHOTO_ID_5351235178500364914" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SkNoDKd0mZI/AAAAAAAAFOM/ngvCqQhg0wQ/s1600-h/photo3.jpg"&gt; &lt;img style="cursor: pointer; width: 150px; height: 200px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SkNoDKd0mZI/AAAAAAAAFOM/ngvCqQhg0wQ/s200/photo3.jpg" alt="" id="BLOGGER_PHOTO_ID_5351235185804614034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The EEPROM chips were wired up according to their datasheet. Basically this involves plugging each of the 8 pins into either 5V or 0V, except the two used for communications. No other discrete components were used.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Programming&lt;/span&gt;&lt;/span&gt;:&lt;br /&gt;Now, the really fun part! The ATmega chip on the Arduino is programmed using the AVR C compiler. You can download this, and the programming environment from &lt;a href="http://www.arduino.cc/"&gt;www.arduino.cc&lt;/a&gt;. Programming took me about 6-8 hours to write the program for the processor, and about 1 hour for the program running on my PC to graph the values.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Processor&lt;/span&gt;&lt;br /&gt;Besides actually capturing the data every 15s and storing it to the EEPROMs, I had a couple of other requirements for the processor.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I had to be able to calibrate my sensors - i.e. I had to be able to stick the RTD in the fridge with a thermometer, and tell the processor what temperature it was actually at. Similarly while holding it in my hands to keep it warm. The processor then had to translate the raw analog values into actual temperature readings.&lt;/li&gt;&lt;li&gt;I needed to get the data out of the EEPROMs somehow, which meant getting the processor to read the data off the chips and dump it over serial to the PC.&lt;/li&gt;&lt;/ol&gt;The source code (PDE) file from the Arduino IDE is &lt;a href="http://paddyvs.mine.nu/arduino/LightHeat_EEPROM_Logger.pde"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Graphing Software&lt;/span&gt;&lt;br /&gt;I needed a way to show these results. I used Java, and an open source graphing package called JFreeChart. The Java program sends a serial command to the Arduino telling it to send its data, and the Arduino sends a comma separated list of values to the PC, which the Java program then interprets and displays on the graph.&lt;br /&gt;&lt;br /&gt;The source code can be found &lt;a href="http://paddyvs.mine.nu/arduino/GraphFrame.java"&gt;here&lt;/a&gt;, though you'll need a whole bunch of JAR files, and some of the Arduino config files. The entire Eclipse workspace folder can be found &lt;a href="http://paddyvs.mine.nu/arduino/DataLoggerGrapher.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Results:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SkNhudM_2pI/AAAAAAAAFNc/bzUJB-2C01U/s1600-h/Screenshot-Paddy%27s+Data+Logger+Grapher+App.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 209px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SkNhudM_2pI/AAAAAAAAFNc/bzUJB-2C01U/s320/Screenshot-Paddy%27s+Data+Logger+Grapher+App.png" alt="" id="BLOGGER_PHOTO_ID_5351228232987302546" border="0" /&gt;&lt;/a&gt;The graph above shows the results from leaving my data logger running overnight in my bedroom. You can see the temperature barely drops to about 23'C during the night, even with my windows open. Considering this is Scotland, it's hard to believe. No wonder I'm having trouble sleeping!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-3952561170462382558?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/3952561170462382558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=3952561170462382558' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3952561170462382558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3952561170462382558'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/06/arduino-based-data-logger.html' title='Arduino Based Data Logger'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1R2pAAV4qGM/SkNoCyF8JBI/AAAAAAAAFOE/_tzAl5ZlSoc/s72-c/photo2.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-5070775117332345977</id><published>2009-05-07T00:50:00.003+01:00</published><updated>2009-05-07T15:53:19.195+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Windows free for 30 days - Day 2</title><content type='html'>Day 2 of my Exam Revision Avoidance Strategy(tm)&lt;br /&gt;&lt;br /&gt;I still haven't been to sleep yet, so this is still technically day 1, but whatever...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Linux &amp;amp; Gaming...&lt;/span&gt;&lt;br /&gt;Tonight I decided to put some games on to play. Not the crappy card games that come with every OS, proper games, FPSes. I wanted to run Steam, and there's a this cool app called PlayOnLinux that handles all the fiddly bits for you. Basically you install it, and it handles all the Wine setup, etc, for you. Cool eh?&lt;br /&gt;&lt;br /&gt;Installing POL was as easy as going to their website, adding their repository to my sources.list, and installing using apt. Installing Steam required even less effort - simply click on the "Add" button and select Steam from the list. Once Steam was installed, I shut it down, deleted the new &lt;span style="font-style: italic;"&gt;steamapps&lt;/span&gt; folder, and created a symbolic link back to my normal &lt;span style="font-style: italic;"&gt;steamapps&lt;/span&gt; folder. This saved me downloading the 6.9GB of games I'd already downloaded. Even cooler!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SgIkOeZT39I/AAAAAAAAE2s/KZluWmUXpuE/s1600-h/8-2576_2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 180px;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SgIkOeZT39I/AAAAAAAAE2s/KZluWmUXpuE/s320/8-2576_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5332864739856080850" border="0" /&gt;&lt;/a&gt;Running the games proved less fruitful. Source (the game engine) had a small brain hemorrhage (probably over my dual monitor, virtual space setup) and died a horrible horrible death. It's too late tonight to try again, but over the weekend I should get it sorted....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Linux Web Servers&lt;/span&gt;&lt;br /&gt;If you've been exposed to Linux for more than 5 minutes you'll probably know they make the best web servers. There's even an acronym, LAMP, which stands for Linux, Apache, MySQL and PHP (WAMP is a Windows variant, but we don't care about that).&lt;br /&gt;&lt;br /&gt;For the more nerdy among you, I've just spent the day recompiling php5 for Ubuntu to include GD2. This isn't normally included with the Ubuntu version of php5, and using apt to install it will not give you all the necessary image functions.&lt;br /&gt;&lt;br /&gt;I've read a really good step-by-step on how to recompile php with the gd2 extension &lt;a href="http://cumu.li/2008/5/13/recompiling-php5-with-bundled-support-for-gd-on-ubuntu"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-5070775117332345977?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/5070775117332345977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=5070775117332345977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/5070775117332345977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/5070775117332345977'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/05/windows-free-for-30-days-day-2.html' title='Windows free for 30 days - Day 2'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1R2pAAV4qGM/SgIkOeZT39I/AAAAAAAAE2s/KZluWmUXpuE/s72-c/8-2576_2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-4863484703993795501</id><published>2009-05-06T14:17:00.007+01:00</published><updated>2009-05-06T19:24:40.852+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ipod'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='apple'/><title type='text'>Windows free for 30 days - Day 1</title><content type='html'>Day 1 of my Exam Revision Avoidance Scheme(tm). I'm still Windows-free, and not missing it much.&lt;br /&gt;&lt;br /&gt;Been mostly watching videos and working on revision today. Ubuntu's been great for that. Whenever I try to play a video and I don't have the codec for it, it just gives me the option to search and install it - don't even have to restart the player.&lt;br /&gt;&lt;br /&gt;On a side note, I have a Windows server running in a cupboard in my flat. It's there mainly to run BitTorrent so we can download stuff and share files between all of us. The hard drives on it were full today, so I had the trouble of clearing them out. Luckily Ubuntu has a sexy little disk usage analyzer, which actually works across the network to the shared folders on the Windows server. This meant I could just look at the large folders and delete files from them. Easy peasy. I was even able to move and delete the files remotely from Ubuntu.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SgHR36ofR0I/AAAAAAAAE2k/fTojYNwl2KE/s1600-h/Screenshot-Disk+Usage+Analyser.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 209px;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SgHR36ofR0I/AAAAAAAAE2k/fTojYNwl2KE/s320/Screenshot-Disk+Usage+Analyser.png" alt="" id="BLOGGER_PHOTO_ID_5332774192345466690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I encountered a few problems today. Mostly to do with calendars and contacts on my iPhone. All of my calendars and contacts were synced with Outlook via iTunes. Now I want to sync these with my Google account. I've found a new service called &lt;a href="http://www.nuevasync.com/"&gt;NeuvaSync&lt;/a&gt; (beta), that lets me do this over the air. Trouble is, in order to sync them with a new account I have to clear them from my phone for some reason. This isn't something I really want to do because I like having my contacts in my phone, and I don't want to have to put them in again by hand. Sod that. I'll wait to see if another solution presents itself&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;I've just received an email from my uni saying that we're in the running for the ATOS Origin prize for best project group. Happy times for us :). We have to do a presentation on Friday about our project, and it has to be done on PowerPoint. I'm hoping one of the guys in my group will be able to do the presentation so I don't have to touch Windows ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-4863484703993795501?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/4863484703993795501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=4863484703993795501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4863484703993795501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/4863484703993795501'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/05/windows-free-for-30-days-day-1.html' title='Windows free for 30 days - Day 1'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1R2pAAV4qGM/SgHR36ofR0I/AAAAAAAAE2k/fTojYNwl2KE/s72-c/Screenshot-Disk+Usage+Analyser.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-3604743459961767417</id><published>2009-05-05T18:42:00.006+01:00</published><updated>2009-05-05T19:08:43.282+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Windows free for 30 days - Day 0</title><content type='html'>As part of my "Exam Revision Avoidance Strategy(tm)" I've come up with a challenge for myself - I want to go without using Microsoft Windows for 30 days. More than that, I want to avoid paid software altogether, and focus on open source alternatives instead.&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SgCAB22688I/AAAAAAAAE2c/yYhCH78VBM8/s1600-h/windows-vs-ubuntu1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 244px;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SgCAB22688I/AAAAAAAAE2c/yYhCH78VBM8/s400/windows-vs-ubuntu1.jpg" alt="" id="BLOGGER_PHOTO_ID_5332402728200762306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I'll be using Ubuntu, a free, open source version of Linux. Ubuntu comes with all the tools most people need to replace Windows: Office software (word processor, spreadsheet, easy database, etc), image editing software, music players, internet browser, solitaire, etc.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;I'll be keeping a blog in the hope that it'll encourage more people to use Linux (or other open source OSs). This blog will be mainly aimed at Windows users, whether they are experienced users or new to computers and didn't know there was an alternative to Windows.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Background:&lt;/span&gt;&lt;br /&gt;I've been using Linux for about 2 years now, ever since we started using it in university. I'd always known about it, but never really found a way to get my foot in the door. It is only really recently that Linux has become user friendly enough for home users, especially with the new Ubuntu releases.&lt;br /&gt;&lt;br /&gt;What really sparked this all off was the new Ubuntu 9.04 release, which I think equals or surpasses Windows XP in many features, including user friendlyness. I've had trouble setting up printers, dual monitors and my mobile broadband modem before, but these were all set up automatically when I installed 9.04&lt;br /&gt;&lt;br /&gt;I'd like to point out now that I'm not a Microsoft hater. I was, in my more naive days, but Microsoft do make good products. In fact, as a Heriot Watt student I'm entitled to free licenses for MS Windows and MS Office, but I still prefer to use open source stuff.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Preparation:&lt;/span&gt;&lt;br /&gt;The reason I'm calling this &lt;span style="font-style: italic;"&gt;Day 0 &lt;/span&gt;is because I'll still be using Windows to make sure I have access to everything I'll need for the next month. This includes my calendars, contacts, music on my iPhone, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step 1 - Install Linux&lt;/span&gt;&lt;br /&gt;As mentioned before, I'll be using Ubuntu 9.04. I've had this installed since the day after 9.04 came out, so I was already prepared on this front. I've set my computer up to dual-boot, which means when I restart my computer I can decide whether to go into Windows or Linux. This makes swapping between the two to set things up a lot easier (there are many, maaaany tutorials online about how to dual-boot Windows and Ubuntu).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step 2 - Jailbreak iPhone&lt;/span&gt;&lt;br /&gt;Syncing an iPhone in Linux is possible, but you generally need to jailbreak it. This has to be done in either Windows or Mac OS, and I don't have Mac OS, so Windows it was. I used QuickPwn by the iphone dev team, great software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step 3 - Have a shower&lt;/span&gt;&lt;br /&gt;This step wasn't really necessary for the preparation, but I'm trying to be as accurate as possible&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Step 4 - Say goodbye to Windows, say hello to Linux&lt;/span&gt;&lt;br /&gt;If like me you're dual-booting with Windows, you'll already know that Ubuntu can still read all your files straight off your Windows hard disk (although Windows usually can't read files stored on a Linux hard disk). This means I don't even need to move my files around for them to be available to me&lt;br /&gt;&lt;br /&gt;For the last time in a month, I've shut down Windows and booted into Ubuntu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-3604743459961767417?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/3604743459961767417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=3604743459961767417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3604743459961767417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/3604743459961767417'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2009/05/windows-free-for-30-days-day-0.html' title='Windows free for 30 days - Day 0'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1R2pAAV4qGM/SgCAB22688I/AAAAAAAAE2c/yYhCH78VBM8/s72-c/windows-vs-ubuntu1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-7206322397567422572</id><published>2008-08-16T19:08:00.005+01:00</published><updated>2008-08-17T00:07:26.490+01:00</updated><title type='text'>Friday night, followed by Saturday</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SKdctp1fyhI/AAAAAAAABK4/UZWSk5DuLqA/s1600-h/DSCF3232.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SKdctp1fyhI/AAAAAAAABK4/UZWSk5DuLqA/s320/DSCF3232.JPG" alt="" id="BLOGGER_PHOTO_ID_5235255031235594770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The past two days have been such a disaster I thoght it was worth blogging, so others can enjoy my suffering :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Friday night - Nicki comes up from England&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some notable events:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Exams went bad for a few people. Drinking ensues...&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Everyone pukes! Well... two people, lots of sick everywhere&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SKddlbqFdfI/AAAAAAAABLA/UVvxpIVQuJw/s1600-h/DSCF3274.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SKddlbqFdfI/AAAAAAAABLA/UVvxpIVQuJw/s200/DSCF3274.jpg" alt="" id="BLOGGER_PHOTO_ID_5235255989502309874" border="0" /&gt;&lt;/a&gt;Persons who shall remain nameless fall asleep in the bathroom, one with her head in the toilet, the other against the toilet hugger&lt;/li&gt;&lt;li&gt;"Someone" else made a booty call at 4am! AND kicked said booty call out at 5.30, har har&lt;/li&gt;&lt;li&gt;I finally get to sleep at 4.30am. Rudely woken at 5.30.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Saturday morning - Work&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;More notable events:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Work starts... 8.45am. I get up on time!!! In fact am 10 mins early for work&lt;/li&gt;&lt;li&gt;Supervisor doesn't turn up until 9.45. Manager is ringing, we don't want to answer (we like our supervisor)&lt;/li&gt;&lt;li&gt;While opening front doors the electric shutter comes down by itself, breaks, and we can't use the front door&lt;/li&gt;&lt;li&gt;Arsehole customer rings, complains he didn't get some cable in his box, we tell him to come in&lt;/li&gt;&lt;li&gt;Manager arrives to help fix shutters. Tells me I'm not even supposed to be in today!!!!&lt;/li&gt;&lt;li&gt;Arsehole customer comes in, royally pisses off our supervisor. Supervisor gets annoyed and tells everyone to fuck off&lt;/li&gt;&lt;/ul&gt;This is all before 10am. Good start to the day&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Closing up shop, had to move random junkie from back porch&lt;/li&gt;&lt;li&gt;Closing shutters, live wiring gets caught in shutter, nearly explodes&lt;/li&gt;&lt;li&gt;Finally get out of work 30 mins late&lt;/li&gt;&lt;li&gt;Wrote blog, contemplated falling asleep&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-7206322397567422572?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/7206322397567422572/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=7206322397567422572' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/7206322397567422572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/7206322397567422572'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2008/08/friday-night-followed-by-saturday.html' title='Friday night, followed by Saturday'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1R2pAAV4qGM/SKdctp1fyhI/AAAAAAAABK4/UZWSk5DuLqA/s72-c/DSCF3232.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-7708708471748960456</id><published>2008-08-03T12:40:00.004+01:00</published><updated>2008-08-03T13:51:38.268+01:00</updated><title type='text'>Why NOT to go with Virgin Media</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_1R2pAAV4qGM/SJWnCxmiIGI/AAAAAAAABKw/j6XNX-ZF4_Y/s1600-h/virgin-5gb.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_1R2pAAV4qGM/SJWnCxmiIGI/AAAAAAAABKw/j6XNX-ZF4_Y/s400/virgin-5gb.gif" alt="" id="BLOGGER_PHOTO_ID_5230270208377233506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We've been with Virgin Media for about 10 months. We paid for (up to) 8meg ADSL with unlimited downloads. From the first day we weren't overly impressed with the speed, especially since we can see the BT exchange from our window so range isn't an issue. Nonetheless we put up with what we had.&lt;br /&gt;&lt;br /&gt;Recently, during the day our speeds have been dropping off to next-to-nothing, which we just attributed to busy times and everyone clamoring to use the internet at once. Eventually though we heard about Virgin's "capping" of "heavy" users, and eventually got so pissed off with the speed that we phoned Virgin to confirm a few facts.&lt;br /&gt;&lt;br /&gt;According to the girl on the phone, Virgin has implemented a new Fair Use Policy, which means that if you download more than &lt;span style="font-weight: bold;"&gt;5GB in one week,&lt;/span&gt; your speed is capped to "&lt;span style="font-style: italic;"&gt;next to nothing&lt;/span&gt;" (her words). I pointed out that we paid for unlimited downloads, to which she replied that I was allowed unlimited downloads, but according to the fair use policy after 5GB I had to be happy with a piss poor connection speed.&lt;br /&gt;&lt;br /&gt;What is 5GB anyway? There are 4 people in our flat, which means 1.25GB each. If you take into account some heavy web surfing, iPlayer, youtube, etc, it's easy to hit that target after 2 days! And that's before all the music and movies off bittorrent ;)&lt;br /&gt;&lt;br /&gt;That whole "next to nothing" thing is pretty accurate too. For example, just after I started my phone call with Virgin I tried to open the Virgin Media homepage. Approximately 20 minutes later I still had a blank screen. I mentioned this on the phone... Virgin's response? &lt;span style="font-style: italic;"&gt;"Sorry about that, but since you're capped there's not much we can do"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I asked Virgin if we could upgrade to a heavier use package (note that we are already on "unlimited", but maybe a faster speed would have more reasonable limits). Apparently this would be no use, as all of Virgin's broadband packages are capped after 5GB. I sincerely hope this doesn't include their new Mother of All Broadband 28mb fibre optic package, since you could theoretically hit your limit after 24 minutes of downloading.&lt;br /&gt;&lt;br /&gt;So long story short - if you live on your own and only use the internet once or twice a week, Virgin is for you. If you plan to use your internet for anything more than checking your emails, go with a good provider.&lt;br /&gt;&lt;br /&gt;As a side note, I don't particularly blame Virgin for this kind of practise. Sure it's dishonest, sneaky, possibly illegal and a crappy way to treat your customers, but considering every man and his dog who owns an ISP is clamoring for a piece of the broadband provider pie, companies just can't afford to give you "good" broadband at the 50p/month price that people want to pay. My advice? You get what you pay for - go find a decent company that's willing to take £20 off you each month and give you an adequate service&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-7708708471748960456?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/7708708471748960456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=7708708471748960456' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/7708708471748960456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/7708708471748960456'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2008/08/why-not-to-go-with-virgin-media.html' title='Why NOT to go with Virgin Media'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_1R2pAAV4qGM/SJWnCxmiIGI/AAAAAAAABKw/j6XNX-ZF4_Y/s72-c/virgin-5gb.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-95145218229358215</id><published>2008-06-01T19:42:00.019+01:00</published><updated>2008-06-01T23:21:27.357+01:00</updated><title type='text'>Home brew hot air pencil</title><content type='html'>For my &lt;a href="http://pskillenrules.blogspot.com/2008/05/modding-my-eee-pc-to-do-awesome-things.html"&gt;Modding my EEE PC to do Awesome Things&lt;/a&gt; project, I've found that I need a way to desolder really tough components from a board. I've seen articles online where the author took an electronic desoldering iron, added an aquarium pump, and turned it into a pretty effective hot air pencil.&lt;br /&gt;&lt;br /&gt;Just by chance, we have started selling those desoldering irons in work for under £10 (Maplin: &lt;a href="http://www.maplin.co.uk/Search.aspx?criteria=n37ch&amp;amp;source=15&amp;amp;SD=Y"&gt;N37CH&lt;/a&gt;) . I went to the local pet shop and bought an aquarium pump for about £10, and 1m of tubing for 40p. Total cost - &lt; £20 (with my staff discount)  &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SELwpPKwInI/AAAAAAAAAFY/gsQ5oPlIgJg/s1600-h/DSCF0933.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SELwpPKwInI/AAAAAAAAAFY/gsQ5oPlIgJg/s320/DSCF0933.jpg" alt="" id="BLOGGER_PHOTO_ID_5206988710430646898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The desoldering iron is basically a desoldering pump with a heated metal tip. There is an element somewhere near the tip which heats the whole thing, and a hollow tube all the way down the middle into the suction chamber.&lt;br /&gt;&lt;br /&gt;Using the aquarium pump, I plan to convert that sucking action into a steady stream of air blown through the tip, which should be heated, then expelled onto the board in order to melt the solder.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1 - Strip down the desolder iron&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEL2ctSd7VI/AAAAAAAAAFg/OR8DR29ZAEM/s1600-h/DSCF0943.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEL2ctSd7VI/AAAAAAAAAFg/OR8DR29ZAEM/s200/DSCF0943.jpg" alt="" id="BLOGGER_PHOTO_ID_5206995092247539026" border="0" /&gt;&lt;/a&gt;The first step is to strip the desolder iron down into its individual parts. With my iron, all I had to do was stick a screwdriver round the back of the yellow chamber and pry it out. It slid out nicely and allowed me access to the little black bit which guides and holds the plunger.&lt;br /&gt;&lt;br /&gt;The plunger really isn't needed any more so I removed mine. This left a nice hole to stick the end of the pipe into. I had to drill mine out to about 6.5mm dia. before I could fit the pipe in, and then used copious amounts of superglue to hold it in place.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SEL5TiQuKgI/AAAAAAAAAFo/QWpP6txQEM0/s1600-h/DSCF0944.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SEL5TiQuKgI/AAAAAAAAAFo/QWpP6txQEM0/s200/DSCF0944.jpg" alt="" id="BLOGGER_PHOTO_ID_5206998233203485186" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL5TyxycyI/AAAAAAAAAF4/8b4YZIRFkxQ/s1600-h/DSCF0946.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL5TyxycyI/AAAAAAAAAF4/8b4YZIRFkxQ/s200/DSCF0946.jpg" alt="" id="BLOGGER_PHOTO_ID_5206998237637145378" border="0" /&gt; &lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL5TlHf-bI/AAAAAAAAAFw/FQNhmo3QOKo/s1600-h/DSCF0945.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL5TlHf-bI/AAAAAAAAAFw/FQNhmo3QOKo/s200/DSCF0945.jpg" alt="" id="BLOGGER_PHOTO_ID_5206998233970112946" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL5TyxycyI/AAAAAAAAAF4/8b4YZIRFkxQ/s1600-h/DSCF0946.jpg"&gt; &lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SEL5UP1mixI/AAAAAAAAAGA/wFV0CEoLbSQ/s1600-h/DSCF0954.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SEL5UP1mixI/AAAAAAAAAGA/wFV0CEoLbSQ/s200/DSCF0954.jpg" alt="" id="BLOGGER_PHOTO_ID_5206998245437770514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This pretty much completes the mods to the desoldering iron. Just put it back together with the pipe sticking out the back.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2 - The Pump&lt;/span&gt;&lt;br /&gt;Nothing really needs modded here. Just attach the end of the pipe to the pump's outlet. In my case the pump has two outputs. I assume this comes from one motor, which would mean that all my air would escape out the unsealed hole. I used a little piece of pipe, sealed one end, and put it on the other outlet to plug it up.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SEL5UfSzo8I/AAAAAAAAAGI/mQHGRF6iAiw/s1600-h/DSCF0948.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SEL5UfSzo8I/AAAAAAAAAGI/mQHGRF6iAiw/s200/DSCF0948.jpg" alt="" id="BLOGGER_PHOTO_ID_5206998249586795458" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEL6GxbULPI/AAAAAAAAAGQ/cfBN9IO5mWw/s1600-h/DSCF0949.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEL6GxbULPI/AAAAAAAAAGQ/cfBN9IO5mWw/s200/DSCF0949.jpg" alt="" id="BLOGGER_PHOTO_ID_5206999113447779570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And that's it - a (hopefully) finished hot air pencil. Now to try it out.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3 - Testing&lt;/span&gt;&lt;br /&gt;Obviously I have to test this sucker now. Below are the two test subjects - a pre-soldered circuit board and a drink bottle with a plastic wrapper.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SEL-xMV-0wI/AAAAAAAAAGY/fbLPxRQOrjQ/s1600-h/DSCF0956.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SEL-xMV-0wI/AAAAAAAAAGY/fbLPxRQOrjQ/s200/DSCF0956.jpg" alt="" id="BLOGGER_PHOTO_ID_5207004240274182914" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL-xuJLFjI/AAAAAAAAAGg/2JfVUG2q4h8/s1600-h/DSCF0957.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEL-xuJLFjI/AAAAAAAAAGg/2JfVUG2q4h8/s200/DSCF0957.jpg" alt="" id="BLOGGER_PHOTO_ID_5207004249347266098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Well what do you know? It didn't work! At least not on the solder on the circuit board. I did manage to melt a line down the wrapper on my drink bottle, but stopped before actually piercing the bottle as I planned to drink it later. Anyway the important point is it failed to melt the solder on my board.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEMQ9ZqNPNI/AAAAAAAAAHI/AVMmULjDE5o/s1600-h/DSCF0958.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEMQ9ZqNPNI/AAAAAAAAAHI/AVMmULjDE5o/s200/DSCF0958.jpg" alt="" id="BLOGGER_PHOTO_ID_5207024241216404690" border="0" /&gt;&lt;/a&gt;Decided to get my thermometer out and take some readings:&lt;br /&gt;&lt;/div&gt;Temperature of iron without air: 396°C&lt;br /&gt;Temperature of iron with air: 352°C&lt;br /&gt;Temperature of air at 1cm: 220°C&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;According to the manual of my solder station lead free solder melts in the range of 350-380°C. Obviously my hot air flow is too cold to melt the solder.&lt;br /&gt;&lt;br /&gt;With the air on my soldering iron can just about get up to the required temperature . However the tip was able to melt the solder with ease whenever it touched it directly. I have to assume that the tip is a lot hotter but the air flow through the iron is cooling the probe and messing with the results.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Step 4 - Perfection&lt;/span&gt;&lt;br /&gt;I need to increase the temperature of my airflow by about 100°C. There are two ways I can think of doing this. The first is to place a piece of copper braid inside the barrel of the iron. This copper braid will heat up, providing a larger surface area for the transfer of heat to the air on its way through the iron.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEMQbqMyJ2I/AAAAAAAAAGw/mUuZkyyD2IM/s1600-h/DSCF0959.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEMQbqMyJ2I/AAAAAAAAAGw/mUuZkyyD2IM/s200/DSCF0959.jpg" alt="" id="BLOGGER_PHOTO_ID_5207023661540845410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thermometer readings (with solder braid):&lt;br /&gt;Temperature of iron without air: 396°C&lt;br /&gt;Temperature of iron with air: 381°C&lt;br /&gt;Temperature of air at 1cm: 300°C&lt;br /&gt;&lt;br /&gt;Well look at that! An increase of 80°C already! In order to get these I had to strip the whole thing down again and superglue some of the seals. (I also had to burn my fingers a few times on the hot air jet)&lt;br /&gt;&lt;br /&gt;And the PCB melting test result is: fail. I have a feeling we're very close, but it just wont melt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5 - Perfection II&lt;/span&gt;&lt;br /&gt;Maybe some extra air flow will improve things. I decided to open up the pump and see if theres any way to increase the flow.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEMQbuXSseI/AAAAAAAAAG4/Yk7YddJw-zQ/s1600-h/DSCF0950.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEMQbuXSseI/AAAAAAAAAG4/Yk7YddJw-zQ/s200/DSCF0950.jpg" alt="" id="BLOGGER_PHOTO_ID_5207023662658662882" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEMQb9M3dxI/AAAAAAAAAHA/lDFBJ4AW50U/s1600-h/DSCF0951.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SEMQb9M3dxI/AAAAAAAAAHA/lDFBJ4AW50U/s200/DSCF0951.jpg" alt="" id="BLOGGER_PHOTO_ID_5207023666641467154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This pump actually has a really clever design! What you see at the back is most of a transformer, which they are using as an electromagnet. As the AC magnetises the metal core the permenant magnets on the arms of the pump are attracted, squeezing the bladder about half way down the arm and expelling the air inside. Somewhere inside there are a few one-way valves which mean the expelled air goes in the right direction and isn't sucked up again.&lt;br /&gt;&lt;br /&gt;More importantly for this hack though, both outputs are completely independent, which means that if I combine them I will get double the airflow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEMSbJrUg8I/AAAAAAAAAHQ/fqsF5P_G2O4/s1600-h/DSCF0955.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SEMSbJrUg8I/AAAAAAAAAHQ/fqsF5P_G2O4/s200/DSCF0955.jpg" alt="" id="BLOGGER_PHOTO_ID_5207025851833811906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, even for me this is a bit of a hashed up job, but with a mixture of sticky tape and superglue I managed to get a pretty airtight seal. And the tests?&lt;br /&gt;&lt;br /&gt;Thermometer readings (without solder braid, with double air flow):&lt;br /&gt;Temperature of iron with air: 340°C&lt;br /&gt;Temperature of air at 1cm: 190°C&lt;br /&gt;Thermometer readings (with solder braid and double air flow):&lt;br /&gt;Temperature of iron with air: 310°C&lt;br /&gt;Temperature of air at 1cm: 150°C&lt;br /&gt;&lt;br /&gt;Hmmm alright... Something has seriously gone wrong here. The solder braid is actually taking the temperature down significantly, and the temperature of the iron is dropping. I think the extra airflow is actually cooling the iron too much and the 30W element can't keep up. Oh well, back to the drawing board.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6 - Perfection III&lt;/span&gt;&lt;br /&gt;Ok double airflow didn't work, how about a reduced airflow?&lt;br /&gt;&lt;br /&gt;After dismantling my homemade T-junction (and supergluing my fingers together with un-dried superglue), I went back to the single air flow. I set up a rig to hold the temperature probe in front of the nozzle and squeezed the pipe to try and find the highest temperature I could obtain.&lt;br /&gt;&lt;br /&gt;Results (with solder braid):&lt;br /&gt;Temp @ 100% airflow: 200°C&lt;br /&gt;Highest attainable temp: 290°C&lt;br /&gt;&lt;br /&gt;Two observations here. First, I can only get 200°C here! If you remember from earlier, I was able to get 300°C the first time I tested this. This highlights the servere un-repeatabilty of these results. Secondly, I was able to get a 90°C increase by squeezing the tube. This was with about 75-90% of the airflow restricted! I still want to test this on the board though:&lt;br /&gt;&lt;br /&gt;Aw damnit! Still didn't work!&lt;br /&gt;&lt;br /&gt;Well, it seems that my 30w soldering iron is just not strong enough to stay warm while the airflow is going through it. Guess I'm going to need a stronger soldering iron to continue this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-95145218229358215?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/95145218229358215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=95145218229358215' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/95145218229358215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/95145218229358215'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2008/06/home-brew-hot-air-pencil.html' title='Home brew hot air pencil'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1R2pAAV4qGM/SELwpPKwInI/AAAAAAAAAFY/gsQ5oPlIgJg/s72-c/DSCF0933.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-370184570637233104</id><published>2008-05-30T12:29:00.021+01:00</published><updated>2008-05-30T14:24:40.910+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><category scheme='http://www.blogger.com/atom/ns#' term='computers'/><category scheme='http://www.blogger.com/atom/ns#' term='hacks'/><category scheme='http://www.blogger.com/atom/ns#' term='modding'/><category scheme='http://www.blogger.com/atom/ns#' term='eee'/><title type='text'>Dismantling the EEE PC</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;This is a post to compliment my post on &lt;a href="http://pskillenrules.blogspot.com/2008/05/modding-my-eee-pc-to-do-awesome-things.html"&gt;modding the EEE PC to do awesome things&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I will describe, in detail, the steps required to strip your eee pc 701 down to its bare bones (you have to figure out how to put it back together again yourself).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_paHrS8JI/AAAAAAAAAEA/xP_NInZQx6g/s1600-h/DSCF0785.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_paHrS8JI/AAAAAAAAAEA/xP_NInZQx6g/s200/DSCF0785.jpg" alt="" id="BLOGGER_PHOTO_ID_5206136329210097810" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;1 - Remove battery, modem bung, RAM door&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Removing the battery is easy. Grap the two sl&lt;/span&gt;&lt;span&gt;id&lt;/span&gt;&lt;span&gt;e&lt;/span&gt;&lt;span&gt;y lock&lt;/span&gt;&lt;span&gt;s, push o&lt;/span&gt;&lt;span&gt;utwards, and pull o&lt;/span&gt;&lt;span&gt;ut the battery. &lt;/span&gt;&lt;span&gt;The modem bung is nearly as&lt;/span&gt;&lt;span&gt; easy, get a fine screwdriver and &lt;span style="font-weight: bold;"&gt;carefully&lt;/span&gt; pry it out of the connector. Finally unscrew the two screws on the RAM door, save these and remove the door.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 - Remove the keyboard&lt;/span&gt;&lt;br /&gt;Turn the laptop over, so it is now face up. There are 3 tiny catches at the rear of the laptop, behind the F1, F6 and Break keys. &lt;/span&gt;&lt;span&gt;Take a straight screwdriver and push these backwards (towards the monitor), and the keyboard w&lt;/span&gt;&lt;span&gt;ill lift up at &lt;/span&gt;&lt;span&gt;the back. Now unclip the ribbon connectors for the keyboard and the mouse (shown below).Lift away the keyboard and keep it somewhere safe.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SD_tt3rS8KI/AAAAAAAAAEI/l5ItNt3PcdQ/s1600-h/DSCF0780.jpg"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SD_tt3rS8KI/AAAAAAAAAEI/l5ItNt3PcdQ/s200/DSCF0780.jpg" alt="" id="BLOGGER_PHOTO_ID_5206141066559025314" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/SD_t_3rS8LI/AAAAAAAAAEQ/jfWnFwKt888/s1600-h/DSCF0781.jpg"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/SD_t_3rS8LI/AAAAAAAAAEQ/jfWnFwKt888/s200/DSCF0781.jpg" alt="" id="BLOGGER_PHOTO_ID_5206141375796670642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3 - Removing the outer case&lt;/span&gt; Under the keyboard are 9 screws. Remove these with a star screwdriver and save them somewhere safe. Turn the laptop over and unscrew 6 screws from the base.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Note: &lt;/span&gt;&lt;span style="font-style: italic;"&gt;To keep tiny parts safe I use small boxes, especially for screws. This, combined with counting the number of screws to be removed or re-inserted, virtually eliminates the "parts left over" effect.&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_wHHrS8MI/AAAAAAAAAEY/aBvMwOphQU0/s1600-h/DSCF0786.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_wHHrS8MI/AAAAAAAAAEY/aBvMwOphQU0/s200/DSCF0786.jpg" alt="" id="BLOGGER_PHOTO_ID_5206143699373977794" border="0" /&gt;&lt;/a&gt;When removing the upper case you should note that the audio connectors are surrounded by plastic which is part of the case you are removing. You should put a straight screwdriver behind this and pry it out gently before removing the top completely&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SD_xyXrS8NI/AAAAAAAAAEg/9l3_6nkkSWc/s1600-h/DSCF0787.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SD_xyXrS8NI/AAAAAAAAAEg/9l3_6nkkSWc/s200/DSCF0787.jpg" alt="" id="BLOGGER_PHOTO_ID_5206145541914947794" border="0" /&gt;&lt;/a&gt;Remove the case evenly upwards (try not to lift the front first as the rear parts will catch on the monitor). Part of the metal will be stuck to two of the chips underneath by thermal stickers. Be careful to pry these slowly so as not to damage or unseat the chips.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4 - Removing the motherboard&lt;/span&gt;&lt;br /&gt;There are two plastic clips holding the front of the motherboard in, unclip these with a straight screwdriver. You need to remove (in no specific order):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Speakers connector (top left)&lt;/li&gt;&lt;li&gt;Webcam connector (top left)&lt;/li&gt;&lt;li&gt;Fan connetor (top left)&lt;/li&gt;&lt;li&gt;VGA connector (top right)&lt;/li&gt;&lt;li&gt;WIFI antenna connectors (x2) (underside, top right)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SD_z0nrS8PI/AAAAAAAAAEw/QGBeY2yRx7g/s1600-h/DSCF0788.jpg"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SD_z0nrS8PI/AAAAAAAAAEw/QGBeY2yRx7g/s200/DSCF0788.jpg" alt="" id="BLOGGER_PHOTO_ID_5206147779592909042" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/SD_0vXrS8QI/AAAAAAAAAE4/240PtUfVbRE/s1600-h/DSCF0790.jpg"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/SD_0vXrS8QI/AAAAAAAAAE4/240PtUfVbRE/s200/DSCF0790.jpg" alt="" id="BLOGGER_PHOTO_ID_5206148788910223618" border="0" /&gt;&lt;/a&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SD__wnrS8TI/AAAAAAAAAFQ/eGhPWoueZ2Y/s1600-h/DSCF0795.jpg"&gt;&lt;img style="margin: 0px auto 10px; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SD__wnrS8TI/AAAAAAAAAFQ/eGhPWoueZ2Y/s200/DSCF0795.jpg" alt="" id="BLOGGER_PHOTO_ID_5206160905012965682" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;(The third picture above is provided for when you forget which way round the speaker/webcam connectors go)&lt;br /&gt;&lt;br /&gt;You should now be able to lift the motherboard out. Place this somewhere &lt;span style="font-weight: bold;"&gt;SAFE &lt;/span&gt;- you kind of need this to run your laptop.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_4hHrS8RI/AAAAAAAAAFA/b8FphDBNEfU/s1600-h/DSCF0797.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_4hHrS8RI/AAAAAAAAAFA/b8FphDBNEfU/s200/DSCF0797.jpg" alt="" id="BLOGGER_PHOTO_ID_5206152942143598866" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;5 - Removing and dismantling the screen&lt;/span&gt;&lt;br /&gt;The screen is held to the base by two screws at the base of the screen.&lt;br /&gt;&lt;br /&gt;To remove the front bezel of the screen, there are 6 screws. These are hidden under the 4 rubber "feet" at the top of the screen, and 2 hidden under round plastic bits at the bottom. You need to pry these out with a sharp knife and keep them safe. They can be re-attached later with some superglue, though not for a while becuase they will be harder to remove again.&lt;br /&gt;&lt;br /&gt;There are small plastic clips around the perimeter of the bezel, which are unclipped by applying gentle pressure. There are also two clips on the inner perimeter (next to the screen, just below the speakers). These can be best accessed by poking a screwdriver from the outside of the bezel, past the speaker and unclipping them.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SD_8anrS8SI/AAAAAAAAAFI/UrpSsNnRMI0/s1600-h/DSCF0803.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SD_8anrS8SI/AAAAAAAAAFI/UrpSsNnRMI0/s200/DSCF0803.jpg" alt="" id="BLOGGER_PHOTO_ID_5206157228520960290" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6 - Congratulations&lt;/span&gt;&lt;br /&gt;You have stripped down your EEE PC about as far as you'll ever need to make some mods. I will not provide any more details here. I can be reached by &lt;a href="mailto:pskillen@gmail.com"&gt;email&lt;/a&gt; if you for some reason value my less-than-useful opinions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-370184570637233104?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/370184570637233104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=370184570637233104' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/370184570637233104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/370184570637233104'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2008/05/dismantling-eee-pc.html' title='Dismantling the EEE PC'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1R2pAAV4qGM/SD_paHrS8JI/AAAAAAAAAEA/xP_NInZQx6g/s72-c/DSCF0785.jpg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-9144934431282507067</id><published>2008-04-28T23:44:00.008+01:00</published><updated>2008-04-29T00:33:29.504+01:00</updated><title type='text'>BBQs and Upstairs Neighbours</title><content type='html'>Hi All,&lt;br /&gt;&lt;br /&gt;Just a rant about the moron who lives up the stairs from us.&lt;br /&gt;&lt;br /&gt;So yesterday we decided "Hey, it's a nice day! Let's get one of those disposable bbqs, get some people together and make an evening of it." So we did, we got some people together, got some food, and fired up the barbie.&lt;br /&gt;&lt;br /&gt;The old guy upstairs from us didn't like this. I don't know why he doesn't like us - maybe he was abused as a child, or maybe he's just so close to the grave that he can't stand to see people have fun. Anyway, he stuck his head out the window and told us to put it out or he'd be calling the fire brigade.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/SBZacOgVDII/AAAAAAAAADw/Lz0ZrAaKy3o/s1600-h/vlcsnap-54029.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/SBZacOgVDII/AAAAAAAAADw/Lz0ZrAaKy3o/s200/vlcsnap-54029.png" alt="" id="BLOGGER_PHOTO_ID_5194438661194976386" border="0" /&gt;&lt;/a&gt;Naturally we assumed that no one would be that much of an idiot. Unfortunately we were wrong. Next thing we know four (count em.. 4!!) fire engines are pulling up outside. Just as they were pulling the hoses off the engines and putting on their breathing stuff, we managed to get downstairs and explain the situation. Obviously he'd slightly exagerated the situation to the 999 operator.&lt;br /&gt;&lt;br /&gt;Luckily we managed to capture the scene on &lt;a href="http://www.youtube.com/watch?v=sjmtdoa-7bQ" target="_blank"&gt;video&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So Mr Upstairs Neighbour, I hope you're happy - you successfully managed to stop our barbeque. I hope you can sleep easy now in the thought that if an orphanage had burned down, all of Edinburgh's fire department were busy dealing with us. I hope they fined your ass for wasting everyones time.&lt;br /&gt;&lt;br /&gt;Note: The bbq was eventually extinguished using a small jug of water ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-9144934431282507067?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=94cb932ee0ac8df0&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/9144934431282507067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=9144934431282507067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/9144934431282507067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/9144934431282507067'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2008/04/bbqs-and-upstairs-neighbours.html' title='BBQs and Upstairs Neighbours'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1R2pAAV4qGM/SBZacOgVDII/AAAAAAAAADw/Lz0ZrAaKy3o/s72-c/vlcsnap-54029.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-812295717545685109</id><published>2008-04-06T20:13:00.002+01:00</published><updated>2009-06-28T16:41:04.968+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='pcb'/><category scheme='http://www.blogger.com/atom/ns#' term='electronics'/><title type='text'>How to make your own UV lightbox for PCBs</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/R_owQcHRNyI/AAAAAAAAAC0/TKrpr1EX1Nw/s1600-h/DSC00738.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/R_owQcHRNyI/AAAAAAAAAC0/TKrpr1EX1Nw/s320/DSC00738.JPG" alt="" id="BLOGGER_PHOTO_ID_5186510979853268770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ultraviolet (UV) light boxes can be pretty expensive, some costing upwards of £100. I don't have that kind of money to throw towards making a few hobby circuits, so I decided to build my own out of cheap parts (namely eBay-bought UV LEDs). I thought I'd share with you all my experience.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;What is a light box?&lt;/span&gt;&lt;br /&gt;A light box is used in a process called photo-lithography to transfer an image from acetate (overhead projector film) onto printed circuit board. This is how to draw all those little lines and circles on printed circuit boards, so that you can stick all the resistors, capacitors and microchips on.&lt;br /&gt;&lt;br /&gt;Photolithography consists of the following steps:&lt;br /&gt;1 - Design a circuit on the computer, print the circuit to acetate (OHP film)&lt;br /&gt;2 - UV photo-expose the acetate onto a specially prepared blank circuit board (this is what the light box is for)&lt;br /&gt;3 - Throw in some chemicals&lt;br /&gt;4 - All the copper you don't want on the circuit board melts away, leaving behind some pretty designs&lt;br /&gt;&lt;br /&gt;(If you want to know more about photolithography, read the Wikipedia entry &lt;a href="http://en.wikipedia.org/wiki/Photolithography" target="_blank"&gt;here&lt;/a&gt;)&lt;/blockquote&gt;&lt;br /&gt;Anyway, onto my light box, and how to build your own. You will need the following components:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;A box - I recommend a £3, 3-litre Really Useful Box® (Maplin: &lt;a href="http://www.maplin.co.uk/Search.aspx?criteria=N35BG&amp;amp;DOY=6m4"&gt;N35BG&lt;/a&gt;)&gt;. Keep in mind this is see-through, and if you buy better UV LEDs than I did you may get a bit of a tan&lt;/li&gt;&lt;br /&gt;&lt;li&gt;UV LEDs (50 or so) - I bought mine off eBay at £4 for 100, just search around&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Resistors - I used 8x 2W 390R resistors. UV LEDs draw a fair amount of current so I split my LEDs into groups of 6 and used a resistor for each group. YMMV with different LEDs (see the maths section at the end to calculate what you need)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Some plain matrix board - This is just strip board without the copper strips - Bought from Maplin, thought I can't find the code on their website&lt;/li&gt;&lt;br /&gt;&lt;li&gt;A switch, a wall-jack socket (ie. the socket for a 12v power adaptor), some solid core wire&lt;/li&gt;&lt;/ul&gt;You will also need a soldering iron, solder and a drill.&lt;br /&gt;&lt;br /&gt;My light box varies from traditional light boxes because the UV source in mine is in the lid, and the circuit board sits in the base, face up. Traditional light boxes have the UV source in the base, then a sheet of glass to place the circuit on top of, and then a lid. I like to be different ;).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1R2pAAV4qGM/R_ow4sHRNzI/AAAAAAAAAC8/27dQmGdtkEw/s1600-h/DSC00736.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_1R2pAAV4qGM/R_ow4sHRNzI/AAAAAAAAAC8/27dQmGdtkEw/s200/DSC00736.JPG" alt="" id="BLOGGER_PHOTO_ID_5186511671343003442" border="0" /&gt;&lt;/a&gt;The first step is to figure out how many LEDs you will need. My box gave about 12cm in height from the LEDs to the bottom of the box. With a viewing angle of 25 deg, this meant that I got a circle of about 5cm at the bottom. Just to be safe, I placed my LEDs ~4cm apart. (See the end of this post for all the complicated mathematics)&lt;br /&gt;&lt;br /&gt;Next step is to figure out what size to cut your matrix board, so it will comfortably fit in the lid. Mine was about 18x12cm. This still left gaps around the edge (because the lid is irregular around the edges), though as long as I keep the circuit in the middle it comes out OK.&lt;br /&gt;&lt;br /&gt;Draw yourself a grid to lay out the LEDs. Try to make this regular so you get even exposure.&lt;br /&gt;&lt;br /&gt;Once you have the grid, you should drill 4 holes around the corners of the board. Make sure you avoid the LEDs, and try not to place it in the middle of a line of LEDs, as you will be running wires down that line. Drill 4 corresponding holes in the lid of the box to mount the PCB.&lt;br /&gt;&lt;br /&gt;Now push the LEDs through the holes in the matrix board. Remember to lay them with the polarity facing the same way. You can either place them with the two legs horizontally or vertically. This will depend on how you are grouping them together, try to choose a way which will make wiring easier.&lt;br /&gt;&lt;br /&gt;(To hold the LEDs in place for soldering I used a little spot of superglue - don't do this - superglue is pretty toxic and the vapour released during soldering can't be good!!)&lt;br /&gt;&lt;br /&gt;When wiring the LEDs I placed them in parallel. All of the cathodes (negative legs) can be joined together. The anodes (positive legs) need to be joined together in groups (the size of which we decided earlier). Each group gets its own resistor, then the other side of the resistor is joined to the +ve supply.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/R_oxV8HRN0I/AAAAAAAAADE/O1qlnoKPBP8/s1600-h/DSC00742.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/R_oxV8HRN0I/AAAAAAAAADE/O1qlnoKPBP8/s320/DSC00742.JPG" alt="" id="BLOGGER_PHOTO_ID_5186512173854177090" border="0" /&gt;&lt;/a&gt;Take some wire and strip the plastic coating off it. Cut it into lengths to join the legs of each LED in each group, one wire down each side of the LED. Solder these wires on and your LEDs will be held in place. You can just about see what I mean in the picture, as well as my ingenious use of Lego  blocks :)&lt;br /&gt;&lt;br /&gt;Now take some more wire, measure out the length you will need to join all the negative tracks together. Strip a little of the black plastic off the end. Measure the distance you will need to travel to the next track and use a knife to cut the plastic here. Slide the rest of the plastic along a bit, and you have a gap to solder on to the next track. Repeat for all the tracks.&lt;br /&gt;&lt;br /&gt;Place the resistors on the board and solder one side to the positive track. Repeat the procedure above to join the other side of the resistors together. You now have a circuit board full of UV LEDs. To test it out, use some crocodile clips or pieces of wire, and connect to the positive and negative rails (make sure you connect to the red wire which is before the resistors! you don't want to connect straight to the LEDs and blow an entire group of them!) If all works, you can move on to the next stage.&lt;br /&gt;&lt;br /&gt;Drill a hole in the lid for a power switch an the wall jack socket. Wire these to the board, and then screw them into the lid.&lt;br /&gt;&lt;br /&gt;Finally, you need to find some posts to hold the board slightly away from the lid. I used little pieces of Lego since they were all I had to hand.&lt;br /&gt;&lt;br /&gt;Once it is all screwed together, you have your very own UV light box! I drew up a little test board and printed it on some acetate. I exposed it initially for 4 minutes, but because of my cheap LEDs it didn't work. You will have to use trial and error to find your optimum exposure time, but mine is about 12 minutes (yes I know this is a loooong time).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are some photos of the box in action, and the first few circuits I've made.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1R2pAAV4qGM/R_oyDMHRN1I/AAAAAAAAADM/lZeFgfU8LLg/s1600-h/DSC00743.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_1R2pAAV4qGM/R_oyDMHRN1I/AAAAAAAAADM/lZeFgfU8LLg/s200/DSC00743.JPG" alt="" id="BLOGGER_PHOTO_ID_5186512951243257682" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_1R2pAAV4qGM/R_oykcHRN2I/AAAAAAAAADU/fxxUaoxySk0/s1600-h/DSC00732.JPG"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_1R2pAAV4qGM/R_oykcHRN2I/AAAAAAAAADU/fxxUaoxySk0/s200/DSC00732.JPG" alt="" id="BLOGGER_PHOTO_ID_5186513522473908066" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/R_oyk8HRN3I/AAAAAAAAADc/CBViQQN-QKY/s1600-h/DSC00740.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/R_oyk8HRN3I/AAAAAAAAADc/CBViQQN-QKY/s200/DSC00740.JPG" alt="" id="BLOGGER_PHOTO_ID_5186513531063842674" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1R2pAAV4qGM/R_oyk8HRN4I/AAAAAAAAADk/TAdaaPQZ4FE/s1600-h/DSC00741.JPG"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_1R2pAAV4qGM/R_oyk8HRN4I/AAAAAAAAADk/TAdaaPQZ4FE/s200/DSC00741.JPG" alt="" id="BLOGGER_PHOTO_ID_5186513531063842690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;All the complicated maths stuff&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Resistors&lt;/span&gt;&lt;br /&gt;Resistors come in different power ratings - 1/4W, 2W, 4W, etc. You will probably want 2W resistors, as these are good compromise between size and power. That being said, you will still need a bunch of them.&lt;br /&gt;&lt;br /&gt;Power rating is calculated using the formula P=IV, where P is the power, I is the current, and V is the voltage. I used 2W resistors, at 12V, so by the equation I=P/V, I can draw 2W / 12V, or 0.16666 amps (160mA). This means a maximum of 8x 20mA LEDs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LED Spacing&lt;/span&gt;&lt;br /&gt;To figure out how far apart your LEDs should be, you need to know two high-school maths principles - trigonometry and the square inside the circle.&lt;br /&gt;&lt;br /&gt;First step, figure out the radius of the circle at the bottom:&lt;br /&gt;You should use trigonometry (the tangent of the angle by the height of the box - dont forget to divide the angle by 2!)&lt;br /&gt;&lt;br /&gt;The equation is: &lt;span style="font-weight: bold;"&gt;Radius of circle = Height of box * tan(Viewing angle /2)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now if you are arranging the LEDs in a neat grid, you will need to know the size of the square inside the circle. This is found using Pythagoras' theorm, the hypotenuse being the &lt;span style="font-weight: bold;"&gt;diameter&lt;/span&gt; of the circle.&lt;br /&gt;&lt;br /&gt;The equation is: &lt;span style="font-weight: bold;"&gt;Width of square = sqrt(diameter&lt;sup&gt;2&lt;/sup&gt; / 2&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;This will tell you how far apart your LEDs can safely be to avoid blackspots&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-812295717545685109?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/812295717545685109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=812295717545685109' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/812295717545685109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/812295717545685109'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2008/04/how-to-make-your-own-uv-lightbox-for.html' title='How to make your own UV lightbox for PCBs'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1R2pAAV4qGM/R_owQcHRNyI/AAAAAAAAAC0/TKrpr1EX1Nw/s72-c/DSC00738.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-8164307955330483172</id><published>2007-12-19T00:02:00.000Z</published><updated>2007-12-23T00:10:22.717Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='xmas'/><category scheme='http://www.blogger.com/atom/ns#' term='tv'/><category scheme='http://www.blogger.com/atom/ns#' term='holidays'/><title type='text'>Some very useful sites...</title><content type='html'>Since I'm at home for Christmas I don't have most of my media with me, but I do have the internet. I've since decided that streaming media is the way to the future!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Simpsons - &lt;a href="http://www.watchthesimpsonsonline.com/" target="_blank"&gt;www.watchthesimpsonsonline.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;South Park - &lt;a href="http://www.allsp.com/" target="_blank"&gt;www.allsp.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Scrubs - &lt;a href="http://www.watchscrubsonline.tv/" target="_blank"&gt;www.watchscrubsonline.tv&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Family Guy - &lt;a href="http://www.familyguyx.net/" target="_blank"&gt;www.familyguyx.net&lt;/a&gt;&lt;/li&gt;&lt;li&gt;House MD - &lt;a href="http://housemdvideos.com/seasons.html" target="_blank"&gt;housemdvideos.com/seasons.html&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;If you need any more (as if you would ever need any more than these), simply google "watch &lt;span style="font-style: italic;"&gt;xx &lt;/span&gt;online", where xx = the name of the show. The site you want will be in the top 3 links&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-8164307955330483172?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/8164307955330483172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=8164307955330483172' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/8164307955330483172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/8164307955330483172'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2007/12/some-very-useful-sites.html' title='Some very useful sites...'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-6367076785396662955</id><published>2007-12-14T22:36:00.000Z</published><updated>2007-12-14T22:40:57.354Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='xmas'/><category scheme='http://www.blogger.com/atom/ns#' term='drunk'/><title type='text'>Drunken xmas post!!</title><content type='html'>Well we put our xmas tree up today! It didn't help that we started getting drunk before the task, but I think the effect is great nonetheless. We also bought a load of outdoor lights, so we need to find a way to put them up.&lt;br /&gt;&lt;br /&gt;Anyway I'm spending the rest of the night getting drunk. There's no one around in Antrim tonight, or ever, so the evenings are boring!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-6367076785396662955?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/6367076785396662955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=6367076785396662955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6367076785396662955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/6367076785396662955'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2007/12/drunken-xmas-post.html' title='Drunken xmas post!!'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6760842257812702697.post-668871704800301122</id><published>2007-12-14T03:57:00.001Z</published><updated>2007-12-14T03:58:07.385Z</updated><title type='text'>First post</title><content type='html'>Hello world!&lt;br /&gt;&lt;br /&gt;Well this is my first blog post, ever. In the coming weeks, month and years I will bore you continually with my random thoughts and drunken ravings&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6760842257812702697-668871704800301122?l=pskillenrules.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pskillenrules.blogspot.com/feeds/668871704800301122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6760842257812702697&amp;postID=668871704800301122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/668871704800301122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6760842257812702697/posts/default/668871704800301122'/><link rel='alternate' type='text/html' href='http://pskillenrules.blogspot.com/2007/12/first-post.html' title='First post'/><author><name>DontPanic</name><uri>http://www.blogger.com/profile/07480691508869903669</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
