<?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>Autonomous Tools</title>
	<atom:link href="http://autonomoustools.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://autonomoustools.com/blog</link>
	<description>Blog</description>
	<lastBuildDate>Mon, 20 Jun 2011 17:04:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Add $91 cost/year per 100W of internal server</title>
		<link>http://autonomoustools.com/blog/2011/06/20/add-91-costyear-per-100w-of-internal-server/</link>
		<comments>http://autonomoustools.com/blog/2011/06/20/add-91-costyear-per-100w-of-internal-server/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 17:04:01 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1450</guid>
		<description><![CDATA[For low consumption levels (&#60;15MWh per month), midwest electricity prices out at 10.36/hr. Therefore, when calculating the relative cost of hosting a server 24/7/365.25 internally vs in the cloud you ought to add at least $90.82/year per 100W worth of internally hosted server, where that 100W must include UPS and cooling inefficiencies. Assuming a 90% [...]]]></description>
			<content:encoded><![CDATA[<p>For low consumption levels (&lt;15MWh per month), midwest electricity prices out at <a href="http://www.kansascommerce.com/index.aspx?NID=175">10.36/hr</a>. Therefore, when calculating the relative cost of hosting a server 24/7/365.25 internally vs in the cloud you ought to add at least $90.82/year per 100W worth of internally hosted server, where that 100W must include UPS and cooling inefficiencies. Assuming a <a href="http://en.wikipedia.org/wiki/Uninterruptible_power_supply#Measuring_efficiency">90% UPS efficiency</a> and <a href="http://en.wikipedia.org/wiki/Coefficient_of_performance">HVAC COP of 3.4</a>, that&#8217;s 71W of actual server power. If your server is not designed specifically to reduce energy, expect much more than 71W consumption.</p>
<p>For comparison, an Amazon EC2 &#8220;High-CPU Medium&#8221; (c1.medium) instance type <a href="http://aws.amazon.com/ec2/pricing/">prices out at $759/year</a> running 24/7 (as a 3-year Reserved Instance running a Linux image). That&#8217;s a dual-core system, where each virtual core is <a href="http://aws.amazon.com/ec2/instance-types/">equivalent to</a> a 2.5GHz Xeon processor. Building your own equivalent will run <a href="http://en.wikipedia.org/wiki/Xeon#Dual-Core_Xeon">at least 120W</a>, implying $154/year in energy costs alone. If you build that server for $1500 and expense it over three years, the energy cost will increase your total bill by 31%. Throw in a $200 cooling unit expensed over the same three years, and your internal server will cost you $500+$154+$66=$720/year. That&#8217;s enough to make a cloud server seem downright reasonably priced.</p>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2011/06/20/add-91-costyear-per-100w-of-internal-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vertical lift: Prototypes #4, 5, 6</title>
		<link>http://autonomoustools.com/blog/2011/01/30/vertical-lift-prototypes-4-5-6/</link>
		<comments>http://autonomoustools.com/blog/2011/01/30/vertical-lift-prototypes-4-5-6/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 19:08:26 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1423</guid>
		<description><![CDATA[(See also prototypes 1 through 3.) Prototype #4: Quad-Pulley Elevator (axled) A fundamental shift in design vis-à-vis prototypes 1-3, lift #4 raises a rectangular platform via four corner pulleys. Design: 1/2&#8243; steel pipe structure. Flanges bolted to pulleys for pipe framework attachment. To minimize drive complexity, a single 12V/2000lb winch ($50, Chicago Electric model 92860) [...]]]></description>
			<content:encoded><![CDATA[<p>(See also <a href="/blog/2010/11/22/vertical-lift-prototypes-1-2-3/">prototypes 1 through 3</a>.)</p>
<ul>
<li><strong>Prototype #4: Quad-Pulley Elevator (axled)<br />
</strong></li>
</ul>
<p>A fundamental shift in design vis-à-vis prototypes 1-3, lift #4 raises a rectangular platform via four corner pulleys.</p>
<div id="attachment_1428" class="wp-caption alignnone" style="width: 310px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2011/01/EndsComposite.jpg"><img class="size-medium wp-image-1428" title="Quad Pulley Elevator" src="http://autonomoustools.com/blog/wp-content/uploads/2011/01/EndsComposite-300x184.jpg" alt="Quad Pulley Elevator" width="300" height="184" /></a><p class="wp-caption-text">Lift #4: Quad Pulley Elevator</p></div>
<p><em>Design:</em> 1/2&#8243; steel pipe structure. Flanges bolted to pulleys for pipe framework attachment. To minimize drive complexity, a single 12V/2000lb winch ($50, Chicago Electric model 92860) draws all four pulleys simultaneously via a  pair of axles. Several additional pulleys redirect cable forces appropriately.</p>
<p><em>Analysis:</em> Surprisingly unstable. Even after the addition of a cinder block to weight down the platform, still prone to inconsistent lift rates at the four corners and consequential tilting.</p>
<ul>
<li><strong>Prototype #5: Quad-Pulley Elevator (unaxled)<br />
</strong></li>
</ul>
<p>Similar in nature to prototype 4, but without axles.</p>
<div id="attachment_1430" class="wp-caption alignnone" style="width: 310px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2011/01/Lift5-Composite.jpg"><img class="size-medium wp-image-1430" title="Lift #5" src="http://autonomoustools.com/blog/wp-content/uploads/2011/01/Lift5-Composite-300x145.jpg" alt="Lift #5" width="300" height="145" /></a><p class="wp-caption-text">Lift #5: Axleless Quad Pulley Elevator</p></div>
<p><em>Design:</em> 1/2&#8243; steel pipe. To avoid jamming at the winch spool, only a single cable actually meets the winch. The three additional cables are attached to the primary drive cable at various positions along its length. Same drive winch (model 92860).</p>
<p><em>Analysis:</em> Removing the axles reduces undesirable pulley tension, but reduces the framework stability. Joints tend to rotate unexpectedly.</p>
<ul>
<li><strong>Prototype #6: Dual Pipe-Joint Fulcrums<br />
</strong></li>
</ul>
<p>A reimagining of prototype 3, where the pulleys are replaced with untightened steel pipe joints.</p>
<div id="attachment_1432" class="wp-caption alignnone" style="width: 310px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2011/01/Lift6-Composite.jpg"><img class="size-medium wp-image-1432" title="Lift 6 - Pipe-Joint Fulcrums" src="http://autonomoustools.com/blog/wp-content/uploads/2011/01/Lift6-Composite-300x140.jpg" alt="Lift 6 - Pipe-Joint Fulcrums" width="300" height="140" /></a><p class="wp-caption-text">Lift #6: Pipe-Joint Fulcrums</p></div>
<p><em>Design:</em> Again, 1/2&#8243; steel pipe. To avoid jamming at the winch spool,  only a single cable actually meets the winch. The three additional drive  cables are attached to the primary drive cable at various positions  along its length. Same 92860 drive winch. (Design is implemented twice in above image, hence the dual winches.)</p>
<p><em>Analysis:</em> The best of the first six lifts. Disadvantages, however, include a large sweep-through space that must be kept clear of other objects and jamming due to uneven tightening of threaded joints. The latter flaw could perhaps be alleviated with improved lubrication.</p>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2011/01/30/vertical-lift-prototypes-4-5-6/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Vertical lift: Prototypes #1, 2, 3</title>
		<link>http://autonomoustools.com/blog/2010/11/22/vertical-lift-prototypes-1-2-3/</link>
		<comments>http://autonomoustools.com/blog/2010/11/22/vertical-lift-prototypes-1-2-3/#comments</comments>
		<pubDate>Mon, 22 Nov 2010 18:24:48 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Robotics]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1375</guid>
		<description><![CDATA[Objective / Constraints Automated vertical transportation. Vertical travel: 100 to 200cm. Load: 4 to 30kg. Some objects must remain at a constant orientation and cannot endure significant acceleration or jerk.  For instance, unenclosed liquids and most LCD displays cannot withstand impacts and must be oriented within a few degrees of vertical at all times. SPOILER: [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><em>Objective / Constraints<br />
</em></li>
</ul>
<p>Automated vertical transportation. Vertical travel: 100 to 200cm. Load: 4 to 30kg.</p>
<p>Some objects must remain at a constant orientation and cannot endure significant acceleration or <a href="http://en.wikipedia.org/wiki/Jerk_%28physics%29">jerk</a>.  For instance, unenclosed liquids and most LCD displays cannot withstand impacts and must be oriented within a few degrees of vertical at all times.</p>
<p>SPOILER: Of 8 prototypes, the first 7 failed in practical applications.</p>
<ul>
<li><strong>Prototype #1: Electric scissor jacks</strong></li>
</ul>
<div id="attachment_1377" class="wp-caption alignright" style="width: 160px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/11/1829-Torqued-scissor-jack.jpg"><img class="size-thumbnail wp-image-1377" title="Torqued scissor jack assembly" src="http://autonomoustools.com/blog/wp-content/uploads/2010/11/1829-Torqued-scissor-jack-150x150.jpg" alt="Torqued scissor jack assembly" width="150" height="150" /></a><p class="wp-caption-text">Torqued scissor jack assembly</p></div>
<p>12VDC/6A/2000lb jack ($50, Central Hydraulics #95851). Cigar lighter power input to a handheld control box. Worm drive motor powered by a relay H-bridge,  where relay control inputs pass through a user-operated momentary  pushbutton AND a pair of microswitch sensors that are depressed at the  extremes of the lift travel (to protect against stalling and hyperextension). Could drive motor directly with ESC, or splice into relay  control box to take advantage of existing circuitry. Approximately 9&#8243;  useful lifting range per jack , as lifting power is reduced at  height extremes. Can stack to increase range.</p>
<p><em>Design:</em> 1/2&#8243; steel pipe structure. 3/16&#8243; aluminum plate bored with drill press to adapt pipe flanges to 8-32 bolts through top and bottom ends of scissor jacks, such that jacks can be screwed onto pipe.</p>
<p><em>Analysis:</em> Unacceptably flimsy. As pictured (above), a few pounds of horizontal torque bends the jack itself. [The jacks themselves are bending, not the pipe.] Automotive jacks are apparently designed to handle large vertical loads but no horizontal forces.</p>
<ul>
<li><strong>Prototype</strong><strong> #2: Drawer sliders + winch<br />
</strong></li>
</ul>
<div id="attachment_1385" class="wp-caption alignright" style="width: 160px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/11/Lift2-DrawerSliders.jpg"><img class="size-thumbnail wp-image-1385" title="Drawer slider-based lift" src="http://autonomoustools.com/blog/wp-content/uploads/2010/11/Lift2-DrawerSliders-150x150.jpg" alt="Drawer slider-based lift" width="150" height="150" /></a><p class="wp-caption-text">Drawer slider-based lift</p></div>
<p>Sometimes called &#8220;linear tracks&#8221; in CNC applications. $10 per 28&#8243; pair (eBay), 200lb horizontal weight limit. Not designed to support significant torque about the track&#8217;s linear axis. Lift power must be provided externally.</p>
<p><em>Design:</em> 1/2&#8243; steel pipe joints. Flanges mounted directly to drawer sliders. Winch motor pulls steel cable around pulley to pull slider assembly upward straight along its travel axis.</p>
<p><em>Analysis:</em> Smooth motion, but too fragile. When assembling and adjusting, impossible to avoid rotary torques that snap the tracks (spraying ball bearings everywhere).</p>
<ul>
<li><strong>Prototype</strong><strong> #3: Dual offset fulcrums (quad pulley) + winch<br />
</strong></li>
</ul>
<p>Two circles of common radius, where the centers are separated by distance <em>x</em>, linked (at a common phase offset) by a bar of the same length <em>x</em>. The bar must necessarily remain at the same orientation as the angle between the centers of the two circles as it travels about them. [This technique probably has a name, which I do not know.] To clarify, several angles are pictured (below).</p>
<div id="attachment_1396" class="wp-caption aligncenter" style="width: 310px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/11/Lift3-QuadPulleys-Composite.jpg"><img class="size-medium wp-image-1396 " title="Quad pulley lift" src="http://autonomoustools.com/blog/wp-content/uploads/2010/11/Lift3-QuadPulleys-Composite-300x82.jpg" alt="Quad pulley lift" width="300" height="82" /></a><p class="wp-caption-text">Quad pulley lift</p></div>
<p><em>Design:</em> 3&#8243; garage pulleys (300lb max load) as fulcrums. 1/2&#8243; and 3/4&#8243; steel pipe flanges mounted to the pulleys to produce a freely rotating pipe junction. Four such junctions (4 pulleys, 8 flanges) to complete the system, where short lengths of pipe provide the separation distance <em>x</em> between the circle centers and rotating lever ends.</p>
<p><em>Analysis:</em> Robust at certain angles, but extremely loose at others. Looseness in pulleys (due to manufacturing imprecision) leads to an angular error in the traveling bar&#8217;s orientation that varies as the inverse of <em>sin(2y)</em> where <em>y</em> is the angle from horizontal.</p>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/11/22/vertical-lift-prototypes-1-2-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCB release: Peripheral Driver</title>
		<link>http://autonomoustools.com/blog/2010/10/29/pcb-release-peripheral-driver/</link>
		<comments>http://autonomoustools.com/blog/2010/10/29/pcb-release-peripheral-driver/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 22:22:08 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Robotics]]></category>
		<category><![CDATA[PCB]]></category>
		<category><![CDATA[PCB-PeripheralDriver]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1313</guid>
		<description><![CDATA[First release of PCB design: Peripheral Driver. 2 layers, 1.3x2in (33x50mm). ATmega328 (or similar) microcontroller logic at up to 20MHz clock. Eagle design files and BOM available via GitHub repository: PCB-PeripheralDriver. Each of the 22 three-pin peripheral headers provides low-voltage power, a unique microcontroller signal pin, and a common ground. Intended to manage peripherals with [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1335" class="wp-caption aligncenter" style="width: 310px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/10/3-Periphv02-CAD-raw-populated.jpg"><img class="size-medium wp-image-1335" title="Peripheral Driver (v02) - CAD/raw/populated" src="http://autonomoustools.com/blog/wp-content/uploads/2010/10/3-Periphv02-CAD-raw-populated-300x138.jpg" alt="Peripheral Driver (v02) - CAD/raw/populated" width="300" height="138" /></a><p class="wp-caption-text">Peripheral Driver (v02) - CAD/raw/populated</p></div>
<p>First release of PCB design: <strong>Peripheral Driver</strong>. 2 layers, 1.3x2in (33x50mm). ATmega328 (or similar) microcontroller logic at up to 20MHz clock. Eagle design files and BOM available via GitHub repository: <a href="http://github.com/AretCarlsen/PCB-PeripheralDriver">PCB-PeripheralDriver</a>.</p>
<p>Each of the 22 three-pin peripheral headers provides low-voltage power, a unique microcontroller  signal pin, and a common ground. Intended to manage peripherals with high current requirements and/or noisy electrical feedback: servos, relays, high-lumen lighting, active sensors, etc. Peripherals are expected to supply their own power amplifiers with high-impedance inputs [drawing 5 to 10mW max from the signal pin].</p>
<p>Separate inputs for logic power (<em>Vcc</em>) and power supplied to outputs (<em>Vdd</em>). [Ground must be common.]  Optional onboard <em>Vcc</em> regulation and low-pass filtering [in the half millifarad range].  <em>Vcc</em> may be reduced below 5V (i.e. to accommodate 3.3V supplies and peripherals), if the clock rate is reduced as well.</p>
<p>A standardized pinout and pair of mounting holes along the top of the board provide power and UART comms to independent daughterboards, such as the <a href="http://github.com/AretCarlsen/PCB-PeriphDB-DiffUART">PeriphDB-DiffUART</a> differential UART comms board. The RST pin is included for Arduino bootloader support.</p>
<p>Improvements in v02:</p>
<ul>
<li>Widen driver power (Vdd/Gnd) tracks to 20mil.</li>
<li>Replace screw terminal power inputs with SIP header.</li>
<li>Allow separate inputs for motor power (Vdd) and regulator power (VccReg). V01 allowed for separate Vcc and Vdd inputs, but the Vcc regulator, if installed, could only source from Vdd.</li>
<li>Add dedicated BEC input port, where signal pin is left floating (but Vdd/Gnd are connected).</li>
<li>Decrease overall footprint.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/10/29/pcb-release-peripheral-driver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Philips PCD8544 driver v0.2 (beta, first release) and MapOS server</title>
		<link>http://autonomoustools.com/blog/2010/07/30/philips-pcd8544-driver-v0-2-beta-first-release-and-mapos-server/</link>
		<comments>http://autonomoustools.com/blog/2010/07/30/philips-pcd8544-driver-v0-2-beta-first-release-and-mapos-server/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 14:59:04 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1218</guid>
		<description><![CDATA[C++ driver for the Philips PCD8544 LCD controller, based on Fandi Gunawan&#8217;s C driver.  Ported to C++ for object-orientation and template support.  Supports multiple LCD controllers with separate DC/CE/RST pins, screen caches, etc.  Other enhancements include support for any resolution (not just 84 x 48) and templated pin and SPI bus access for easy porting [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1282" class="wp-caption alignleft" style="width: 160px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/07/LCD-isometric.jpg"><img class="size-thumbnail wp-image-1282" title="Dual PCD8544 via single ATmega328P" src="http://autonomoustools.com/blog/wp-content/uploads/2010/07/LCD-isometric-150x150.jpg" alt="Dual PCD8544 via single ATmega328P" width="150" height="150" /></a><p class="wp-caption-text">Dual PCD8544</p></div>
<p>C++ driver for the Philips PCD8544 LCD controller, based on Fandi Gunawan&#8217;s <a href="http://fandigunawan.wordpress.com/2008/06/18/lcd-nokia-3310-pcd8544-driver-in-winavravr-gcc/">C driver</a>.  Ported to C++ for object-orientation and template support.  Supports multiple LCD controllers with separate DC/CE/RST pins, screen caches, etc.  Other enhancements include support for any resolution (not just 84 x 48) and templated pin and SPI bus access for easy porting to new architectures.  Code is GPL&#8217;d in the GitHub repository <a href="http://github.com/AretCarlsen/Philips_PCD8544_driver">Philips_PCD8544_driver</a>.</p>
<p>The MDFly model MD8448B boards pictured here provide a backlit breakout of a Nokia 3310-style 84&#215;48 monochrome LCD, requiring only a 3.3VDC power source.</p>
<p>The driver package includes two MapOS servers:</p>
<ul>
<li>StringServer: Upon receiving a packet, clears the screen and writes the text contents the packet. Especially useful as a line-based console output.</li>
<li>CommandServer: A general control server which takes an opcode command (e.g. write bitmap) and arguments (e.g. offset and bitmap content).  Can clear the screen, set contrast, write a monochrome bitmap image at a desired offset, etc.</li>
</ul>
<div class="mceTemp">
<dl id="attachment_1285" class="wp-caption alignright" style="width: 160px;">
<dt class="wp-caption-dt"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/07/LCD-top.jpg"><img class="size-thumbnail wp-image-1285 " title="PCD8544 ATmega328P server" src="http://autonomoustools.com/blog/wp-content/uploads/2010/07/LCD-top-150x150.jpg" alt="PCD8544 ATmega328P server" width="150" height="150" /></a></dt>
</dl>
</div>
<p>These two servers are implemented in a MapOS kernel released at GitHub&#8217;s <a href="http://github.com/AretCarlsen/Philips_PCD8544_Server">Philips_PCD8544_Server</a>.  This implementation executes on an ATmega328P 20MHz core (pictured at right).  The LCD driver and servers instantiate from template classes, utilizing the <a href="http://github.com/AretCarlsen/AVR_Objects">AVR_Object</a> library&#8217;s OutputPin classes, and sacrifice several kB of (otherwise unused) Flash space in exchange for faster processing. Memory footprint: 16.5kB Flash, 91B Eeprom.</p>
<p>Below, an example bash script to control this server. $sendPack should contain the path to the sendPacket utility (compiled in <a href="http://github.com/AretCarlsen/MapOS">MapOS</a>/arch/linux/utilities/sendPacket), whereas $uartDev points to the /dev/ttyUSBx device feeding the ATmega UART-RX. This script will clear the screen, set the contrast, and draw two horizontal lines in the upper left corner.</p>
<pre style="font-size: 80%;"># Set device address: 4-20.
echo "0 2 1 iu 1 iu 1 iu 1 iu 3 iu 4 iu 20 iu 255 e" | $sendPack &gt; $uartDev
# Bind LCD-1 Command server to port 8-24.
echo "0 2 1 iu 1 iu 5 iu 0 iu 3 iu 8 iu 24 iu 255 e" | $sendPack &gt; $uartDev
# LCD-1: Set contrast to 64. (Opcode 3, argument 64.)
echo "0 8 24 iu 3 iu 64 e" | $sendPack &gt; $uartDev
# LCD-1: Clear screen. (Opcode 0.)
echo "0 8 24 iu 0 e" | $sendPack &gt; $uartDev
# LCD-1: Write bitmap. (Opcode 1.)
# Second byte is data offset, in bytes, which corresponds to a horizontal pixel offset.
# The following bytes define the on/off status of pixels in a vertical stripe.
echo -e "0 8 24 iu 1 sr -\x00\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F- e" | $sendPack &gt; $uartDev
echo -e "0 8 24 iu 1 sr -\x08\x0F\x0F\x0F\x0F\x0F\x0F\x0F\x0F- e" | $sendPack &gt; $uartDev
echo -e "0 8 24 iu 1 sr -\x10\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0- e" | $sendPack &gt; $uartDev
echo -e "0 8 24 iu 1 sr -\x18\xF0\xF0\xF0\xF0\xF0\xF0\xF0\xF0- e" | $sendPack &gt; $uartDev</pre>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/07/30/philips-pcd8544-driver-v0-2-beta-first-release-and-mapos-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Small-volume PCB costs</title>
		<link>http://autonomoustools.com/blog/2010/07/20/small-volume-pcb-costs/</link>
		<comments>http://autonomoustools.com/blog/2010/07/20/small-volume-pcb-costs/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 02:39:57 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1262</guid>
		<description><![CDATA[Expanding on a summary by Entropic Memes, * DorkbotPDX (any size): $0.26/cm², no min area, but must order 3 boards. * BatchPCB (1in²): $2.7/cm², 6.5cm² min * BatchPCB (3in²): $1.15/cm² * Seeed Studio (5cm side): $0.12/cm², 250cm² min * Seeed Studio (10cm side): $0.10/cm², 500cm² min * OurPCB (20in²): $0.023/cm² (plus shipping), 12900cm² min DorkbotPDX [...]]]></description>
			<content:encoded><![CDATA[<p>Expanding on a <a href="http://www.slugsite.com/archives/1285">summary</a> by Entropic Memes,</p>
<pre>* <a href="http://dorkbotpdx.org/wiki/pcb_order">DorkbotPDX</a> (any size): $0.26/cm², no min area, but must order 3 boards.
* <a href="http://www.batchpcb.com/">BatchPCB</a> (1in²): $2.7/cm², 6.5cm² min
* BatchPCB (3in²): $1.15/cm²
* <a href="http://www.seeedstudio.com/">Seeed Studio</a> (5cm side): $0.12/cm², 250cm² min
* Seeed Studio (10cm side): $0.10/cm², 500cm² min
* <a href="http://www.ourpcb.com/">OurPCB</a> (20in²): $0.023/cm² (plus shipping), 12900cm² min</pre>
<p>DorkbotPDX and BatchPCB win the small-volume contest up to about $30 (115cm² from DorkbotPDX or 39cm² from BatchPCB).  DorkboxPDX is certainly the cheapest, <em>especially</em> for tiny boards, but they are brand new (and not yet commercially viable) whereas BatchPCB has a rich history as the de facto beginner&#8217;s choice.  Seeed then kicks in and gives you 250cm² for that same $30 on up to 500cm² at $50. Anything more than 500cm² is probably a production run, and you&#8217;re going to be jumping to the 1.3 square dekameter OurPCB order or going with one of the other big guys (e.g. MakePCB).</p>
<p>Note that BatchPCB and Seeed will both resell your boards for you.</p>
<p>[<em>UPDATE: DorkboxPDX pricing corrected.</em>]</p>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/07/20/small-volume-pcb-costs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Motor Controller Server v0.4 (alpha, first release)</title>
		<link>http://autonomoustools.com/blog/2010/07/09/motor-controller-server-v0-4-alpha-first-release/</link>
		<comments>http://autonomoustools.com/blog/2010/07/09/motor-controller-server-v0-4-alpha-first-release/#comments</comments>
		<pubDate>Fri, 09 Jul 2010 21:46:01 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Robotics]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1206</guid>
		<description><![CDATA[An integrated Motor Controller Server (MCS), running under MapOS.  In addition to the standard MapOS dynamic routing capabilities, the AVR version of the MCS sports a continuous oscilloscope output [ADCServer from the ATcommon library], analog encoder sensor monitoring [with fixed-point position output], a PID engine with realtime coefficient configuration, and an ESC control server [PWM [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1244" class="wp-caption alignleft" style="width: 160px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/07/Motor_Controller_Server.doxygen_inheritance.23.png"><img class="size-thumbnail wp-image-1244" title="MapOS - Motor_Controller_Server - MAPPacketSink" src="http://autonomoustools.com/blog/wp-content/uploads/2010/07/Motor_Controller_Server.doxygen_inheritance.23-150x150.png" alt="MapOS - Motor_Controller_Server - MAPPacketSink" width="150" height="150" /></a><p class="wp-caption-text">Motor_Controller_Server - MAPPacketSink</p></div>
<p>An integrated Motor Controller Server (MCS), running under MapOS.  In addition to the standard MapOS dynamic routing capabilities, the AVR version of the MCS sports a continuous oscilloscope output [ADCServer from the ATcommon library], analog encoder sensor monitoring [with fixed-point position output], a PID engine with realtime coefficient configuration, and an ESC control server [PWM output].</p>
<p>An <a href="http://autonomoustools.com/blog/2010/04/15/motorcontrollerserver-routing-graph/">earlier version</a> of this server was fielded in <a href="http://autonomoustools.com/blog/2010/04/01/atr5-b1-power-steering-tests/">ATR5-b1</a>.  (The <a href="http://autonomoustools.com/blog/2010/04/19/sparkfun-avc-postmortem/">fires</a> were not the server&#8217;s fault.)</p>
<p>Code available via Github, repository <a href="http://github.com/AretCarlsen/Motor_Controller_Server">Motor_Controller_Server</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/07/09/motor-controller-server-v0-4-alpha-first-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MapOS v0.2 (alpha, first release)</title>
		<link>http://autonomoustools.com/blog/2010/07/08/mapos-v0-2-alpha-first-release/</link>
		<comments>http://autonomoustools.com/blog/2010/07/08/mapos-v0-2-alpha-first-release/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 21:02:00 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1090</guid>
		<description><![CDATA[The MAP Operating System (MapOS) implements the Upacket project as a network-centric kernel. Tuned for microcontroller deployment,  including a minimal scheduler and supporting architecture-specific features [timers, ADC, PWM, etc], MapOS&#8217;s features include: Dynamic packet routing graph, which can be modified in realtime and (optionally) saved to nonvolatile state. Dynamic memory pools, in order to to [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1244" class="wp-caption alignright" style="width: 310px"><a href="http://autonomoustools.com/blog/wp-content/uploads/2010/07/Motor_Controller_Server.doxygen_inheritance.23.png"><img class="size-medium wp-image-1244" title="MapOS - Motor_Controller_Server - MAPPacketSink" src="http://autonomoustools.com/blog/wp-content/uploads/2010/07/Motor_Controller_Server.doxygen_inheritance.23-300x168.png" alt="MapOS - Motor_Controller_Server - MAPPacketSink" width="300" height="168" /></a><p class="wp-caption-text">MapOS - Motor_Controller_Server - MAPPacketSink</p></div>
<p>The MAP Operating System (MapOS) implements the <a href="http://www.github.com/AretCarlsen/Upacket">Upacket</a> project as a network-centric kernel. Tuned for microcontroller deployment,  including a minimal scheduler and supporting architecture-specific features [timers, ADC, PWM, etc], MapOS&#8217;s features include:</p>
<ul>
<li>Dynamic packet routing graph, which can be modified in realtime and (optionally) saved to nonvolatile state.</li>
<li>Dynamic memory pools, in order to to reserve malloc()&#8217;d resources for specific purposes.</li>
<li>A cooperative multitasking scheduler: essentially a list of methods that are called at defined frequencies.  Tasks are required to perform their own context switches.</li>
<li>Easy extensibility.  New server processes can be implemented by extending the SimpleServer class with a single method &#8211; process() &#8211; which is called at a defined frequency by the scheduler.</li>
</ul>
<p>Initial architecture ports include the Atmel AVR ATmegax8 series [especially ATmega328] and GNU Linux x86. An ARM Cortex M3 port is in place, but has not seen significant field testing.  Code [C++] is available via the <a href="http://github.com/AretCarlsen/MapOS">MapOS</a> GitHub repository.</p>
<p>Common servers:</p>
<ul>
<li>Dynamic router: Accepts command packets to add and remove packet routing graph edges, then routes packets as configured.</li>
<li>Ping/echo server: Responds to incoming packets with their own payloads.</li>
<li>Clock server: Sends out clock updates at a precisely defined frequency. Used for device synchronization.</li>
<li>MAP/MEP servers: A pair of servers that encode and decode MAP packets into serialized MEP form, respectively. Includes checksum generation and verification.</li>
</ul>
<p>Some architecture-specific servers:</p>
<ul>
<li>AVR: RPC server. Front-ends for basic AVR pin functionality, including PWM output and digital I/O. This server is sufficient to perform many common tasks, e.g. relay control, LED light modulation, push-button monitoring.</li>
<li>AVR: ADC server. Takes analog readings, which are scaled as desired and transmitted in packets.</li>
<li>AVR: MAP/MEP UART server. Buffers and encodes/decodes MAP packets for transmission to/from a UART bus.</li>
<li>Linux: Command-line MAP packet generation tool [<em>sendpacket</em>] with MEP-encoded output.</li>
</ul>
<p>MapOS is particularly adroit as a front-end for other devices. Established servers:</p>
<ul>
<li>ESC <a href="http://autonomoustools.com/blog/2010/07/09/motor-controller-server-v0-4-alpha-first-release/">motor control</a> server set, including position sensor monitoring and PID engine.</li>
<li>Philips <a href="http://autonomoustools.com/blog/2010/07/30/philips-pcd8544-driver-v0-2-beta-first-release-and-mapos-server/">PCD8544 graphic LCD</a> serving both text and  full-screen bitmaps.</li>
<li>Nordic nRF24L01P packet transceiver operating in ad hoc and infrastructure modes.</li>
</ul>
<p>Servers in development:</p>
<ul>
<li>Composite/VGA video output via Parallax Propeller GPU.</li>
<li>SD card read/write [raw and FAT32].</li>
<li>Motorola Oncore VP DGPS position, pseudorange, and pseudorange correction I/O.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/07/08/mapos-v0-2-alpha-first-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upacket v0.2 (alpha, first release)</title>
		<link>http://autonomoustools.com/blog/2010/06/04/upacket-v0-2-alpha-first-release/</link>
		<comments>http://autonomoustools.com/blog/2010/06/04/upacket-v0-2-alpha-first-release/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 15:47:40 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1181</guid>
		<description><![CDATA[The Upacket (pronounced &#8220;micropacket&#8221;) project aims to provide internet-quality network communications for bandwidth-, memory-, and processor-constrained environments, especially microcontroller and ARM architectures.  This first code release provides: MEP encoder and decoder implementations, to facilitate packet transmission over serial lines. MAP packet management utilities, including checksum generation/verification. MAP packet headers replace MAC, IP, and port (UDP) [...]]]></description>
			<content:encoded><![CDATA[<p>The Upacket (pronounced &#8220;micropacket&#8221;) project aims to provide internet-quality network communications for bandwidth-, memory-, and processor-constrained environments, especially microcontroller and ARM architectures.  This first code release provides:</p>
<ul>
<li><a href="http://autonomoustools.com/blog/2010/04/01/announcing-the-micro-encapsulation-protocol-mep/">MEP</a> encoder and decoder implementations, to facilitate packet transmission over serial lines.</li>
<li><a href="http://autonomoustools.com/blog/2010/04/01/announcing-the-micro-addressing-protocol-map/">MAP</a> packet management utilities, including checksum generation/verification. MAP packet headers replace MAC, IP, and port (UDP) addressing layers and supporting unlimited nesting (i.e. for DSR).</li>
<li>Posix 32-bit <a href="http://en.wikipedia.org/wiki/Cyclic_redundancy_check">CRC</a> checksum calculation/verification engine, providing the reliability mechanism for the MAP packet structure.</li>
<li>Packet routers, including realtime graph edge addition/removal.</li>
<li>Basic server templates from which new processes can inherit common functionality, such as reply-packet preparation.</li>
</ul>
<p>Available via the <a href="http://github.com/AretCarlsen/Upacket">Upacket</a> GitHub repository, this C++ code library is an alpha release (in rapid development).</p>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/06/04/upacket-v0-2-alpha-first-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ATcommon v0.3 (beta, first release)</title>
		<link>http://autonomoustools.com/blog/2010/05/28/new-code-released-atcommon-v0-3-beta/</link>
		<comments>http://autonomoustools.com/blog/2010/05/28/new-code-released-atcommon-v0-3-beta/#comments</comments>
		<pubDate>Fri, 28 May 2010 22:03:16 +0000</pubDate>
		<dc:creator>AretCarlsen</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://autonomoustools.com/blog/?p=1167</guid>
		<description><![CDATA[A suite of minor support libraries (C++) required by the nRF24L01P driver and several other Autonomous Tools projects newly released under the GitHub repository ATcommon. Included libraries: FixedPoint: A cheap fixed point fractional arithmetic implementation. Does not allow overflow; clamps to extremes instead. StateMachine: Borrowing from existing work, implements low-cost parallel (thread) states in a [...]]]></description>
			<content:encoded><![CDATA[<p>A suite of minor support libraries (C++) required by the nRF24L01P driver and several other Autonomous Tools projects newly released under the GitHub repository <a href="http://github.com/AretCarlsen/ATcommon">ATcommon</a>. Included libraries:</p>
<ul>
<li>FixedPoint: A cheap fixed point fractional arithmetic  implementation. Does not allow overflow; clamps to extremes instead.</li>
<li>StateMachine: Borrowing from <a href="http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html">existing  work</a>, implements low-cost parallel (thread) states in a  non-threaded environment.</li>
<li>MemoryPool: Tracks and implements memory allocation limits. Can be nested.</li>
<li>DataStore: Static and dynamic array-based buffers and ringbuffers.</li>
<li>DataTransfer: Data stream interfaces to support generic graphs.</li>
<li>Status: A tiny library to support common enumerated return statuses.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://autonomoustools.com/blog/2010/05/28/new-code-released-atcommon-v0-3-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

