<?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/"
	>

<channel>
	<title>Limina.Log &#187; Networked Objects</title>
	<atom:link href="http://log.liminastudio.com/tag/networked-objects/feed" rel="self" type="application/rss+xml" />
	<link>http://log.liminastudio.com</link>
	<description>Research &#38; Development at Limina.Studio</description>
	<lastBuildDate>Sun, 15 Jan 2012 21:25:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>BubbleViz: Internet-enabled Bubble Gun</title>
		<link>http://log.liminastudio.com/itp/bubbleviz-internet-enabled-bubble-gun</link>
		<comments>http://log.liminastudio.com/itp/bubbleviz-internet-enabled-bubble-gun#comments</comments>
		<pubDate>Mon, 27 Apr 2009 00:03:33 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Bubbles]]></category>
		<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[Visualization]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=335</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/bubbleviz-internet-enabled-bubble-gun' addthis:title='BubbleViz: Internet-enabled Bubble Gun '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>BubbleViz is an internet-enabled toy bubble gun that uses an Arduino, XBee and ConnectPort to poll a PHP script and check an IMAP server for new messages, upon which the device showers you with a delightful cascade of bubbles. View it in action: More information, pictures and code follow! As you can see, this project [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/bubbleviz-internet-enabled-bubble-gun' addthis:title='BubbleViz: Internet-enabled Bubble Gun '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>BubbleViz is an internet-enabled toy bubble gun that uses an Arduino, XBee and <a href="http://www.faludi.com/projects/zigbee-internet-gateway/">ConnectPort</a> to poll a PHP script and check an IMAP server for new messages, upon which the device showers you with a delightful cascade of bubbles.</p>
<p>View it in action:</p>
<p><object
		width="450"
		height="340"
		data="http://vimeo.com/moogaloop.swf?clip_id=4344834&amp;server=vimeo.com"
		type="application/x-shockwave-flash">
			<param name="allowfullscreen" value="true" />
			<param name="allowscriptaccess" value="always" />
			<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4344834&amp;server=vimeo.com" />
		</object>
