<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Eightlines Creations</title>
	
	<link>http://www.eightlines.com/blog</link>
	<description>Experiments in Physical Computing</description>
	<lastBuildDate>Fri, 18 Jan 2013 15:30:35 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/Eightlines" /><feedburner:info uri="eightlines" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>RoboBrrd and Voice Commands</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/eebL5XRrwUo/</link>
		<comments>http://www.eightlines.com/blog/2013/01/robobrrd-and-voice-commands/#comments</comments>
		<pubDate>Sun, 06 Jan 2013 22:02:33 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=297</guid>
		<description><![CDATA[Update - Jan 18, 2013 - Updated code to exclude newlines from the actions and embedded code as a&#160;Gist. Want your RoboBrrd (or any other Arduino app) to obey your every command? Here&#8217;s a quick script using Florian Schultz&#8217; Speech to Text Library (STT). This script will change the color of the RoboBrrd&#8217;s eyes, and [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Update</strong> - Jan 18, 2013 - Updated code to exclude newlines from the actions and embedded code as a&nbsp;Gist.</p>
<p>Want your <a title="RoboBrrd" href="http://robobrrd.com/" target="_blank">RoboBrrd</a> (or any other Arduino app) to obey your every command? Here&#8217;s a quick script using Florian Schultz&#8217; <a title="Speech to Text" href="http://stt.getflourish.com/" target="_blank">Speech to Text Library (<span class="caps">STT</span>)</a>. This script will change the color of the RoboBrrd&#8217;s eyes, and make it Tweet. You can add on to the script to make it do&nbsp;more!</p>
<p><iframe src="http://player.vimeo.com/video/56874171" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
<p><a href="http://vimeo.com/56874171">RoboBrrd Voice Commands</a> from <a href="http://vimeo.com/eightlines">Eightlines</a> on&nbsp;<a href="http://vimeo.com">Vimeo</a>.</p>
<p>The script comes in two parts. The first part is the Arduino script. This receives the Voice commands via Serial connection. Yep, you&#8217;ll need to have your RoboBrrd plugged into your <span class="caps">USB</span> connection while you use this&nbsp;script.</p>
<p><script src="https://gist.github.com/4565184.js"></script></p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/eebL5XRrwUo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=297</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2013/01/robobrrd-and-voice-commands/</feedburner:origLink></item>
		<item>
		<title>Arduino Leonardo and Windows 8</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/Qi4Sq3dPkLo/</link>
		<comments>http://www.eightlines.com/blog/2012/11/arduino-leonardo-and-windows-8/#comments</comments>
		<pubDate>Fri, 02 Nov 2012 13:31:38 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=294</guid>
		<description><![CDATA[Ran into a problem installing the Arduino Leonardo on Windows 8 yesterday and I thought it would be useful to other people (including me, when my memory fails) to document the&#160;solution. Although the Leonardo does not require FTDI drivers, it still requires the COM port drivers to be installed. Windows 8 requires that the drivers [...]]]></description>
				<content:encoded><![CDATA[<p>Ran into a problem installing the Arduino Leonardo on Windows 8 yesterday and I thought it would be useful to other people (including me, when my memory fails) to document the&nbsp;solution.</p>
<p>Although the Leonardo does not require <span class="caps">FTDI</span> drivers, it still requires the <span class="caps">COM</span> port drivers to be installed. Windows 8 requires that the drivers be signed. Since the Arduino drivers are not signed, they will not install. In order to install the drivers you will need to bypass Windows Digital Signature&nbsp;Enforcement.</p>
<p>If you have a greyed out <em>Serial Port</em> selection from the <em>Tools</em> menu this should solve the&nbsp;problem:</p>
<ol>
<li>Install the Arduino&nbsp;<span class="caps">IDE</span>.</li>
<li>Move the mouse to the bottom right corner of the screen so that the sidebar opens&nbsp;up.</li>
<li>Click&nbsp;Settings.</li>
<li>Click Change <span class="caps">PC</span>&nbsp;Settings</li>
<li>In the General tab, scroll to the bottom and click Advanced Startup &gt; Restart&nbsp;Now.</li>
<li>Now,&nbsp;Troubleshoot.</li>
<li>Advanced&nbsp;Options.</li>
<li>Startup Settings and&nbsp;Restart.</li>
<li>Press #7 for Disable driver signature enforcement. (The system will boot up&nbsp;now.)</li>
<li>Now go to Control&nbsp;Panel.</li>
<li>Hardware <span class="amp">&amp;</span> Sound and select View Devices and&nbsp;Printers</li>
<li>Right click on the Arduino Leonardo and click&nbsp;Properties.</li>
<li>Select the Hardware Tab and&nbsp;Properties.</li>
<li>Click Change Settings and authorize Windows to make the&nbsp;changes.</li>
<li>Select Update Driver and Choose&nbsp;File.</li>
<li>Navigate to the directory where you installed the Arduino software and into the subdirectory /Drivers. Press&nbsp;<span class="caps">OK</span>.</li>
<li>Plug in the&nbsp;Arduino.</li>
<li>Open the Arduino <span class="caps">IDE</span> and select the correct <span class="caps">COM</span>&nbsp;Port.</li>
</ol>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/Qi4Sq3dPkLo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=294</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2012/11/arduino-leonardo-and-windows-8/</feedburner:origLink></item>
		<item>
		<title>DLP-RFID1 for Processing</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/F76a5dPx2OQ/</link>
		<comments>http://www.eightlines.com/blog/2011/12/dlp-rfid1-for-processing/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 03:49:07 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Processing]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=286</guid>
		<description><![CDATA[I recently had to set up a Processing application to monitor 15 RFID readers. The source was in C++ so I made a quick port to Processing. I&#8217;m adding it here in case it&#8217;s of use to anyone using a DLP-RFID1 device. Is there a better way of doing it? I&#8217;m open to&#160;suggestions! (Hat-tip to [...]]]></description>
				<content:encoded><![CDATA[<p>I recently had to set up a Processing application to monitor 15 <span class="caps">RFID</span> readers. The source was in C++ so I made a quick port to Processing. I&#8217;m adding it here in case it&#8217;s of use to anyone using a <span class="caps">DLP</span>-<span class="caps">RFID1</span> device. Is there a better way of doing it? I&#8217;m open to&nbsp;suggestions! </p>
<p>(Hat-tip to <a href="http://www.electricrock.co.nz/tools/dlp-rfid1-library-for-linux/" target="_blank">ElectricRock</a> for setting me on the right&nbsp;track.)</p>
<pre class="actionscript">&nbsp;
<span style="color: #0066CC;">import</span> processing.<span style="color: #006600;">serial</span>.<span style="color: #006600;">*</span>;
&nbsp;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_PING = <span style="color: #ff0000;">&quot;<span class="caps">0108000304FF0000</span>&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_AGC = <span style="color: #ff0000;">&quot;0109000304F0000000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_AMPM = <span style="color: #ff0000;">&quot;<span class="caps">0109000304F1FF0000</span>&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_PASS = <span style="color: #ff0000;">&quot;010900030419F00000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_FAIL = <span style="color: #ff0000;">&quot;010900030420F00000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_INVENTORY = <span style="color: #ff0000;">&quot;010B000304140601000000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_SID = <span style="color: #ff0000;">&quot;010B000304340050000000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_MODE_READ = <span style="color: #ff0000;">&quot;010C00030410002101000000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_MODE_UID = <span style="color: #ff0000;">&quot;010C00030410002101020000&quot;</span>;
<span style="color: #0066CC;">static</span> final <span style="color: #0066CC;">String</span> RFID_MODE_TAGIT = <span style="color: #ff0000;">&quot;010C00030410002101130000&quot;</span>;
&nbsp;
Serial rfidPort;
<span style="color: #0066CC;">int</span> rfidStep = <span style="color: #cc66cc;">0</span>;
<span style="color: #0066CC;">boolean</span> rfidRunning = <span style="color: #000000; font-weight: bold;">false</span>;
&nbsp;
<span style="color: #0066CC;">String</span> uidValue = <span style="color: #ff0000;">&quot;&quot;</span>;
float uidStrength = <span style="color: #cc66cc;">0</span>.0f;
&nbsp;
<span style="color: #0066CC;">int</span> startTime;
&nbsp;
<span style="color: #0066CC;">void</span> setup<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> 
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #808080; font-style: italic;">//<span class="caps">DLP</span>-<span class="caps">RFID1</span> Device requires <span class="caps">FTDI</span> <span class="caps">VCP</span> Drivers</span>
  rfidPort = <span style="color: #000000; font-weight: bold;">new</span> Serial<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">this</span>, Serial.<span style="color: #0066CC;">list</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #66cc66;">&#93;</span>, <span style="color: #cc66cc;">115200</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Set to active Serial Port</span>
  rfidPort.<span style="color: #006600;">bufferUntil</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//LineFeed</span>
&nbsp;
  <span style="color: #0066CC;">size</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">400</span>, <span style="color: #cc66cc;">300</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">void</span> draw<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">background</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">50</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>!rfidRunning<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    rfidRunning = <span style="color: #000000; font-weight: bold;">true</span>;
&nbsp;
    <span style="color: #808080; font-style: italic;">// Sequence <span class="caps">PING</span> | <span class="caps">AMPM</span> Toggle | <span class="caps">UID</span> <span class="caps">MODE</span> | <span class="caps">INVENTORY</span> is necessary to read <span class="caps">RFID</span> Tag.</span>
    <span style="color: #808080; font-style: italic;">// Wait for an echo and response (if there is a response) before proceeding.</span>
    <span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span>rfidStep<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">0</span>: 
        startTime = millis<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Measure time between poll</span>
        rfidPort.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span>RFID_PING<span style="color: #66cc66;">&#41;</span>;
      <span style="color: #b1b100;">break</span>;
      <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">1</span>: rfidPort.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span>RFID_AGC<span style="color: #66cc66;">&#41;</span>; <span style="color: #b1b100;">break</span>;
      <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">2</span>: rfidPort.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span>RFID_AMPM<span style="color: #66cc66;">&#41;</span>; <span style="color: #b1b100;">break</span>;
      <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">3</span>: rfidPort.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span>RFID_MODE_UID<span style="color: #66cc66;">&#41;</span>; <span style="color: #b1b100;">break</span>;
      <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">4</span>: rfidPort.<span style="color: #006600;">write</span><span style="color: #66cc66;">&#40;</span>RFID_INVENTORY<span style="color: #66cc66;">&#41;</span>; <span style="color: #b1b100;">break</span>;
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #0066CC;">void</span> serialEvent<span style="color: #66cc66;">&#40;</span>Serial port<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #0066CC;">String</span> rfidVal = port.<span style="color: #006600;">readString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
  <span style="color: #b1b100;">switch</span> <span style="color: #66cc66;">&#40;</span>rfidStep<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">0</span>: <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;dela&quot;</span><span style="color: #66cc66;">&#41;</span> &gt; <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span> rfidStep = <span style="color: #cc66cc;">1</span>; <span style="color: #b1b100;">break</span>; <span style="color: #808080; font-style: italic;">//Response &quot;dela&quot;</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">1</span>: <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span>RFID_AGC.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> &gt; <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span> rfidStep = <span style="color: #cc66cc;">2</span>; <span style="color: #b1b100;">break</span>; <span style="color: #808080; font-style: italic;">//Response echo</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">2</span>: <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span>RFID_AMPM.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> &gt; <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span> rfidStep = <span style="color: #cc66cc;">3</span>; <span style="color: #b1b100;">break</span>; <span style="color: #808080; font-style: italic;">//Response echo</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">3</span>: <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span>RFID_MODE_UID.<span style="color: #0066CC;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> &gt; <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span> rfidStep = <span style="color: #cc66cc;">4</span>; <span style="color: #b1b100;">break</span>; <span style="color: #808080; font-style: italic;">//Response echo</span>
    <span style="color: #b1b100;">case</span> <span style="color: #cc66cc;">4</span>: <span style="color: #808080; font-style: italic;">//Suggest echoing back the entire Inventory Request packet before isolating for the value you want.</span>
      <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;,40&quot;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">-1</span> &amp;&amp;  <span style="color: #808080; font-style: italic;">//Ignore &lt; ,40&gt; (empty <span class="caps">RFID</span> Register)</span>
          rfidVal.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&gt;&quot;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">-1</span> &amp;&amp; <span style="color: #808080; font-style: italic;">//Ignore line feed</span>
          rfidVal.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;iso 15693 inventory request.&quot;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">-1</span> &amp;&amp; <span style="color: #808080; font-style: italic;">//Ignore packet header</span>
          rfidVal.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;register write request.&quot;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">-1</span> &amp;&amp; <span style="color: #808080; font-style: italic;">//Ignore packet header</span>
          rfidVal.<span style="color: #0066CC;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;interrupt error.&quot;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">//Ignore error</span>
      <span style="color: #66cc66;">&#123;</span>
        <span style="color: #0066CC;">String</span> uid = rfidVal.<span style="color: #0066CC;">substring</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span>, rfidVal.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">6</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//All I'm looking for is the <span class="caps">UID</span> of the <span class="caps">RFID</span> tag.</span>
&nbsp;
        float signalStrength = <span style="color: #cc66cc;">0</span>.0f; <span style="color: #808080; font-style: italic;">//Signal strength is passed with the <span class="caps">UID</span>. Hardly useful at 4cm though.</span>
        <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">indexOf</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;[,00]&quot;</span><span style="color: #66cc66;">&#41;</span> == <span style="color: #cc66cc;">-1</span><span style="color: #66cc66;">&#41;</span>
          signalStrength = map<span style="color: #66cc66;">&#40;</span>unhex<span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">substring</span><span style="color: #66cc66;">&#40;</span>rfidVal.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">5</span>, rfidVal.<span style="color: #0066CC;">length</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>, <span style="color: #cc66cc;">72</span>, <span style="color: #cc66cc;">109</span>, <span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
        uidValue = uid;
        uidStrength = signalStrength;
&nbsp;
        float elapsedTime = millis<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> - startTime;
&nbsp;
        println<span style="color: #66cc66;">&#40;</span>uid + <span style="color: #ff0000;">&quot;, &quot;</span> + signalStrength + <span style="color: #ff0000;">&quot;, &quot;</span> + elapsedTime + <span style="color: #ff0000;">&quot;ms&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Echo the result to the Serial Monitor</span>
        rfidStep = <span style="color: #cc66cc;">0</span>; <span style="color: #808080; font-style: italic;">//Start the poll over again.</span>
      <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">break</span>;
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
  rfidRunning = <span style="color: #000000; font-weight: bold;">false</span>; <span style="color: #808080; font-style: italic;">//Start the poll over again.</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;</pre>
<p>Next up, I&#8217;m pulling the device apart to add a visual indicator to the <span class="caps">PASS</span>/<span class="caps">FAIL</span> speaker. In noisy environments you can&#8217;t hear these devices&nbsp;fire. </p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/F76a5dPx2OQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=286</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2011/12/dlp-rfid1-for-processing/</feedburner:origLink></item>
		<item>
		<title>Three20 TTTableViewController commitEditingStyle</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/JVsXm2hbBs8/</link>
		<comments>http://www.eightlines.com/blog/2010/06/three20-tttableviewcontroller-commiteditingstyle/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 19:07:59 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[ObjectiveC]]></category>
		<category><![CDATA[Three20]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[ObjC]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=239</guid>
		<description><![CDATA[This post is mostly for my future reference. I found the documentation of the TTTableViewController's commitEditingStyle to be lacking. Some of the comments on StackOverflow provide the right answer, but the code wasn't posted so I struggled for a bit. Below is an example of the version I managed to get running.]]></description>
				<content:encoded><![CDATA[<p>This post is mostly for my future reference. I found the documentation of the TTTableViewController&#8217;s commitEditingStyle to be lacking. Some of the comments on StackOverflow provide the right answer, but the code wasn&#8217;t posted so I struggled for a bit. Below is an example of the version I managed to get&nbsp;running.</p>
<p><strong>TestDataSource.h:</strong></p>
<pre class="actionscript">&nbsp;
@<span style="color: #0066CC;">interface</span> TestDataSource : TTListDataSource 
    &lt;uitableviewdatasource , TTModelDelegate&gt; <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>table 
    numberOfRowsInSection:<span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>section;
- <span style="color: #66cc66;">&#40;</span>UITableViewCell *<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView 
    cellForRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView 
    commitEditingStyle:<span style="color: #66cc66;">&#40;</span>UITableViewCellEditingStyle<span style="color: #66cc66;">&#41;</span>editingStyle 
    forRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath;
&nbsp;
@end&lt;/uitableviewdatasource&gt;</pre>
<p><strong>TestDataSource.m</strong></p>
<pre class="actionscript">&nbsp;
<span style="color: #808080; font-style: italic;">#import &quot;TableTest.h&quot;</span>
&nbsp;
@implementation TableTest
&nbsp;
- <span style="color: #66cc66;">&#40;</span>id<span style="color: #66cc66;">&#41;</span>init
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>self = <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> init<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        UIBarButtonItem *rightButton = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span>UIBarButtonItem alloc<span style="color: #66cc66;">&#93;</span> 
            initWithTitle:@<span style="color: #ff0000;">&quot;Edit&quot;</span> 
            style:UIBarButtonSystemItemEdit 
            <span style="color: #0066CC;">target</span>:self 
            action:@selector<span style="color: #66cc66;">&#40;</span>toggleEdit<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
        autorelease<span style="color: #66cc66;">&#93;</span>;
        self.<span style="color: #006600;">navigationItem</span>.<span style="color: #006600;">rightBarButtonItem</span> = rightButton;
        self.<span style="color: #006600;">title</span> = @<span style="color: #ff0000;">&quot;Table Test&quot;</span>;
        NSArray *items = <span style="color: #66cc66;">&#91;</span>NSArray arrayWithObjects:
            <span style="color: #66cc66;">&#91;</span>TTTableTextItem itemWithText:@<span style="color: #ff0000;">&quot;Item 1&quot;</span><span style="color: #66cc66;">&#93;</span>,
            <span style="color: #66cc66;">&#91;</span>TTTableTextItem itemWithText:@<span style="color: #ff0000;">&quot;Item 2&quot;</span><span style="color: #66cc66;">&#93;</span>,
            <span style="color: #66cc66;">&#91;</span>TTTableTextItem itemWithText:@<span style="color: #ff0000;">&quot;Item 3&quot;</span><span style="color: #66cc66;">&#93;</span>,
            nil
        <span style="color: #66cc66;">&#93;</span>;
        self.<span style="color: #006600;">dataSource</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span>TestDataSource alloc<span style="color: #66cc66;">&#93;</span> initWithItems:items<span style="color: #66cc66;">&#93;</span>;
        self.<span style="color: #006600;">tableView</span>.<span style="color: #006600;">delegate</span> = self;
    <span style="color: #66cc66;">&#125;</span>
    <span style="color: #b1b100;">return</span> self;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>toggleEdit
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #66cc66;">&#91;</span>self.<span style="color: #006600;">tableView</span> setEditing:!self.<span style="color: #006600;">tableView</span>.<span style="color: #006600;">editing</span> animated:<span class="caps">YES</span><span style="color: #66cc66;">&#93;</span>;
    NSString *label = self.<span style="color: #006600;">tableView</span>.<span style="color: #006600;">editing</span> == <span class="caps">YES</span> ? @<span style="color: #ff0000;">&quot;Done&quot;</span> : @<span style="color: #ff0000;">&quot;Edit&quot;</span>;
    self.<span style="color: #006600;">navigationItem</span>.<span style="color: #006600;">rightBarButtonItem</span> = <span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span><span style="color: #66cc66;">&#91;</span>UIBarButtonItem alloc<span style="color: #66cc66;">&#93;</span> 
        initWithTitle:label 
        style:UIBarButtonSystemItemEdit 
        <span style="color: #0066CC;">target</span>:self 
        action:@selector<span style="color: #66cc66;">&#40;</span>toggleEdit<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span> 
    autorelease<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#pragma mark -</span>
<span style="color: #808080; font-style: italic;">#pragma mark TTTableViewDelegate</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView*<span style="color: #66cc66;">&#41;</span>tableView 
    touchesBegan:<span style="color: #66cc66;">&#40;</span>NSSet*<span style="color: #66cc66;">&#41;</span>touches withEvent:<span style="color: #66cc66;">&#40;</span>UIEvent*<span style="color: #66cc66;">&#41;</span>event
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> touchesBegan:touches withEvent:event<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView*<span style="color: #66cc66;">&#41;</span>tableView 
    touchesEnded:<span style="color: #66cc66;">&#40;</span>NSSet*<span style="color: #66cc66;">&#41;</span>touches withEvent:<span style="color: #66cc66;">&#40;</span>UIEvent*<span style="color: #66cc66;">&#41;</span>event
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> touchesEnded:touches withEvent:event<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
@<span style="color: #0066CC;">end</span>
&nbsp;
@implementation TestDataSource
&nbsp;
- <span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>table 
    numberOfRowsInSection:<span style="color: #66cc66;">&#40;</span>NSInteger<span style="color: #66cc66;">&#41;</span>section
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> tableView:table numberOfRowsInSection:section<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span>UITableViewCell *<span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView 
    cellForRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #66cc66;">&#91;</span><span style="color: #0066CC;">super</span> tableView:tableView cellForRowAtIndexPath:indexPath<span style="color: #66cc66;">&#93;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
- <span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">void</span><span style="color: #66cc66;">&#41;</span>tableView:<span style="color: #66cc66;">&#40;</span>UITableView *<span style="color: #66cc66;">&#41;</span>tableView 
    commitEditingStyle:<span style="color: #66cc66;">&#40;</span>UITableViewCellEditingStyle<span style="color: #66cc66;">&#41;</span>editingStyle
    forRowAtIndexPath:<span style="color: #66cc66;">&#40;</span>NSIndexPath *<span style="color: #66cc66;">&#41;</span>indexPath
<span style="color: #66cc66;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #66cc66;">&#40;</span>editingStyle == UITableViewCellEditingStyleDelete<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
        <span style="color: #66cc66;">&#91;</span>self.<span style="color: #006600;">items</span> removeObjectAtIndex:indexPath.<span style="color: #006600;">row</span><span style="color: #66cc66;">&#93;</span>;
        NSArray *objects = <span style="color: #66cc66;">&#91;</span>NSArray arrayWithObjects:indexPath, nil<span style="color: #66cc66;">&#93;</span>;
        <span style="color: #66cc66;">&#91;</span>tableView deleteRowsAtIndexPaths:objects 
            withRowAnimation:UITableViewRowAnimationBottom<span style="color: #66cc66;">&#93;</span>;
    <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
@<span style="color: #0066CC;">end</span>
&nbsp;</pre>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/JVsXm2hbBs8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=239</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2010/06/three20-tttableviewcontroller-commiteditingstyle/</feedburner:origLink></item>
		<item>
		<title>TGIMBOEJ</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/TCODW4PzMLI/</link>
		<comments>http://www.eightlines.com/blog/2009/09/tgimboej/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 01:58:38 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Found]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=215</guid>
		<description><![CDATA[The Great Internet Migratory Box of Electronics Junk (TGIMBOEJ) is a box. It&#8217;s a box that arrives on your doorstep after you drop your name on a wiki page and wait a good deal of time. It&#8217;s a box that has electronics junk inside and it works off the premise that it could be someone [...]]]></description>
				<content:encoded><![CDATA[<p><a title="Received! One TGIMBOEJ by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3859883317/"><img class="alignleft" src="http://farm3.static.flickr.com/2635/3859883317_81e5361c8b_m.jpg" alt="Received! One TGIMBOEJ" width="180" height="240" /></a><a title="TGIMBOEJ" href="http://www.tgimboej.org/" target="_blank">The Great Internet Migratory Box of Electronics Junk</a> (<span class="caps">TGIMBOEJ</span>) is a box. It&#8217;s a box that arrives on your doorstep after you drop your name on a wiki page and wait a good deal of time. It&#8217;s a box that has electronics junk inside and it works off the premise that it could be someone else&#8217;s treasure. Find something of interest? Keep it, and drop in some other interesting&nbsp;item.</p>
<p>I received the <a title="Blue Bomber Tracker" href="http://www.tgimboej.org/Box_Code:_Blue_Bomber" target="_blank">Blue Bomber</a> <span class="caps">TGIMBOEJ</span> the other day from Grant (check out his blog at <a title="Splorp" href="http://www.splorp.com/2009/09/junk-in-box.html" target="_blank">Splorp</a>) and quickly opened it up to see what treasure was&nbsp;inside.</p>
<ul>
<li>Bubbl<a title="#TGIMBOEJ - Should I make a Mousebot? by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3860175751/"><img class="alignright" src="http://farm4.static.flickr.com/3571/3860175751_4a5fce2b57_m.jpg" alt="#TGIMBOEJ - Should I make a Mousebot?" width="180" height="240" /></a>e wrap (My daughter took some to&nbsp;pop)</li>
<li>Barbie digital camera (<span class="caps">1MP</span>? Useful for sending up a kite for some&nbsp;<span class="caps">KAP</span>?)</li>
<li>Classic Apple IIe mouse (Taken, going to build a&nbsp;<a title="Instructable: Mousebot" href="http://www.instructables.com/id/Mousebot-Revisited/" target="_blank">Mousebot</a>)</li>
<li>Momentary push buttons (I took two, I&#8217;m always short of&nbsp;them)</li>
<li>Incandescent indicator lamps (these could be worth something some&nbsp;day!)</li>
<li>Male-Female <span class="caps">SCSI</span> adapter (I&#8217;m guessing? Been a while since I&#8217;ve seen&nbsp;one.)</li>
<li>Soldering Iron&nbsp;Tip</li>
<li>Audio jack signal&nbsp;adapter</li>
<li>Servos</li>
<li>Printer control&nbsp;board</li>
<li>Potentiometers <span class="amp">&amp;</span> Control&nbsp;boards</li>
<li>Digital Media&nbsp;Players</li>
<li>Linksys&nbsp;Router</li>
<li>Multi-pin switches (I took 3, but there&#8217;s 7&nbsp;left)</li>
</ul>
<p style="text-align: center;">
<p>And in the spirit of sharing, I&#8217;m dropping in a Solenoid left over from my <a title="Solenoid Project" href="http://www.eightlines.com/blog/2008/08/passing-the-kid-test/" target="_self">Water Fountain</a> experiments from last summer, some pin headers, and a section of&nbsp;<a title="Pixelboard" href="http://www.eightlines.com/blog/2008/05/treasure-hunting-at-the-surplus-store/" target="_self">pixelboard</a>.</p>
<p style="text-align: center;"><a href="http://www.flickr.com/photos/eightlines/2519225049/"><img class="alignleft" title="Pixelboard" src="http://farm3.static.flickr.com/2249/2519225049_dd62536f12_m.jpg" alt="" width="216" height="162" /></a><a href="http://farm4.static.flickr.com/3189/2632937440_6d63808e61_m.jpg"><img class="aligncenter" title="Solenoid" src="http://farm4.static.flickr.com/3189/2632937440_6d63808e61_m.jpg" alt="" width="216" height="162" /></a></p>
<p>I&#8217;m due to send the box out to the next person on the list tomorrow, but if you want to participate, add your name to <a title="TGIMBOEJ Participant list" href="http://www.tgimboej.org/Box_Requests" target="_blank">the list</a>! One more tip: even if you don&#8217;t want to participate, check out the list for some excellent blogs <span class="amp">&amp;</span> projects. There&#8217;s a ton of cool projects going&nbsp;on.</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/TCODW4PzMLI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=215</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/09/tgimboej/</feedburner:origLink></item>
		<item>
		<title>Power Monitor Packet</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/xSCneQiMfZ0/</link>
		<comments>http://www.eightlines.com/blog/2009/08/power-monitor-packet/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 01:17:44 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=212</guid>
		<description><![CDATA[As Hugo helpfully commented in a previous post, here is the link to the Power Monitor Patent. The specific page I&#8217;m linking to is the Packet model. Lots of reading to do here, but its pretty&#160;interesting. One of the things I find most interesting about this patent is the citations dating back to 1977. Definitely [...]]]></description>
				<content:encoded><![CDATA[<p>As Hugo helpfully commented in a previous post, here is the link to the <a title="Power Monitor Patent" href="http://www.google.ca/patents?id=LKGoAAAAEBAJ&amp;zoom=4&amp;pg=PA6#v=onepage&amp;q=&amp;f=false" target="_blank">Power Monitor Patent</a>. The specific page I&#8217;m linking to is the Packet model. Lots of reading to do here, but its pretty&nbsp;interesting.</p>
<p>One of the things I find most interesting about this patent is the citations dating back to 1977. Definitely not a cutting edge technology we&#8217;re working with here. If the 1977 patent was the byproduct of the &#8217;70s energy crisis what inventions will we see as a byproduct of our current energy&nbsp;phase?</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/xSCneQiMfZ0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=212</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/08/power-monitor-packet/</feedburner:origLink></item>
		<item>
		<title>Building a Scooter Bike for Kids</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/uJ9l1FuILBo/</link>
		<comments>http://www.eightlines.com/blog/2009/07/building-a-scooter-bike-for-kids/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 02:28:10 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=205</guid>
		<description><![CDATA[Ages ago I bookmarked a design posted on Make for a Scooter Bike, as I intended on building one when my daughter got old enough. On a recent trip to the surplus store I picked up a wheelset for $3 and figured what better time to start than now. I found furniture grade plywood on [...]]]></description>
				<content:encoded><![CDATA[<p><a title="Scooter Bike" href="http://twitpic.com/atmvn"><img class="alignleft" src="http://twitpic.com/show/thumb/atmvn.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>Ages ago I <a title="Crumley Coaster Bike Plans" href="http://crumleydotorg.chattablogs.com/archives/038834.html" target="_blank">bookmarked a design</a> posted on Make for a Scooter Bike, as I intended on building one when my daughter got old enough. On a recent trip to the surplus store I picked up a wheelset for $3 and figured what better time to start than now. I found furniture grade plywood on a neighbour&#8217;s front yard ready for the trash. Screws, Nuts <span class="amp">&amp;</span> Bolts cost&nbsp;~$10.</p>
<p>Now this design appears to be based on a European design, and around this end of the globe we have <a title="Like-a-Bike" href="http://store.likeabikeusa.com/merchant2/merchant.mvc?Screen=main&amp;Store_Code=L&amp;Category_Code=BIKES" target="_blank">Like-a-Bike</a> which look very similar. The $300 price tag was a bit steep, and since I had all of the parts in the shop I decided I could build it myself. The whole project took about a week when you take in all of the trial and error that went on. A more competent woodworker could probably do it in much less time. All in all, it made me further appreciate the subtleties of the Like-a-Bike&nbsp;design.</p>
<p><a title="Front Fork Design" href="http://twitpic.com/9yhuf"><img class="alignleft" src="http://twitpic.com/show/thumb/9yhuf.jpg" alt="Front Fork Design" width="150" height="150" /></a><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/a5j2o"><img class="alignright" src="http://twitpic.com/show/thumb/a5j2o.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>Initially, I went with the design in the <span class="caps">PDF</span> file which included front forks cut out of a single block of wood (Left image). This became problematic when I noticed the axle would have to be thinner and the design gave less flexibility when manipulating the headset. I soon went to a different design (Right image) which ended up being more rigid, and easier to modify as the design changed. In the end I also managed to shim in a spring to act as a rudimentary shock. Instead of adding spacers to the front wheel I pulled the axle in far enough to bend the forks. It seems to add a nice bit of curve to the&nbsp;design.</p>
<p><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/ae76o"><img class="alignleft" src="http://twitpic.com/show/thumb/ae76o.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>Looking at other wooden bike designs it appears 1/8&#8221; plywood would have probably done the trick. I used 1/2&#8221; plywood which was probably overkill. This adds to the weight, but my daughter can still manage it easily. The edges are routed to give a nice curve, and to avoid splinters. It also added a really nice effect to the edges. I&#8217;m looking forward to seeing the varnish go on. In this image you can also see how the rear wheel fits between the body. I had to sand the plywood down to provide an allowance for the rear wheel to spin freely. To stop the rear axle bolts from loosening, use a nylon threaded&nbsp;nut.</p>
<p><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/ai26e"><img class="alignright" src="http://twitpic.com/show/thumb/ai26e.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a><a title="Share photos on twitter with Twitpic" href="http://twitpic.com/b6eg4"><img class="alignleft" src="http://twitpic.com/show/thumb/b6eg4.jpg" alt="Share photos on twitter with Twitpic" width="150" height="150" /></a>The handlebars were simply cut and sanded down to the final rounded off shape. I also had to modify the front forks to give a larger turning radius. Sanding the inside edge of the fork provided about 20° to each side. The headset also had to be reinforced with more screws, I&#8217;d recommend putting countersunk bolts right through the frame. The first time the bike dropped to the floor the threads stripped the plywood. I&#8217;m hoping more screws would stop this from happening next&nbsp;time.</p>
<p>This was a pretty fun build that could be completed with some simple tools. I used a band saw, belt sander, router, and drill press. You could do this project with much less if you wanted to. You could also supplement the design with a kick stand, bell, streamers, or&nbsp;carrier.</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/uJ9l1FuILBo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=205</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/07/building-a-scooter-bike-for-kids/</feedburner:origLink></item>
		<item>
		<title>Arduino Packet Analyzer</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/zD8NdBudD10/</link>
		<comments>http://www.eightlines.com/blog/2009/06/arduino-packet-analyzer/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 02:29:37 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=177</guid>
		<description><![CDATA[Following the previous success where we managed to see the transmissions from the Black &#38; Decker Power Monitor, Andrew Kilpatrick and I went about trying to capture the packets. Without an access to an oscilloscope with packet capture capabilities we built our own with an&#160;Arduino. Essentially, the code waits for the Power Monitor to transmit [...]]]></description>
				<content:encoded><![CDATA[<p>Following the <a title="Black and Decker Power Monitor Hack" href="http://www.eightlines.com/blog/2009/06/black-decker-power-monitor-hack/" target="_self">previous success</a> where we managed to see the transmissions from the Black <span class="amp">&amp;</span> Decker <a title="Black and Decker Power Monitor" href="http://www.blackanddecker.com/Energy/products.aspx" target="_blank">Power Monitor</a>, <a title="Andrew Kilpatrick Blog" href="http://www.andrewkilpatrick.org/" target="_blank">Andrew Kilpatrick</a> and I went about trying to capture the packets. Without an access to an oscilloscope with packet capture capabilities we built our own with an&nbsp;Arduino.</p>
<p>Essentially, the code waits for the Power Monitor to transmit the packet. When it detects a signal it spins up to a 100 microsecond delay and captures the bytes. These bytes are stored to the internal memory. When the packet is finished, it dumps the data to the Serial Monitor and waits for the next&nbsp;packet.</p>
<pre class="c"><span style="color: #808080; font-style: italic;">/**
 * Packet Analyzer
 *
 * Project documented at:
 * http://www.eightlines.com/blog/2009/04/arduino-packet-analyzer/
 *
 * Many thanks to Andrew Kilpatrick:
 * http://andrewkilpatrick.org/blog/
 *
 * Captures &amp;amp; logs incoming packets in <span class="caps">HEX</span> format.
 * Digital signal is <span class="caps">HIGH</span> and drops to <span class="caps">LOW</span> when transmitting.
 * Accepts digital input on Digital Pin 8.
 */</span>
&nbsp;
<span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> buff<span style="color: #66cc66;">&#91;</span><span style="color: #cc66cc;">128</span><span style="color: #66cc66;">&#93;</span>; <span style="color: #808080; font-style: italic;">//Create a buffer array to insert bytes</span>
<span style="color: #993333;">int</span> bufferLength = <span style="color: #cc66cc;">128</span>;
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">115200</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Invoke serial connection</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//Set input based on port registers</span>
  <span style="color: #808080; font-style: italic;">//Refers to Digital Pin 8</span>
  <span style="color: #808080; font-style: italic;">//http://arduino.cc/en/Reference/PortManipulation</span>
  <span class="caps">DDRB</span> = <span class="caps">DDRB</span> | B11111110; <span style="color: #808080; font-style: italic;">//Data Direction Register</span>
  <span class="caps">PORTB</span> = 0xFF; <span style="color: #808080; font-style: italic;">//Port B Register</span>
<span style="color: #66cc66;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
  <span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> tempByte; <span style="color: #808080; font-style: italic;">//Temporary Byte</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//while (<span class="caps">PORTB</span> &amp;amp; 0x01); //Not functioning as expected</span>
  <span style="color: #b1b100;">while</span> <span style="color: #66cc66;">&#40;</span>digitalRead<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//While <span class="caps">HIGH</span> idle</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//<span class="caps">LOW</span> transmitted enter For Loop</span>
  <span style="color: #808080; font-style: italic;">//Repeat loop for each byte in bufferLength</span>
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> b = <span style="color: #cc66cc;">0</span>; b &amp;lt; bufferLength; b++<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    tempByte = <span style="color: #cc66cc;">0</span>; <span style="color: #808080; font-style: italic;">//Reset temporary byte</span>
&nbsp;
    <span style="color: #808080; font-style: italic;">//Loop for each bit</span>
    <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">char</span> bit = <span style="color: #cc66cc;">0</span>; bit &amp;lt; <span style="color: #cc66cc;">8</span>; bit++<span style="color: #66cc66;">&#41;</span>
    <span style="color: #66cc66;">&#123;</span>
      tempByte = tempByte &amp;lt;&amp;lt; <span style="color: #cc66cc;">1</span>; <span style="color: #808080; font-style: italic;">//Shift previous bit</span>
      tempByte = tempByte &amp;amp; 0xfe;
      <span style="color: #808080; font-style: italic;">//tempByte = tempByte | (<span class="caps">PORTB</span> &amp;amp; 0x01); //Not functioning as expected</span>
      tempByte = tempByte | <span style="color: #66cc66;">&#40;</span>digitalRead<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">8</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Incoming value</span>
      delayMicroseconds<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">100</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">//Oversampled delay - can be adjusted based on speed of packet</span>
    <span style="color: #66cc66;">&#125;</span>
&nbsp;
    buff<span style="color: #66cc66;">&#91;</span>b<span style="color: #66cc66;">&#93;</span> = tempByte; <span style="color: #808080; font-style: italic;">//Write byte to buffer</span>
  <span style="color: #66cc66;">&#125;</span>
&nbsp;
  <span style="color: #808080; font-style: italic;">//Write buffer to Serial connection</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span class="caps">SOH</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #b1b100;">for</span> <span style="color: #66cc66;">&#40;</span><span style="color: #993333;">unsigned</span> <span style="color: #993333;">char</span> b = <span style="color: #cc66cc;">0</span>; b &amp;lt; <span style="color: #cc66cc;">128</span>; b++<span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#123;</span>
    Serial.<span style="color: #202020;">print</span><span style="color: #66cc66;">&#40;</span>buff<span style="color: #66cc66;">&#91;</span>b<span style="color: #66cc66;">&#93;</span>, <span class="caps">HEX</span><span style="color: #66cc66;">&#41;</span>;
    Serial.<span style="color: #202020;">print</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span>;
  <span style="color: #66cc66;">&#125;</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;&quot;</span><span style="color: #66cc66;">&#41;</span>;
  Serial.<span style="color: #202020;">println</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;<span class="caps">EOT</span>&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
<p>This code will produce a <span class="caps">HEX</span> output of the signal. Convert this to bytes and map the data to high (-) and lows (_). [I&#8217;m an Flash developer by day, so the code below is in&nbsp;ActionScript]</p>
<pre class="c">public <span style="color: #000000; font-weight: bold;">function</span> HexInterpreter<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#123;</span>
   var hexArray:Array = hex.<span style="color: #202020;">split</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot; &quot;</span><span style="color: #66cc66;">&#41;</span>;
   hexArray.<span style="color: #202020;">forEach</span><span style="color: #66cc66;">&#40;</span>appendHex<span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span>
&nbsp;
protected <span style="color: #000000; font-weight: bold;">function</span> appendHex<span style="color: #66cc66;">&#40;</span>element:*, index:<span style="color: #993333;">int</span>, arr:Array<span style="color: #66cc66;">&#41;</span>:<span style="color: #993333;">void</span>
<span style="color: #66cc66;">&#123;</span>
   arr<span style="color: #66cc66;">&#91;</span>index<span style="color: #66cc66;">&#93;</span> = uint<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;0x&quot;</span> + element<span style="color: #66cc66;">&#41;</span>;
   trace<span style="color: #66cc66;">&#40;</span>arr<span style="color: #66cc66;">&#91;</span>index<span style="color: #66cc66;">&#93;</span>.<span style="color: #202020;">toString</span><span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span><span style="color: #66cc66;">&#41;</span>, arr<span style="color: #66cc66;">&#91;</span>index<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#125;</span></pre>
<p>The finished result is <a title="Power Monitor Packet" href="http://www.eightlines.com/blog/wp-content/uploads/2009/06/packets.txt" target="_blank">viewable here</a>. The next step is interpreting this into data. I believe reset sends four packets, and every transmission (once every 30 seconds) sends an <span class="caps">IR</span> Count and Temperature. The next step is interpreting the results from this&nbsp;test.</p>
<p>[I just want to stress that none of this code or results would have been possible without Andrew&#8217;s assistance. In fact 90% of the code presented here is his, I was just along for the ride and to learn a hell of a lot. Many&nbsp;thanks!]</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/zD8NdBudD10" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=177</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/arduino-packet-analyzer/</feedburner:origLink></item>
		<item>
		<title>Black &amp; Decker Power Monitor Hack</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/59MEBhR7LTA/</link>
		<comments>http://www.eightlines.com/blog/2009/06/black-decker-power-monitor-hack/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 02:27:19 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Ideas]]></category>
		<category><![CDATA[Power Monitor]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=190</guid>
		<description><![CDATA[Black &#38; Decker makes an interesting product called the Power Monitor. The monitor straps on to your hydro meter and reports the revolutions of a spinning disc or blinks of an IR LED depending which model of meter you have. It then broadcasts that reading to a handheld unit inside your house. As the fridge [...]]]></description>
				<content:encoded><![CDATA[<p><a title="Energy Monitor hack by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3512068152/"><img style="padding-right:10px;" src="http://farm4.static.flickr.com/3604/3512068152_0ff73a3c0c.jpg" alt="Energy Monitor hack" width="500" height="375" align="left" /></a>Black <span class="amp">&amp;</span> Decker makes an interesting product called the <a title="Black and Decker Power Monitor" href="http://www.blackanddecker.com/Energy/products.aspx" target="_blank">Power Monitor</a>. The monitor straps on to your hydro meter and reports the revolutions of a spinning disc or blinks of an <span class="caps">IR</span> <span class="caps">LED</span> depending which model of meter you have. It then broadcasts that reading to a handheld unit inside your house. As the fridge cycles on you can track this increase in power usage. Subtract that from the reading prior to the device powering on, and you have a rough estimate of how many watts that device uses. The Power Monitor is very simillar to the <a title="Kill-A-Watt" href="http://en.wikipedia.org/wiki/Kill_A_Watt" target="_blank">Kill-A-Watt</a> except it monitors the entire house instead of specific&nbsp;devices.</p>
<p>There&#8217;s some benefits of the Power Monitor over other devices. It tracks the entire house, the 30 second delay on readings is almost realtime, and its affordable ($100&thinsp;&#8212;&thinsp;would probably pay back fairly quickly). There&#8217;s also some disadvantages. It is less accurate then the Kill-A-Watt, and it has now data&nbsp;connection.</p>
<p>The Kill-A-Watt has a simillar problem, it doesn&#8217;t export the data either. This is a bit of an issue if you wanted to log the power consumption of your house. That&#8217;s where the <a title="Tweet-A-Watt" href="http://www.ladyada.net/make/tweetawatt/" target="_blank">Tweet-A-Watt</a> comes in. What I&#8217;m attempting to do is bring this ability to the Power Monitor. How hard could it&nbsp;be?</p>
<p><img class="alignright size-medium wp-image-194" title="RF Receiver" src="http://www.eightlines.com/blog/wp-content/uploads/2009/06/powermonitorrfreceiver-300x225.jpg" alt="RF Receiver" width="300" height="225" />The Power Monitor is a device manufactured by <a title="Blueline Innovations" href="http://www.bluelineinnovations.com/" target="_blank">Blueline Innovations</a>. It transmits a signal on a 433.92 MHz spectrum. My first attempts were to try to intercept the signal through an <span class="caps">RF</span> Receiver in the same&nbsp;frequency.</p>
<p>Initial attempt. Nothing. Set up an <span class="caps">RF</span> Transmitter, it communicated with the receiver perfectly. I was a bit stumped. This is when I checked out a session at <a title="Hacklab" href="http://hacklab.to/" target="_blank">Hacklab</a>. There, I was schooled on using <span class="caps">RF</span> Scanners, <a title="Wikipedia entry on Spread Spectrum" href="http://en.wikipedia.org/wiki/Spread_spectrum" target="_blank">spread spectrum</a> and other <span class="caps">RF</span> black magic. (Many thanks to&thinsp;&#8212;&thinsp;make sure to check these guys out&thinsp;&#8212;&thinsp;<a title="Andrew Kilpatrick Blog" href="http://www.andrewkilpatrick.org/blog/" target="_blank">Andrew Kilpatrick</a>, <a title="Toronto Goat" href="http://torontogoat.blogspot.com/" target="_blank">Toronto Goat</a>, and everyone else at Hacklab) We could detect the packet&#8217;s being sent, but couldn&#8217;t intercept any usable&nbsp;data.</p>
<p>It was decided that to get any useful data we must be more invasive. Warranty, out the window. We broke out the oscilloscope on the Monitor. Conveniently there&#8217;s two test probes marked on the board. This allowed us to identify the packet quite&nbsp;easily.</p>
<p><object width="400" height="225" data="http://vimeo.com/moogaloop.swf?clip_id=3733871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=3733871&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /></object></p>
<p>Now at least I have some confidence that we will be able to produce some results and this isn&#8217;t some wild goose chase. The next phase is to capture the data off the device. I&#8217;ll follow up shortly with the Signal Boost circuit and Arduino code used to capture the transmitted signal. More&nbsp;soon!</p>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/59MEBhR7LTA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=190</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/black-decker-power-monitor-hack/</feedburner:origLink></item>
		<item>
		<title>Air Quality Monitoring</title>
		<link>http://feedproxy.google.com/~r/Eightlines/~3/In6x6fUZU9w/</link>
		<comments>http://www.eightlines.com/blog/2009/06/air-quality-monitoring/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 02:57:53 +0000</pubDate>
		<dc:creator>Brent</dc:creator>
				<category><![CDATA[Air Quality]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Data Logger]]></category>
		<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://www.eightlines.com/blog/?p=187</guid>
		<description><![CDATA[Recently I had a discussion with someone from the South Riverdale Community Health Centre on Air Quality monitoring in Ontario (AQI). I learned a number of things, there are only 40 Air Quality Monitors in Ontario and they test for six key indexes. Toronto runs a slightly different test, the Air Quality Health Index (AQHI) [...]]]></description>
				<content:encoded><![CDATA[<p>Recently I had a discussion with someone from the <a title="South Riverdale Community Health Centre" href="http://www.srchc.ca/">South Riverdale Community Health Centre</a> on Air Quality monitoring in Ontario (<span class="caps">AQI</span>). I learned a number of things, there are only <a title="AQI Ontario" href="http://www.ene.gov.on.ca/en/air/aqo/index.php#what" target="_blank">40 Air Quality Monitors in Ontario</a> and they test for six key indexes. Toronto runs a slightly different test, the <a title="Air Quality Health Index" href="http://www.ec.gc.ca/cas-aqhi/default.asp?lang=En&amp;n=CB0ADB16-1" target="_blank">Air Quality Health Index</a> (<span class="caps">AQHI</span>) which is a pilot programme and reports on how the Air Quality will affect your health. The <span class="caps">AQHI</span> test for <a title="AQHI Indicators" href="http://www.ec.gc.ca/cas-aqhi/default.asp?Lang=En&amp;n=065BE995-1#calculated" target="_blank">three key indicators</a>. Detecting three indexes sounds pretty&nbsp;reasonable.</p>
<p><a title="Mobile Air Quality Monitor by Eightlines, on Flickr" href="http://www.flickr.com/photos/eightlines/3597088400/"><img src="http://farm3.static.flickr.com/2466/3597088400_866e918c09_m.jpg" alt="Mobile Air Quality Monitor" width="240" height="180" align="left" /></a>By building my own Air Quality project I hope to be able to reproduce the <span class="caps">AQHI</span> results at a fraction of the price and provide instruction to enable anyone across the province a chance to build their&nbsp;own.</p>
<p>To the left is a photo of the final (but always in a state of flux) result. It is a <span class="caps">GPS</span> enabled device powered by two <span class="caps">AA</span>&#8217;s which senses Air Quality and Ozone. I am currently running tests in a variety of ways. This is a more complex setup than it has to be. Below I&#8217;ll detail both a simple setup and a complex&nbsp;setup.</p>
<p><strong>Simple Air Quality&nbsp;Monitor:</strong></p>
<ul>
<li><a title="Arduino Mini USB" href="http://arduino.cc/en/Main/MiniUSB" target="_blank"><span class="caps">USB</span>-Serial Connection</a>&nbsp;(~$15)</li>
<li><a title="Futurlec Sensors" href="http://www.futurlec.com/Gas_Sensors.shtml" target="_blank">Air Quality Sensor <span class="amp">&amp;</span> Ozone Sensor</a> ($6&nbsp;each)</li>
<li>2 Resistors ($.15 - I&#8217;m using a 15k&nbsp;Ohm)</li>
</ul>
<p>Connect the sensors as illustrated on the <a title="Wiring" href="http://www.wiring.org.co/learning/examples/airQuality_MQ135.html" target="_blank">Wiring.org</a> website. Attach to a computer and upload the data to a provider such as <a title="Pachube" href="http://www.pachube.com/" target="_blank">Pachube</a> to share with the world. (Need an invite? Message&nbsp;me.)</p>
<p><strong>Mobile Air Quality&nbsp;Monitor:</strong></p>
<ul>
<li><a title="Arduino Duemilanove" href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove" target="_blank">Arduino</a>&nbsp;(~$45)</li>
<li><a title="Adafruit" href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=17_21&amp;products_id=98" target="_blank"><span class="caps">GPS</span> Sheild</a>&nbsp;($16)</li>
<li><a title="Adafruit" href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=18&amp;products_id=99" target="_blank"><span class="caps">GPS</span></a>&nbsp;($60)</li>
<li><span class="caps">SD</span>-Card ($20-60 depending on size - the <span class="caps">SD</span>-Card library uses a <span class="caps">FAT</span>-16 environment, so <span class="caps">1GB</span> is all you&#8217;re going to&nbsp;need)</li>
<li><a title="Adafruit" href="http://www.adafruit.com/index.php?main_page=product_info&amp;cPath=10&amp;products_id=14" target="_blank">MintyBoost</a> ($20 - 12 Hour lifespan for 2 AAs, 3 for a 9V&nbsp;battery)</li>
<li>Air Quality <span class="amp">&amp;</span> Ozone Sensor ($6 each, see above for&nbsp;links)</li>
<li>Batteries (~$5 - I&#8217;d suggest&nbsp;rechargables)</li>
<li>2 Resistors&nbsp;($.15)</li>
</ul>
<p>See above for the sensor connection details, then <a title="Ladyada.net" href="http://www.ladyada.net/make/gpsshield/download.html" target="_blank">download the code</a> to run the <span class="caps">GPS</span> and log the data (plus sensor data). I&#8217;m using the <span class="caps">GPS</span> <span class="caps">CSV</span> logging&nbsp;sketch.</p>
<p>Now for the&nbsp;notes:</p>
<ul>
<li>I have no idea if this is capale of producing valid <span class="caps">AQHI</span> data, I&#8217;m researching this&nbsp;now.</li>
<li>The sensors are not calibrated, the data should only be valid relative to my own readings. I&#8217;d like to make the result reproducible across all sorts of&nbsp;devices.</li>
<li>Particulates are not being measured. Someone suggested taking apart a smoke alarm to dig out the sensor. I still have to try&nbsp;this.</li>
<li>Mapping of my results is coming soon. I intend on using this device in a setting where I can measure the effects on a highway with and without cars in the coming days. I will post the&nbsp;results.</li>
</ul>
<img src="http://feeds.feedburner.com/~r/Eightlines/~4/In6x6fUZU9w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://js-kit.com/rss/eightlines.com/blog/p=187</wfw:commentRss>
		<slash:comments>15</slash:comments>
		<feedburner:origLink>http://www.eightlines.com/blog/2009/06/air-quality-monitoring/</feedburner:origLink></item>
	</channel>
</rss>
