<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Richard Parker&#039;s blog &#187; Projects</title>
	<atom:link href="http://blog.richard.parker.name/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.richard.parker.name</link>
	<description>C#, Cloud Computing and Tech-miscellany</description>
	<lastBuildDate>Tue, 17 Jan 2012 22:20:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.richard.parker.name' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Richard Parker&#039;s blog &#187; Projects</title>
		<link>http://blog.richard.parker.name</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.richard.parker.name/osd.xml" title="Richard Parker&#039;s blog" />
	<atom:link rel='hub' href='http://blog.richard.parker.name/?pushpress=hub'/>
		<item>
		<title>TokenMail is now available on Nuget!</title>
		<link>http://blog.richard.parker.name/2011/06/29/tokenmail-is-now-available-on-nuget/</link>
		<comments>http://blog.richard.parker.name/2011/06/29/tokenmail-is-now-available-on-nuget/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 22:45:27 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Nuget]]></category>
		<category><![CDATA[TokenMail]]></category>

		<guid isPermaLink="false">http://blog.richard.parker.name/?p=641</guid>
		<description><![CDATA[Back in January this year, I wrote a neat little utility library for sending template emails. Tonight, it caught the attention of fellow developer Benjamin Howarth, famous for (among other things) his Umbraco mastery. After a quick discussion, Ben decided to join me in maintaining the library and christened his membership in the project by &#8230;<p><a href="http://blog.richard.parker.name/2011/06/29/tokenmail-is-now-available-on-nuget/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=641&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://brainthings.files.wordpress.com/2011/06/tokenmailnuget.png"><img class="alignnone size-full wp-image-643" title="TokenMailNuget" src="http://brainthings.files.wordpress.com/2011/06/tokenmailnuget.png?w=720" alt=""   /></a></p>
<p>Back in January this year, I wrote a <a title="Email Templates in C# .NET" href="http://blog.richard.parker.name/2011/01/27/email-templates-in-c-net/">neat little utility library for sending template emails</a>. Tonight, it caught the attention of fellow developer <a href="http://twitter.com/#!/benjaminhowarth">Benjamin Howarth</a>, famous for (among other things) his Umbraco mastery.</p>
<p>After a quick discussion, Ben decided to join me in maintaining the library and christened his membership in the project by adding <a href="http://tokenmail.codeplex.com/SourceControl/changeset/changes/68102">a new &#8216;load from URL&#8217; feature</a>. And, a short while later, a <a href="http://nuget.org/List/Packages/TokenMail">package was available on Nuget</a>. Not bad for around an hour&#8217;s work I thought!</p>
<p>To download and install the package easily via Nuget, bring up the Package Manager window within Visual Studio and type:</p>
<p><a href="http://brainthings.files.wordpress.com/2011/06/installtokenmail.png"><img class="alignnone size-full wp-image-640" title="Install Token Mail" src="http://brainthings.files.wordpress.com/2011/06/installtokenmail.png?w=720" alt=""   /></a></p>
<p>I created the initial version of the library with simplicity in mind: it&#8217;s not fancy, or complex. It was designed purely to provide a solution to developers who have to send templated emails in their projects.</p>
<p>Perhaps my favourite &#8216;feature&#8217; of this library though isn&#8217;t really a feature at all, so much as it is actually a by-product of the way it has been designed: because it picks up template files from disk (or from a remote URL), you can easily allow your end-users to modify their own templates using your favourite rich-text editor. Pretty neat.</p>
<h2>Please feed back!</h2>
<p>I think it would be cool if we could get a little community of users together who could help drive the project forward with further suggestions. Head on over to the <a href="http://tokenmail.codeplex.com">project hub at Codeplex</a> to get involved, or download the latest version. And, if you decide to use the library, please, please, please &#8211; do rate it on Codeplex and/or drop me a note to let me know how you&#8217;re using it. It&#8217;s not a requirement, of course, but since we do this stuff for free in our spare time, we love to read feedback.</p>
<p>Thanks!</p>
<br />Filed under: <a href='http://blog.richard.parker.name/category/projects/open-source/'>Open Source</a>, <a href='http://blog.richard.parker.name/category/projects/'>Projects</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/641/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/641/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/641/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=641&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2011/06/29/tokenmail-is-now-available-on-nuget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2011/06/tokenmailnuget.png" medium="image">
			<media:title type="html">TokenMailNuget</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2011/06/installtokenmail.png" medium="image">
			<media:title type="html">Install Token Mail</media:title>
		</media:content>
	</item>
		<item>
		<title>UAV Flight Training, Round 1</title>
		<link>http://blog.richard.parker.name/2011/04/27/uav-flight-training-round-1/</link>
		<comments>http://blog.richard.parker.name/2011/04/27/uav-flight-training-round-1/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 16:30:13 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[UAV]]></category>
		<category><![CDATA[multiplex easystar]]></category>
		<category><![CDATA[r/c]]></category>

		<guid isPermaLink="false">http://blog.richard.parker.name/?p=610</guid>
		<description><![CDATA[A few months ago, I mentioned that my friend and I were going to start building a UAV. It&#8217;s taken us a little while, but I&#8217;m pleased to report that over the previous bank holiday weekend we were able to take it out for our first test flight. This test flight was the first step &#8230;<p><a href="http://blog.richard.parker.name/2011/04/27/uav-flight-training-round-1/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=610&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few months ago, I mentioned that <a href="http://blog.richard.parker.name/2011/01/01/uav-online-for-real/">my friend and I were going to start building a UAV</a>. It&#8217;s taken us a little while, but I&#8217;m pleased to report that over the previous bank holiday weekend we were able to take it out for our first test flight.</p>
<p>This test flight was the first step in our move towards building a fully automated UAV platform using a Netduino. This flight, however, is 100% manual, with no auto-pilot assistance. The objective is to get to grips with manual flight as we need to be able to launch and land the aircraft and take over in the event of an autopilot failure.</p>
<p>Now, bearing in mind that neither of us have any flight experience <em>whatsoever</em>, below is a video clip of some of the flights during the day. There are, as you might expect, several crashes and some very unsettling flight patterns, but don&#8217;t worry, as neither I nor anybody else involved have any aspirations to become a commercial pilot. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<span style="text-align:center; display: block;"><a href="http://blog.richard.parker.name/2011/04/27/uav-flight-training-round-1/"><img src="http://img.youtube.com/vi/BTs0sBs2xhU/2.jpg" alt="" /></a></span>
<p><strong><br />
Lessons learned</strong></p>
<p>As the pilot, I gleaned some useful insight into the flight characteristics of the platform. Here are my initial thoughts:</p>
<ul>
<li>The stock rudder is <em>way</em> too small to have any authority, particularly with the upgraded brushless motor. It has a control surface of just 2.5cm x 10cm (approx.). In light wind, it was pretty much uncontrollable and at speed, no chance. We later modified the rudder to 6cm x 15cm and are looking forward to testing that out next weekend.</li>
<li>After the first crash, the tail completely detached from the body. It was way too brittle and broke in the only place we hadn&#8217;t reinforced with glass tape. After fixing, we ended up with a plane that was, well, a bit &#8216;warped&#8217;. That&#8217;s fine for our trainer, but in a future version before we integrate the UAV electronics we&#8217;ll probably need to embed some carbon-fibre rods throughout the body to improve the rigidity.</li>
<li>Ailerons would make the model much more responsive, so we&#8217;ve added those too (I&#8217;ll probably blog about the modifications in a separate post) and these will be tested next weekend.</li>
<li>We should have taken time to balance the centre of gravity properly. This might account for some of the more &#8216;wild&#8217; elevator action seen in some of the clips.</li>
<li>Even when flying into a headwind, very little motor input is required in order to maintain stable flight. I think I only used 100% throttle maybe once, just to see how it reacted.</li>
</ul>
<br />Filed under: <a href='http://blog.richard.parker.name/category/projects/'>Projects</a>, <a href='http://blog.richard.parker.name/category/projects/uav/'>UAV</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/610/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/610/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/610/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=610&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2011/04/27/uav-flight-training-round-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>
	</item>
		<item>
		<title>UAV Online! (For real!)</title>
		<link>http://blog.richard.parker.name/2011/01/01/uav-online-for-real/</link>
		<comments>http://blog.richard.parker.name/2011/01/01/uav-online-for-real/#comments</comments>
		<pubDate>Sat, 01 Jan 2011 18:12:18 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[UAV]]></category>
		<category><![CDATA[Aeroplane]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Radio Controlled]]></category>

		<guid isPermaLink="false">http://blog.richard.parker.name/?p=513</guid>
		<description><![CDATA[Those of you who have played Call of Duty: Black Ops, will join me in rejoicing the sound of a friendly yelling &#8220;UAV online!&#8221;, and likewise the sinking feeling you get in your stomach upon hearing the doomsday announcement of&#8221;Enemy UAV online!&#8221;. I&#8217;ve always had somewhat of a fascination when it comes to anything that &#8230;<p><a href="http://blog.richard.parker.name/2011/01/01/uav-online-for-real/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=513&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Those of you who have played Call of Duty: Black Ops, will join me in rejoicing the sound of a friendly yelling &#8220;UAV online!&#8221;, and likewise the sinking feeling you get in your stomach upon hearing the doomsday announcement of&#8221;Enemy UAV online!&#8221;.</p>
<p>I&#8217;ve always had somewhat of a fascination when it comes to anything that flies. I&#8217;ve had four model helicopters (I can&#8217;t fly any of them particularly well) but for me the joy was in building these things first, or taking them to bits when they (inevitably) crashed.</p>
<div id="attachment_516" class="wp-caption alignnone" style="width: 430px"><a href="http://brainthings.files.wordpress.com/2011/01/easystar-kit.jpg"><img class="size-full wp-image-516  " title="Multiplex EasyStar" src="http://brainthings.files.wordpress.com/2011/01/easystar-kit.jpg?w=720" alt=""   /></a><p class="wp-caption-text">Multiplex EasyStar - our airframe</p></div>
<p>So it ought not to come as any surprise then that, while playing Black Ops a few weeks ago, my friend and I had a rare moment of mental synchronicity when we both declared: &#8220;let&#8217;s build one for real!&#8221;, and to hell with the fact neither of us had any real clue where to start. But that&#8217;s what teh interwebs are for!</p>
<p>Black Ops aside, there are a few distinct angles to this project which make for a really fun time:</p>
<ul>
<li>Building the model: learning how to build a model plane and all necessary mini-skills that go with it</li>
<li>Hooking up the avionics: speed controllers, batteries and radio</li>
<li>Adding a micro controller and accompanying sensors for autopilot functionality</li>
<li>Building a wireless telemetry system and making the &#8220;ground station&#8221;: mixing physical computing with software systems to build a truly mobile</li>
</ul>
<p><strong>Project Goal</strong></p>
<p>The plan is to build a radio-controlled model aeroplane that can autonomously navigate several way points and take detailed aerial imagery along the way, purely for recreational purposes. We&#8217;ll no doubt figure some way of making some sort of game, too. As a bonus, when we&#8217;ve figured out how to do that we&#8217;d like to add a live first-person video element to the project so that it&#8217;s possible to get a &#8220;in cockpit&#8221; view in real-time.</p>
<p>As with all crazy ideas, the key to success is planning and there&#8217;s been no shortage of that over the Christmas period. The UAV plan will be split into two phases:</p>
<ol>
<li>Build an aircraft, learn to fly it manually</li>
<li>Equip the plane with an autopilot, build the ground station and voila.</li>
</ol>
<p>Given that neither of us have any fixed-wing flying experience, we figured it necessary to enlist with a local flying club once we&#8217;ve built the plane so we learn the basics from the pro&#8217;s and join the British Model Flying Association (which also provide insurance!).</p>
<p><strong>Kit List</strong></p>
<p>After extensive forum research and oogling over product specifications, the final kit list is currently still in development but most of it is currently listed on our <a href="http://uk.wishpot.com/list.aspx?uid=213523&amp;list=371717">Wishpot wishlist</a>. This list gets updated all the time as we substitute parts or buy each item. When the aircraft is finally built I will post the final kit list here.</p>
<p><strong>Airframe and basic electronics</strong></p>
<p>To build a successful aerial imaging platform, the key is having a stable airframe and a large cargo capacity. This therefore requires an aircraft which produces a lot of lift and is built more like a glider than a traditional plane: high-wing designs are in and we&#8217;re shooting for reliability over performance.</p>
<p>To this end, we settled on the Multiplex EasyStar Kit which was about £47. The kit includes the basic airframe, a standard motor and all moving parts (prop, servo linkages) but doesn&#8217;t include a speed controller, radio TX or RX or any servos.</p>
<p>Following forum advice, we won&#8217;t be flying the stock motor or propeller. Instead, we opted for a <a href="http://www.rcmodelcentre.co.uk/EasyStar-Brushless-Flight-Pack-by-rcmodelcentre/prod_2543.html">brushless motor upgrade kit</a> (£79.99) which provides us with an Overlander battery, 30A electronic speed controller and a much more powerful motor with a slightly larger propeller.</p>
<p><strong>Radio</strong></p>
<p>For manual flying (and later, switching between manual/autopilot), we opted for a slightly more professional Futaba 6 channel system operating on 2.4GHz. It&#8217;s super light weight receiver (9.8 grams) is perfect, and being on the 2.4GHz spectrum means we won&#8217;t have to deal with pesky &#8216;crystals&#8217; or interferrance from other modellers: it&#8217;s digital frequency control means our controller will always control our plane.</p>
<p><strong>Power</strong></p>
<p>On board power will be provided by 1 x Overlander Lithium-Polymer 2200mAh 3 cell battery, putting out 11.1V. This will be split between the ESC and the radio gear, though in time we might investigate running the radio off a dedicated smaller battery.</p>
<p><strong>The fun part: telemtry and autopilot</strong></p>
<p>Making anything do anything by itself isn&#8217;t exactly easy, especially if you want it to do it well. For the auto pilot, we&#8217;ve chosen to use the open-source Ardupilot project which is essentially a set of hardware shields for use with an Arduino, together with some open-source software.</p>
<p>What I&#8217;d like to look into doing though is porting the Arduino version of the software to C#, for running on the Netduino (an Arduino &#8216;clone&#8217; running the .NET Micro Framework).</p>
<p>Essentially, the Ardupilot requires themorpiles and an inertial measurement unit (or, IMU, for short) and a GPS. Data from these sensors can optionally be transmitted via a separate on-board radio system to a &#8216;ground station&#8217;.</p>
<p>Our model&#8217;s sensors include:</p>
<ul>
<li>XY+Z IR Horizon Sensors</li>
<li>An EM406 GPS module</li>
<li>Airspeed sensors</li>
<li>Barometric pressure sensor</li>
</ul>
<p>Our telemetry system will beam data back to the ground station via long-range Xbee modules. More precisely, 2 x XBee Pro 50mW modules (Series 2.5 with RPSMA antennas) and a couple of interface boards. These modules have an approximate line-of-sight range of 1 mile in ideal conditions, more than enough for our purposes.</p>
<p><strong>Where are we now?</strong></p>
<p>At this time, the basic airframe has been constructed and most of the equipment needed to build a normal manual flyer aeroplane has arrived and been assembled, with exception to the radio at this point.</p>
<p>Next steps are to complete the installation of the radio and servos, construct the final power distribution harness and then go join the model flying club to learn how to fly. In the mean time, there&#8217;ll be some tinkering to do in my spare time to actually construct the Ardupilot autopilot and start adding the sensors. More on that lot to follow in future posts&#8230;</p>
<p>Have a great new year!</p>
<br />Filed under: <a href='http://blog.richard.parker.name/category/projects/'>Projects</a>, <a href='http://blog.richard.parker.name/category/projects/uav/'>UAV</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/513/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/513/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/513/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=513&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2011/01/01/uav-online-for-real/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2011/01/easystar-kit.jpg" medium="image">
			<media:title type="html">Multiplex EasyStar</media:title>
		</media:content>
	</item>
		<item>
		<title>Hacking an external antenna on to a Thomson SpeedTouch TG585 v7 router</title>
		<link>http://blog.richard.parker.name/2010/12/15/hacking-an-external-antenna-on-to-a-thomson-speedtouch-tg505-v7-router/</link>
		<comments>http://blog.richard.parker.name/2010/12/15/hacking-an-external-antenna-on-to-a-thomson-speedtouch-tg505-v7-router/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 18:00:58 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[SpeedTouch]]></category>
		<category><![CDATA[Thomson]]></category>
		<category><![CDATA[WiFi]]></category>

		<guid isPermaLink="false">https://brainthings.wordpress.com/?p=509</guid>
		<description><![CDATA[In this post, I will show you how to dismantle your Thomson SpeedTouch TG585 v7 router to allow connection of an external WiFi antenna. This is a very simple process requiring the removal of only four screws. What you will need 1 x Mini PCI U.FL to RP-SMA Pigtail Cable (~£1.50 each, I bought mine &#8230;<p><a href="http://blog.richard.parker.name/2010/12/15/hacking-an-external-antenna-on-to-a-thomson-speedtouch-tg505-v7-router/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=509&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In this post, I will show you how to dismantle your Thomson SpeedTouch TG585 v7 router to allow connection of an external WiFi antenna. This is a very simple process requiring the removal of only four screws.</p>
<h3>What you will need</h3>
<ul>
<li>1 x Mini PCI U.FL to RP-SMA Pigtail Cable (~£1.50 each, I bought mine off eBay from <a href="http://myworld.ebay.co.uk/autoeshop/" target="_blank">this seller</a>).</li>
<li>Set of needle-nose pliers</li>
<li>Set of mini Philips screwdrivers</li>
<li>… The external antenna you want to use! (I purchased <a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=38209" target="_blank">this one for £13.99</a> from Maplin as it has a magnetic base, useful in my particular installation).</li>
</ul>
<h3>Step by step</h3>
<p>1. Disconnect the power to your router, and unplug the power adapter from the mains supply.</p>
<p>2. Flip your router over, and remove the four plastic feet/pads from each of the four corners of the router.</p>
<p>3. Underneath the feet are four screws (one underneath each of the pads). Unscrew each one.</p>
<p>4. Lift the router off the table and gently give the base a tap – the grey top section should fall off. That’s the &#8216;lid’. If it doesn’t come off easily, gently prise it off with a flat head screwdriver; the operative word being gently. It’s not glued or wedged, it just might be a little tight.</p>
<p>5. Turn the unit over so you can see the main board.</p>
<p>Taking special care not to touch any of the solder points or components (especially any capacitors), ground yourself and then remove the antenna wire which is connected to the main board (connector circle below):</p>
<p><a href="http://brainthings.files.wordpress.com/2010/12/91edited.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;" title="91edited" src="http://brainthings.files.wordpress.com/2010/12/91edited_thumb.jpg?w=244&#038;h=293" border="0" alt="91edited" width="244" height="293" /></a></p>
<p>You might find a pair of needle nose pliers may help – but the clip is not particular tight or difficult to remove so just be wary of applying excessive force.</p>
<p>6. Now, unclip the existing ‘non-replaceable’ antenna by pinching the inside of the clip with pliers, while pulling the antenna. This will release the antenna and it should pull-out through the exterior of the case as follows:</p>
<p><a href="http://brainthings.files.wordpress.com/2010/12/93.jpg"><img style="background-image:none;padding-left:0;padding-right:0;display:inline;padding-top:0;border:0;" title="93" src="http://brainthings.files.wordpress.com/2010/12/93_thumb.jpg?w=277&#038;h=331" border="0" alt="93" width="277" height="331" /></a></p>
<p>7. Now, thread your new antenna pigtail cable through the case (where the old antenna used to go) so that the tiny clip is on the inside and the antenna connector (the larger connector) is on the outside. Connect the small end to the main board of the router in the same place you disconnected the old one from.</p>
<p>8. Pop the lid back in to place, turn the unit over and put the screws back in, followed by the sticky feet.</p>
<p>9. Now connect up your external antenna, and you’re all set.</p>
<br />Filed under: <a href='http://blog.richard.parker.name/category/projects/'>Projects</a>, <a href='http://blog.richard.parker.name/category/technology/'>Technology</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/509/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/509/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/509/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=509&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2010/12/15/hacking-an-external-antenna-on-to-a-thomson-speedtouch-tg505-v7-router/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2010/12/91edited_thumb.jpg" medium="image">
			<media:title type="html">91edited</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2010/12/93_thumb.jpg" medium="image">
			<media:title type="html">93</media:title>
		</media:content>
	</item>
		<item>
		<title>Open-source FTP-to-Azure blob storage: multiple users, one blob storage account</title>
		<link>http://blog.richard.parker.name/2010/08/02/azure-ftp-server/</link>
		<comments>http://blog.richard.parker.name/2010/08/02/azure-ftp-server/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 06:45:59 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Microsoft.NET]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Windows Azure Platform]]></category>
		<category><![CDATA[Azure]]></category>
		<category><![CDATA[ftp]]></category>

		<guid isPermaLink="false">http://blog.richard.parker.name/?p=463</guid>
		<description><![CDATA[A little while ago, I came across an excellent article by Maarten Balliauw in which he described a project he was working on to support FTP directly to Azure&#8217;s blob storage. I discovered it while doing some research on a similar concept I was working on. At the time of writing this post though, Maarten wasn&#8217;t  sharing &#8230;<p><a href="http://blog.richard.parker.name/2010/08/02/azure-ftp-server/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=463&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A little while ago, I came across an excellent <a href="http://blog.maartenballiauw.be/post/2010/03/15/Using-FTP-to-access-Windows-Azure-Blob-Storage.aspx">article</a> by Maarten Balliauw in which he described a project he was working on to support FTP directly to Azure&#8217;s blob storage. I discovered it while doing some research on a similar concept I was working on. At the time of writing this post though, Maarten wasn&#8217;t  sharing his source code and even if he did decide to at some point soon, his project appears to focus on permitting access to the <em>entire</em> blob storage account. This wasn&#8217;t really what I was looking for but it was very similar&#8230;</p>
<h3>My goal: FTP to Azure blobs, many users: one blob storage account with &#8216;home directories&#8217;</h3>
<p>I wanted a solution to enable multiple users to access the <em>same </em>storage account, but to have their own unique portion of it &#8211; thereby mimicking an actual FTP server. A bit like giving authenticated user&#8217;s their own &#8216;home folder&#8217; on your Azure Blob storage account.</p>
<p>This would ultimately give your Azure application the ability to accept incoming FTP connections and store files directly into blob storage via any popular FTP client &#8211; mimicking a file and folder structure and permitting access only to regions of the blob storage account you determine. There are many potential uses for this kind of implementation, especially when you consider that blob storage can feed into the Microsoft CDN&#8230;</p>
<h3>Features</h3>
<ul>
<li>Deploy within a worker-role</li>
<li>Support for most common FTP commands</li>
<li>Custom authentication API: because you determine the authentication and authorisation APIs, you control who has access to what, quickly and easily</li>
<li>Written in C#</li>
</ul>
<h3>How it works</h3>
<p>In my implementation, I wanted the ability to literally &#8216;fake&#8217; a proper FTP server to any popular FTP client: the server component to be running on Windows Azure. I wanted to have some external web service do my authentication (you could host <em>yours</em> on Windows Azure, too) and then only allow each user access to their own tiny portion of my Azure Blob Storage account.</p>
<p>It turns out, Azure&#8217;s containers did exactly what I wanted, more or less. All I had to do was to come up with a way of authenticating clients via FTP and returning which container they have access to (the easy bit), and write an FTP to Azure &#8216;bridge&#8217; (adapting and extending <a href="http://www.codeguru.com/csharp/csharp/cs_internet/desktopapplications/article.php/c13163">a project by Mohammed Habeeb</a> to run in Azure as a worker role).</p>
<p>Here&#8217;s how my first implementation works:</p>
<p><img class="size-full wp-image-471 alignnone" title="FTP to Azure Bridge - How it Works" src="http://brainthings.files.wordpress.com/2010/07/azureftp.jpg?w=720" alt=""   /></p>
<h3>A quick note on authentication</h3>
<p>When an FTP client authenticates, I grab the username and password sent by the client, pass that into my web service for authentication, and if successful, I return a container name specific to that customer. In this way, the remote user can only work with blobs within that container. In essence, it is their own &#8216;home directory&#8217; on my master Azure Blob Storage account.</p>
<p>The FTP server code will deny authentication for any user who does not have a container name associated with them, so just return null to the login procedure if you&#8217;re not going to give them access (I&#8217;m assuming you don&#8217;t want to return a different error code for &#8216;bad password&#8217; vs. &#8216;bad username&#8217; &#8211; which is a good thing).</p>
<p>Your authentication API could easily be adapted to permit access to the same container by multiple users, too.</p>
<h3>Simulating a regular file system from blob storage</h3>
<p>Azure Blob Storage doesn&#8217;t work like a traditional disk-based system in that it doesn&#8217;t actually have a hierarchical <em>directory </em>structure &#8211; but the FTP service simulates one so that FTP clients can work in the traditional way. Mohammed&#8217;s initial C# FTP server code was superb: he wrote it so that the file system could be replaced back in 2007 &#8211; to my knowledge, before Azure existed, but it&#8217;s like he <em>meant</em> for it to be used this way (that is to say, it was so painless to adapt it one could be forgiven for thinking this. Mohammed, thanks!).</p>
<p>Now I have my FTP server, modified and adapted to work for Azure, there are many ways in which this project can be expanded&#8230;</p>
<h3>Over to you (and the rest of the open source community)</h3>
<p>It&#8217;s my first open source project and I actively encourage you to help me improve it. When I started out, most of this was &#8216;proof of concept&#8217; for a similar idea I was working on. As I look back over the past few weekends of work, there are many things I&#8217;d change but I figured there&#8217;s enough here to make a start.</p>
<p>If you decide to use it &#8220;as is&#8221; (something I don&#8217;t advise at this stage), do remember that it&#8217;s not going to be perfect and you&#8217;ll need to do a little leg work &#8211; it&#8217;s a work in progress and it wasn&#8217;t written (at least initially) to be an open-source project. Drop me a note to let me know how you&#8217;re using it though, it&#8217;s always fun to see where these things end up once you&#8217;ve released them into the wild.</p>
<h3>Where to get it</h3>
<p>Head on over to the <a href="http://ftp2azure.codeplex.com/">FTP to Azure Blob Storage Bridge</a> project on <a href="http://ftp2azure.codeplex.com/">CodePlex</a>.</p>
<p>It&#8217;s free for you to use however you want. It carries all the usual caveats and warnings as other &#8216;free open-source&#8217; software: use it at your own risk.</p>
<p>If you do use it and it works well for you, drop me an email and it&#8217;ll make me happy. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />Filed under: <a href='http://blog.richard.parker.name/category/software-development/microsoftnet/'>Microsoft.NET</a>, <a href='http://blog.richard.parker.name/category/projects/open-source/'>Open Source</a>, <a href='http://blog.richard.parker.name/category/projects/'>Projects</a>, <a href='http://blog.richard.parker.name/category/software-development/'>Software Development</a>, <a href='http://blog.richard.parker.name/category/technology/'>Technology</a>, <a href='http://blog.richard.parker.name/category/software-development/windows-azure-platform/'>Windows Azure Platform</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/463/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=463&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2010/08/02/azure-ftp-server/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2010/07/azureftp.jpg" medium="image">
			<media:title type="html">FTP to Azure Bridge - How it Works</media:title>
		</media:content>
	</item>
		<item>
		<title>Arduinometer, anyone?</title>
		<link>http://blog.richard.parker.name/2009/04/27/arduinometer-anyone/</link>
		<comments>http://blog.richard.parker.name/2009/04/27/arduinometer-anyone/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 17:30:26 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[electricity]]></category>
		<category><![CDATA[gas]]></category>
		<category><![CDATA[meter]]></category>
		<category><![CDATA[water]]></category>

		<guid isPermaLink="false">http://blog.richard.parker.name/?p=251</guid>
		<description><![CDATA[On Sunday, I published an article showing how I&#8217;d built an Arduino-powered ethernet gas meter, to publish real-time gas meter readings to Pachube. Thanks to James Taylor (http://twitter.com/jtonline) who re-tweeted my initial tweet highlighting it as potentially of interest to the #homecamp folks, within a few hours some 200 people had read the article, and I&#8217;ve &#8230;<p><a href="http://blog.richard.parker.name/2009/04/27/arduinometer-anyone/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=251&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On Sunday, I <a href="http://blog.richard.parker.name/2009/04/25/how-to-build-a-web-connected-gas-meter-with-your-arduino/">published an article</a> showing how I&#8217;d built an Arduino-powered ethernet gas meter, to publish real-time gas meter readings to <a href="http://www.pachube.com">Pachube</a>. Thanks to James Taylor (<a href="http://twitter.com/jtonline">http://twitter.com/jtonline</a>) who <a href="http://twitter.com/jtonline/statuses/1620343610">re-tweeted</a> <a href="http://twitter.com/rikp/statuses/1619392860">my initial tweet</a> highlighting it as potentially of interest to the #<a href="http://homecamp.org">homecamp</a> folks, within a few hours some 200 people had read the article, and I&#8217;ve received some great feedback and inclusion on several sites on the web. Not bad for my first article of this kind, I thought!</p>
<p>I&#8217;ve been thinking that I should really extend this little venture into a project that adds support for:</p>
<ul>
<li>Tracking electricity, gas and water meter values (all from the same Arduino), using cheap sensors</li>
<li>Add support for pulse meters, as well as what I&#8217;ve dubbed &#8216;reflective&#8217; meters (not sure of the proper name, but these are the meters with the little reflective discs of metal on one of the dials).</li>
</ul>
<p>I&#8217;ve <a href="http://code.google.com/p/arduinometer">created a project on Google Code </a>for anyone who&#8217;s interested in following (there&#8217;s not a lot there just yet, though). I&#8217;ve got a busy few weeks ahead, but will do what I can in the interim. It&#8217;s look like June will be the first real chance I have to sit down and extend the code. If anyone&#8217;s interested in getting involved, or helping out in any way, please get in touch. I&#8217;m still fairly new to the world of Arduino and physical computing, so I&#8217;m still learning too &#8211; all feedback is appreciated!</p>
<br />Posted in Arduino, Projects  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/251/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/251/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/251/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=251&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2009/04/27/arduinometer-anyone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>
	</item>
		<item>
		<title>How to build a web connected gas meter with your Arduino</title>
		<link>http://blog.richard.parker.name/2009/04/25/how-to-build-a-web-connected-gas-meter-with-your-arduino/</link>
		<comments>http://blog.richard.parker.name/2009/04/25/how-to-build-a-web-connected-gas-meter-with-your-arduino/#comments</comments>
		<pubDate>Sat, 25 Apr 2009 22:00:28 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[gas meter]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[schematic]]></category>

		<guid isPermaLink="false">http://blog.richard.parker.name/?p=204</guid>
		<description><![CDATA[A few months back, I bought a Current Cost electricity meter, hacked that and started pushing the data up to Pachube and displaying real-time electricity usage right here on my blog. But, electricity is only one part of the picture &#8211; we also use gas for our heating and hot water systems, and I wanted &#8230;<p><a href="http://blog.richard.parker.name/2009/04/25/how-to-build-a-web-connected-gas-meter-with-your-arduino/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=204&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A few months back, I bought a Current Cost electricity meter, hacked that and started pushing the data up to Pachube and displaying real-time electricity usage <a href="http://blog.richard.parker.name/ehome">right here on my blog</a>. But, electricity is only one part of the picture &#8211; we also use gas for our heating and hot water systems, and I wanted to track our usage of this too. The catch, of course, is that there doesn&#8217;t appear to be a consumer product on the market to do this for me, and I really wanted an excuse to go out and buy an Arduino and start playing with that.</p>
<p>My goal for this project was to hook the gas meter up to Pachube, using <a href="http://www.eeml.org">EEML </a>as the format:</p>
<p><pre class="brush: xml;">&lt;eeml xmlns='http://www.eeml.org/xsd/005' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.eeml.org/xsd/005 http://www.eeml.org/xsd/005/005.xsd'&gt;
&lt;environment&gt;
&lt;location exposure='indoor' domain='physical' disposition='fixed'&gt;
&lt;name&gt;London, United Kingdom&lt;/name&gt;
&lt;/location&gt;
&lt;data id='0'&gt;
&lt;tag&gt;gas&lt;/tag&gt;&lt;tag&gt;cubic metres&lt;/tag&gt;
&lt;value&gt;2&lt;/value&gt;
&lt;/data&gt;
&lt;data id='1'&gt;
&lt;tag&gt;temperature&lt;/tag&gt;&lt;tag&gt;degrees&lt;/tag&gt;&lt;tag&gt;celsius&lt;/tag&gt;
&lt;value&gt;28&lt;/value&gt;&lt;/data&gt;
&lt;/environment&gt;
&lt;/eeml&gt;
</pre></p>
<p>What follows is how I set about using my Arduino, an Ethernet Shield and various other parts in order to build the gas meter!</p>
<p><strong>Introduction</strong></p>
<p>Those of you who have been following my previous blog posts will know that I&#8217;ve been working on this for a while, finding a few minutes spare to tinker as and when I can. This post is the promised amalgamation of all those recent posts.</p>
<div id="attachment_212" class="wp-caption alignleft" style="width: 310px"><img class="size-medium wp-image-212" title="Arduino Gas Meter (Web/XML)" src="http://brainthings.files.wordpress.com/2009/04/img_0045.jpg?w=300&#038;h=235" alt="The completed Arduino Ethernet Gas Meter unit" width="300" height="235" /><p class="wp-caption-text">The completed Arduino Ethernet Gas Meter unit</p></div>
<p>So, this is the completed unit (picture, left). Whilst this isn&#8217;t intended as a complete step-by-step tutorial, my aim is to provide enough information to enable somebody else to build one of these.</p>
<p>To keep things nice and neat, I mounted the Arduino, Ethernet- and Proto- shields into a plastic project box from Maplin. I drilled a ventillation hole and added a mini CPU fan connected to a temperature sensor to help keep the unit cool. I also wanted to add one because it&#8217;s nice to tinker around with new sensors and I hadn&#8217;t yet played with a temp sensor ;)</p>
<p><strong>How does it work?</strong></p>
<p>The main sensor on this unit is a photo-reflector, which is a fancy name for an infrared LED and an infrared sensor in one assembly. When the infrared sensor detects a reflection from the infrared LED, the strength of that reflection is fed back into the Arduino. I used a pull-up resistor circuit to connect this sensor to a digital input pin, which is switched to LOW when a reflection is detected. Because my gas meter has a little reflective metal disc on one of the dials, this gives me a nice reflection to count when the dial passes.</p>
<p>The Arduino then keeps a tally of all the reflections it has counted, which is accessible in XML (conformant to the <a href="http://www.eeml.org">EEML </a>standard) over the web via the Ethernet Shield. To keep my meter in synch with the actual gas meter, one can pass a parameter via the HTTP querystring to the gas meter module to set it&#8217;s current value (useful, for instance, after a power cut or if you need to disconnect it). Because the unit is accessible over the public internet (without authentication), I only allow the querystring parameter to reset the meter value if a certain digital pin is &#8216;HIGH&#8217; &#8211; a crude (yet effective) kind of physical security.</p>
<p>For fun, I then added a mini-CPU fan connected to a temperature sensor which causes the fan to start up when the temperature inside the unit gets a bit too toasty. It then kicks in until it has successfully dropped the temperature to within the threshold amount. The CPU fan runs off 12v, which the Arduino will happily produce &#8211; but it gave me an opportunity to use a transistor to switch the 12V supply on/off based on the state of a digital output pin @ 5 volts.</p>
<p><strong>Contents</strong></p>
<ol>
<li>Before you begin: finding out if this will this work for you!</li>
<li>Shopping list &#8211; what you need to buy and where to get it</li>
<li>Constructing the sensor circuit</li>
<li>The sketch</li>
<li>Connect it all up, fine tune and test</li>
<li>Acknowledgements</li>
</ol>
<p><strong>Before you begin:</strong> check your gas meter</p>
<p><span style="color:#800000;"><em>Please note: this project involves mounting sensing equipment in a non-permanent, non-invasive way to your household gas meter, based on my experience and research. I strongly encourage you to check for yourself whether these instructions are suitable for you, and, if so, only to proceed if you feel competent enough to connect this unit safely. This information is provided &#8216;as is&#8217;, and you use it entirely at your own risk.</em></span></p>
<p>This kit will only work on <em>certain types of gas meter</em>. Firstly, you must have the odometer-style gas meter (these are the ones with rotary dials with numbers on). Secondly, one of the dials, usually the dial representing a 100th of a Cubic Metre should have a little reflective disk between two of the digits (on mine, that is digit 5 and 6). I&#8217;ve no doubt that you could probably modify my design here to work with another type of meter, but you may need to change the photo reflector to either a pulse counter or something else appropriate. The underlying code to count the pulses and make the Arduino web-connectable should be the same.</p>
<p><strong>Shopping list</strong></p>
<p>1 x Arduino Duemillanove (or similar) &#8230;.. £23.81<br />
1 x <a href="http://www.skpang.co.uk/catalog/product_info.php?products_id=394">Sparkfun Ethernet Shield</a> &#8230; £33.35<br />
1 x 9v DC Power Supply with a 2.1mm centre-positive connector (<a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=13453">Maplin: GS74R</a>) &#8230; £7.99<br />
1 x 220 ohm resistor<br />
1 x 10K ohm resistor<br />
1 x Transistor (if you plan to add the fan circuit and you use a 12V fan)<br />
1 x <a href="http://www.active-robots.com/products/sensors/sensors-fairchild.shtml" target="_blank">Fairchild QRB1134 IR Photoreflector </a>&#8230;. £2.62<br />
1 x Project Box (eg. Maplin XYZXYZ) &#8230;. £2.99<br />
1 x Mini CPU Fan (eg. Maplin) &#8230;. £4.99<br />
1 x Breadboard &#8211; OR -<br />
1 x <a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;cPath=1&amp;products_id=3" target="_blank">Nuelectronics Protoshield</a> &#8230;. £4.99</p>
<p>Total cost to build from scracth: £80.74<br />
Total cost if you already have the Arduino, an ethernet shield and a few other bits and bobs: &lt; £20.</p>
<p>You will also need/want the following tools to hand:</p>
<ul>
<li>Soldering iron and lead-free solder (well, use whatever you like, but lead-free is better for you and the environment!)</li>
<li>Wire cutters</li>
<li>Some suitable wire/jump leads etc</li>
<li>A pair of <a href="http://www.maplin.co.uk/module.aspx?moduleno=4017">&#8220;helping hands&#8221;</a> if you have them</li>
</ul>
<p><strong>Goals</strong></p>
<p>Before starting out, I had a quick think about the project&#8217;s desired behaviors. That way, coding it up would be a little easier because I&#8217;d know what I was supposed to be coding <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Here they are:</p>
<ul>
<li>Connect the photo reflector to a digital input
<ul>
<li>When the input goes LOW, increment a counter</li>
</ul>
</li>
<li>Check the current temperature inside the unit
<ul>
<li>When the temperature is above the threshold, turn on the CPU fan.</li>
<li>When the temperature falls below the threshold, turn off the CPU fan.</li>
</ul>
</li>
<li>Check if a web client is connecting.
<ul>
<li>Read the query string.</li>
<li>If the query string value contains &#8220;?x=&#8221;, change the internal count to the value of x but <strong>only</strong> when a digital pin is set to HIGH (so web users can&#8217;t set it for us!).</li>
<li>If the query string does not contain the above element, generate EEML containing the data that we need.</li>
</ul>
</li>
</ul>
<p>With these points in mind, I started to construct the sensor circuit.</p>
<p><strong>Constructing the sensor circuit and preparing the project box</strong></p>
<p>Ok, so first things first &#8211; let&#8217;s start by preparing the project box. Drill two holes into the box &#8211; one on top, and another on the side (as pictured):</p>
<div id="attachment_241" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-241" title="Gas Meter Project Box" src="http://brainthings.files.wordpress.com/2009/04/box.jpg?w=300&#038;h=236" alt="Prepared Project Box" width="300" height="236" /><p class="wp-caption-text">Prepared Project Box</p></div>
<p>It doesn&#8217;t really matter what size you make the hole on the side providing that there is sufficient room to fit a power cable, ethernet cable and the 4 wires from the photoreflector through. The hole on top should be just a shade smaller than the size of the fan that you have so that you can mount it to the inside of the case properly.</p>
<p>Next up, we&#8217;re going to construct the sensor circuit board. You can use either a breadboard, or &#8211; as I have used &#8211; an <a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;cPath=1&amp;products_id=3" target="_blank">unassembled protoshield board from nuelectronics</a>. I have used Fritzing to create a diagram of the entire circuit (shown below). I&#8217;ve also produced a schematic to accompany the diagram. I&#8217;m not quite sure how correct it is though, so be warned! (Corrections on a post-card, please!).</p>
<div id="attachment_228" class="wp-caption alignnone" style="width: 710px"><img class="size-full wp-image-228" title="Arduino Gas Meter Circuit Layout" src="http://brainthings.files.wordpress.com/2009/04/gas-meter-sketch1.jpg?w=720" alt="A tidier view of the wiring"   /><p class="wp-caption-text">A tidier view of the wiring</p></div>
<div id="attachment_246" class="wp-caption alignnone" style="width: 710px"><img class="size-full wp-image-246" title="Arduino Gas Meter Schematic" src="http://brainthings.files.wordpress.com/2009/04/gas-meter-final.jpg?w=720" alt="Schematic"   /><p class="wp-caption-text">Schematic</p></div>
<p>Start by soldering two wires &#8211; one each to the 5V rail and the GND rail respectively. Next, solder the resistors, transistor and temperature sensor onto the board, according to the schematic shown. Take care when soldering the transistor and temperature sensor to the board: the heat from your soldering iron may damage them.</p>
<p>Next, pass the bare sensor wires through the outside hole that you drilled and then solder them onto the board in the posistions shown. Make sure you use enough wire &#8211; you&#8217;ll want about 11-13cm for each connection you make (you can trim the non-soldered ends later).  Finally, solder the positive and ground wires for the CPU fan onto your board.</p>
<p>If you&#8217;re new to soldering (as I am), then do take extra care that your connections are good and don&#8217;t bridge multiple points on the board. If you do, you&#8217;ll likely create a short circuit and that will drive you nuts, trust me! When you&#8217;re done, you should end up with something that looks a bit like this:</p>
<div id="attachment_242" class="wp-caption alignnone" style="width: 310px"><img class="size-medium wp-image-242" title="Arduino Sensor Circuit" src="http://brainthings.files.wordpress.com/2009/04/board.jpg?w=300&#038;h=225" alt="The finished sensor circuit" width="300" height="225" /><p class="wp-caption-text">The finished sensor circuit</p></div>
<p><strong>The sketch</strong></p>
<p>Now that you&#8217;ve done the hard part, here comes the copy and paste! Take the sketch below and place it into your Arduino suite. You&#8217;ll need to modify the following:</p>
<ul>
<li>Line 13: Set your own unique MAC address</li>
<li>Line 14: Set your own unique IP address (accessible from computers on your network)</li>
<li>Line 15: Set your router&#8217;s gateway address</li>
</ul>
<p><pre class="brush: cpp;">#include &quot;Ethernet2.h&quot;
#include &quot;WString.h&quot;
#include &quot;stdio.h&quot;

// --- [ Pin setup ] ---
int sensorPin = 5;
int ledPin = 9;
int fanPin = 7;
int tempPin = 3;
int unlockPin = 8;

// --- [ Ethernet setup ] ---
static uint8_t mac[6] = { 0x02, 0xAA, 0xAA, 0xCC, 0x00, 0x22 };
static uint8_t ip[4] = { 192, 168, 1, 99 };
static uint8_t gateway[4] = { 192, 168, 1, 2 };
int serverPort = 80;

String url = String(25);
int maxLength=25;

// --- [ Variables to control when the unit fan kicks in/cuts out... ] ---
float maxTemp = 26.0;
float minTemp = 24.0;

// --- [ Variables to store our sensor values ] ---
volatile int totalTicks = 0;
float tempc = 0.0;
int maxi = -100, mini = 100;

// --- [ Misc. vars ] ---
float inputVolts = 5.01;
int previousState = -2;
int delayMs = 1500;
int i;
boolean lock;

Server server(serverPort);

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(fanPin, OUTPUT);
  pinMode(sensorPin, INPUT);
  pinMode(unlockPin, INPUT);
  previousState = digitalRead(sensorPin);
  Serial.begin(115200);                                   // Use serial for debugging locally...
  Serial.println(&quot;Ardugas server saying: Howdy!&quot;);
  Ethernet.begin(mac, ip, gateway);
  server.begin();
}

void loop() {
  checkUnitTemp();                                      // Take action based on unit temp
  checkSensor();                                        // Check the gas meter sensor
  getCurrentTemperature();                              // Get the unit temperature
  listenWeb();                                          // Handle any web connections
  digitalWrite(ledPin, !digitalRead(sensorPin));        // Light LED if sensor is LOW
}

// Serve pachube EEML and accept a querystring param to set the current value
void listenWeb() {   

 boolean read_url = true;
 boolean unlock = false;

 Client client = server.available();
  if (client) {

    Serial.println(&quot;Ethernet client connected...&quot;);

    // an http request ends with a blank line
    boolean current_line_is_blank = true;
    int valuesChanged = 0;
    while (client.connected()) {

      if (client.available()) {

        char c = client.read();
          if (url.length() &lt; maxLength) {
            url.append(c);
          }
        if (c == '\n' &amp;&amp; current_line_is_blank) {

           // send a standard http response header, but change the response type to text/xml
          client.println(&quot;HTTP/1.1 200 OK&quot;);
          client.println(&quot;Content-Type: text/xml&quot;);
          client.println();

          // This is our unlock pin. When set to high, we allow the querystring parameter 'x' to force-set our meter value.
          if (digitalRead(unlockPin) == HIGH) {
            unlock = true;
          }

          if (url.contains(&quot;x&quot;) &amp;&amp; unlock) {
            Serial.println(url);
            String v = String(10);
            int startIndex = url.indexOf('=')+1;
            int stopIndex = url.indexOf('H');
            v = url.substring(startIndex, stopIndex);
            Serial.println(v);
            totalTicks = atoi(v);
          } 

          int t = tempc;

          // EEML
          client.println(&quot;&quot;);
          client.println(&quot;&quot;);

          client.println(&quot;&quot;);
          client.println(&quot;Ardugas Server&quot;);
          client.println(&quot;&quot;);

          // Gas Meter Reading
          client.println(&quot;&quot;);
          client.println(&quot;gascubic metres&quot;);
          client.print(&quot;&quot;);
          client.print(totalTicks);
          client.println(&quot;&quot;);
          client.println(&quot;&quot;);

          client.println(&quot;&quot;);
          client.println(&quot;temperaturedegreescelsius&quot;);
          client.print(&quot;&quot;);
          client.print(t);
          client.print(&quot;&quot;);
          client.println(&quot;&quot;);         

          client.println(&quot;&quot;);
          client.println(&quot;&quot;);

          client.println(); 

          break;

        }

        if (c == '\n') {
          // we're starting a new line
          current_line_is_blank = true;
        } else if (c != '\r') {
          // we've gotten a character on the current line
          current_line_is_blank = false;
        }

      }
    }
    // give the web browser time to receive the data
    url = &quot;&quot;;
    delay(5);
    client.stop();
  } 

}

// Switch the cooling fan on if it's too hot!
void checkUnitTemp() {
 if (tempc &gt;= maxTemp) {
   digitalWrite(fanPin, HIGH);
 }
 if (tempc  maxi) {maxi = tempc;} // record max temperature
  if(tempc &lt; mini) {mini = tempc;} // record min temperature
}

// Count sensor values
void checkSensor() {
  int currentState = digitalRead(sensorPin);
  if (currentState == LOW &amp;&amp; previousState == HIGH) {
    if (!lock) {
      lock = true;
      delay(delayMs);
      totalTicks++;
    }
  }
  if (currentState == HIGH &amp;&amp; previousState == LOW) {
    lock = false;
  }
  previousState = currentState;
}
</pre></p>
<p>Attach the Ethernet Shield to your Arduino, attach your sensor circuit, upload the sketch and then test it out according to the behaviours mapped out above. For testing, I used a a square of foil and passed it under the sensor. This should cause the sensor pin to swith to LOW, and increment the counter by one. To test if your cooling fan circuit is working, change the threshold values in the sketch above.</p>
<p><strong>Connect it all up, fine tune and test</strong></p>
<p>Now for the exciting bit&#8230; it&#8217;s time to connect it up to your gas meter. Now, my gas meter was really quite awkward because there is a curved plastic bezel cover over the meter dials, which made it had to find the best point to get a reflection. That is, in the end, why I opted for a very sturdy and reliable &#8216;blu-tac&#8217; mount! I think I&#8217;ll definitely replace that with a bracket at some point in the futre though.</p>
<p> [Photo to follow shortly]</p>
<p>Now, connect up your circuit. Make sure you&#8217;ve got your test LED inserted into the ledPin you defined in the sketch. This will light up when your sensor detects a reflection. At this point it would be good if you have someone to help you by turning your hot water on/off, or, turn your gas hob or heating on for the duration of the setup. The object here is to have the dial start to turn so that you can find the best position for your sensor. Begin by holding the photoreflector just over the dial with the reflective disc. Wait for it to turn one revolution. The LED should light when the sensor detects a reflection &#8211; so make sure that it only lights up when the dial is directly underneath it. As the disc approaches the sensor, there is a period of &#8216;noisy reflection&#8217; that my sketch accounts for by forcing a delay after the first detection. This prevents artifical inflation of the meter count.</p>
<p>Once you&#8217;ve found the ideal position, firmly fix it in place &#8211; I used blu tac quite successfully but you can use whatever you need to, providing it doesn&#8217;t pierce or physically interfere with the meter in any way. Now that it&#8217;s attached, you need to program your arduino with your current gas meter value.  To enable this, you must first connect a jumper lead from 5V to resetPin. Then, browse to the IP address you set, but add the querystring value &#8216;x=[your meter reading]&#8216;. For example, to set a meter reading of 894.121, and your IP address is 192.168.1.99, your URL would look like: <a href="http://192.168.1.99/?x=894121">http://192.168.1.99/?x=894121</a>.</p>
<p>So, that&#8217;s it! I&#8217;ve been sitting on this article for about a week now, but due to work and other commitments I&#8217;ve not really had as much time as I&#8217;d have liked to work on it &#8211; so I thought I&#8217;d just get it out there and take as much feedback as possible from my readers to help improve it.</p>
<p>I hope you enjoyed reading and that you can derive some use from this.</p>
<p>Thanks!</p>
<br />Posted in Arduino, Projects, Uncategorized  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=204&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2009/04/25/how-to-build-a-web-connected-gas-meter-with-your-arduino/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/04/img_0045.jpg?w=300" medium="image">
			<media:title type="html">Arduino Gas Meter (Web/XML)</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/04/box.jpg?w=300" medium="image">
			<media:title type="html">Gas Meter Project Box</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/04/gas-meter-sketch1.jpg" medium="image">
			<media:title type="html">Arduino Gas Meter Circuit Layout</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/04/gas-meter-final.jpg" medium="image">
			<media:title type="html">Arduino Gas Meter Schematic</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/04/board.jpg?w=300" medium="image">
			<media:title type="html">Arduino Sensor Circuit</media:title>
		</media:content>
	</item>
		<item>
		<title>Assembling the Sparkfun Protoshield for Arduino</title>
		<link>http://blog.richard.parker.name/2009/02/21/assembling-the-sparkfun-protoshield-for-arduino/</link>
		<comments>http://blog.richard.parker.name/2009/02/21/assembling-the-sparkfun-protoshield-for-arduino/#comments</comments>
		<pubDate>Sat, 21 Feb 2009 11:54:41 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[protoshield]]></category>

		<guid isPermaLink="false">http://brainthings.wordpress.com/?p=193</guid>
		<description><![CDATA[Yesterday I finished assembling the Sparkfun Arduino Protoshield (v2) (if you&#8217;re wondering what a &#8216;Protoshield&#8217; is, be sure to read the footer of this post for a quick explanation). I chose to purchase the Protoshield kit so that I could deploy my Gas Meter-reading gadgetry in a relatively small, neat package. I previously purchased the &#8230;<p><a href="http://blog.richard.parker.name/2009/02/21/assembling-the-sparkfun-protoshield-for-arduino/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=193&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Yesterday I finished assembling the <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7914">Sparkfun Arduino Protoshield (v2)</a> (if you&#8217;re wondering what a &#8216;Protoshield&#8217; is, be sure to read the footer of this post for a quick explanation). I chose to purchase the Protoshield kit so that I could deploy my <a href="http://brainthings.wordpress.com/2009/02/18/part-2a-the-sensor-bar-arduino-gas-meter-project/">Gas Meter-reading gadgetry</a> in a relatively small, neat package.</p>
<p>I previously purchased the Nuelectronics Protoshield kit &#8211; which is basically a variation on the Sparkfun model. Although there wasn&#8217;t anything wrong with the Nuelectronics version, in my experience working with Nuelectronics gear, you have to be a bit more proficient in the field of electronics etc., i.e. a higher level of competance is assumed. Whereas the Sparkfun gear, although used by both novices and professionals, is just that bit more refined and &#8211; in my humble opinion &#8211; higher quality. I actually broke the Nuelectronics protoshield on my first attempt, and it was at that point I decided to go with the flow and buy the Sparkfun model.</p>
<p>Although the board is made by Sparkfun, I didn&#8217;t actually buy mine from them directly as the shipping costs to the UK are quite high (at least the cost of the board!). Instead, I sourced the official board from <a href="http://www.skpang.co.uk/catalog/product_info.php?products_id=351">SK Pang Electronics</a> (a UK-based firm I hadn&#8217;t used before), for a very reasonable £14.84 plus shipping. I will certainly order from SK Pang again, by the way, since the item arrived next day via Recorded Delivery &#8211; perfect for the tinkerer with a weekend on the way! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Assembly</strong></p>
<p>Being a novice in the field of electronics, I wasn&#8217;t too confident that I&#8217;d be able to assemble it &#8211; soldering components onto a PCB is a tad intimidating if you&#8217;ve never really soldered before (I&#8217;d had only limited experience soldering and that wasn&#8217;t particularly successful!)! That said though, after reading a few basic tips on how to solder, I gave it a shot and about 30 minutes later the entire PCB was assembled. What a fantastic kit.</p>
<p>Although the kit ships disassembled, SparkFun do not give you assembly instructions. Instead, I referred to <a href="http://www.atomicsalad.com/archive/2007/03/11/tutorial_sparkfun_protoshield_assembly_use.php">Bob Gallop&#8217;s excellent tutorial</a>. Bob&#8217;s instructions are based on the V1 protoshield, which differs only very slightly from the newer V2 that I&#8217;d purchased. His tutorial also offers some great tips on how to keep components in place while you&#8217;re trying to solder them &#8211; so it was well worth the read, and the photography makes it all the more easier to follow along.</p>
<p>One thing I would add though is that I am incredibly pleased with the pair of <a href="http://www.maplin.co.uk/module.aspx?moduleno=4017">Helping Hands</a> I&#8217;d purchased from <a href="http://www.maplin.co.uk/module.aspx?moduleno=4017">Maplin </a>a few weeks back &#8211; a necessity for PCB soldering.</p>
<p><strong>The finished board</strong></p>
<p>Here&#8217;s a photo of the Protoshield without the breadboard attached. You could of course leave the breadboard out entirely if you wanted to, and solder directly onto the shield. As I want to retain the flexibility of the shield though, I&#8217;ll add the breadboard on in a moment. In this picture, I&#8217;ve yet to solder on the single male pins JC1, JC2 and JC3 and also the BlueSMIiRF  female headers:</p>
<p><img class="size-full wp-image-194 alignnone" title="Protoshield without Breadboard" src="http://brainthings.files.wordpress.com/2009/02/beforebreadboard.jpg?w=720" alt="Protoshield without Breadboard"   /></p>
<p>And when mounted on top of the Arduino, with a mini-breadboard, the remaining pins and BlueSMiRF headers added:</p>
<p><img class="size-full wp-image-195 alignnone" title="Protoshield with Breadboard" src="http://brainthings.files.wordpress.com/2009/02/withbreadboard.jpg?w=720" alt="Protoshield with Breadboard"   /></p>
<p>All in all, thoroughly pleased with myself <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Not only did I have fun while assembling the board, I learned a few new skills and have boosted my confidence in the world of tinkering. Still, a long way to go yet! But at least now I have a better way of continuing my <a href="http://brainthings.wordpress.com/2009/02/18/part-2a-the-sensor-bar-arduino-gas-meter-project/">Gas Meter</a> project.</p>
<p><strong>What is a Protoshield?</strong></p>
<p>If you&#8217;re new to the world of Arduino &#8211; as I am &#8211; then you might be wondering what a &#8216;protoshield&#8217; is and what they do. &#8216;Shields&#8217; are essentially printed circuit boards that are designed to slot on top of your Arduino board, and provide some extra capabilities. There are <a href="http://www.sparkfun.com/commerce/advanced_search_result.php?keywords=arduino+shield&amp;x=0&amp;y=0&amp;search_section=products">all kinds of shields that you can buy</a>: some offer radio transmission/reception capabilities and others, like my Protoshield, simply offer you the flexibility to affix a tiny breadboard to the top of your Arduino to make protoyping that much easier.</p>
<br />Posted in Arduino, Projects  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/193/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/193/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/193/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=193&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2009/02/21/assembling-the-sparkfun-protoshield-for-arduino/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/02/beforebreadboard.jpg" medium="image">
			<media:title type="html">Protoshield without Breadboard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/02/withbreadboard.jpg" medium="image">
			<media:title type="html">Protoshield with Breadboard</media:title>
		</media:content>
	</item>
		<item>
		<title>Part 2a: The Sensor Bar (Arduino Gas Meter project)</title>
		<link>http://blog.richard.parker.name/2009/02/18/part-2a-the-sensor-bar-arduino-gas-meter-project/</link>
		<comments>http://blog.richard.parker.name/2009/02/18/part-2a-the-sensor-bar-arduino-gas-meter-project/#comments</comments>
		<pubDate>Wed, 18 Feb 2009 21:48:57 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[gas meter]]></category>
		<category><![CDATA[photoreflector]]></category>
		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://brainthings.wordpress.com/?p=189</guid>
		<description><![CDATA[Ok, so here we are a few days later than expected. I&#8217;ve been a bit too busy to tinker lately, but I&#8217;ve made some interesting progress. I&#8217;ll keep this post brief&#8230; Firstly, the phototransistor I ordered from Maplin turned out to be of limited use since it&#8217;s &#8216;detection range&#8217; is a little bit too small &#8230;<p><a href="http://blog.richard.parker.name/2009/02/18/part-2a-the-sensor-bar-arduino-gas-meter-project/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=189&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ok, so here we are a few days later than expected. I&#8217;ve been a bit too busy to tinker lately, but I&#8217;ve made some interesting progress. I&#8217;ll keep this post brief&#8230;</p>
<p>Firstly, the phototransistor I ordered from Maplin turned out to be of limited use since it&#8217;s &#8216;detection range&#8217; is a little bit too small to work with the gas meter properly. Also, due to the siting of the gas meter within my property (in a cupboard, with a chair in front of it!), I needed the sensor to be remote to the Arduino. So I ordered a Fairchild Photoreflector from Active Robots. On the surface, it&#8217;s everything I need (a photoreflector with wires already attached). Very inexpensive.</p>
<p><img class="alignnone size-full wp-image-190" title="Fairchild Photoreflector" src="http://brainthings.files.wordpress.com/2009/02/fairchildsensor.jpg?w=720" alt="Fairchild Photoreflector"   /></p>
<p>Simply dropped this right in place of the existing photoreflector and it works a treat.</p>
<p><strong>Experiments with mounting the sensor to the gas meter</strong></p>
<p>So far, having attempted to mount the sensor on a little bracket in front of the meter, I can&#8217;t get an accurate reflection (annoyingly there is a clear plastic cover over the reflective disc which is at a 45 degree angle &#8211; sort of &#8211; and curved). Having run out of Blu-tac on a previous tinkering experiment, I&#8217;ll have to go get some more tomorrow in order to experiment with that.</p>
<p><strong>Reading the meter</strong></p>
<p>I just got my hands on a Nuelectronics LCD Shield so I&#8217;ll be setting that up soon to display the meter value.</p>
<p>More to follow soon&#8230;</p>
<br />Posted in Arduino, Projects  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=189&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2009/02/18/part-2a-the-sensor-bar-arduino-gas-meter-project/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/02/fairchildsensor.jpg" medium="image">
			<media:title type="html">Fairchild Photoreflector</media:title>
		</media:content>
	</item>
		<item>
		<title>Reading a gas meter with an Arduino, Part 2</title>
		<link>http://blog.richard.parker.name/2009/02/10/reading-a-gas-meter-with-an-arduino-part-2/</link>
		<comments>http://blog.richard.parker.name/2009/02/10/reading-a-gas-meter-with-an-arduino-part-2/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 00:47:54 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[gas meter]]></category>
		<category><![CDATA[phototransistor]]></category>

		<guid isPermaLink="false">http://brainthings.wordpress.com/?p=177</guid>
		<description><![CDATA[In Part 1 of Reading a Gas Meter with an Arduino, I outlined in brief what I wanted to achieve and how I thought I might go about it. In this second article, I detail my experiences using the photo-reflector purchased from Maplin. Since I haven&#8217;t yet created any circuits more complicated than some basic &#8230;<p><a href="http://blog.richard.parker.name/2009/02/10/reading-a-gas-meter-with-an-arduino-part-2/" class="more-link">Read More</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=177&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://brainthings.wordpress.com/2009/02/09/reading-a-gas-meter-with-an-arduino-part-1/">Part 1 of Reading a Gas Meter with an Arduino</a>, I outlined in brief what I wanted to achieve and how I thought I might go about it.</p>
<p>In this second article, I detail my experiences using the photo-reflector purchased from Maplin. Since I haven&#8217;t yet created any circuits more complicated than <a href="http://brainthings.wordpress.com/2009/02/09/arduino-traffic-lights-take-two/">some basic traffic lights</a>, this would be my first real experience using this type of sensor in a circuit. I had a feeling when starting that I&#8217;d be needing to use the pull-down resistor type set-up on one of the sensor pins, and it turns out I was right &#8211; special thanks to everyone on the <a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1234177936">Arduino Forums for assisting</a>.</p>
<p>It turns out, with a little help from the Arduino forums, it was pretty easy (it always is when you know how!). Having first connected the sensor to a digital input, and reading the value from the digital pin in the loop() method, it quickly became clear that trying to count one pass of the reflective disc on the gas meter in this manner wouldn&#8217;t work. Adding delay statements wouldn&#8217;t work either &#8211; I might miss the disc moving past the sensor as the speed it rotates is variable (depending on the amount of gas being consumed). If you&#8217;re not sure why this won&#8217;t work, think of the Arduino and photo-reflector as a high-speed camera: taking many frames per second the second a reflection is detected. You might receive &#8211; for argument&#8217;s sake &#8211; 1,000 &#8216;frames&#8217; while the gas meter disc is passing under the sensor, but how do you know &#8211; in code &#8211; which one to &#8216;act&#8217; upon and which to ignore? Clearly, you can&#8217;t send a thousand &#8216;pulses&#8217; to your data logger, because your data will all be wrong. This dilemma only came up because in my limited knowledge of the Arduino and the C++ implementation it uses meant that I was trying to stuff all this &#8220;detection logic&#8221; into the loop() statement.</p>
<p><strong>Enter the Hardware Interrupt&#8230; the simplest answer to the problem<br />
</strong></p>
<p>In my traditional .NET coding, I&#8217;d simply use an &#8216;event&#8217; to achieve what I wanted, and then write some minimal state-checking code. On the Arduino, however, I have learned that the hardware interrupt is basically very similar (but a bit cooler, actually!). What&#8217;s even better is that I don&#8217;t even need to bother with any complex code to determine whether or not the sensor is still sensing the same revolution of the disc: when you initialise the interrupt, you state whether you want it to be triggered when a certain condition is met, i.e. any state change, from low to high, from high to low etc. This really nifty feature is exactly what I needed.</p>
<p>Refer to line 7 of the sketch sample below to see how easy it is to register the interrupt. In this example, I simply use the interrupt to turn on an LED whenever the photo-reflector is LOW, i.e. it is detecting a reflection. In later articles, I&#8217;ll be changing this to do some logging. The reason for this, is simply that this hardware interrupt is fired only ONCE &#8211; and not again until the state changes.</p>
<p><strong>Finding out what&#8217;s going on under the hood</strong></p>
<p>I use the Serial library to output &#8216;debug&#8217; information to help me figure out what&#8217;s happening inside the Arduino. It&#8217;s not necessary for reading values from the photo-reflector, and at a later stage in this project I&#8217;ll probably remove the debug information as I&#8217;ll need to be sending the information that is read from the gas meter back to the PC somehow.</p>
<p><strong>The Sketch</strong></p>
<p><pre class="brush: cpp;">

int ledPin = 13;                     // select the pin for the LED
volatile int state = LOW;            // remember the current state

void setup() {
  pinMode(ledPin, OUTPUT);            // declare the ledPin as an OUTPUT
  Serial.begin(9600);
  attachInterrupt(0, check, CHANGE);  // attach an interrupt (interrupt 0 = digital pin 2)
}

void loop() {
  digitalWrite(ledPin, state);
}

void check() {    // Checks for feedback from the phototransistor
  state = !state;
  Serial.print(&quot;State changed to: &quot;);
  Serial.print(state);
  Serial.print(&quot;.\n&quot;);
}

</pre></p>
<p><strong>Photograph</strong></p>
<p><img class="alignnone" title="Arduino setup with Maplin photo-reflector" src="http://brainthings.files.wordpress.com/2009/02/photo.jpg?w=696&#038;h=330" alt="" width="696" height="330" /></p>
<p><strong>Schematic</strong></p>
<p>I have attempted to re-create the above in schematic form, using Fritzing. As mentioned in earlier posts, Fritzing is a beta tool and it doesn&#8217;t currently have symbols for all the electrical components one might use. Having searched the web for a suitable circuit symbol for my photoreflector, I can&#8217;t find one. I suspect that because, although the photo-reflector is an &#8216;all-in-one&#8217; design, it is actually just comprised of an LED and a photosensitive transistor:</p>
<p><strong><img class="alignnone size-full wp-image-186" title="Arduino schematic showing placement of maplin photo-reflector" src="http://brainthings.files.wordpress.com/2009/02/schematic.jpg?w=720" alt="Arduino schematic showing placement of maplin photo-reflector"   /><br />
</strong></p>
<p><strong>Next Steps&#8230;</strong></p>
<p>Now that I have figured out how to interpret a value from a photo-reflector within the Arduino, what I need to do is build a prototype sensor &#8216;bar&#8217; that I can mount to the gas meter. The next post on this subject will probably be just that &#8211; how I made (or am making!) the sensor bar. One point I&#8217;ll be bearing in mind is that I&#8217;d like to site the Arduino remotely from the sensor arm, and I&#8217;d like to be able to collect data from other sensors attached to the same board. Thinking &#8216;out loud&#8217; as I go really, but I promise to write a proper &#8216;How-To&#8217; article when I&#8217;m on the other side of the learning curve!</p>
<br />Posted in Arduino, Projects  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/brainthings.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/brainthings.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/brainthings.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/brainthings.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/brainthings.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/brainthings.wordpress.com/177/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/brainthings.wordpress.com/177/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/brainthings.wordpress.com/177/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.richard.parker.name&amp;blog=4676700&amp;post=177&amp;subd=brainthings&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.richard.parker.name/2009/02/10/reading-a-gas-meter-with-an-arduino-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/eee6647666eed1d5751be36d79b0b341?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=PG" medium="image">
			<media:title type="html">Richard</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/02/photo.jpg" medium="image">
			<media:title type="html">Arduino setup with Maplin photo-reflector</media:title>
		</media:content>

		<media:content url="http://brainthings.files.wordpress.com/2009/02/schematic.jpg" medium="image">
			<media:title type="html">Arduino schematic showing placement of maplin photo-reflector</media:title>
		</media:content>
	</item>
	</channel>
</rss>