</p>
<p>More information, pictures and code follow!<span id="more-335"></span></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13442.jpg"  rel="lightbox[roadtrip]"><img class="size-medium wp-image-352 alignnone" title="It's not a bomb" src="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13442-300x225.jpg" alt="It's not a bomb" width="300" height="225" /></a> <a href="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13444.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-353" title="Bubble, bubble, toil and trouble" src="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13444-225x300.jpg" alt="Bubble, bubble, toil and trouble" width="225" height="300" /></a> <a href="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13448.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-354" title="Closeup of servo-controlled nozzle / bubble loop" src="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13448-300x225.jpg" alt="Closeup of servo-controlled nozzle / bubble loop" width="300" height="225" /></a></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/04/snc13442.jpg"  rel="lightbox[roadtrip]"></a>As you can see, this project more than meets the &#8220;looks like a bomb&#8221; quota.</p>
<p>Here&#8217;s my relevant PHP code (using my <a href="http://log.liminastudio.com/?p=308">modified Email to DB class</a>):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">include_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;class.emailtodb_tedb0t.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$edb</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> EMAIL_TO_DB<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$edb</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>connect<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'imap.gmail.com:993'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'/imap/ssl/novalidate-cert'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'username@gmail.com'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'password'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$edb</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>getNumNewMessages<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$edb</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>close<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Here&#8217;s the pertinent function from the classfile.  I&#8217;m certain there is a better, more logical way to do this.  We can&#8217;t use PHP Sessions because Rob&#8217;s ConnectPort server doesn&#8217;t implement them&#8230; maybe I will add that in <img src='http://log.liminastudio.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> getNumNewMessages<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$myFile</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;numMessages.txt&quot;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$fh</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$myFile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'r'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$lastNum</span> <span style="color: #339933;">=</span> <span style="color: #990000;">intval</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">fgets</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$currentNumMessages</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>num_message<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$fh</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$myFile</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'w+'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #339933;">,</span> <span style="color: #000088;">$currentNumMessages</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fh</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #b1b100;">return</span> <span style="color: #000088;">$currentNumMessages</span> <span style="color: #339933;">-</span> <span style="color: #000088;">$lastNum</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>And the Arduino code:</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// BubbleViz</span>
<span style="color: #666666; font-style: italic;">//   Bubble Gun Controller</span>
<span style="color: #666666; font-style: italic;">//   by Ted Hayes &amp;lt;www.liminastudio.com&amp;gt;</span>
&nbsp;
<span style="color: #339933;">#include </span>
&nbsp;
<span style="color: #339933;">#define PIN_SWITCH 4</span>
<span style="color: #339933;">#define PIN_MOTOR 12</span>
<span style="color: #339933;">#define DUR_MAX 3000</span>
&nbsp;
Servo myservo<span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> lastRead <span style="color: #339933;">=</span> HIGH<span style="color: #339933;">;</span>
<span style="color: #993333;">long</span> i <span style="color: #339933;">=</span> <span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> dur <span style="color: #339933;">=</span> <span style="color: #0000dd;">1000</span><span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> durMult <span style="color: #339933;">=</span> <span style="color: #0000dd;">500</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// ms per new emails</span>
<span style="color: #993333;">int</span> curByte<span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> curVal<span style="color: #339933;">;</span>
<span style="color: #993333;">int</span> curDur<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">115200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>PIN_SWITCH<span style="color: #339933;">,</span> INPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>PIN_MOTOR<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>PIN_SWITCH<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// set pullup on pin 2</span>
  digitalWrite<span style="color: #009900;">&#40;</span>PIN_MOTOR<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// motor off</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">//// software serial</span>
  pinMode<span style="color: #009900;">&#40;</span>rx<span style="color: #339933;">,</span>INPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>tx<span style="color: #339933;">,</span>OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>tx<span style="color: #339933;">,</span>HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  myservo.<span style="color: #202020;">attach</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// attaches the servo on pin 9 to the servo object</span>
  myservo.<span style="color: #202020;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">80</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">// reset to &quot;closed&quot; position</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">int</span> switchRead <span style="color: #339933;">=</span> digitalRead<span style="color: #009900;">&#40;</span>PIN_SWITCH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>switchRead <span style="color: #339933;">==</span> LOW <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> lastRead <span style="color: #339933;">==</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    fire<span style="color: #009900;">&#40;</span>dur<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  lastRead <span style="color: #339933;">=</span> switchRead<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>Serial.<span style="color: #202020;">available</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    curByte <span style="color: #339933;">=</span> Serial.<span style="color: #202020;">read</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    curVal <span style="color: #339933;">=</span> curByte <span style="color: #339933;">-</span> <span style="color: #0000dd;">48</span><span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// &quot;decodes&quot; ASCII number to DEC number</span>
&nbsp;
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>curVal <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">0</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      curDur <span style="color: #339933;">=</span> durMult <span style="color: #339933;">*</span> curVal<span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// ms * num of new emails</span>
      <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>curDur <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> DUR_MAX<span style="color: #009900;">&#41;</span> curDur <span style="color: #339933;">=</span> DUR_MAX<span style="color: #339933;">;</span>
      fire<span style="color: #009900;">&#40;</span>curDur<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// poll web script every n iterations of loop (as opposed to using delay())</span>
  <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">&amp;</span>gt<span style="color: #339933;">;</span> <span style="color: #0000dd;">300000</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;http://verge.myftp.org:81/Listereen/emailtodb_v0/check_mail.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    i<span style="color: #339933;">=</span><span style="color: #0000dd;">0</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  i<span style="color: #339933;">++;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> fire<span style="color: #009900;">&#40;</span><span style="color: #993333;">int</span> duration<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// trigger gun motor</span>
  digitalWrite<span style="color: #009900;">&#40;</span>PIN_MOTOR<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">300</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>               <span style="color: #666666; font-style: italic;">// wait for loop to wet</span>
  myservo.<span style="color: #202020;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">105</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>          <span style="color: #666666; font-style: italic;">// pull loop out</span>
  delay<span style="color: #009900;">&#40;</span>duration<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>                 <span style="color: #666666; font-style: italic;">// wait for bubbles to blow</span>
  <span style="color: #666666; font-style: italic;">// reset motor and servo</span>
  digitalWrite<span style="color: #009900;">&#40;</span>PIN_MOTOR<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  myservo.<span style="color: #202020;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">80</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<div><span style="font-family: 'Courier New'; font-size: small;"><span><br />
