<?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>exploration</title>
	<atom:link href="http://robertcarlsen.net/feed" rel="self" type="application/rss+xml" />
	<link>http://robertcarlsen.net</link>
	<description>accounts of success and misadventure</description>
	<lastBuildDate>Wed, 13 Jan 2010 00:38:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>OCR for iPhone source</title>
		<link>http://robertcarlsen.net/2010/01/12/ocr-for-iphone-source-1080</link>
		<comments>http://robertcarlsen.net/2010/01/12/ocr-for-iphone-source-1080#comments</comments>
		<pubDate>Tue, 12 Jan 2010 06:46:58 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[ocr]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[photo]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1080</guid>
		<description><![CDATA[The source code for the Tesseract OCR for iPhone project has been published. It&#8217;s really simple – more of a skeleton, proof-of-concept project than anything else. Still, though, it&#8217;s neat to have nearly point-and-shoot text conversion in your pocket.
The project page is: Pocket OCR
The source code is available at github: http://github.com/rcarlsen/Pocket-OCR
There is certainly a lot [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2010/01/ocr_gobbledygook.png" rel="lightbox[1080]"><img class="alignright size-thumbnail wp-image-1089" title="ocr_gobbledygook" src="http://robertcarlsen.net/blog/wp-content/uploads/2010/01/ocr_gobbledygook-150x150.png" alt="ocr_gobbledygook" width="150" height="150" /></a>The source code for the Tesseract OCR for iPhone project has been published. It&#8217;s really simple – more of a skeleton, proof-of-concept project than anything else. Still, though, it&#8217;s neat to have nearly point-and-shoot text conversion in your pocket.</p>
<p>The project page is: <a href="http://robertcarlsen.net/dev/pocket-ocr">Pocket OCR</a></p>
<p>The source code is available at github: <a href="http://github.com/rcarlsen/Pocket-OCR" onclick="pageTracker._trackPageview('/outgoing/github.com/rcarlsen/Pocket-OCR?referer=');">http://github.com/rcarlsen/Pocket-OCR</a></p>
<p>There is certainly a lot of improvement to be made. Automatic color correction. Page layout recognition. Perspective correction&#8230;the list could go on. The code is there, so&#8230;fork away!</p>
<p>(the thumbnail is a bit tongue-in-cheek&#8230;but honest. good conversion requires a good source image: well-lit, macro, focused and tightly cropped seems best)</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2010/01/12/ocr-for-iphone-source-1080/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ITP Winter Show 2009</title>
		<link>http://robertcarlsen.net/2009/12/20/itp-winter-show-2009-1067</link>
		<comments>http://robertcarlsen.net/2009/12/20/itp-winter-show-2009-1067#comments</comments>
		<pubDate>Sun, 20 Dec 2009 19:18:24 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[itp]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1067</guid>
		<description><![CDATA[The 2009 ITP Winter Show is Sunday and Monday, December 20–21. The first visualization of my ongoing bicycle data logging project is on display under the title &#8220;seismi{c}ycling&#8220;.
This visualization traces the routes I rode throughout the fall, highlighting big bumps. Areas of New York which caused me to experience lots of bumps begin to glow bright [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/12/photo.jpg" rel="lightbox[1067]"><img class="alignright size-thumbnail wp-image-1068" title="photo" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/12/photo-150x150.jpg" alt="photo" width="150" height="150" /></a>The 2009 ITP Winter Show is Sunday and Monday, December 20–21. The first visualization of my ongoing bicycle data logging project is on display under the title &#8220;<a href="http://robertcarlsen.net/projects/seismicycling">seismi{c}ycling</a>&#8220;.</p>
<p>This visualization traces the routes I rode throughout the fall, highlighting big bumps. Areas of New York which caused me to experience lots of bumps begin to glow bright red.</p>
<p>The show is a great time; I&#8217;d highly suggest coming to see the myriad of projects this year. There&#8217;s a online guest book with project map at <a href="http://itpguestbook.com" onclick="pageTracker._trackPageview('/outgoing/itpguestbook.com?referer=');">ITPGuestbook</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/12/20/itp-winter-show-2009-1067/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OCR on iPhone demo</title>
		<link>http://robertcarlsen.net/2009/12/06/ocr-on-iphone-demo-1043</link>
		<comments>http://robertcarlsen.net/2009/12/06/ocr-on-iphone-demo-1043#comments</comments>
		<pubDate>Sun, 06 Dec 2009 20:33:39 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[iphone]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[ocr]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tesseract]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1043</guid>
		<description><![CDATA[Update: Source code for demo project released.

i finally got around to building a proof of concept implementation of tesseract-ocr for the iPhone. months ago, i documented the steps which helped to get the library cross-compiled for the iPhone&#8217;s ARM processor, and how to build a fat library for use with the simulator as well. several [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>: Source code for demo project <a href="http://robertcarlsen.net/2010/01/12/ocr-for-iphone-source-1080">released</a>.</p>
<p><img class="size-full wp-image-1051 alignright" title="TessIcon" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/12/TessIcon.png" alt="TessIcon" width="57" height="57" /></p>
<p>i finally got around to building a proof of concept implementation of <a href="http://code.google.com/p/tesseract-ocr/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/tesseract-ocr/?referer=');">tesseract-ocr</a> for the iPhone. months ago, i <a href="http://robertcarlsen.net/2009/07/15/cross-compiling-for-iphone-dev-884">documented</a> the steps which helped to get the library cross-compiled for the iPhone&#8217;s ARM processor, and how to build a fat library for use with the simulator as well. several folks have helped immensely in noting how to actually run the engine in obj-c++. thanks to everyone who has commented so far.</p>
<p>anyway, below is a short video of the POC in action. the basic workflow is: select image from photo library or camera, crop tightly on the box of text you&#8217;d like to convert, wait while it processes, select / copy or email text.<span id="more-1043"></span></p>
<p>there are loads of improvements which could be implemented (image histogram adjustment, rotation / perspective correction, automatic text box/layout detection, content detection &#8211; dates, links, contact information&#8230;) but this is a nice point to stop and document.</p>
<p>i realize that there are several OCR applications available for the iPhone, including a few which also run the engine on the device rather than handing it off to a web service. this started as an educational project on cross-compiling, and to fill a personal want for a handheld OCR app of my own. for these reasons, i&#8217;m going to open-source the entire app. look for it after this semester ends when i&#8217;ll have some more time to properly document the code. in the meantime, enjoy these code snippets demonstrating how to initialize the engine and process an image.</p>
<p>Initialize the engine:</p>
<pre class="brush: cpp;">
    NSString *dataPath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent:@&quot;tessdata&quot;];
    /*
     Set up the data in the docs dir
     want to copy the data to the documents folder if it doesn't already exist
     */
    NSFileManager *fileManager = [NSFileManager defaultManager];
    // If the expected store doesn't exist, copy the default store.
    if (![fileManager fileExistsAtPath:dataPath]) {
        // get the path to the app bundle (with the tessdata dir)
        NSString *bundlePath = [[NSBundle mainBundle] bundlePath];
        NSString *tessdataPath = [bundlePath stringByAppendingPathComponent:@&quot;tessdata&quot;];
        if (tessdataPath) {
            [fileManager copyItemAtPath:tessdataPath toPath:dataPath error:NULL];
        }
    }

    NSString *dataPathWithSlash = [[self applicationDocumentsDirectory] stringByAppendingString:@&quot;/&quot;];
    setenv(&quot;TESSDATA_PREFIX&quot;, [dataPathWithSlash UTF8String], 1);

    // init the tesseract engine.
    tess = new TessBaseAPI();

    tess-&gt;SimpleInit([dataPath cStringUsingEncoding:NSUTF8StringEncoding],  // Path to tessdata-no ending /.
                     &quot;eng&quot;,  // ISO 639-3 string or NULL.
                     false);
</pre>
<p>Process an image. This should be threaded as it&#8217;s a heavy process:</p>
<pre class="brush: cpp;">
    CGSize imageSize = [uiImage size];
    double bytes_per_line	= CGImageGetBytesPerRow([uiImage CGImage]);
    double bytes_per_pixel	= CGImageGetBitsPerPixel([uiImage CGImage]) / 8.0;

    CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider([uiImage CGImage]));
    const UInt8 *imageData = CFDataGetBytePtr(data);

    // this could take a while. maybe needs to happen asynchronously.
    char* text = tess-&gt;TesseractRect(imageData,
                                     bytes_per_pixel,
                                     bytes_per_line,
                                     0, 0,
                                     imageSize.width, imageSize.height);

    // Do something useful with the text!
    NSLog(@&quot;Converted text: %@&quot;,[NSString stringWithCString:text encoding:NSUTF8StringEncoding]);

    delete[] text;
</pre>
<p>Enjoy the video!<br />
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/MICew5-nZp4&#038;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/MICew5-nZp4&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/12/06/ocr-on-iphone-demo-1043/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>motivations: karma</title>
		<link>http://robertcarlsen.net/2009/12/03/motivations-karma-1039</link>
		<comments>http://robertcarlsen.net/2009/12/03/motivations-karma-1039#comments</comments>
		<pubDate>Fri, 04 Dec 2009 04:17:44 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Media Economics and Participation]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[assignment]]></category>
		<category><![CDATA[karma]]></category>
		<category><![CDATA[motivation]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[slashdot]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1039</guid>
		<description><![CDATA[[written for Media Economics &#38; Participation at ITP]
Slashdot users are seeking karma. However, gaining positive karma at Slashdot is just a means to an end; Slashdot users are seeking (limited) power and status among their peers in the form of fleeting moderator access for the vibrant comments component of the highly active, technology-focused news aggregation [...]]]></description>
			<content:encoded><![CDATA[<p>[written for Media Economics &amp; Participation at ITP]</p>
<p>Slashdot users are seeking karma. However, gaining positive karma at Slashdot is just a means to an end; Slashdot users are seeking (limited) power and status among their peers in the form of fleeting moderator access for the vibrant comments component of the highly active, technology-focused news aggregation site. Moderators are chosen from among the registered users using a somewhat obscure algorithm which incorporates each user’s karma rating (a scale of Terrible, Bad, Neutral, Positive, Good, and Excellent), length of membership and randomness. Selected moderators are given special status and 5 mod{eration} points with an expiration window of three days. The moderation status ends when the points have been used in the act of moderating comments or have expired.</p>
<p>The moderation system has been borne out of necessity as the Slashdot community has grown large, bringing the signal-to-noise ratio down and decreasing the satisfaction in reading the raw comment threads. “Flamebait” and “trolls” contribute little more than instigation for starting arguments and fights among the users with typically strong opinions on matters which usually appear on Slashdot. Rob Malda, founder of Slashdot, explains this phenomenon on the Slashdot FAQ:<span id="more-1039"></span></p>
<blockquote><p>“One of the unfortunate side-effects of the increasing popularity of Slashdot is that the number of trolls, flame-warriors and all-around lamers increases as well, and it only takes a relatively small number of them to make a lot of noise. Keeping this noise to a minimum is one of the primary goals of the moderation system” (http://slashdot.org/faq/com-mod.shtml#cm500)</p></blockquote>
<p>Comments are moderated by labeling them as either offtopic, flamebait, troll, redundant, insightful, interesting, informative, funny, overrated or underrated. These adjective labels translate into positive or negative values and are summed to provide the final score. The scoring system for comments is an absolute numeric scale from -1 to 5. Readers can use this scale to filter out comments which have been modded down. While moderators are encouraged to view the comments unfiltered, non-moderators can simply set a viewing threshold which omits the low ranked comments. At times, this creates a disconnect when a highly modded response appears for a hidden comment, however it creates a better overall reading experience (and hidden comments can easily be displayed ad hoc).</p>
<p>Of course, since the moderators are sourced from the same membership pool which is creating the comments to be moderated, controls have been established to limit the influence (or damage) of any one moderator. The small number of mod points provided at a time, short expiration period for them and a somewhat obfuscated moderator selection process make taking advantage of the system by particular users difficult. There is also a metamoderation (m2) system where the larger Slashdot membership can rate the validity of mod points as they have been awarded and can directly influence the karma status of the moderators which awarded them.</p>
<p>Aside from being used to set viewing filters on comment threads, mod points are a direct factor in awarding karma to comment authors. According to the Slashdot FAQ, contributing (good) comments and submitting articles are the primary ways to achieve positive karma, which then increases the chances of being selected as a moderator (for a day, or so). Paraphrased from a story submitted by Slashdot user dkh2: “Post Intelligently, Post Calmly, Post Early, Post Often, Stay On Topic, Be Original, Read It Before You Post, Log In As a Registered User, Read Slashdot Regularly…Come to the party and play.” (http://slashdot.org/faq/com-mod.shtml#cm1900)</p>
<p>In terms of motivators, attaining moderator status provides a sense of all four intrinsic motivators. Being bestowed moderator status confirms a sense of membership in the community, as well as grants a small degree of autonomy. Moderators can recognize competence in other members (as well as affirm their own competence) by modding up particularly good comments, and also display generosity in giving up their limited mod points (although perhaps out of some self-serving drive rather than communal altruism). Modding down poor comments seems similar, but perhaps the generosity is directed toward the community while providing satisfaction at venting ire over undesirable users.</p>
<p>It’s important to note that posting comments is not limited to Slashdot members. “Anonymous cowards” are welcome to post comments on any story. While it seems as though this creates an easy vector to enable trolling and flamebait, the Slashdot chooses to recognize potential utility of anonymous posting:</p>
<blockquote><p>“We think the ability to post anonymously is important. Sometimes people have important information they want to post, but are afraid to do it if they can be linked to it. Anonymous Coward posting will continue to exist for the foreseeable future.” (http://slashdot.org/faq/com-mod.shtml#cm515)</p></blockquote>
<p>Anonymous comments begin with zero mod points, so simply adjusting the viewing threshold to 1 and above omits anonymous posts which have not be explicitly modded up and reduces the need for moderators to use up mod points to curtail anonymous flamebait (unless it’s been already modded up for some reason). The stated guidelines for moderators explain Slashdot’s objectives:</p>
<blockquote><p>“Concentrate more on promoting than on demoting. The real goal here is to find the juicy good stuff and let others read it.…The goal here is to share ideas. To sift through the haystack and find needles. And to keep the children who like to spam Slashdot in check.” (http://slashdot.org/faq/com-mod.shtml#cm600)</p></blockquote>
<p>While the editors of Slashdot determine which of the submitted stories actually make it to the front page, there has been a conscious decision to keep the commenting system organic. Editors have unlimited moderation points, but comments themselves are not removed. In response to the question “Will you delete my comment?” the resounding answer on the FAQ is:</p>
<blockquote><p>“No. We believe that discussions in Slashdot are like discussions in real life- you can&#8217;t change what you say, you only can attempt to clarify by saying more.…In short, you should think twice before you click that &#8216;Submit&#8217; button because once you click it, we aren&#8217;t going to let you Undo it.” (http://slashdot.org/faq/com-mod.shtml#cm150)</p></blockquote>
<p>The moderation system has created motivators of its own to keep it self-propagating and self-healing, however the primary motivator among (positive) members of Slashdot is recognition from peers. The tagline for Slashdot is “News for nerds. Stuff that matters.” and there is a real sense that the membership is intelligent, highly competent and well regarded (despite the actual demographics or what can be inferred by the quality of comments). Having a comment deemed as valuable and subsequently modded up provides satisfaction and a sense of accomplishment. There are often choruses of “mod parent up” by non-moderator members imploring peers with moderator status to recognize good comments.</p>
<p>Analysis of larger motivators describing members contributing to a discussion board or comments thread is outside the scope of this examination. However, Slashdot has implemented an interesting self-sustaining system to provide free expression while minimizing inevitable elements which are distracting or possibly damaging to the community. The system is designed to self-moderate and self-select future moderators using recognition of past contributions and actions as indicators of responsibility and competence. A striking element of this system is that lowly moderated comments are not censored but filtered; all contributions are available for viewing by any readers of the site at all times. This is a compelling balance between control and transparency which would be intriguing to experiment with in other contexts.</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/12/03/motivations-karma-1039/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bicycle of you&#8230;</title>
		<link>http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020</link>
		<comments>http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020#comments</comments>
		<pubDate>Mon, 23 Nov 2009 23:35:46 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Rest of You]]></category>
		<category><![CDATA[itp]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1020</guid>
		<description><![CDATA[Initial presentation of my final project for the Rest of You class at ITP.
I’m logging forces experienced by a bicycle {rider} when traveling through an urban environment. Many of these forces go unnoticed by the rider focused in the action of riding.
I’m looking to utilize mobile GPS-enabled handsets as a central part of the sensor [...]]]></description>
			<content:encoded><![CDATA[<p>Initial presentation of my final project for the Rest of You class at ITP.</p>
<p>I’m logging forces experienced by a bicycle {rider} when traveling through an urban environment. Many of these forces go unnoticed by the rider focused in the action of riding.</p>
<p>I’m looking to utilize mobile GPS-enabled handsets as a central part of the sensor platform to take advantage of their increasing ubiquity and a natural tendency for riders to carry a handset at all times. External sensors and hardware may be connected to these handsets to measure specific metrics, such as light and sound levels, air quality, proximity, heart rate, stress, breathing, work, attitude, speed and vibration.</p>

<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-001' title='carlsen-ROY-final1.001'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.001-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.001" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-002' title='carlsen-ROY-final1.002'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.002-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.002" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-003' title='carlsen-ROY-final1.003'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.003-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.003" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-004' title='carlsen-ROY-final1.004'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.004-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.004" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-005' title='carlsen-ROY-final1.005'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.005-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.005" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-006' title='carlsen-ROY-final1.006'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.006-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.006" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-007' title='carlsen-ROY-final1.007'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.007-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.007" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-008' title='carlsen-ROY-final1.008'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.008-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.008" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-009' title='carlsen-ROY-final1.009'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.009-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.009" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-010' title='carlsen-ROY-final1.010'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.010-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.010" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-011' title='carlsen-ROY-final1.011'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.011-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.011" /></a>
<a href='http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/carlsen-roy-final1-012' title='carlsen-ROY-final1.012'><img width="150" height="150" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/carlsen-ROY-final1.012-150x150.jpg" class="attachment-thumbnail" alt="" title="carlsen-ROY-final1.012" /></a>

]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/11/23/bicycle-of-you-1020/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>it&#8217;s real (time) !</title>
		<link>http://robertcarlsen.net/2009/11/04/it-real-time-1013</link>
		<comments>http://robertcarlsen.net/2009/11/04/it-real-time-1013#comments</comments>
		<pubDate>Thu, 05 Nov 2009 03:10:23 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Rest of You]]></category>
		<category><![CDATA[Thesis]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[couchdb]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[mapping]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=1013</guid>
		<description><![CDATA[after a couple of late nights, i have a proof-of-concept in the real-time cycling-related datalogging. the reasons behind the project are still getting sorted, but lately my interest in ubiquitous urban sensor networks has been piqued and this is a tentative exploration in that area. sensors don&#8217;t have to remain static as part of physical [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/all-events.png" rel="lightbox[1013]"><img class="alignright size-thumbnail wp-image-1014" style="margin-left: 3px;" title="all events" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/all-events-150x150.png" alt="all events" width="150" height="150" /></a>after a couple of late nights, i have a proof-of-concept in the real-time cycling-related datalogging. the reasons behind the project are still getting sorted, but lately my interest in ubiquitous <a href="http://speedbird.wordpress.com/2009/10/11/toward-urban-systems-design/" onclick="pageTracker._trackPageview('/outgoing/speedbird.wordpress.com/2009/10/11/toward-urban-systems-design/?referer=');">urban sensor networks</a> has been piqued and this is a tentative exploration in that area. sensors don&#8217;t have to remain static as part of physical infrastructure&#8230;millions of people are carrying millions of sensors around with them daily.<span id="more-1013"></span></p>
<p>an iPhone application records accelerometer data at anywhere from 1-40Hz (arbitrary rate) which is geocoded using core location (including heading, altitude, and location). every second the most recent sample is uploaded to a server running <a href="http://couchdb.apache.org/" onclick="pageTracker._trackPageview('/outgoing/couchdb.apache.org/?referer=');">couchDB</a>. after a ride, the full-resolution file can be e-mailed or uploaded to the server. for the proof-of-concept the data is being plotted on a dynamic Google Map.</p>
<p>in the immediate future i&#8217;ll be adding live updating of the map via ajax or some other web sumthin&#8217; dot oh technology.</p>
<p>longer term is to build out similar applications for android and symbian (or maybe just j2me if it&#8217;s feasible). i&#8217;m also planning on getting back to the ardunio-based sensor packages which started the project.</p>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/couchdb-ride-events.png" rel="lightbox[1013]"><img class="alignleft size-medium wp-image-1015" title="couchdb ride events" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/11/couchdb-ride-events-282x300.png" alt="couchdb ride events" width="282" height="300" /></a><br />
<br style="clear:both;" /></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/11/04/it-real-time-1013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arduino in Eclipse</title>
		<link>http://robertcarlsen.net/2009/10/31/arduino-in-eclipse-989</link>
		<comments>http://robertcarlsen.net/2009/10/31/arduino-in-eclipse-989#comments</comments>
		<pubDate>Sun, 01 Nov 2009 02:06:19 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[itp]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=989</guid>
		<description><![CDATA[This tutorial describes how to set up Eclipse for Arduino (AVR) C/C++ development. Eclipse is a full-featured Integrated Development Environment with modern editor features such as syntax highlighting, code completion and error checking. I became interested in using Eclipse for Arduino development as I&#8217;m often simultaneously developing firmware for the chip and visualization software in [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial describes how to set up Eclipse for Arduino (AVR) C/C++ development. <a class="external text" title="http://www.eclipse.org/downloads/" rel="nofollow" href="http://www.eclipse.org/downloads/" onclick="pageTracker._trackPageview('/outgoing/www.eclipse.org/downloads/?referer=');">Eclipse</a> is a full-featured Integrated Development Environment with modern editor features such as syntax highlighting, code completion and error checking. I became interested in using Eclipse for Arduino development as I&#8217;m often simultaneously developing firmware for the chip and visualization software in a Java / Processing applet. Since I&#8217;m already using Eclipse for Java / <a title="Processing in Eclipse" href="http://itpedia.nyu.edu/wiki/Processing_in_Eclipse" onclick="pageTracker._trackPageview('/outgoing/itpedia.nyu.edu/wiki/Processing_in_Eclipse?referer=');"> Processing</a>, it&#8217;s nice to be able to work in the same environment for both.</p>
<p>The <a class="external text" title="http://www.arduino.cc/" rel="nofollow" href="http://www.arduino.cc/" onclick="pageTracker._trackPageview('/outgoing/www.arduino.cc/?referer=');">Arduino</a> site has a decent <a class="external text" title="http://www.arduino.cc/playground/Code/Eclipse" rel="nofollow" href="http://www.arduino.cc/playground/Code/Eclipse" onclick="pageTracker._trackPageview('/outgoing/www.arduino.cc/playground/Code/Eclipse?referer=');">walkthrough</a>, but I found some of the steps to be confusing or outdated. Hopefully, this will get you up and running quickly.<span id="more-989"></span></p>
<table id="toc" class="toc" border="0" summary="Contents">
<tbody>
<tr>
<td>
<div id="toctitle">
<h2>Contents</h2>
</div>
<ul style="width: 100%;">
<li class="toclevel-1"><a href="#Overview"><span class="tocnumber">1</span> <span class="toctext">Overview</span></a></li>
<li class="toclevel-1"><a href="#Setup_Eclipse"><span class="tocnumber">2</span> <span class="toctext">Setup Eclipse</span></a></li>
<li class="toclevel-1"><a href="#Create_an_Arduino_project"><span class="tocnumber">3</span> <span class="toctext">Create an Arduino project</span></a></li>
<li class="toclevel-1"><a href="#Add_a_new_main.c_source_file"><span class="tocnumber">4</span> <span class="toctext">Add a new main.c source file</span></a></li>
<li class="toclevel-1"><a href="#Building"><span class="tocnumber">5</span> <span class="toctext">Building</span></a></li>
<li class="toclevel-1"><a href="#New_projects"><span class="tocnumber">6</span> <span class="toctext">New projects</span></a></li>
<li class="toclevel-1"><a href="#Follow_up"><span class="tocnumber">7</span> <span class="toctext">Follow up</span></a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<p><a name="Overview"></a></p>
<h3><span class="mw-headline">Overview</span></h3>
<p>Most of this setup will have to happen once, then starting new projects is typically as easy as duplicating a simple, skeleton project. Getting the paths and configuration options correct for this initial project was the most confusing for me, but I haven&#8217;t needed to tinker with them again.</p>
<p>To begin, download <a class="external text" title="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-macosx-cocoa.tar.gz" rel="nofollow" href="http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-macosx-cocoa.tar.gz" onclick="pageTracker._trackPageview('/outgoing/www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/galileo/SR1/eclipse-cpp-galileo-SR1-macosx-cocoa.tar.gz&amp;referer=');">Eclipse for C/C++ Developers</a>, or install the C/C++ plugin for your existing Eclipse version (these instructions assume Eclipse 3.5 Galileo). To install an Eclipse plugin:</p>
<ul>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/install-new.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-999" style="clear: both;" title="install new" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/install-new-150x150.png" alt="install new" width="150" height="150" /></a>Open Eclipse. Navigate to Help &gt; Install New Software&#8230;</li>
</ul>
<ul>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/Select-CDT.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-1001" style="clear: both;" title="Select CDT" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/Select-CDT-150x150.png" alt="Select CDT" width="150" height="150" /></a>Select CDT from the drop down menu. If CDT is not present, then click the add button and paste the link to the plugin update site in the Location field: <a class="external free" title="http://download.eclipse.org/tools/cdt/releases/galileo" rel="nofollow" href="http://download.eclipse.org/tools/cdt/releases/galileo" onclick="pageTracker._trackPageview('/outgoing/download.eclipse.org/tools/cdt/releases/galileo?referer=');">http://download.eclipse.org/tools/cdt/releases/galileo</a></li>
<li>Select Eclipse C/C++ Development Tools, then click &#8220;Next &gt;&#8221; and &#8220;Finish&#8221; on the following screen. This may prompt you to restart Eclipse, however select No so we can install the next plugin.</li>
</ul>
<ul>
<li>Return to the Install New Software dialog. Paste in the location for the <a class="external text" title="http://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download" rel="nofollow" href="http://avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download" onclick="pageTracker._trackPageview('/outgoing/avr-eclipse.sourceforge.net/wiki/index.php/Plugin_Download?referer=');">AVR Plugin</a> and select it and click Next to install. You may have to agree to license terms. <a class="external free" title="http://avr-eclipse.sourceforge.net/updatesite/" rel="nofollow" href="http://avr-eclipse.sourceforge.net/updatesite/" onclick="pageTracker._trackPageview('/outgoing/avr-eclipse.sourceforge.net/updatesite/?referer=');">http://avr-eclipse.sourceforge.net/updatesite/</a></li>
</ul>
<ul>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/AVR-plugin.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-994" style="clear: both;" title="AVR plugin" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/AVR-plugin-150x150.png" alt="AVR plugin" width="150" height="150" /></a>AVR tools. You should install tools appropriate for your platform:
<ul>
<li>Mac OS X: <a class="external text" title="http://www.obdev.at/products/crosspack/index.html" rel="nofollow" href="http://www.obdev.at/products/crosspack/index.html" onclick="pageTracker._trackPageview('/outgoing/www.obdev.at/products/crosspack/index.html?referer=');">CrossPack</a> (Note: I&#8217;m targeting this tutorial for an OS X system)</li>
<li>Linux: apt-get install avrdude binutils-avr gcc-avr avr-libc gdb-avr</li>
<li>Windows: <a class="external text" title="http://winavr.sourceforge.net/" rel="nofollow" href="http://winavr.sourceforge.net/" onclick="pageTracker._trackPageview('/outgoing/winavr.sourceforge.net/?referer=');">WinAVR</a></li>
</ul>
</li>
</ul>
<p><a name="Setup_Eclipse"></a></p>
<h3><span class="mw-headline">Setup Eclipse</span></h3>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/AVR-Paths.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-993" style="clear: both;" title="AVR Paths" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/AVR-Paths-150x150.png" alt="AVR Paths" width="150" height="150" /></a></p>
<p>After the plugins have been installed they need to be configured. Specifically, the paths to the AVR Tools need to be verified.</p>
<ul>
<li>Open the Eclipse Preferences: Eclipse &gt; Preferences. Twirl down the AVR category and select &#8220;Paths&#8221;. Verify that the paths have located the correct AVR toolkit (CrossPack-AVE on OS X). You can edit these fields as necessary.</li>
</ul>
<ul>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/AVRDude.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-995" style="clear: both;" title="AVRDude" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/AVRDude-150x150.png" alt="AVRDude" width="150" height="150" /></a>Select the AVRDude category. I&#8217;ve found that I need to add a Programmer configuration for each Arduino (or USB to Serial adapter) that I use. Please let me know if you can get a better solution working with wildcards.
<ul>
<li>Give this configuration a descriptive name. I&#8217;m using &#8220;Arduino Diecimila&#8221;.</li>
<li>Select &#8220;Arduino&#8221; as the Programmer Hardware</li>
<li>Enter the correct port for your Arduino. You can display this by plugging the Arduino into the computer, opening the Terminal then typing: /dev/tty.usbserial then hitting the Tab key. The remainder of the port name should appear.</li>
<li>Set the baud rate to 19200</li>
<li>Click OK. Then close the preferences.</li>
</ul>
</li>
</ul>
<p><a name="Create_an_Arduino_project"></a></p>
<h3><span class="mw-headline">Create an Arduino project</span></h3>
<p>For the first project you&#8217;ll need to manually set up the configuration. I&#8217;d *highly* recommend making a basic blink sketch, then duplicate it for each new project. This is what the tutorial will set up. Alternatively, you can try importing this basic project, but may have to set up the paths for your system anyway. <a class="external text" title="http://robertcarlsen.net/media/itp/hello_blink.tar.gz" rel="nofollow" href="http://robertcarlsen.net/media/itp/hello_blink.tar.gz">Eclipse Blink Sketch</a></p>
<ul>
<li>Go to File -&gt; New -&gt; C Project</li>
<li>Select Empty Project under AVR Cross Target Application and name the project &#8220;Hello_Blink&#8221;.</li>
<li>Click Finish.</li>
<li>Select the &#8220;Hello_Blink&#8221; project in the Project Explorer panel, then navigate to Project &gt; Properties menu.</li>
<li>Twirl down the AVR category and select AVRDude.
<ul>
<li>Select your Arduino from the Programmer configuration menu</li>
</ul>
</li>
<li>Select Target Hardware at left.
<ul>
<li>Ensure that your Arduino is plugged into your computer via USB (and is powered on).</li>
<li>Click &#8220;Load from MCU&#8221;. This should query the Arduino for it&#8217;s type and detect it correctly.
<ul>
<li>If this doesn&#8217;t work, typically the Diecimila is an ATmega168 while the Duemilanove is an ATmega328</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Each Ardiuno project needs to include the Ardunio core library. This file is compiled automatically by the Arduino IDE. While you could compile it yourself in Eclipse, the easiest way to get it is to build a simple sketch in the Arduino IDE, then copy the &#8220;core.a&#8221; file into your Eclipse project.</p>
<ul>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/core.a-file.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-1002" title="core.a file" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/core.a-file-150x150.png" alt="core.a file" width="150" height="150" /></a>Start the Arduino IDE</li>
<li>Open the Blink sketch (File &gt; Examples &gt; Digital &gt; Blink)</li>
<li>Click the &#8220;Verify&#8221; button to compile the sketch</li>
<li>Select Sketch &gt; Show Sketch Folder</li>
<li>Drag core.a into your Eclipse Hello_Blink project to copy it in.</li>
<li>Right-click on core.a, select Rename and change it to &#8220;libcore.a&#8221;</li>
</ul>
<p>Now we set up the correct building settings:</p>
<ul>
<li>Twirl down C/C++ Build and select Settings</li>
<li>Select &#8220;Additional Tools in Toolchain&#8221;</li>
<li>Check the following:
<ul>
<li>Generate HEX for Flash Memory</li>
<li>Print Size</li>
<li>AVRDude</li>
</ul>
</li>
<li>Uncheck Generate Extended Listing</li>
</ul>
<ul>
<li>Select AVR Compiler
<ul>
<li>Change the command from avr-gcc to avr-g++</li>
</ul>
</li>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/include-path.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-998" title="include path" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/include-path-150x150.png" alt="include path" width="150" height="150" /></a>Select AVR Compiler &gt; Directories
<ul>
<li>Add an Include Path to the header files within the Arduino.app bundle (look at the screenshot)</li>
<li>You can right-click on Arduino.app and select Show Package Contents, then navigate to the Contents/Resources/Java/hardware/cores/arduino folder</li>
</ul>
</li>
</ul>
<ul>
<li>Select AVR Compiler &gt; Debugging
<ul>
<li>Set &#8220;Generate Debugging info&#8221; to &#8220;No debugging info&#8221;</li>
</ul>
</li>
<li>Select AVR Compiler
<ul>
<li>Set the Optimization level to Size Optimizations</li>
</ul>
</li>
</ul>
<ul>
<li>Select AVR Assembler &gt; Debugging
<ul>
<li>Set &#8220;Generate Debugging info&#8221; to &#8220;No debugging info&#8221;</li>
</ul>
</li>
</ul>
<ul>
<li><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/core-lib.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-996" title="core lib" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/core-lib-150x150.png" alt="core lib" width="150" height="150" /></a>Select AVR C Linker &gt; Libraries
<ul>
<li>Add a library named &#8220;core&#8221;</li>
<li>Add a library path. If libcore.a is in the Hello_Blink project folder, the path will be &#8220;${workspace_loc:/Hello_Blink}&#8221;</li>
</ul>
</li>
</ul>
<p><a name="Add_a_new_main.c_source_file"></a></p>
<h3><span class="mw-headline">Add a new main.c source file</span></h3>
<p>This file will contain your typical Arduino sketch code. There are additional bits of code that are typically added automatically by the Arduino IDE which need to be explicitly written in Eclipse. Feel free to copy the below code.</p>
<ul>
<li>Go to File &gt; New&#8230; &gt; C Source File. Name this file main.c</li>
<li>Paste in the following for a basic blink sketch:</li>
</ul>
<pre class="brush: cpp;">
#include &quot;WProgram.h&quot;

// prototypes
void blink(int n, int d);

// variables
int ledPin = 13; // LED connected to digital pin 13

void setup(){
Serial.begin(9600);	// opens serial port, sets data rate to 9600 bps
pinMode(ledPin, OUTPUT);      // sets the digital pin as output
Serial.println(&quot;------------------&quot;);
Serial.println(&quot;   hello world&quot;);
Serial.println(&quot;------------------&quot;);
}

void loop(){

  blink(3, 50); // blink led (n times, ms interval)
  delay(1000); // wait 1 sec
}

void blink(int n, int d){
  for (int i=0; i&lt;n; i++) {
    digitalWrite(ledPin, HIGH);
    delay(d/2);
    digitalWrite(ledPin, LOW);
    delay(d/2);
  }
}

int main(void)
{
init();

setup();

for (;;)
loop();

return 0;
}
</pre>
<p><a name="Building"></a></p>
<h3><span class="mw-headline">Building</span></h3>
<p>When you&#8217;re ready to build and upload to the Arduino, click the Hammer icon. This should compile your program and then run avrdude, which uploads to the Arduino.</p>
<p><a name="New_projects"></a></p>
<h3><span class="mw-headline">New projects</span></h3>
<p>Duplicating a project in Eclipse is as simple as selecting the source project in the Project Explorer panel, copying it (Edit &gt; Copy) then paste. Eclipse will prompt you for a new name , then will create a new, duplicate project in the workspace.</p>
<p>If you keep the blink sketch intact, you should be able to duplicate it each time and avoid the above setup.</p>
<p><a name="Follow_up"></a></p>
<h3><span class="mw-headline">Follow up</span></h3>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/perspectives.png" rel="lightbox[989]"><img class="alignright size-thumbnail wp-image-1000" title="perspectives" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/perspectives-150x100.png" alt="perspectives" width="150" height="100" /></a></p>
<p>You should be all set to work on Arduino projects in Eclipse. Note that Eclipse uses various &#8220;perspectives&#8221; for different modes and programming languages. Typically, you&#8217;ll be working in the C/C++ perspective while working on Arduino code. If you&#8217;d like to switch back to the Java perspective for working with Processing, select it from the perspectives at the upper right of the main window, or Navigate to Window &gt; Open Perspective &gt; Other&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/10/31/arduino-in-eclipse-989/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ITP 1-in-1: bike blinky!</title>
		<link>http://robertcarlsen.net/2009/10/04/itp-1-in-1-bike-blinky-975</link>
		<comments>http://robertcarlsen.net/2009/10/04/itp-1-in-1-bike-blinky-975#comments</comments>
		<pubDate>Sun, 04 Oct 2009 16:07:10 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[itp]]></category>
		<category><![CDATA[1in1]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[blinky]]></category>
		<category><![CDATA[itp30]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[tail light]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=975</guid>
		<description><![CDATA[For the 1-in-1 Project as part of ITP&#8217;s 30th anniversary celebration I over-engineering the simple bicycle blinky light. Why go for a simple, off-the-shelf blinky light when we can build a much more complicated one ourselves?!
I’m creating an animated display, which changes to solid red while braking.
Update: (5:26) It’s been a long night, but it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/blinky_on_bike.png" rel="lightbox[975]"><img class="alignright size-thumbnail wp-image-976" title="blinky_on_bike" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/blinky_on_bike-150x150.png" alt="blinky_on_bike" width="150" height="150" /></a>For the 1-in-1 Project as part of ITP&#8217;s 30th anniversary celebration I over-engineering the simple bicycle blinky light. Why go for a simple, off-the-shelf blinky light when we can build a much more complicated one ourselves?!</p>
<p>I’m creating an animated display, which changes to solid red while braking.</p>
<p>Update: (5:26) It’s been a long night, but it all came together. I wish I could have finished at the floor, but sometimes you need to go to your cave. The bike blinky light is all I could have asked for…it’s obnoxious, it’s animated, it has a handlebar control to switch to a flashing warning mode.<span id="more-975"></span></p>
<p>Context:<br />
<a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/breadboard_matrix.png" rel="lightbox[975]"><img class="alignright size-thumbnail wp-image-977" title="breadboard_matrix" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/breadboard_matrix-150x150.png" alt="breadboard_matrix" width="150" height="150" /></a>I got a package of several 5×8 LED matrix displays early in my first semester on clearance from an online electronics wholesaler. I’ve had aspirations to work them into a project ever since but never got around to it.</p>
<p>Several months ago my bicycle taillight stopped working. I took it apart and found a bad solder joint at the LED, so I fixed it and it was happy for several more weeks before acting up again. Now, I’m betting that it’s just a dead battery, but those coin cells can be expensive!</p>
<p>A (more) reasonable person would just get new batteries…performing an effective mental calculation between cost and safety. I say that’s a fool’s errand! Just build a new one, with a rechargeable lithium battery…and while you’re at it upgrade from one LED to 40!</p>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/matrix_blinky.png" rel="lightbox[975]"><img class="alignright size-thumbnail wp-image-978" title="matrix_blinky" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/10/matrix_blinky-150x150.png" alt="matrix_blinky" width="150" height="150" /></a>I suppose this is from the “because we can” category. Next steps are to build a weatherproof housing, quick-release mounting, serial control for updating the animation and maybe generative graphics or bluetooth…real-time Twitter feed anyone?</p>
<p>Check out the other <a href="http://www.itp30show.org/" onclick="pageTracker._trackPageview('/outgoing/www.itp30show.org/?referer=');">ITP30 1-in-1</a> projects.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/ukhcfbjP7J4&#038;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/ukhcfbjP7J4&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/10/04/itp-1-in-1-bike-blinky-975/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rest of You: Bike Forces</title>
		<link>http://robertcarlsen.net/2009/09/28/rest-of-you-bike-forces-968</link>
		<comments>http://robertcarlsen.net/2009/09/28/rest-of-you-bike-forces-968#comments</comments>
		<pubDate>Mon, 28 Sep 2009 18:47:39 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Rest of You]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=968</guid>
		<description><![CDATA[(note: I&#8217;m awaiting the HR sensor, this is mostly outward forces)
I&#8217;m logging the acceleration forces at the handlebars of my bicycle while riding through New York City. The body has roughly three contact points with a bicycle, the hands at the handlebars, the &#8220;seat&#8221; at the saddle, and the feet at the pedals. The downward [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/09/IMG_0726.jpg" rel="lightbox[968]"><img class="alignright size-thumbnail wp-image-971" title="IMG_0726" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/09/IMG_0726-150x150.jpg" alt="IMG_0726" width="150" height="150" /></a>(note: I&#8217;m awaiting the HR sensor, this is mostly outward forces)</p>
<p>I&#8217;m logging the acceleration forces at the handlebars of my bicycle while riding through New York City. The body has roughly three contact points with a bicycle, the hands at the handlebars, the &#8220;seat&#8221; at the saddle, and the feet at the pedals. The downward force of the rider&#8217;s weight and pedaling force and the upward forces of the bicycle rolling over uneven ground are distributed over these three points. I was interested to see just what kind of forces are &#8220;pushing back&#8221; that I may not be aware of, myself lost in the act of simply keeping the bicycle upright and safely navigating through traffic.</p>
<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/09/handlebar_vibration.png" rel="lightbox[968]"><img class="alignright size-thumbnail wp-image-966" title="handlebar_vibration" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/09/handlebar_vibration-150x150.png" alt="handlebar_vibration" width="150" height="150" /></a>To contextualize the raw accelerometer data I also tracking GPS location and eventually geocoding the raw data in software. The bicycle sensors are being transmitted via Bluetooth to a mobile phone and the data is logged with a custom written (but now <a href="http://github.com/rcarlsen/pyLoggerBT" onclick="pageTracker._trackPageview('/outgoing/github.com/rcarlsen/pyLoggerBT?referer=');">open-source</a>!) python script. Below is the first draft of the visualization.<span id="more-968"></span></p>
<p>I intend to add more sensors to record internal forces to see if there is a physiological response (HR, GSR, breathing, pressure on contact points) to external factors such as speed, traffic / road / weather conditions, time-of-day etc.</p>
<p><a href="http://www.youtube.com/watch?v=2JRuBMMNNgY" onclick="pageTracker._trackPageview('/outgoing/www.youtube.com/watch?v=2JRuBMMNNgY&amp;referer=');">Video demonstration</a> of the initial visualization.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/2JRuBMMNNgY&#038;fs=1" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed src="http://www.youtube.com/v/2JRuBMMNNgY&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/09/28/rest-of-you-bike-forces-968/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>rattle&#8230;</title>
		<link>http://robertcarlsen.net/2009/09/26/rattle-965</link>
		<comments>http://robertcarlsen.net/2009/09/26/rattle-965#comments</comments>
		<pubDate>Sat, 26 Sep 2009 06:09:49 +0000</pubDate>
		<dc:creator>Robert</dc:creator>
				<category><![CDATA[Rest of You]]></category>
		<category><![CDATA[itp]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[bike]]></category>
		<category><![CDATA[datalogging]]></category>
		<category><![CDATA[geocoding]]></category>
		<category><![CDATA[gps]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://robertcarlsen.net/?p=965</guid>
		<description><![CDATA[This is just a teaser for a project I&#8217;ve recently begun, but I had an &#8220;a-ha&#8221; moment when the visualization program finally came together just now and wanted to share&#8230;
This is geocoded accelerometer data from the handlebars of my bicycle on my commute from Greenpoint to ITP in the East Village. The sample at middle of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://robertcarlsen.net/blog/wp-content/uploads/2009/09/handlebar_vibration.png" rel="lightbox[965]"><img class="alignright size-thumbnail wp-image-966" title="handlebar_vibration" src="http://robertcarlsen.net/blog/wp-content/uploads/2009/09/handlebar_vibration-150x150.png" alt="handlebar_vibration" width="150" height="150" /></a>This is just a teaser for a project I&#8217;ve recently begun, but I had an &#8220;a-ha&#8221; moment when the visualization program finally came together just now and wanted to share&#8230;</p>
<p>This is geocoded accelerometer data from the handlebars of my bicycle on my commute from Greenpoint to ITP in the East Village. The sample at middle of the graph, and the red circle on the path coincide. I realized just now that this is a seam in the Williamsburg Bridge. Neat.</p>
<p>I&#8217;ll post proper documentation of the project as it becomes more robust&#8230;but I&#8217;m excited. Waiting for the heart rate monitor interface to arrive&#8230;looking to couple internal status with external events&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://robertcarlsen.net/2009/09/26/rattle-965/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
