<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Tinkerlog</title>
	
	<link>http://tinkerlog.com</link>
	<description>Alex' blog</description>
	<lastBuildDate>Tue, 16 Feb 2010 18:33:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/tinkerlog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="tinkerlog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Remote Accelerometer</title>
		<link>http://tinkerlog.com/2010/02/07/remote-accelerometer/</link>
		<comments>http://tinkerlog.com/2010/02/07/remote-accelerometer/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 15:44:21 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ADXL335]]></category>
		<category><![CDATA[RFM12B]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=915</guid>
		<description><![CDATA[
What is a remote accelerometer? It&#8217;s a tiny device that has a three axis accelerometer and transmit the acceleration values to a remote host. And what is it good for? There are various uses for it. One is you attach the sensor to someone and let him jump around. On your remote machine you can [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/l_DSC_0080.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/s_DSC_0080.JPG" alt="ADXL335 + ATmega328 + RFM12B" title="ADXL335 + ATmega328 + RFM12B" width="480" height="300" class="alignnone size-full wp-image-925" /></a></p>
<p>What is a remote accelerometer? It&#8217;s a tiny device that has a three axis accelerometer and transmit the acceleration values to a remote host. And what is it good for? There are various uses for it. One is you attach the sensor to someone and let him jump around. On your remote machine you can use the data to produce sound or modify music. Think of it as a simplified Wiimote.</p>
<p><span id="more-915"></span></p>
<p>Last year Jan of <a href="http://electronicperformers.org/">electronicperformers.org</a> came to me with the idea to make the jumping of people on a trampoline audible. We thought about it and it seemed to be easy. I tinkered with some <a target="_blank" href="http://www.digi.com/products/wireless/point-multipoint/xbee-series1-module.jsp">XBees</a> and <a target="_blank" href="http://www.analog.com/en/sensors/inertial-sensors/adxl335/products/product.html">ADXL</a> acceleration sensors. They worked quite ok, but we had some trouble with the transmission, which sometimes just stopped for a couple of seconds. Maybe some kind of resetting, I really don&#8217;t know. Here is a video of the installation.</p>
<p><object style="height: 344px; width: 425px"><param name="movie" value="http://www.youtube.com/v/jP24ht-JSfw"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/jP24ht-JSfw" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></object></p>
<p>After that I thought, nice, but can&#8217;t we get it smaller and cheaper? So I sat down and designed a tiny custom PCB.</p>
<h3>Features</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/l_adxl_rfm12.png"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/s_adxl_rfm12.png" alt="ADXL335 + ATmega328 + RFM12B (Schematic)" title="ADXL335 + ATmega328 + RFM12B (Schematic)" width="480" height="330" class="alignnone size-full wp-image-937" /></a></p>
<p>I had already two <a target="_blank" href="http://news.jeelabs.org/docs/jn3.html">JeeNodes</a> laying around. These boards are using a RFM12B transceiver board to communicate with each other. So I decided to use the RFM12B as XBee replacement. They are really cheap, around 3 to 4 Euros.<br />
The device should be Arduino compatible. Mostly because of the ease of development and available libraries.</p>
<ul>
<li><a target="_blank" href="http://www.atmel.com/dyn/products/product_card.asp?PN=ATmega328P">ATmega328P</a>, Arduino compatible microcontroller, running at 8 MHz</li>
<li><a target="_blank" href="http://www.analog.com/en/sensors/inertial-sensors/adxl335/products/product.html">ADXL335</a>, 3 axis accelerometer, +/- 3g</li>
<li><a target="_blank" href="http://www.hoperf.com/rf_fsk/rf_transceiver.htm">RFM12B</a> radio transceiver, 868 MHz, range of up to 100 meters</li>
<li><a target="_blank" href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&#038;name=MCP1702T-3302E/CBCT-ND">MCP1702</a> linear, low-drop voltage regulator for 3.3 V, 250 mA</li>
<li>powered by a 3.7 V lipo cell, 100-300 mA</li>
<li>6 pin ISP header for programming the bootloader</li>
<li>6 pin serial header to attach an FTDI-cable</li>
<li>voltage sensor to tell when the battery goes low</li>
</ul>
<h3>Assembly</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/l_DSC_0067.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/s_DSC_0067.JPG" alt="ADXL335 + ATmega328 + RFM12B" title="ADXL335 + ATmega328 + RFM12B" width="480" height="301" class="alignnone size-full wp-image-928" /></a></p>
<p>This is my second try on SMD. Resistors and capacitors are sized 0805. The controller is TQFP and the ADXL335 is LFCSP. LFCSP has not even pins you can hand solder. A very tiny package. As I had no stencil to place the solder paste (because I still have no laser cutter) I had to place the paste by hand. Pressing hard on the syringe and trying to work precisely at the same time is not that easy. After placing a tiny bubble of paste on every pad and gently placing all components, I heated up my hot-air rework station. Soldering with the hot-air station was easy. Not all components are well aligned, maybe because I used not enough solder paste. Often mis-aligned parts slide into place as soon as the paste gets liquid.<br />
Next were the headers, battery connector and the RFM12B module. These were soldered traditionally with an iron.   </p>
<p>Here is a picture of the back with the RFM12B module. The red wire is the antenna.</p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/l_DSC_0070.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/s_DSC_0070.JPG" alt="ADXL335 + ATmega328 + RFM12B (backside)" title="ADXL335 + ATmega328 + RFM12B (backside)" width="480" height="300" class="alignnone size-full wp-image-927" /></a></p>
<h3>Software</h3>
<p>After having the thing assembled it&#8217;s time to test it out. First is to program the Arduino bootloader. For that you need an ISP programmer. I used the <a target="_blank" href="http://www.adafruit.com/index.php?main_page=product_info&#038;products_id=46">USBtinyISP</a> from adafruit. Simply select the target (Arduino Pro Mini @ 8 MHz w/ ATmega328), programmer and the port in the Arduino IDE and select &#8220;burn bootloader&#8221;. Worked on the first try.<br />
Next is a blink sketch to check if the serial connection and the LED works. It turns out that I used too little solder paste on the controller. After resoldering that pin the LED worked.<br />
Next sketch was to check if the ADXL works correctly, which it did. All three axis seem to work great.<br />
After that I had to get the transceiver working. I took the RFM12 lib from <a target="_blank" href="http://news.jeelabs.org/code/">Jee Labs</a>. You have to download the Ports lib as well to get it running. First I uploaded the RF12demo sketch, which allows to setup the RFM12 module and store the configuration in EEPROM. The module was recognized and configured with no problem at all.</p>
<p>Time to develop the actual firmware. Here is the sketch for the sensor.</p>
<pre name="code" class="c">
// RF12B ADXL sensor
// config D i4 g212 @ 868 MHz

#include "Ports.h"
#include "RF12.h"

int xPin = 0;
int yPin = 1;
int zPin = 2;
int ledPin = 5;
byte buf[6];

void setup() {
  rf12_config();
  pinMode(ledPin, OUTPUT);
}

int x, y, z;
unsigned long time;
byte ledOn;

void loop() {
  rf12_recvDone();
  if (rf12_canSend()) {
    x = analogRead(xPin);
    y = analogRead(yPin);
    z = analogRead(zPin);
    buf[0] = x >> 8;
    buf[1] = x;
    buf[2] = y >> 8;
    buf[3] = y;
    buf[4] = z >> 8;
    buf[5] = z;
    rf12_sendStart(0, buf, 6);
  }
  if (time < millis()) {
    time = millis() + 200;
    if (ledOn) {
      digitalWrite(ledPin, HIGH);
    }
    else {
      digitalWrite(ledPin, LOW);
    }
    ledOn = !ledOn;
  }
}
</pre>
<p>It's really easy. You have to call the rfm12_recvDone() to make sure the driver is still working. You have to call it, even if you are not trying to receive anything. If rfm12_canSend() returns true, we can transmit our data. We read the 3 axis acceleration and pack it into a byte array. This byte array is then transmitted. No more, no less. No acknowledge, nothing. </p>
<p>The receiver part looks almost the same, it receives the data and prints it on the serial port. From here on, you can do almost anything: Processing, Pure Data, Python, what ever fits best. You only have to be able to read a serial port.</p>
<h3>Demo</h3>
<p><object width="490" height="276"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9270103&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=9270103&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="276"></embed></object></p>
<p>For the demo I used Processing to draw a graph of every acceleration value. The red one is a bit hard to see in the video. Then I used Python with <a target="_blank" href="http://www.pyglet.org/">pyglet</a> to play short wave sounds.</p>
<h3>Outlook</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/l_DSC_0077.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/s_DSC_0077.JPG" alt="3 generations of remote accelerometers" title="3 generations of remote accelerometers" width="480" height="299" class="alignnone size-full wp-image-930" /></a></p>
<p>The picture above shows three generations of this device. On the left is the first implementation, using an XBee and an ADXL335, both on breakout boards, wired on a prototyping board. In the middle is the first custom PCB. As you can see, there are two air wires. That happens, when you get distracted while designing a PCB. On the right is the current version.</p>
<p>For the next design I would include an ON/OFF switch so you don't have to pull off the battery all the time. And maybe add a small tactile button to make more Wii-like projects possible.</p>
<h3>Downloads and Links</h3>
<ul>
<li>Eagle files and Arduino sketches, <a href='http://tinkerlog.com/wordpress/wp-content/uploads/2010/02/remote_accell.zip'>remote_accell.zip</a></li>
<li><a target="_blank" href="http://news.jeelabs.org/code/">RFM12 lib</a> at Jee Labs, great stuff!</li>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/MTHYNZn-G-w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2010/02/07/remote-accelerometer/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Palo Altona – Tinker drinkup in Hamburg</title>
		<link>http://tinkerlog.com/2010/01/15/palo-altona-tinker-drinkup-in-hamburg/</link>
		<comments>http://tinkerlog.com/2010/01/15/palo-altona-tinker-drinkup-in-hamburg/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 10:16:30 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[palo altona]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=905</guid>
		<description><![CDATA[
If you&#8217;ve missed Marcus post, here is another on the same topic.
Nearly every other Thursday Marcus and I are hanging out together for having a beer and chatting about all things geek, especially electronics, CNC, 3D-printing, micrcontroller and Arduino. But there&#8217;s no limit, everyone interested in tinkering and making is welcome. It takes place at [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2010/01/tinker-drinkup.jpg" alt="tinker-drinkup" title="Tinker drinkup - Michael and me - with blinking stuff on the table" width="500" height="281" class="alignnone size-full wp-image-906" /></p>
<p>If you&#8217;ve missed <a target="_blank" href="http://interactive-matter.org/2010/01/palo-altona-%e2%80%93-hamburg-tinker-drinkup/">Marcus post</a>, here is another on the same topic.</p>
<p>Nearly every other Thursday Marcus and I are hanging out together for having a beer and chatting about all things geek, especially electronics, CNC, 3D-printing, micrcontroller and Arduino. But there&#8217;s no limit, everyone interested in tinkering and making is welcome. It takes place at <a target="_blank" href="http://www.qype.co.uk/place/5426-Saal-II-Hamburg">Saal II</a> in Schanze. Try us, we&#8217;re kind <img src='http://tinkerlog.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>You can take a look at <a target="_blank" href="http://twitter.com/interactmatter">Marcus&#8217;</a> or <a target="_blank" href="http://twitter.com/9600baud">mine</a> twitterfeed to checkout when the next <a target="_blank" href="http://twitter.com/#search?q=%23palo_altona">#palo_altona</a> will be.</p>
<p>We already had guests sometimes but yesterday&#8217;s drinkup was great as we had <strong>two</strong> new guests. Feels as if there is something moving in Hamburg. Yeah!</p>
<p><b>Update 2010/02/16:</b> Palo Altona is now scheduled biweekly. Every Thursday was a bit stressing for everybody.</p>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/ucL4ZK8j8nE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2010/01/15/palo-altona-tinker-drinkup-in-hamburg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Geeky Advent</title>
		<link>http://tinkerlog.com/2009/12/12/geeky-advent/</link>
		<comments>http://tinkerlog.com/2009/12/12/geeky-advent/#comments</comments>
		<pubDate>Sat, 12 Dec 2009 10:44:23 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[led]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=860</guid>
		<description><![CDATA[
It&#8217;s Advent season. And what do you do to let your geek shine? An LED Advent wreath of course.

The idea came to me after seeing Sprite&#8217;s minimalistic version of the Hackaday&#8217;s Flickering LED circuit. It&#8217;s a simple circuit that flickers LEDs and detects darkness. I thought that this could make a great little Advent wreath. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_00261.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_0026.JPG" alt="LED Advent" title="LED Advent" width="480" height="344" class="alignnone size-full wp-image-879" /></a></p>
<p>It&#8217;s Advent season. And what do you do to let your geek shine? An LED Advent wreath of course.</p>
<p><span id="more-860"></span></p>
<p>The idea came to me after seeing <a target="_blank" href="http://spritesmods.com/?art=minimalism">Sprite&#8217;s minimalistic version</a> of the Hackaday&#8217;s <a target="_blank" href="http://hackaday.com/2008/10/30/flickering-led-circuit/">Flickering LED circuit</a>. It&#8217;s a simple circuit that flickers LEDs and detects darkness. I thought that this could make a great little Advent wreath. My version should have 4 LEDs and should be support first, second, third and fourth Advent. </p>
<h3>Parts and Schematic</h3>
<p><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/advent.png" alt="advent schematic" title="advent schematic" width="490" height="172" class="alignnone size-full wp-image-887" /></p>
<p>The parts list is rather short:</p>
<ul>
<li>ATtiny13V, 8-bit microcontroller, 1k flash RAM, 64 bytes SRAM</li>
<li>4 * 3mm LEDs, yellow or orange, forward voltage ~ 2.0 V</li>
<li>CR2032 coin cell, 3 V, 230 mAh</li>
<li>Paperclip</li>
</ul>
<p>There are no current limiting resistors in this circuit. Normally operating LEDs without them is not advisable because the LEDs will get damaged. But under certain conditions the resistors can be left out. For more on this topic, see <a target="_blank" href="http://spritesmods.com/?art=minimalism&#038;page=2">Sprite&#8217;s computation</a> or mine <a href="http://tinkerlog.com/2009/04/05/driving-an-led-with-or-without-a-resistor/">here</a>.</p>
<h3>How does it work</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_00031.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_0003.JPG" alt="LED Advent wreath" title="LED Advent wreath" width="480" height="342" class="alignnone size-full wp-image-866" /></a></p>
<p>The nice thing about this circuit is, that it needs no special components to detect darkness. It uses an LED for that. An LED is also a photodiode that can detect light of the same wavelength it emits. See <a target="_blank" href="http://www.merl.com/publications/TR2003-035/">here</a> for more details. Sprite used an available ADC of the ATtiny13 instead of the &#8220;Reverse Bias&#8221; method. </p>
<h3>Software</h3>
<p>The software is heavily based on Sprite&#8217;s version. Things I&#8217;ve changed:</p>
<ul>
<li>Added support for four LEDs.</li>
<li>Removed calibration, replaced with hard wired values.</li>
<li>Added a bit sampling to the light measurements, because the values were a bit erratic.</li>
<li>Added a mode for first, second, third and fourth Advent, stored in EEPROM. Gets incremented at every reset.</li>
<li>Modified the watchdog code a bit to keep it generating interrupts instead of resets.
</ul>
<p>After power up, the watchdog gets enabled to generate an interrupt every two seconds. Then the current mode (0-3) is read from EEPROM, incremented and stored back. Then the endless loop is entered, where random values are used to flicker the LEDs. The ISR checks the ambient lighting and if it is higher than a certain level, sets a sleep flag. This flag is monitored in the main loop. If set it sends the controller in to power down mode to save battery power. The next interrupt will wake up the main loop.</p>
<h3>Assembly</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_00191.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_0019.JPG" alt="2nd Advent" title="2nd Advent" width="480" height="343" class="alignnone size-full wp-image-873" /></a></p>
<p>This circuit is soldered in &#8220;free form&#8221;, so no PCBs. It takes some time to get it done but it&#8217;s worth it.<br />
All cathodes of the LEDs are connected to form the ring. The anodes are bent inwards to be soldered to pin 2, 3, 6 and 7 of the ATtiny13. A short piece of wire is connected to the common cathode and soldered to the GND pin.</p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_00131.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_0013.JPG" alt="Dead bug style" title="Dead bug style" width="480" height="344" class="alignnone size-full wp-image-863" /></a></p>
<p>The microcontroller lies &#8220;dead bug&#8221; style on the coin cell. The GND pin is bent to the top, now connecting to GND of the battery. The VCC pin is bent to the bottom and soldered to the coin cell holder. The coin cell holder works as a clip, pressing the microcontroller onto the cell.</p>
<p>Some random notes: </p>
<ul>
<li>Be patient.</li>
<li>Use as less solder as possible.</li>
<li>Don&#8217;t heat the pins of the controller for too long.</li>
<li>Be gentle while bending the controller pins. They come off easily. I added a tiny bit of solder.</li>
<li>BE patient <img src='http://tinkerlog.com/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<h3>The Result</h3>
<p><object width="490" height="276"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8134511&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8134511&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="276"></embed></object></p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_00311.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/DSC_0031.JPG" alt="LED Advent wreath" title="LED Advent wreath" width="480" height="344" class="alignnone size-full wp-image-868" /></a></p>
<p>If you make one, please let me know. Send me a picture or post it on the <a target="_blank" href="http://www.flickr.com/groups/1145324@N23/">tinkerlog flickr pool</a>.</p>
<p>Happy third Advent &#8230; </p>
<h3>Downloads and Links</h3>
<ul>
<li>Source <a href='http://tinkerlog.com/wordpress/wp-content/uploads/2009/12/advent.zip'>advent.zip</a>
<li><a target="_blank" href="http://spritesmods.com/?art=minimalism">Minimalistic flickering LEDs</a> at Spritesmods</li>
<li><a target="_blank" href="http://hackaday.com/2008/10/30/flickering-led-circuit/">Flickering LED circuit</a> at Hackaday
<li><a href="http://evilmadscience.com/component/content/article/155">LED Menorah</a>, also free form at Evil Mad Science</li>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/Njqgm2pf4Bc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/12/12/geeky-advent/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>A retro twitter wall (twypper)</title>
		<link>http://tinkerlog.com/2009/11/20/a-retro-twitter-wall-twypper/</link>
		<comments>http://tinkerlog.com/2009/11/20/a-retro-twitter-wall-twypper/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 18:12:57 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=822</guid>
		<description><![CDATA[
A couple of weeks ago Jan came to me and asked me if I could build a special kind of twitter wall. At our company CoreMedia we do an Open Space every 3 months or so. This time we had a Hacking Day as well, so we needed something special. After throwing some ideas around, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0420.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0420.JPG" alt="Arduino with typewriter" title="Arduino with typewriter" width="480" height="343" class="alignnone size-full wp-image-844" /></a></p>
<p>A couple of weeks ago <a target="_blank" href="http://twitter.com/jtietjen">Jan</a> came to me and asked me if I could build a special kind of twitter wall. At our company <a target="_blank" href="http://www.coremedia.com">CoreMedia</a> we do an <a target="_blank" href="http://en.wikipedia.org/wiki/Open_Space_Technology">Open Space</a> every 3 months or so. This time we had a <a target="_blank" href="https://blog.coremedia.com/cm/post/3077033/RE_SocializeCoreMedia_OpenSpace_am_13_November_2009.html#4634397">Hacking Day</a> as well, so we needed something special. After throwing some ideas around, we came up with a twitter client that should print out tweets with an electric typewriter. A short google showed, that that has been done already (of course!). See it at <a target="_blank" href="http://oomlout.co.uk/?p=79">oomlout</a>.</p>
<p>But that couldn&#8217;t stop us. Jan scanned ebay for a nice electric typewriter and found a Commodore SQ 1000. It was in really good condition, probably rarely used. It worked as advertised.</p>
<p><span id="more-822"></span></p>
<h3>Take it apart</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0320.JPG"><img class="alignnone size-full wp-image-828" title="Take it apart" src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0320.JPG" alt="Take it apart" width="480" height="322" /></a></p>
<p>First step is to take it apart. That reveals a small PCB and the connections of the keyboard. Later I realized that I hadn&#8217;t to open up the keyboard itself, because there is nothing of interest in there. It is a simple keyboard matrix.</p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0319.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0319.JPG" alt="SQ 1000 Mainboard" title="Commodore SQ 1000 Mainboard" width="480" height="344" class="alignnone size-full wp-image-830" /></a></p>
<p>The big chip on the right is a SEC microcontroller. The smaller chips should be there for driving the barrel etc. but I haven&#8217;t investigated that. The green foil in the middle is the connection to the keyboard. Actually there are two connections, each with 8 lines, one for the rows, one for the columns to form a matrix.</p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0325.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0325.JPG" alt="Solder some hook wires" title="Solder some hook wires" width="480" height="343" class="alignnone size-full wp-image-829" /></a></p>
<p>I decided, that the easiest way to simulate key presses was by shorting the switch of the desired key. I soldered two 8 line cables to the solder joints on the bottom side of the PCB. Actually there were 12 lines on one of the connectors, but 4 of these lines are used to drive LEDs for caps lock and power. </p>
<h3>How does it work</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0328.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0328.JPG" alt="Analyze the keyboard" title="Analyze the keyboard" width="480" height="322" class="alignnone size-full wp-image-827" /></a></p>
<p>Putting everything back in to place I tried to understand, how the keyboard matrix works. Very helpful was <a target="_blank" href="http://www.avr-asm-tutorial.net/avr_en/keypad/keyboard.html">this tutorial</a>, that connects a keypad to an AVR. </p>
<p>All 16 lines are directly connected to the controller, no external pull-up or pull-down resistors. As already said, the 16 lines are arranged to form a 8 by 8 matrix, giving 64 possible key codes. 8 lines are supplying 5V (called out) and the other 8 lines are low (called in).  The controller then cycles through all out lines, pulling it down, one at a time. Then it checks if one of the in lines is pulled to low to identify the pressed key.<br />
To simulate the key press I have to wait for low on a specific out line and then pull one of the in lines low. I used my oscilloscope to see what&#8217;s really going on. It turns out that the controller scans for key strokes with 87 Hz. Every line is low for about 150 us. I used the Arduino to record the sequence and calculate how wide the low phase is. When I would find a low on line 1 of the out line, I could use it as trigger and compute when the other lines would be pulled down. That way I would only use a single wire (and Arduino input) to detect the out line.<br />
To set a specific in line to low I am using a 74HC595, a shift register with tristate output. The tristate is nice, because if it is disabled, the keyboard is fully functional as if the Arduino is not connected at all.</p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0421.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0421.JPG" alt="Arduino interfaced with Commodore SQ1000" title="Arduino interfaced with Commodore SQ1000" width="480" height="344" class="alignnone size-full wp-image-838" /></a></p>
<p>Here is everything connected on a breadboard. On the left is a standard Arduino with an Ethernet Shield.</p>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0423.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0423.JPG" alt="Arduino, Ethernetshield and a shift register 74HC595" title="Arduino, Ethernetshield and a shift register 74HC595" width="480" height="343" class="alignnone size-full wp-image-836" /></a></p>
<p>On the right is the shift register. In the middle is a pull up resistor connected to line 1 of the out lines. That is used to be able to &#8220;see&#8221;, when the line goes down.</p>
<h3>Reading twitter</h3>
<p>The software part to connect to twitter is straight forward. I used the <a target="_blank" href="http://apiwiki.twitter.com/Twitter-Search-API-Method%3A-search">twitter search API</a> to pull tweets that contained the word #cos09, which was the hashtag used at the CoreMedia Open Space. The query is executed every 60 seconds and the query string looks like this:<br />
<code><br />
http://search.twitter.com/search.json?q=cos09&#038;since_id=0<br />
</code><br />
Parsing the json formatted response is a bit ugly, mostly because memory is very limited on the ATmega168. After fetching and parsing a complete response, the max_id is stored and used for the next query. That way only new tweets are printed. </p>
<h3>Demo</h3>
<p><object width="490" height="276"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7645230&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=7645230&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="276"></embed></object></p>
<p>So far everything worked well, except the hash sign (#), the @ and &#8230; umlauts (*sigh*). The hash sign is not available because it only accessible by pressing the code key simultaneously, which is not possible with the current setup. The @ is not available at all, I simulate it by the sequence O-backspace-a. Umlauts are missing because &#8230; I&#8217;m lazy. </p>
<h3>Final twitter wall setup</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/l_DSC_0013.JPG"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/s_DSC_0013.JPG" alt="Final setup at CoreMedia Open Space" title="Final setup with camera and projector" width="480" height="343" class="alignnone size-full wp-image-837" /></a></p>
<p>This is the setup as twitter wall. On the right is a video camera, recording incoming tweets and displaying them via a projector on the wall. The notebook is only bridging WiFi to Ethernet.</p>
<p>After all, the retro twitter wall was fairly successful. People stood around with a smile, tweeting with their iPhone, waiting for an intense &#8220;rattatatat rattatat &#8230;&#8221;.</p>
<p><object style="height: 344px; width: 425px"><param name="movie" value="http://www.youtube.com/v/CV9_25N21eM"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><embed src="http://www.youtube.com/v/CV9_25N21eM" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></object></p>
<p>Here is another action shot, taken by <a href="http://www.jormason.com/wordpress/?p=409">Jörn</a>.</p>
<h3>Links and Downloads</h3>
<ul>
<li>Source: <a href='http://tinkerlog.com/wordpress/wp-content/uploads/2009/11/twypper.zip'>twypper.zip</a></li>
<li><a href="http://oomlout.co.uk/?p=79">Twitter Monitoring Typewriter at oomlout</a></li>
<li><a target="_blank" href="http://www.avr-asm-tutorial.net/avr_en/keypad/keyboard.html">Connecting a keypad to an AVR</a></li>
<li><a target="_blank" href="http://www.dribin.org/dave/keyboard/one_html/">Keyboard Matrix Help</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/UYw5VLZ5wy8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/11/20/a-retro-twitter-wall-twypper/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Synchronizing audible fireflies</title>
		<link>http://tinkerlog.com/2009/10/30/synchronizing-audible-fireflies/</link>
		<comments>http://tinkerlog.com/2009/10/30/synchronizing-audible-fireflies/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 09:35:15 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[led]]></category>
		<category><![CDATA[firefly]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=818</guid>
		<description><![CDATA[
Niklas did an amazing job, letting fireflies play some tunes. It&#8217;s almost as if they are alive.
Niklas, I owe you a beer (or Club-Mate or whatever), should we ever met. You made my day!
]]></description>
			<content:encoded><![CDATA[<p><object width="490" height="368"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5916130&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5916130&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="368"></embed></object></p>
<p>Niklas did an <a target="_blank" href="http://petterniklas.wordpress.com/2009/08/04/synchronizing-soundflies/">amazing job</a>, letting <a href="http://tinkerlog.com/howto/synchronizing-firefly-how-to/">fireflies</a> play some tunes. It&#8217;s almost as if they are alive.</p>
<p>Niklas, I owe you a beer (or Club-Mate or whatever), should we ever met. You made my day!</p>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/Cy-nI8-bwGM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/10/30/synchronizing-audible-fireflies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>LiPoly charging with MCP73833</title>
		<link>http://tinkerlog.com/2009/09/19/lipoly-charging-with-mcp73833/</link>
		<comments>http://tinkerlog.com/2009/09/19/lipoly-charging-with-mcp73833/#comments</comments>
		<pubDate>Sat, 19 Sep 2009 12:08:32 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[lipo]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=802</guid>
		<description><![CDATA[
For my latest projects I used a lot of single cell lipo batteries. They are really nice. High power density, low self-discharge, no memory effect and they can deliver quite an amount of current.
But lipo battery handling is a bit more complicated as with other rechargeable batteries. You have to take care of under voltage [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/09/l_dsc_0100.jpg"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/09/dsc_0100.jpg" alt="" title="Lipo charging with MCP73833" width="490" height="351" class="alignnone size-full wp-image-807" /></a></p>
<p>For my latest projects I used a lot of single cell lipo batteries. They are really nice. High power density, low self-discharge, no memory effect and they can deliver quite an amount of current.<br />
But lipo battery handling is a bit more complicated as with other rechargeable batteries. You have to take care of under voltage and over charging as that may destroy the battery.</p>
<p>I used the <a target="_blank" href="http://www.sparkfun.com/commerce/product_info.php?products_id=726">Sparkfun LiPoly charger</a>, based on <a target="_blank" href="http://pdfserv.maxim-ic.com/en/ds/MAX1551-MAX1555.pdf">MAX1555</a>, for some time and it works really well. The only thing I missed was a way to control the current. After some research I decided to try another chip, the <a target="_blank" href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en027785">Microchip MCP73833</a>.</p>
<p><span id="more-802"></span></p>
<h3>Features of the MCP73833</h3>
<p>Copied from the specs:</p>
<ul>
<li>High accuracy preset output voltage regulation</li>
<li>Regulated output voltage options</li>
<li>User-programmable charge current up to 1A</li>
<li>Two open-drain Status outputs</li>
<li>Preconditioning and end-of-charge ratio options</li>
<li>Under-voltage lockout</li>
<li>Power Good output</li>
</ul>
<p>What I like is the ability to adjust the charging current and the status outputs, which should get really useful if integrated into a greater application.</p>
<h3>The schematic</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/09/l_charger.png"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/09/s_charger.png" alt="" title="s_charger" width="497" height="327" class="alignnone size-full wp-image-803" /></a></p>
<p>The schematic is mostly a copy of the reference design. It has three LEDs, one for <em>power good</em>, one for <em>charging</em> and one for <em>charging complete</em>. All pins of the chip itself are also available on two header rows. The idea was to enable easy integration on a breadboard. Actually I misplaced the rows, so they don&#8217;t fit (#fail).</p>
<p>The resistor R4 is used to control the charge current. I used a socket for that, so I am able to adapt the current for different batteries. The 10k resistor results in a charge current of 100 mA.</p>
<h3>The result</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/09/l_dsc_0072.jpg"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/09/dsc_0072.jpg" alt="" title="MCP73833 breakout board" width="490" height="351" class="alignnone size-full wp-image-806" /></a></p>
<p>All components were 0805 SMD parts, despite the MCP73833, which is 10-MSOP. This was my first attempt to do something useful with SMD. I used my brand new hot air reflow station, which turns out to work as expected. Only I had to be very precise at dosing the solder paste. Applying too much had to be removed with solder wick later on. </p>
<h3>Issues</h3>
<p>The next version should include a jack for a wall adapter. The two header pins are not really useful to connect to a power supply. And of course the two rows of header pins should be aligned correctly to fit on a breadboard.</p>
<p>As a sidenote: as you see, the board has a mini-USB connector to be able to connect the charger to a notebook.<br />
<strong>I stronly recommend to use some kind of USB hub to test any newly build USB hardware.</strong><br />
I didn&#8217;t. And now I have a burned first prototype of my charger and only one USB port left on my MacBook. Although the OS warned me with &#8220;something is sucking too much, port gets shut down&#8221;, it wasn&#8217;t fast enough. So, you have been warned.</p>
<h3>Links</h3>
<ul>
<li><a target="_blank" href="http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en027785">Microchip MCP73833</a></li>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/DUzrw913oRA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/09/19/lipoly-charging-with-mcp73833/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Tiny Braitenberg vehicle</title>
		<link>http://tinkerlog.com/2009/07/24/tiny-braitenberg-vehicle/</link>
		<comments>http://tinkerlog.com/2009/07/24/tiny-braitenberg-vehicle/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 13:05:25 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[braitenberg]]></category>
		<category><![CDATA[robot]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=783</guid>
		<description><![CDATA[
Again a Braitenberg vehicle. This one is even smaller, than the previous one and comes on a custom PCB. It weighs 17 gramms, is driven by two pager motors, powered by a small lipo cell and controlled by an 8-pin ATtiny25V.

Schematic and parts

This tiny robot has a very low component count. At least for a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/l_dsc_0022.jpg"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/s_dsc_0022.jpg" alt="" title="Tiny Braitenberg vehicle" width="480" height="343" class="alignnone size-full wp-image-787" /></a></p>
<p>Again a <a target="_blank" href="http://en.wikipedia.org/wiki/Braitenberg_vehicle">Braitenberg vehicle</a>. This one is even smaller, than the <a target="_blank" href="http://tinkerlog.com/2009/06/07/mini-braitenberg-vehicle/">previous one</a> and comes on a custom PCB. It weighs 17 gramms, is driven by two pager motors, powered by a small lipo cell and controlled by an 8-pin ATtiny25V.</p>
<p><span id="more-783"></span></p>
<h3>Schematic and parts</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/l_tiny_sch.png"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/s_tiny_sch.png" alt="" title="Tiny Braitenberg schematic" width="484" height="246" class="alignnone size-full wp-image-791" /></a></p>
<p>This tiny robot has a very low component count. At least for a robot, based on a microcontroller. That has, of course, some implications. It can handle only two sensors and the motors run only in one direction. A full <a target="_blank" href="http://www.robotroom.com/BipolarHBridge.html">H-bridge</a> for both motors would need 8 transistors and more lines to control it.</p>
<p>So I decided to just use a single transistor to drive the motor. That means it can only run forward. Not a big deal for a Braitenberg vehicle.</p>
<p>Here is the parts list. Most parts are very common.</p>
<ul>
<li>ATtiny25V, 2 kB flash RAM, <a target="_blank" href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&#038;name=ATTINY25V-10PU-ND">ATTINY25V-10PU-ND</a></li>
<li>MPC1700 3.3 voltage regulator, <a target="_blank" href="http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&#038;name=MCP1700-3302E/TO-ND">MCP1700-3302E/TO-ND</a></li>
<li>2 * light dependent resistors (LDR)</li>
<li>2 * 10 kOhm resistor</li>
<li>2 * 470 Ohm resistor</li>
<li>2 * 2n3904 transistor</li>
<li>2 * 1n4148 diode</li>
<li>100n capacitor</li>
<li>100u capacitor</li>
<li>Lithium-polymer battery, 3.7 V, 100mAh, <a target="_blank" href="http://www.hobbycity.com">HobbyCity</a></li>
<li>2 * fuse holder</li>
<li>2 * pager motor</li>
<li>heat shrink tubes</li>
<li>rubber tube</li>
<li>custom PCB</li>
<li>6-pin ISP header</li>
</ul>
<p>A bit tricky was to find the right rubber tube to build the wheels. I found <a target="_blank" href="http://www.hobby-lobby-modellbau.com/onlineshop/product_info.php/info/p1525_Robbe-Kupplungsschlauch----1-1386.html">these</a>, which are normally used to connect tiny motors to a model stern tube. Because the inner diameter is a bit to wide, I used short pieces of cable isolation as an adaptor.</p>
<p>If you have pager motors with an attached weight on their shaft, you may want to take a look at the<a target="_blank" href="http://www.robotroom.com/TinyMotor.html"> RobotRoom</a> for instruction on how to get rid of the weights. I had no locking pliers, maybe that&#8217;s the reason why I ruined at least three motors. Mostly by twisting the shaft while trying to pull off the weight.</p>
<h3>Software and programming</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/l_dsc_0025.jpg"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/s_dsc_0025.jpg" alt="" title="Braitenberg vehicles" width="480" height="344" class="alignnone size-full wp-image-788" /></a></p>
<p>The software is straigt forward. Reading two inputs, the light sensors, and driving two ouput lines accordingly with a PWM signal. </p>
<p>But it turns out, that the software needs a lot of adjustments. First you have to figure out in what range the light sensors report values. Next, check at what PWM level the robot starts to move. Maybe even adjust the directional stability.</p>
<p>Programming the robot in circuit via the 6-pin ISP header didn&#8217;t work out in the first place. The programmer was not able to set the lines to high that were driving the transistors. So I soldered a socket in place and can now pull off the two 470 Ohm resistors. After programming I can re-insert the resistors. Can be seen on the left critter on the picture above. A bit awkward, but it works. </p>
<h3>Demo</h3>
<p><object width="490" height="282"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5664333&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5664333&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="282"></embed></object></p>
<p>You should have a very clean surface for them to run on. If you put them on a table, as I did, be sure to have very good reflexes or put a kind of fence around them. Mine dropped off the table a couple of times. Mostly no dramatic damage, but the sensors got twistet and the motors sprung out of their holders.</p>
<p>Depending on the ambient light, the light source itself and the nature of the surface you may have to adjust the light sensors. As an example, if the surface is white and diffuses the light, then you would have to bend the sensors away from the surface, because the surface looks bright, even if the robot turns away from the light source.</p>
<h3>Issues and conclusion</h3>
<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/l_dsc_0029.jpg"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/s_dsc_0029.jpg" alt="" title="Braitenberg vehicle with pager motors" width="480" height="344" class="alignnone size-full wp-image-789" /></a></p>
<p>There are still a couple of issues to resolve. </p>
<ul>
<li>Software improvements, use ADC in free running mode and use hardware PWM to drive the motors</li>
<li>Place the skid in the middle of the PCB.</li>
<li>There is no protection of deep discharging the battery, no idea how to solve this.</li>
<li>Add a small power switch.</li>
</ul>
<p>Someone wanting to volunteer for some private beta testing and helping with improvements?</p>
<p>Besides these issues, these two critters are fun. There was a lot of testing, reprogramming and re-adjustment needed, to get them doing, what I thought they should do. But hey, that&#8217;s the way to learn something.</p>
<h3>Links and downloads</h3>
<ul>
<li><a href="http://tinkerlog.com/2009/06/07/mini-braitenberg-vehicle/">Braitenberg vehicle with Arduino mini</a></li>
<li><a href="http://tinkerlog.com/2009/04/18/arduino-powered-braitenberg-vehicle/">Arduino powered Braitenberg vehicle</a></li>
<li><a target="_blank" href="http://warrantyvoidifremoved.com/formica">Formica</a>, swarm bots</li>
<li>Source code and Eagle CAD files, really BETA, <a href='http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/tiny_braitenberg.zip'>tiny_braitenberg.zip</a>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/cNloZu-y2qw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/07/24/tiny-braitenberg-vehicle/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Arduino introduction in c’t</title>
		<link>http://tinkerlog.com/2009/07/21/arduino-introduction-in-ct/</link>
		<comments>http://tinkerlog.com/2009/07/21/arduino-introduction-in-ct/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 22:55:50 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=773</guid>
		<description><![CDATA[
Here is my very first article. It is published in c&#8217;t, one of the best known computer magazines in Germany. wOOt!
It shows some basic Arduino examples and how to build a Wiimote-like controller. The controller consists of an 3-axis accelerometer, a push button and an Arduino nano on a breadboard. This combination is used to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/dsc_0037.jpg" alt="" title="c&#039;t Arduino article " width="480" height="322" class="alignnone size-full wp-image-774" /></p>
<p>Here is my very first article. It is published in <a target="_blank" href="http://www.heise.de/ct/inhalt/2009/16/164/">c&#8217;t</a>, one of the best known computer magazines in Germany. wOOt!</p>
<p>It shows some basic <a target="_blank" href="http://arduino.cc">Arduino</a> examples and how to build a Wiimote-like controller. The controller consists of an 3-axis accelerometer, a push button and an Arduino nano on a breadboard. This combination is used to control a Lunar Lander type of game, programmed in <a target="_blank" href="http://processing.org/">Processing</a>.</p>
<ul>
<li>c&#8217;t article <a target="_blank" href="http://www.heise.de/ct/Mikrocontroller-Programmierung-mit-Arduino--/artikel/142053">Shake, rattle &#8216;n&#8217; roll, as full text</a></li>
<li><a target="_blank" href="http://www.heise.de/ct/projekte/machmit/processing/wiki">wiki</a> with more images, links and downloads</li>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/CJwBeb-YHp4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/07/21/arduino-introduction-in-ct/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Resistor cheat sticker</title>
		<link>http://tinkerlog.com/2009/07/05/resistor-cheat-sticker/</link>
		<comments>http://tinkerlog.com/2009/07/05/resistor-cheat-sticker/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 08:56:45 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[misc]]></category>
		<category><![CDATA[sticker]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=764</guid>
		<description><![CDATA[
While we were at cheating, here is a new sticker for your notebook. It helps you to read and learn resistor values.
The first 10 direct messages to me will get one for free. And of course every next order at the Tinker Store will include one of these.  
]]></description>
			<content:encoded><![CDATA[<p><a href="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/l_dsc_0016.jpg"><img src="http://tinkerlog.com/wordpress/wp-content/uploads/2009/07/s_dsc_0016.jpg" alt="" title="Resistor cheat sticker" width="480" height="344" class="alignnone size-full wp-image-766" /></a></p>
<p>While we were at <a target="_blank" href="http://tinkerlog.com/2009/06/18/microcontroller-cheat-sheet/">cheating</a>, here is a new sticker for your notebook. It helps you to read and learn resistor values.</p>
<p>The first 10 direct messages to <a target="_blank" href="http://twitter.com/9600baud">me</a> will get one for free. And of course every next order at the <a href="http://store.tinkerlog.com/store/">Tinker Store</a> will include one of these.  </p>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/ggyq10Oxn0E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/07/05/resistor-cheat-sticker/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>64 Synchronizing Fireflies</title>
		<link>http://tinkerlog.com/2009/06/25/64-synchronizing-fireflies/</link>
		<comments>http://tinkerlog.com/2009/06/25/64-synchronizing-fireflies/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 09:27:09 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[avr]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[simulation]]></category>
		<category><![CDATA[firefly]]></category>

		<guid isPermaLink="false">http://tinkerlog.com/?p=760</guid>
		<description><![CDATA[
Last week I invested some time to solder 64 Firefly boards. Only 2.432 solder joints later I was ready for some videos. 
Every firefly acts completely autonomously, it has its own tiny controller, eye and luminary. They are all connected for power supply only. 

Here are some different configurations. 



Links

See how it&#8217;s done in the [...]]]></description>
			<content:encoded><![CDATA[<p><object width="490" height="282"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5317886&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5317886&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="282"></embed></object></p>
<p>Last week I invested some time to solder 64 <a target="_blank" href="http://tinkerlog.com/howto/synchronizing-firefly-how-to/">Firefly</a> boards. Only 2.432 solder joints later I was ready for some videos. </p>
<p>Every firefly acts completely autonomously, it has its own tiny controller, eye and luminary. They are all connected for power supply only. </p>
<p><object width="490" height="282"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5318234&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5318234&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="282"></embed></object></p>
<p>Here are some different configurations. </p>
<p><span id="more-760"></span></p>
<p><object width="490" height="282"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5318396&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5318396&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="282"></embed></object></p>
<p><object width="490" height="282"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=5318548&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=5318548&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="490" height="282"></embed></object></p>
<h3>Links</h3>
<ul>
<li>See how it&#8217;s done in the <a href="http://tinkerlog.com/howto/synchronizing-firefly-how-to/">Synchronizing Firefly Howto</a></li>
<li>Grab a <a href="http://store.tinkerlog.com/store/index.php?main_page=product_info&#038;cPath=2&#038;products_id=2">Firefly kit</a> at the Tinker Store</li>
</ul>
<img src="http://feeds.feedburner.com/~r/tinkerlog/~4/SxlPJy-htkY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://tinkerlog.com/2009/06/25/64-synchronizing-fireflies/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>