</span></span></div>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/bubbleviz-internet-enabled-bubble-gun/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetObjx Final Development</title>
		<link>http://log.liminastudio.com/itp/netobjx-final-development</link>
		<comments>http://log.liminastudio.com/itp/netobjx-final-development#comments</comments>
		<pubDate>Wed, 25 Mar 2009 19:41:45 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ideas]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=263</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/netobjx-final-development' addthis:title='NetObjx Final Development '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Here&#8217;s a brief overview of my thought process so far for my NetObjx final.I initially was interested in the Telepathic Mesh Society concept: But I have been in collaboration with Adam Harvey on a blog-data-auralization installation art piece:]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/netobjx-final-development' addthis:title='NetObjx Final Development '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Here&#8217;s a brief overview of my thought process so far for my NetObjx final.<span id="more-263"></span>I initially was interested in the Telepathic Mesh Society concept:</p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/mesh-society.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-264" title="mesh-society" src="http://log.liminastudio.com/wp-content/uploads/2009/03/mesh-society-300x293.jpg" alt="mesh-society" width="300" height="293" /></a></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/mesh_society.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-265" title="mesh_society" src="http://log.liminastudio.com/wp-content/uploads/2009/03/mesh_society-300x243.jpg" alt="mesh_society" width="300" height="243" /></a></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/nn_diagram_00.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-266" title="nn_diagram_00" src="http://log.liminastudio.com/wp-content/uploads/2009/03/nn_diagram_00-300x226.jpg" alt="nn_diagram_00" width="300" height="226" /></a></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/nn_diagram_01.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-267" title="nn_diagram_01" src="http://log.liminastudio.com/wp-content/uploads/2009/03/nn_diagram_01-300x169.jpg" alt="nn_diagram_01" width="300" height="169" /></a></p>
<p>But I have been in collaboration with Adam Harvey on a blog-data-auralization installation art piece:</p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/wall_drawings.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-269" title="wall_drawings" src="http://log.liminastudio.com/wp-content/uploads/2009/03/wall_drawings-300x163.jpg" alt="wall_drawings" width="300" height="163" /></a></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/structure_diagram.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-268" title="structure_diagram" src="http://log.liminastudio.com/wp-content/uploads/2009/03/structure_diagram-300x202.jpg" alt="structure_diagram" width="300" height="202" /></a></p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/03/ideas_page.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-272" title="ideas_page" src="http://log.liminastudio.com/wp-content/uploads/2009/03/ideas_page-300x222.jpg" alt="ideas_page" width="300" height="222" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/netobjx-final-development/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>XBee Handy Command Reference</title>
		<link>http://log.liminastudio.com/itp/xbee-series-1-handy-command-reference</link>
		<comments>http://log.liminastudio.com/itp/xbee-series-1-handy-command-reference#comments</comments>
		<pubDate>Mon, 09 Mar 2009 21:51:30 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[xbee]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=249</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/xbee-series-1-handy-command-reference' addthis:title='XBee Handy Command Reference '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Here are some common AT commands I have most frequently while working on XBee projects.  Remember, ALL NUMBER VALUES ARE IN HEX! ATID &#8211; PAN ID ATDH/DL &#8211; Destination address high/low: which local address to send ADC data ATMY &#8211; Local address of this unit I/O: ATD0&#8230;D8 &#8211; digital pins I/O enable ATP0&#8230;P1 &#8211; PWM [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/xbee-series-1-handy-command-reference' addthis:title='XBee Handy Command Reference '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Here are some common AT commands I have most frequently while working on XBee projects.  Remember, ALL NUMBER VALUES ARE IN HEX!</p>
