<?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; xbee</title>
	<atom:link href="http://log.liminastudio.com/tag/xbee/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>Wireless Positioning &amp; Location Awareness: An Overview</title>
		<link>http://log.liminastudio.com/writing/research/wireless-positioning-location-awareness-an-overview</link>
		<comments>http://log.liminastudio.com/writing/research/wireless-positioning-location-awareness-an-overview#comments</comments>
		<pubDate>Wed, 21 Dec 2011 19:56:50 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[Research]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[Location Awareness]]></category>
		<category><![CDATA[Location Fingerprinting]]></category>
		<category><![CDATA[R&D]]></category>
		<category><![CDATA[RFID]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[xbee]]></category>
		<category><![CDATA[ZigBee]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=965</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/writing/research/wireless-positioning-location-awareness-an-overview' addthis:title='Wireless Positioning &#38; Location Awareness: An Overview '  ><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 one of my major projects I&#8217;m tasked with figuring out how we can locate mobile wireless devices within a limited location, and it seems a lot of other people I&#8217;ve talked to are in the process of figuring out the same thing, so here&#8217;s an overview of what I&#8217;ve learned so far. Wireless Technologies [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/writing/research/wireless-positioning-location-awareness-an-overview' addthis:title='Wireless Positioning &amp; Location Awareness: An Overview '  ><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 one of my major projects I&#8217;m tasked with figuring out how we can locate mobile wireless devices within a limited location, and it seems a lot of other people I&#8217;ve talked to are in the process of figuring out the same thing, so here&#8217;s an overview of what I&#8217;ve learned so far.<span id="more-965"></span></p>
<p><strong>Wireless Technologies / Protocols</strong></p>
<ul>
<li>WiFi (802.11)</li>
<li>XBee/ZigBee (802.15.4)</li>
<li>BlueTooth (802.15.1)</li>
<li>RFID</li>
<ul>
<li>Near Field Communication (Two-Way RFID)</li>
</ul>
</ul>
<p>These are four of the principal wireless technologies in mainstream use today.  The goal is to determine within some degree of accuracy the position in 2 or 3 dimensions of a wireless node.  Most, if not all, of the available approaches utilize the RSSI (Received Signal Strength Indicator) of the target node&#8217;s connections to nearby nodes.</p>
<p>If you have fixed routers with known locations, you can use the RSSI values of their connections to the target node to calculate the distances from the fixed nodes to the target node.  However, any RSSI value will be heavily influenced by a number of factors that may be out of your control: interfering structures, interfering people (we are walking bags of water, which readily absorbs 2.4ghz radiation) and other interfering radio signals or noise.</p>
<p>Due to these issues, some smart folks developed a system called RADAR that uses &#8216;location fingerprinting&#8217; to take a bunch of readings of signal strengths under varying conditions and associate them with known locations.  There are a variety of algorithms to tabulate this information, one of which uses neural networks.</p>
<p>Here is a collection of extremely useful papers and links that describe these various approaches, techniques and technologies:</p>
<p><strong>Resources</strong></p>
<ul>
<li><a href="http://www.sis.pitt.edu/~dtipper/2011/Survey1.pdf">Survey of Wireless Indoor Positioning Systems</a> [pdf]</li>
<li><a href="http://www.sensor-networks.org/index.php?page=0827027001">Indoor Location using 802.15.4</a></li>
<li><a href="http://www.ece.ucdavis.edu/~chuah/classes/eec173B/eec173b-s05/students/BluetoothTri_ppt.pdf">Bluetooth Triangulation</a> [pdf]</li>
<li><a href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.124.3108&amp;rep=rep1&amp;type=pdf&amp;ei=jDbyTtTHO4Tz0gHl492zAg&amp;usg=AFQjCNHzIdwdyFqnY4nuSVz-ZFsj40Yn9Q&amp;sig2=YXe5yRHv3AXb9ZjySOeAEw">CS/RADAR: Indoor Location Discovery and Tracking</a> [pdf]</li>
<li><a href="http://crystal.uta.edu/~zaruba/winet_journal.pdf">Indoor location tracking using RSSI readings from a single Wi-Fi access point</a> [pdf]</li>
<li><a href="http://cial.csie.ncku.edu.tw/presentation/group_pdf/Location%20Estimation%20in%20ZigBee%20Network%20Based%20on%20Fingerprinting.pdf">Location Estimation in ZigBee Network Based on Fingerprinting</a> [pdf]</li>
<li><a href="http://www.cs.sunysb.edu/~pgupta/pdfs/COMSWARE_08.pdf">Experimental Analysis of RSSI-based Location Estimation in Wireless Sensor Networks</a> [pdf]</li>
<li><a href="http://www.freescale.com/files/microcontrollers/doc/brochure/PositionLocationMonitoring.pdf">Position Location Monitoring Using 802.15.4/ZigBee technology</a> [pdf]</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/writing/research/wireless-positioning-location-awareness-an-overview/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wireless Projects over the Web: Digi Dia for Hackers Part 1</title>
		<link>http://log.liminastudio.com/itp/physical-computing/wireless-projects-over-the-web-digi-dia-for-hackers</link>
		<comments>http://log.liminastudio.com/itp/physical-computing/wireless-projects-over-the-web-digi-dia-for-hackers#comments</comments>
		<pubDate>Mon, 02 May 2011 21:18:20 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[ConnectPort]]></category>
		<category><![CDATA[Digi Dia]]></category>
		<category><![CDATA[xbee]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=836</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/physical-computing/wireless-projects-over-the-web-digi-dia-for-hackers' addthis:title='Wireless Projects over the Web: Digi Dia for Hackers Part 1 '  ><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>Suppose you want to log data from a group of sensors, like temperatures around the house, or turn lights on and off remotely via a webpage, and you want to do this wirelessly.  You could use a WiFi shield for an Arduino, but they&#8217;re notoriously hard to set up and stay reliably connected. My preferred [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/physical-computing/wireless-projects-over-the-web-digi-dia-for-hackers' addthis:title='Wireless Projects over the Web: Digi Dia for Hackers Part 1 '  ><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><div>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2011/05/Dia_Schematic.png"  rel="lightbox[roadtrip]"><img class="alignleft size-medium wp-image-871" title="Dia_Schematic" src="http://log.liminastudio.com/wp-content/uploads/2011/05/Dia_Schematic-275x300.png" alt="" width="275" height="300" /></a>Suppose you want to log data from a group of sensors, like temperatures around the house, or turn lights on and off remotely via a webpage, and you want to do this wirelessly.  You could use a WiFi shield for an Arduino, but they&#8217;re notoriously hard to set up and stay reliably connected.</p>
<p>My preferred way uses Digi XBee radio modules with the <a href="http://www.digi.com/products/wireless-routers-gateways/gateways/">ConnectPort gateway</a>, which connects a network of XBee modules with a LAN over ethernet.  So far, easy: build your microcontroller project that sends and receives data via an XBee ZigBee module (using &#8220;Series 2&#8243; hardware), and the ConnectPort is your mesh&#8217;s coordinator.</p>
<p>Then the question becomes how to send and receive the data from the coordinator.  If you had the coordinator plugged into a computer, you could write an interface however you liked.  Lucky for us, the ConnectPort is basically a tiny computer that runs Python!  So how do you access your project&#8217;s data via the ConnectPort over the web?<span id="more-836"></span>There are two overall approaches: transmit to another webserver, or use the ConnectPort as a webserver itself.  XBee fiend <a href="http://www.faludi.com/">Rob Faludi</a> and I developed a handy way to do the first approach, called the <a href="http://code.google.com/p/xig/">XBee Internet Gateway</a> (XIG), and Digi mastermind Jordan Husney vastly improved it.</p>
<p>XIG&#8217;s one ability is simple but hugely useful: it allows your Arduino to retreive a URL from the Internet.  Say you&#8217;re collecting temperatures from sensors via your microcontroller.  With XIG, you can post the values to a web script on a server somewhere by sending this string to the ConnectPort: &#8220;http://my.server.com/myscript.php?val1=6&amp;val2=10&amp;etc=etc&#8221;.  Your script can then optionally return some string for your Arduino to parse and use.</p>
<p>This is fast, easy, and effective!  Its only downside is that you need an external webserver to get the data moving.  For many of us, this is no problem, but wouldn&#8217;t it be nice to cut out the middleman?</p>
<p><a href="http://log.liminastudio.com/wp-content/uploads/2011/05/Screen-shot-2011-05-02-at-5.03.53-PM.png"  rel="lightbox[roadtrip]"><img class="alignleft size-medium wp-image-870" title="Screen shot 2011-05-02 at 5.03.53 PM" src="http://log.liminastudio.com/wp-content/uploads/2011/05/Screen-shot-2011-05-02-at-5.03.53-PM-300x92.png" alt="" width="300" height="92" /></a>Enter Digi&#8217;s <a href="http://www.digi.com/wiki/developer/index.php/IDigi_Dia_Wiki">Dia platform</a>.  Dia (Device Integration Application) is a Python program that runs on the ConnectPort that talks to your XBees and—the important part—runs its own web server so you can talk directly to the ConnectPort instead of using an external web server.</p>
<p>Now, Dia is a fairly new platform, and definitely designed for engineers more than hackers like ourselves.  So I did a deep dive into the platform recently and have brought the results to you!  Stay tuned for the next part!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/physical-computing/wireless-projects-over-the-web-digi-dia-for-hackers/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Measuring XBee signal strength from the RSSI pin</title>
		<link>http://log.liminastudio.com/itp/physical-computing/measuring-xbee-signal-strength-from-the-rssi-pin</link>
		<comments>http://log.liminastudio.com/itp/physical-computing/measuring-xbee-signal-strength-from-the-rssi-pin#comments</comments>
		<pubDate>Thu, 08 Apr 2010 01:52:24 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[Physical Computing]]></category>
		<category><![CDATA[Thesis]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[xbee]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=577</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/physical-computing/measuring-xbee-signal-strength-from-the-rssi-pin' addthis:title='Measuring XBee signal strength from the RSSI pin '  ><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>In my thesis I wanted to read the signal strength of incoming packets and store it in a variable on a microcontroller without using the XBee&#8217;s API Mode (In API Mode, you construct packets to command the XBees explicitly, as opposed to just sending serial data in AT or &#8220;Transparent Mode&#8221;).  XBee modules have an [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/itp/physical-computing/measuring-xbee-signal-strength-from-the-rssi-pin' addthis:title='Measuring XBee signal strength from the RSSI pin '  ><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>In my <a href="http://log.liminastudio.com/itp/the-dawn-chorus">thesis</a> I wanted to read the signal strength of incoming packets and store it in a variable on a microcontroller without using the XBee&#8217;s API Mode (In API Mode, you <a href="http://code.google.com/p/xbee-arduino/">construct packets to command the XBees explicitly</a>, as opposed to just sending serial data in AT or &#8220;Transparent Mode&#8221;).  XBee modules have an RSSI (Received Signal Strength Indicator) pin that outputs a PWM signal representing this value.  But how do you turn that PWM duty cycle into a useable integer on your microcontroller?  Luckily Arduino has a function made for just this application: <a href="file:///Applications/Arduino.app/Contents/Resources/Java/reference/PulseIn.html">pulseIn</a>.</p>
<ol>
<li>Connect the RSSI pin (pin 6) to a digital pin on your microcontroller.</li>
<li>Use this line of code in your Arduino loop:
<pre>rssiDur = pulseIn(digitalPin, LOW, 200);</pre>
</li>
</ol>
<p>pulseIn returns the duration of a pulse (specified HIGH or LOW) in microseconds (µs).  The 200 is a timeout value in µs—it waits this long to see if there&#8217;s going to be a pulse.  Since the XBee&#8217;s RSSI PWM period is 200µs, we want to wait at most that long to see if there&#8217;s a pulse at all.</p>
<p>Since this function gives you a duration, it&#8217;s up to you to map that to a value relevant to your program.  Since the maximum duration of the pulse would be 200µs, you could map that to your logical maximum.</p>
<p>Keep in mind that if you were planning on using API Mode anyway, every API Mode packet has the latest RSSI within it.</p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/itp/physical-computing/measuring-xbee-signal-strength-from-the-rssi-pin/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>current_working_directory @ Solas</title>
		<link>http://log.liminastudio.com/projects/performance/current_working_directory-solas</link>
		<comments>http://log.liminastudio.com/projects/performance/current_working_directory-solas#comments</comments>
		<pubDate>Thu, 09 Jul 2009 18:28:04 +0000</pubDate>
		<dc:creator>Tedb0t</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Live]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[xbee]]></category>

		<guid isPermaLink="false">http://log.liminastudio.com/?p=399</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/projects/performance/current_working_directory-solas' addthis:title='current_working_directory @ Solas '  ><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>Voilà!  Here are three videos from my performance for Splice NYC, two of which demonstrate my wireless, beat-repeating space eggs of doom: Postfix She Landed Here Can We Now And if you missed this show, I&#8217;m playing next Wednesday (7/15) at Le Poisson Rouge for XRAY!  Facebook event here: XRay Thanks again to everyone for [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://log.liminastudio.com/projects/performance/current_working_directory-solas' addthis:title='current_working_directory @ Solas '  ><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>Voilà!  Here are three videos from my performance for <a href="http://www.myspace.com/splicenyc">Splice NYC</a>, two of which demonstrate my wireless, beat-repeating <a href="http://log.liminastudio.com/?p=253">space eggs of doom</a>:</p>