<ul>
<li>ATID &#8211; PAN ID</li>
<li>ATDH/DL &#8211; Destination address high/low: which local address to send ADC data</li>
<li>ATMY &#8211; Local address of this unit</li>
<li>I/O:
<ul>
<li>ATD0&#8230;D8 &#8211; digital pins I/O enable</li>
<li>ATP0&#8230;P1 &#8211; PWM output enable</li>
<li>ATIU &#8211; I/O output enable (UART) &#8211; send out through serial</li>
<li>ATIA &#8211; I/O input address &#8211; address to pay attention to for serial output</li>
<li>ATIT &#8211; ADC Samples before TX</li>
<li>ATIR &#8211; ADC Sample rate (ms)</li>
<li>ATBD &#8211; Baud Rate:
<ul>
<li>3 = 9600</li>
<li>4 = 19200</li>
<li>5 = 38400</li>
<li>6 = 57600</li>
<li>7 = 115200</li>
</ul>
</li>
</ul>
</li>
<li>ATWR &#8211; Write parameter values</li>
</ul>
<p>Remember to ATWR to save changes to parameters.</p>
<p>Interesting note from the manual: &#8220;The maximum sample rate that can be achieved while using one A/D line is 1 sample/ms or 1 KHz (Note that the modem will not be able to keep up with transmission when IR &amp; IT are equal to “1”).&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/xbee-series-1-handy-command-reference/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetObjx Espionage Bluetooth is GO</title>
		<link>http://log.liminastudio.com/itp/netobjx-espionage-bluetooth-is-go</link>
		<comments>http://log.liminastudio.com/itp/netobjx-espionage-bluetooth-is-go#comments</comments>
		<pubDate>Wed, 04 Mar 2009 01:19:23 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[espionage]]></category>
		<category><![CDATA[Physical Computing]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=237</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/netobjx-espionage-bluetooth-is-go' addthis:title='NetObjx Espionage Bluetooth is GO '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Adam and I got our Bluetooth link in the Espionage chain working. What you see here are two arduinos each with a SparkFun BlueSMiRF RP-SMA module. The transmitter (my end) is configured using Autoconnect Master mode, and the receiver (Adam) is in Slave mode (the default). With this configuration they pair automatically when within range [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/netobjx-espionage-bluetooth-is-go' addthis:title='NetObjx Espionage Bluetooth is GO '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Adam and I got our Bluetooth link in the Espionage chain working.</p>
<p><object
		width="450"
		height="340"
		data="http://vimeo.com/moogaloop.swf?clip_id=3462493&amp;server=vimeo.com"
		type="application/x-shockwave-flash">
			<param name="allowfullscreen" value="true" />
			<param name="allowscriptaccess" value="always" />
			<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3462493&amp;server=vimeo.com" />
		</object>
</p>
<p>What you see here are two arduinos each with a SparkFun BlueSMiRF RP-SMA module.  The transmitter (my end) is configured using Autoconnect Master mode, and the receiver (Adam) is in Slave mode (the default).  With this configuration they pair automatically when within range of each other.</p>
<p>Once paired, I trigger the transmission manually and begin sending my message.  His arduino receives the message and initiates its own sending procedure for the next link in the chain.</p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/netobjx-espionage-bluetooth-is-go/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Adventures in Bluetooth</title>
		<link>http://log.liminastudio.com/itp/adventures-in-bluetooth</link>
		<comments>http://log.liminastudio.com/itp/adventures-in-bluetooth#comments</comments>
		<pubDate>Wed, 25 Feb 2009 22:08:10 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[Physical Computing]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=228</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/adventures-in-bluetooth' addthis:title='Adventures in Bluetooth '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>For our NetObjx Espionage class project, I am initiating a chain of data transfer with a collaborative &#8220;blow&#8221; interface that transmits over Bluetooth.So far my Bluetooth partner and I have managed to get our BlueSMiRF modules to pair (albeit over a short distance since we&#8217;re not using external antennae) and we even managed to get [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/adventures-in-bluetooth' addthis:title='Adventures in Bluetooth '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>For our NetObjx Espionage class project, I am initiating a chain of data transfer with a collaborative &#8220;blow&#8221; interface that transmits over Bluetooth.<span id="more-228"></span>So far my Bluetooth partner and I have managed to get our <a href="http://www.sparkfun.com/commerce/product_info.php?products_id=158">BlueSMiRF modules</a> to pair (albeit over a short distance since we&#8217;re not using external antennae) and we even managed to get terminal-to-terminal bidirectional communication working!  Video here:</p>
<p><object
		width="450"
		height="340"
		data="http://vimeo.com/moogaloop.swf?clip_id=3370420&amp;server=vimeo.com"
		type="application/x-shockwave-flash">
			<param name="allowfullscreen" value="true" />
			<param name="allowscriptaccess" value="always" />
			<param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=3370420&amp;server=vimeo.com" />
		</object>
</p>
<p>We&#8217;ve got our BlueSMiRFs connected to the TX and RX pins of some simple USB-to-Serial FTDI chips.  In order to get the modules to pair, I had to configure my BlueSMiRF module to use &#8220;Autoconnect Master&#8221; mode and set the destination address, which in this case was Adam&#8217;s module, which stays in its default mode of &#8220;slave.&#8221;  To configure a module, you can connect directly to it over Bluetooth with your computer.  Your OS should have some kind of Bluetooth utility that will detect nearby devices and allow you to connect to them.  Once you find yours (I&#8217;m not sure what the default names of these BlueSMiRFs are, mine was BlueRadios), try to pair with it.  It will ask for a password, which by default is, amazingly, &#8220;default.&#8221;  If it works, the utility will give you a serial port that allows you to talk directly to the Bluetooth module.</p>
<p>Now you need a terminal with which to talk and listen to the serial port (this is both similar and different to the &#8220;Terminal&#8221; program you have in OS X). I used <a href="http://homepage.mac.com/dalverson/zterm/">ZTerm</a> for this; with ZTerm you have to hold &lt;shift&gt; as it starts to select which serial port to talk to.  You can also use the &#8220;screen&#8221; shell program on *nix systems.  First list your serial connections and pick out the one that sounds right, i.e.:</p>
<pre><code>ls /dev/tty.*
screen /dev/tty.BlueRadios-COM0-1</code></pre>
<p>Once you&#8217;re talking to your module, you can try typing &#8220;AT&lt;cr&gt;&#8221; to test your connection, if it responds with &#8220;OK&#8221; you&#8217;re in command mode.  In my experience all commands are followed by a carriage return, so from now on I&#8217;ll leave that out.  You may have to type &#8220;+++&#8221; to get into command mode first.  The <a href="http://www.rovingnetworks.com/documents/BlueportII-ref-guide.pdf">command references</a> I looked at claimed the command mode string is &#8220;$$$&#8221; but none of the modules we used responded to this, weird.  Anyway, to get your module&#8217;s address, enter:</p>
<pre><code>ATSI,1</code></pre>
<p>It should hit you back with an address like this: 00A0961B284D.  If you want to set your module to Autoconnect Master mode, first you set the startup address and then set your startup mode:</p>
<pre><code>ATSMA,&amp;lt;destination address&amp;gt;,1101
ATSW25,1,0,0,0</code></pre>
<p>The &#8220;1101&#8243; specifies serial communication.  You can change your startup mode back to the default with:</p>
<pre><code>ATSW25,0,1,0,0</code></pre>
<p>Once you&#8217;ve entered these commands, restart your circuit, and the module will begin trying to connect to the destination address you specified.  During this time your BlueSMiRF should be blinking green.  If you are monitoring it over serial you will see &#8220;CONNECT,&lt;addr&gt;&#8221;.  Once both modules pair, they will turn to solid red.  Without antennae, the RP-SMA modules will need to be within 2 feet or so of each other.  The silver and gold modules use better on-chip antennae so they&#8217;ll have much better range.</p>
<p>Now if both modules are being monitored with a terminal, you should be able to talk to each other!</p>
<p>I&#8217;ll follow up with video of my blow interface and hopefully soon we&#8217;ll get serial bluetooth data transfer working!</p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/adventures-in-bluetooth/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breath Pong!</title>
		<link>http://log.liminastudio.com/itp/breath-pong</link>
		<comments>http://log.liminastudio.com/itp/breath-pong#comments</comments>
		<pubDate>Thu, 12 Feb 2009 20:35:45 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[Physical Computing]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=176</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/breath-pong' addthis:title='Breath Pong! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>The Breath Pong networked objects controller lives!  I completely changed the sensor design from the last iteration.  I suspected the DC motor would have too much friction to make the sucking action reliable, so in conversation with Rob I decided to go for a much simpler design: a dual-pole switch. Here is a video showing [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/breath-pong' addthis:title='Breath Pong! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>The Breath Pong networked objects controller lives!  I completely changed the sensor design from the last iteration.  I suspected the DC motor would have too much friction to make the sucking action reliable, so in conversation with Rob I decided to go for a much simpler design: a dual-pole switch.</p>
<p>Here is a video showing the <a href="http://vimeo.com/3180809">prototype construction</a>, and a video <a href="http://vimeo.com/3180831">demonstrating the controller</a>—it works quite well!</p>
<p>Here is a sectional diagram:</p>
<div id="attachment_178" class="wp-caption alignnone" style="width: 246px"><a href="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_01.jpg"  rel="lightbox[roadtrip]"><img class="size-medium wp-image-178" title="Breath Pong Section Diagram" src="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_01-236x300.jpg" alt="Sectional Diagram" width="236" height="300" /></a><p class="wp-caption-text">Sectional Diagram</p></div>
<p>And here&#8217;s a network diagram:</p>
<div id="attachment_179" class="wp-caption alignnone" style="width: 310px"><a href="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_02.jpg"  rel="lightbox[roadtrip]"><img class="size-medium wp-image-179" title="Breath Pong Network Diagram" src="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_02-300x261.jpg" alt="Network Diagram" width="300" height="261" /></a><p class="wp-caption-text">Network Diagram</p></div>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/breath-pong/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WizNet Ethernet Testing</title>
		<link>http://log.liminastudio.com/itp/wiznet-ethernet-testing</link>
		<comments>http://log.liminastudio.com/itp/wiznet-ethernet-testing#comments</comments>
		<pubDate>Tue, 10 Feb 2009 00:22:32 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[Physical Computing]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=171</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/wiznet-ethernet-testing' addthis:title='WizNet Ethernet Testing '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>Successfully tested the WizNet ethernet module.  First, I loaded the WebClient Arduino code; video here.  This worked fine, so I added a &#8220;connected&#8221; LED and &#8220;connect&#8221; switch, which caused problems because I wasn&#8217;t using a voltage dividing resistor to ground, so I enabled the Arduino&#8217;s internal pull-up resistor and changed the code around. For kicks, [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/wiznet-ethernet-testing' addthis:title='WizNet Ethernet Testing '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>Successfully tested the WizNet ethernet module.  First, I loaded the WebClient Arduino code; video <a href="http://vimeo.com/3152578">here</a>.  This worked fine, so I added a &#8220;connected&#8221; LED and &#8220;connect&#8221; switch, which caused problems because I wasn&#8217;t using a voltage dividing resistor to ground, so I enabled the Arduino&#8217;s internal pull-up resistor and changed the code around.</p>
<p>For kicks, I went ahead and tried the WebServer code too—video <a href="http://vimeo.com/3152812">here</a>.  Worked great!</p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/wiznet-ethernet-testing/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breath Pong development</title>
		<link>http://log.liminastudio.com/itp/breath-pong-development</link>
		<comments>http://log.liminastudio.com/itp/breath-pong-development#comments</comments>
		<pubDate>Mon, 09 Feb 2009 23:44:06 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[ITP]]></category>
		<category><![CDATA[Networked Objects]]></category>
		<category><![CDATA[Physical Computing]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=166</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/breath-pong-development' addthis:title='Breath Pong development '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>For my networked Pong controller, I am attempting to create a device that senses inhalation and exhalation as methods of moving the Pong paddle left and right.  To do this, I am using a simple fan to generate an induction current.  The two conductors of the fan motor are connected to two Arduino analog inputs [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/breath-pong-development' addthis:title='Breath Pong development '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div><p>For my networked Pong controller, I am attempting to create a device that senses inhalation and exhalation as methods of moving the Pong paddle left and right.  To do this, I am using a simple fan to generate an induction current.  The two conductors of the fan motor are connected to two Arduino analog inputs with 10k-ohm resistors bridging them to ground to create voltage dividers.  In this sense the motor acts exactly like any typical resistance-based sensor, like a flex sensor, except that the motor is not connected to any voltage source, as it generates its own current.</p>
<p><span id="more-166"></span></p>
<p>This works surprisingly well!  I just have to set a small threshold to ignore the small amount of noise generated if you touch the motor or an EM source is moved near it.  The next step is to figure out a reliable way to move the fan with your breath; I&#8217;m going to try a computer fan with a blowing/sucking tube (har!) attached to it.  It&#8217;s an unusual kind of action to try to sense.</p>
<p>Video here: http://vimeo.com/3152151</p>
<p>Images:</p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_1.jpg"  rel="lightbox[roadtrip]"><img class="alignnone size-medium wp-image-167" title="Breath Pong development 1" src="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_1-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p> </p>
<div id="attachment_168" class="wp-caption alignnone" style="width: 310px"><a href="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_2.jpg"  rel="lightbox[roadtrip]"><img class="size-medium wp-image-168" title="Breath Pong development 2" src="http://log.liminastudio.com/wp-content/uploads/2009/02/breathpong_2-300x225.jpg" alt="The DC test motor with plastic-cup fan blower" width="300" height="225" /></a><p class="wp-caption-text">The DC test motor with plastic-cup fan blower</p></div>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/breath-pong-development/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