<p><strong>Postfix</strong><br />
<object
		width="450"
		height="340"
		data="http://vimeo.com/moogaloop.swf?clip_id=5502387&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=5502387&amp;server=vimeo.com" />
		</object>
</p>
<p><strong>She Landed Here</strong><br />
<object
		width="450"
		height="340"
		data="http://vimeo.com/moogaloop.swf?clip_id=5526649&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=5526649&amp;server=vimeo.com" />
		</object>
</p>
<p><strong>Can We Now</strong><br />
<object
		width="450"
		height="340"
		data="http://vimeo.com/moogaloop.swf?clip_id=5526766&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=5526766&amp;server=vimeo.com" />
		</object>
</p>
<p>And if you missed this show, I&#8217;m playing next Wednesday (7/15) at <a href="http://lepoissonrouge.com/">Le Poisson Rouge</a> for <a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.myspace.com%2Fxraynyc&amp;h=ee1064f35c7b80ad7e894392f5033b7d">XRAY</a>!  Facebook event here: <a href="http://www.facebook.com/event.php?eid=222977375227">XRay</a></p>
<p>Thanks again to everyone for coming, Matt for playing with me, GP for shooting video, and Maxx for inviting me to play!</p>
]]></content:encoded>
			<wfw:commentRss>http://log.liminastudio.com/projects/performance/current_working_directory-solas/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>
	</channel>
</rss>

