<?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>Just Push Buttons</title>
	<atom:link href="http://justpushbuttons.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://justpushbuttons.com/blog</link>
	<description>...When all else fails</description>
	<lastBuildDate>Sat, 19 May 2012 23:53:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Salvaging a Brother printer&#8217;s LCD</title>
		<link>http://justpushbuttons.com/blog/?p=263</link>
		<comments>http://justpushbuttons.com/blog/?p=263#comments</comments>
		<pubDate>Sat, 19 May 2012 23:53:11 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=263</guid>
		<description><![CDATA[I&#8217;ve recently acquired a few printers for salvaging the stepper motors out of them. In taking one apart (specifically a Brother MFC-5860CN), I found that the LCD had a 6 pin ribbon cable connected to it. I figured it wouldn&#8217;t be too hard to figure out the communication protocol and talk to it so I <a href='http://justpushbuttons.com/blog/?p=263' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently acquired a few printers for salvaging the stepper motors out of them. In taking one apart (specifically a Brother MFC-5860CN), I found that the LCD had a 6 pin ribbon cable connected to it. I figured it wouldn&#8217;t be too hard to figure out the communication protocol and talk to it so I gave it a shot. Well it wasn&#8217;t <em>too</em> hard, but it did take some time and effort.</p>
<p style="text-align: center;"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120504_234225.jpg"><img class="aligncenter  wp-image-320" title="Brother LCD Hacking - Cover image" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120504_234225.jpg" alt="Brother LCD Hacking" width="695" height="522" /></a></p>
<p>I picked up an <a title="Open Workbench Logic Sniffer" href="http://www.seeedstudio.com/depot/open-workbench-logic-sniffer-p-612.html?cPath=174" target="_blank">Open Workbench Logic Sniffer</a> from <a title="SeeedStudio" href="http://www.seeedstudio.com" target="_blank">SeeedStudio</a>. This is a pretty useful tool for the price.  I had only seen someone work with a logic analyzer before so I had to do some learning before I could start to use it. If you end up getting one, I found <a title="logic analyzer documentation" href="http://dangerousprototypes.com/docs/Open_Bench_Logic_Sniffer">this page</a> to be a pretty good documentation hub. I also watched some youtube videos about how to use it which were only somewhat helpful.</p>
<p>After acquiring a passing knowledge of how to use the logic analyzer, I needed a way to get to the logic signals from the tiny connector. So&#8230; this happened:</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120219_222920.jpg"><img class="aligncenter size-large wp-image-271" title="connections to connector" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120219_222920-1024x768.jpg" alt="LCD connections to connector" width="695" height="521" /></a></p>
<p>This wasn&#8217;t as hard as it could have been, but was still pretty hard especially since some of the wires fell off several times and I had to re-solder them in between the other wires without accidentally desoldering the other wires. And then, I attached some <a title="wire clippies!" href="http://www.sparkfun.com/products/9741" target="_blank">wire clippies</a> to the wires above and to a breadboard where my logic analyzer was plugged in:</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120219_222855.jpg"><img class="aligncenter size-large wp-image-274" title="Logic analyzer connected to the LCD" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120219_222855-1024x768.jpg" alt="Logic analyzer connected to the Brother printer LCD" width="695" height="521" /></a></p>
<p>Great, so everything was plugged in and ready to figure out. But what exactly was I trying to figure out:</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120219_221014.jpg"><img class="aligncenter size-large wp-image-276" title="Please Wait" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120219_221014-1024x768.jpg" alt="Brother printer LCD character display" width="695" height="521" /></a></p>
<p>In case you can&#8217;t read upside down and backwards, it says &#8220;Please Wait&#8221;. I needed to figure out how it was sending those words over the 6 wires that the LCD was connected with. So then I connected my logic analyzer to my computer and started capturing data. The logic analyzer only captures logic for a short window of time, and the message seen above only appears on the screen for about 2 seconds so I had to be quick and precise. I would plug the printer in, then wait a second or so, and then hit capture on the logic analyzer software. This was not easy. After struggling for about an hour I finally got something that looked like the data I was looking for, but I wasn&#8217;t sure.</p>
<p style="text-align: center;"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/big-capture.jpg"><img class="aligncenter size-full wp-image-299" style="border: 1px solid #999;" title="data" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/big-capture.jpg" alt="capture data" width="509" height="309" /></a></p>
<p>The logic analyzer software has options to analyze I2C, SPI, and a bunch of other types of logic. I was pretty sure that it was either I2C or SPI, but I didn&#8217;t know which one, and I didn&#8217;t know enough about either one to figure it out. I was finally to the point in my electronics hobbiest career where I had to learn I2C and SPI. I had a feeling that it was using I2C so I started with that.</p>
<p>A quick Google search of &#8220;I2C&#8221; lead me to <a title="I2C tutorial" href="http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html" target="_blank">this tutorial</a>, and after a bit of reading I felt I had a pretty good understanding of the bus. Since I felt like the data was I2C, I decided to wait on learning the SPI bus. However looking back at and analyzing the logic capture file that I had saved, I realized that the software wasn&#8217;t analyzing the data as anything readable and there was a mysterious line that would go logic low when the data was sent. It was time to stop being lazy and learn SPI (which, in the end, wasn&#8217;t really that difficult).</p>
<p>Another quick Google search of &#8220;spi tutorial&#8221; lead me to a couple of tutorials (<a title="SPI tutorial numba 1" href="http://www.best-microcontroller-projects.com/spi-interface.html" target="_blank">first one</a>, <a title="SPI tutorial numba 2" href="http://www.eetimes.com/discussion/beginner-s-corner/4023908/Introduction-to-Serial-Peripheral-Interface" target="_blank">second one</a>). Turns out that mysterious line that would go logic low when data was sent was the slave select line. Plugging what I learned into the logic analyzer software and tweaking the settings a bit led me to a really geeky point in my life. I saw the following on the screen and was more excited than I&#8217;d like to admit:</p>
<p style="text-align: center;"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/please-wait.jpg"><img class="aligncenter  wp-image-302" title="please wait" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/please-wait.jpg" alt="spi analyzer showing please wait" width="641" height="521" /></a></p>
<p>&#8220;Please Wait&#8221; it said. I had learned the language of the LCD. It was using SPI! Now it was time to rig up my arduino to talk to the LCD. So then I did this:</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120308_205010.jpg"><img class="aligncenter size-large wp-image-280" title="Arduino to LCD connector" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/04/IMG_20120308_205010-1024x768.jpg" alt="Arduino to LCD connector" width="695" height="521" /></a></p>
<p>Don&#8217;t worry, this isn&#8217;t the same connector from before that I soldered wires to for use with the logic analyzer (you were worried weren&#8217;t you). Luckily I had a similar Brother printer that used the same LCD and connector. I desoldered the connector from that printer very carefully since it&#8217;s mostly made of plastic and plastic tends to melt when you poke it with a soldering iron. Then I soldered on some wires and plugged it in to a breadboard with a 16MHz/5v <a title="Arduino Pro Mini from Sparkfun" href="http://www.sparkfun.com/products/11113" target="_blank">Arduino pro mini</a> on it. And then, I wrote some code using the <a title="Arduino SPI library" href="http://arduino.cc/en/Reference/SPI" target="_blank">SPI library</a> to recreate what I was seeing on the logic lines. And then, I wired everything up and uploaded the code&#8230; And then it didn&#8217;t work.</p>
<p>My best guess was that, even though I was dividing the clock frequency by 128, 125kHz (16MHz / 128) was just too fast for the little LCD. hrm. Measuring the wavelength of the clock signal in the logic analyzer software showed me that the printer was sending data at 33kHz-ish. I had a 4.096MHz crystal lying around which, with the same setup, would get me to 32kHz. Close enough. I busted out my DIP Atmega328P, wired it up with the crystal, wired it to my Pocket Programmer, plugged it in, tried to program it, remembered that for some reason the pocket programmer only works with the old version of the arduino software, opened arduino version 22, sucessfully programmed the Atmega, and&#8230; no luck. Now I was really confused.</p>
<p>My best guess now was that I missed something when looking at the logic. Maybe there was something required at start up for the LCD to work. But I wasn&#8217;t about to try and get the timing perfect by plugging in the printer manually and manually clicking capture. That was ridiculous last time, and it took way too long to find the window of logic where the communication was happening. If I tried that method again, frustration and anger would happen, and something might be destroyed. I previously had an idea that I could use my controllable power outlet and some Java code to automate the process of plugging the printer in and pressing the capture button on the logic analyzer software.</p>
<p>I figured I could use some keyboard simulation to press the enter key with focus on the capture button, and that didn&#8217;t turn out to be very hard at all. I found that Java&#8217;s Robot class made it really easy to simulate the enter key being pressed. Now I needed to figure out how to connect to a device on a COM port, and read from it. This device would be an arduino connected to my controllable power outlet. However, doing this in Java turned out to be not so easy. In fact, apparently this is no longer supported in Java. That sucks. Now what to do.</p>
<p>I&#8217;d heard of people connecting to their arduinos using Python, but before I could try that I had to relearn Python. The version of Python for windows comes with a very in depth help tutorial, which I read for a couple of hours. Once I was familiar enough to do some basic tasks I started diving into python libraries. I quickly found <a title="PySerial" href="http://pyserial.sourceforge.net/index.html" target="_blank">PySerial</a> (<a title="pyserial download" href="http://sourceforge.net/projects/pyserial/" target="_blank">download</a>) which would make it relatively easy to connect to a COM port and do read/write operations. Then after looking through a couple of other libraries I found <a title="pywin32" href="http://sourceforge.net/projects/pywin32/" target="_blank">one that would do keyboard simulation</a> (<a title="usage of pywin32" href="http://www.blog.pythonlibrary.org/2010/07/16/python-and-microsoft-office-using-pywin32/" target="_blank">tutorial</a>).</p>
<p>I combined some proof of concept python scripts and created a script that would allow you to specify waiting times (in milliseconds) for the turning on of the power outlet and the pressing of the enter button. By changing these times (mostly just the power outlet time) I was able to capture data from right after the printer was turned on. There ended up being nothing really useful there, however I kept playing and found a set of wait times that would capture the beginning of the data transmission (which I had seen before when I found it manually). Looking more closely at this logic, I found a sequence of numbers (13, 72 ,9) being sent before each transmission. When I uploaded the program with this sequence of numbers at the beginning of the transmission and did some rewiring it said &#8220;Hi&#8221;.</p>
<div id="attachment_314" class="wp-caption aligncenter" style="width: 705px"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120409_222342.jpg"><img class=" wp-image-314" title="controllable power outlet setup" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120409_222342.jpg" alt="logic learner" width="695" height="522" /></a><p class="wp-caption-text">the controllable power outlet setup</p></div>
<p>I had done it! I successfully reverse engineered the LCD. I turned it on and off a couple of times, dragged my wife over to show her my accomplishment, and then realized that there was something wrong. Occasionally when I turned it on, the letters would smear down so that there were ugly lines showing on the screen instead of the text that was supposed to be showing. It was great that I had figured out how to make something show on the screen, but I wasn&#8217;t finished. This project was not complete (are you tired of reading yet?).</p>
<div id="attachment_318" class="wp-caption aligncenter" style="width: 705px"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120429_210638.jpg"><img class=" wp-image-318" title="LCD with lines in screen" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120429_210638.jpg" alt="Brother LCD lines in screen" width="695" height="522" /></a><p class="wp-caption-text">&quot;Hello World?&quot; being smeared down the screen</p></div>
<p>My first guess this time was that there was noise in the lines and I needed some filtering caps. After looking at the PCB from the printer, I found that there were some capacitors on there that I had missed when recreating the circuit. So then, I measured the values with a multimeter and found some lying around that had the same value. But inserting these capacitors into my circuit did not fix the problem.</p>
<p>In my original measurements to figure out the ground and power lines of the LCD, I had found that there were 2 lines that read as 5v which were pin 1 and pin 3. I had previously noticed that with only pin 1 connected to 5v the LCD would not work at all, so I had connected pins 1 and 3 together so that they were both at 5v. This was my current setup. I tried the only other option of connecting only pin 3 to 5v, and voila!, the LCD was turning on and printing the text (now &#8220;Hello World?&#8221;) every time. However, the screen was much more dim than it was when it had occasionally worked with the previous setup.</p>
<p>I was starting to get the idea that pin 1 was the contrast pin, and, after testing my theory by plugging pin 1 into my 5v line on my breadboard after the text was already showing, I found that to the best of my knowledge that pin 1 was indeed a contrast pin. So now my idea was that I needed to pull pin 1 high after the text was already being displayed. I wired pin 1 to pin 12 on my ATMega chip (<a title="ATMega cheat sheet" href="http://tinkerlog.com/2009/06/18/microcontroller-cheat-sheet/" target="_blank">arduino pin 6</a>) and rewrote my program to turn on  pin 6 after the text was being displayed. At this point I&#8217;m feeling like I should be really close to just stomping on the whole thing if it doesn&#8217;t work. It didn&#8217;t work (however it was surprisingly not that frustrating).</p>
<p>I had one last idea to try before I was ready to quit and write this project off as beyond my current knowledge. There were periods of hundreds of milliseconds that I had not seen in the logic. It was time to stop taking shortcuts and just figure the whole thing out, so I, once again, got out my controllable power outlet setup, and started precisely writing down everything that I saw in the logic. What I found (from my notes):</p>
<p style="padding-left: 30px;">vcc goes high<br />
&lt;1ms passes<br />
contrast goes high<br />
133ms pass<br />
ss, sck, and mosi go high<br />
7ms pass</p>
<p style="padding-left: 30px;">3 (decial) is sent (start of sequence 3, 40, 20)<br />
7ms pass<br />
40 (decimal) is sent<br />
7ms pass<br />
20 (decimal) is sent<br />
40ms pass</p>
<p style="padding-left: 30px;">10 (decimal) is sent<br />
140ms pass</p>
<p style="padding-left: 30px;">26 (decimal) is sent (before it was 13)<br />
7ms pass<br />
72 (decimal) is sent<br />
7ms pass<br />
9 (decimal) is sent<br />
26ms pass</p>
<p style="padding-left: 30px;">then the following in decimal all while ss is low:<br />
192, 0, 255 (32x)<br />
(ends about 1350ish)</p>
<p style="padding-left: 30px;">about 1800ms pass</p>
<p style="padding-left: 30px;">at 1000, 3232-ish (power wait, capture wait)<br />
3 (decimal) is sent<br />
1.2ms pass<br />
40 (decimal) is sent<br />
1.2ms pass<br />
20 (decimal) is sent<br />
48ms pass</p>
<p style="padding-left: 30px;">10 (decimal) is sent<br />
200ms pass</p>
<p style="padding-left: 30px;">26 (decimal) is sent (before it was 13)<br />
1ms pass<br />
72 (decimal) is sent<br />
1ms pass<br />
9 (decimal) is sent<br />
7ms pass</p>
<p style="padding-left: 30px;">then the following in decimal all while ss is low:<br />
192, 0, &#8220;Please Wait&#8221; converted to hex space filled (space is 32 decimal)</p>
<p>Turned out that I was still missing some things. The numbers 3, 40, 20, and 10 were being sent right after startup, and what I thought was a 13 before turned out to be 26 (a logic analyzer software fluke I&#8217;m guessing?). So I programmed my ATMega 328 to precisely reflect my findings and I held my breath&#8230; uh&#8230; It worked? It really worked! I turned it on and off a couple of times to test it, and I couldn&#8217;t seem to find anything wrong. Wow. That was a long process.</p>
<p style="text-align: center;"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120504_234209.jpg"><img class="aligncenter  wp-image-315" title="Hello World?" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/05/IMG_20120504_234209.jpg" alt="LCD showing Hello World?" width="695" height="522" /></a></p>
<p>I began the process of cleaning up my code and found that most of the timing didn&#8217;t really matter. It didn&#8217;t even matter that I was using a slower crystal. Using a regular 16MHz arduino worked fine. It was the 3, 40, 20, 10 sequence that did the trick. If only I had looked at all of the logic first. Still the path I took made for a good learning experience.</p>
<p>I just finished writing up an arduino library to do some fancy stuff with it. Check out my video below. Thanks for reading, and I hope you got something out of it.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/KGdUqVe2NVE" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=263</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oven Light Buzzer</title>
		<link>http://justpushbuttons.com/blog/?p=226</link>
		<comments>http://justpushbuttons.com/blog/?p=226#comments</comments>
		<pubDate>Wed, 07 Mar 2012 15:08:49 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[buzzer]]></category>
		<category><![CDATA[etching]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[oven]]></category>
		<category><![CDATA[photoresistor]]></category>
		<category><![CDATA[sensor]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=226</guid>
		<description><![CDATA[Watching the preheat light on your oven and waiting for it to go off is sooo much work (yes I am extremely lazy). Easy fix though with a simple circuit containing some transistors, a potentiometer, a photoresistor, and, you guessed it, a buzzer! look at it (would you look at it). In short, the photoresistor <a href='http://justpushbuttons.com/blog/?p=226' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Watching the preheat light on your oven and waiting for it to go off is sooo much work (yes I am extremely lazy). Easy fix though with a simple circuit containing some transistors, a potentiometer, a photoresistor, and, you guessed it, a buzzer! look at it (would you <a title="what the heck is that?" href="http://www.youtube.com/watch?v=EF8GhC-T_Mo" target="_blank">look at it</a>).</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/01/oven_light_buzzer_schematic.jpg"><img class="aligncenter size-full wp-image-228" title="oven_light_buzzer_schematic" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/01/oven_light_buzzer_schematic.jpg" alt="oven light buzzer schematic" width="514" height="338" /></a></p>
<p>In short, the photoresistor keeps Q1 turned on until the oven light goes off. Once the light goes off, Q2 is switched on which turns on the buzzer. The potentiometer is the adjust for the circuit so that if you have some really odd circumstances then it&#8217;ll still work (although you could probably just use a plain ol&#8217; resistor).</p>
<p>After some home style etching and a little bit of rigging, I got it soldered up and strapped to my oven. To use: turn on your oven, flip the switch on the sensor board, and wait till the thing buzzes. Your oven will be preheated and you will waste a lot less energy (real nice if you have a propane oven) than if you&#8217;re just manually walking over and looking to see if the preheat light has gone off.</p>
<p>some pictures:</p>
<p><img class="aligncenter size-large wp-image-236" style="border-style: initial; border-color: initial;" title="After Etching" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_180942-1024x765.jpg" alt="After Etching" width="695" height="519" /></p>
<p>Sorry for the lack of more pictures of the process. This is part way through the process of taking off the etch resist with acetone (see <a title="PCB Etching – home style" href="http://justpushbuttons.com/blog/?page_id=111">home style etching</a>).</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_203229-1.jpg"><img class="aligncenter size-large wp-image-233" title="Completed" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_203229-1-1024x765.jpg" alt="Completed" width="695" height="519" /></a></p>
<p>This is the front side of the completed board. I had to hack on a 9 volt plug which is actually the top of another disassembled 9 volt.</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_203248.jpg"><img class="aligncenter size-large wp-image-238" title="Completed Backside" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_203248-1024x765.jpg" alt="Completed Backside" width="695" height="519" /></a></p>
<p>The back side of the sensor board. The photoresistor is inside of a rubber holder for a microphone. I&#8217;m not really sure what I got this out of, but it worked perfectly for isolating the sensor from outside sources of light.</p>
<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_203441-1.jpg"><img class="aligncenter size-large wp-image-234" title="In Position" src="http://justpushbuttons.com/blog/wp-content/uploads/2012/03/IMG_20110425_203441-1-1024x765.jpg" alt="In Position" width="695" height="519" /></a></p>
<p>And last but not least, this is the sensor in position on my oven. I used a couple of bent up large paper clips to hold the thing in place. The blue stuff is heat shrink tubing around the paper clips which insulates them where they could potentially cause a short.  There is a &#8220;Preheat&#8221; light under sensor board that is similar to the &#8220;Cleaning&#8221; light that you can see.</p>
<p>Turns out I waited a really long time to post about this project (wow! almost a year already). This thing has been incredibly helpful, especially if you&#8217;re super distractible like me.</p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=226</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>People tipping anyone?</title>
		<link>http://justpushbuttons.com/blog/?p=216</link>
		<comments>http://justpushbuttons.com/blog/?p=216#comments</comments>
		<pubDate>Thu, 20 Oct 2011 18:03:03 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=216</guid>
		<description><![CDATA[Seriously?]]></description>
			<content:encoded><![CDATA[<p>Seriously?<br />
<a href="http://www.gizmag.com/vertical-bed/20209/" target="_blank" alt="vertical bed"><img alt="" src="http://images.gizmag.com/gallery_lrg/verticalbed-9.jpg" title="people tipping" class="alignnone" width="288" height="382" /></a></p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=216</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Remote Control System of Awesomeness</title>
		<link>http://justpushbuttons.com/blog/?p=193</link>
		<comments>http://justpushbuttons.com/blog/?p=193#comments</comments>
		<pubDate>Wed, 20 Jul 2011 17:15:39 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=193</guid>
		<description><![CDATA[Slurp (this is me drooling). I want one. This thing is awesome. 16+ channels alone would do it for me, but this thing goes so much further than that by including the following and more: 2 way communication with the receiver, AMOLED Touch-Screen, Linux based UI, and the ability to add a Video receiver unit <a href='http://justpushbuttons.com/blog/?p=193' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Slurp (this is me drooling). I want one. This thing is awesome.<br />
<a href="http://www.indiegogo.com/OSRC" target="_blank"><img class="alignnone" title="RC Controller" src="http://s3.amazonaws.com/indiegogo_production/medias/92570/primary_pictures/full/289175.jpg?1321414424" alt="RC Controller of Awesomeness" width="600" height="400" /></a></p>
<p>16+ channels alone would do it for me, but this thing goes so much  further than that by including the following and more: 2 way  communication with the receiver, AMOLED Touch-Screen, Linux based UI,  and the ability to add a Video receiver unit for real time preview  and/or recording.</p>
<p>On top of all the Controller functions, the receiver  unit will have internal accelerometers and a gyro as well as a modular  design for easy modification.</p>
<p>Let&#8217;s just hope they get the <a title="support this project" href="http://www.indiegogo.com/OSRC" target="_blank">funding</a> they need to start making them.</p>
<p>Check out the <a title="OSRC project" href="http://www.gizmoforyou.net/site/en/projects.html?section=projects&amp;task=display_details&amp;id=63&amp;3315144f8cfbc85ef98fea919ce00143=1&amp;workspace=63" target="_blank">project page</a> for more information.</p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=193</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GPS Clock using ArduPilot and EM-406</title>
		<link>http://justpushbuttons.com/blog/?p=167</link>
		<comments>http://justpushbuttons.com/blog/?p=167#comments</comments>
		<pubDate>Tue, 26 Apr 2011 17:53:47 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=167</guid>
		<description><![CDATA[So we got tired of not being able to see what time it was when we were watching movies/shows on Netflix. We could have just bought a clock, but where&#8217;s the fun in that? I had an EM-406 GPS module and an ArduPilot lying around, and I heard about Sparkfun&#8217;s 12ft GPS Wall Clock so <a href='http://justpushbuttons.com/blog/?p=167' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2011/04/clock-working.jpg"><img class="size-full wp-image-161 aligncenter" title="clock working" src="http://justpushbuttons.com/blog/wp-content/uploads/2011/04/clock-working.jpg" alt="" width="389" height="290" /></a></p>
<p>So we got tired of not being able to see what time it was when we were watching movies/shows on Netflix. We could have just bought a clock, but where&#8217;s the fun in that? I had an EM-406 GPS module and an ArduPilot lying around, and I heard about <a href="http://www.sparkfun.com/tutorials/47" target="_blank">Sparkfun&#8217;s 12ft GPS Wall Clock</a> so I figured I would give it a try.</p>
<p><a href="http://justpushbuttons.com/blog/?page_id=140">Read more&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=167</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Robot</title>
		<link>http://justpushbuttons.com/blog/?p=134</link>
		<comments>http://justpushbuttons.com/blog/?p=134#comments</comments>
		<pubDate>Mon, 18 Apr 2011 15:16:40 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=134</guid>
		<description><![CDATA[So I&#8217;ve been working on a robot&#8230; I&#8217;ve succeeded at making it autonomous&#8230; kind of&#8230; well it works most of the time. Before about a week ago it was a big mess of wires. Then I etched a circuit board so that it wouldn&#8217;t be a big mess of wires. Then i realized that I <a href='http://justpushbuttons.com/blog/?p=134' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">So I&#8217;ve been working on a robot&#8230;</p>
<p style="text-align: left;"><a href="http://justpushbuttons.com/blog/wp-content/uploads/2011/04/robot_board_complete.jpg"><img class="size-full wp-image-118 aligncenter" title="robot_board_complete" src="http://justpushbuttons.com/blog/wp-content/uploads/2011/04/robot_board_complete.jpg" alt="" width="467" height="349" /></a></p>
<p>I&#8217;ve succeeded at making it autonomous&#8230; kind of&#8230; well it works most of the time. Before about a week ago it was a big mess of wires. Then I etched a circuit board so that it wouldn&#8217;t be a big mess of wires. Then i realized that I swapped the headers on the motor controller board&#8230; so again&#8230; it is a big mess of wires. To fix this I&#8217;m going to make a patch board that swaps the headers again&#8230;</p>
<p><a href="http://justpushbuttons.com/blog/?page_id=117">Read more&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=134</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PCB Etching &#8211; home style</title>
		<link>http://justpushbuttons.com/blog/?p=6</link>
		<comments>http://justpushbuttons.com/blog/?p=6#comments</comments>
		<pubDate>Mon, 28 Mar 2011 22:39:21 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=6</guid>
		<description><![CDATA[The instructable that I learned this from was pretty useful, but it left out a few things that I wanted to elaborate on. Supplies: A blank PCB (&#8220;copper clad&#8221;) to etch your circuit from (here&#8217;s what I got but any copper clad will work. Note: avoid the 0.127&#8243;, it&#8217;s too thick to put some leads <a href='http://justpushbuttons.com/blog/?p=6' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.instructables.com/id/Stop-using-Ferric-Chloride-etchant!--A-better-etc/" target="_blank">instructable</a> that I learned this from was pretty useful, but it left out a few things that I wanted to elaborate on.</p>
<p><strong>Supplies:</strong></p>
<ul>
<li>A blank PCB (&#8220;copper clad&#8221;) to etch your circuit from (<a href="http://www.skycraftsurplus.com/coppercladcircuitboard-18x12.aspx" target="_blank">here&#8217;s</a> what I got but any copper clad will work. Note: avoid the 0.127&#8243;, it&#8217;s too thick to put some leads all the way through)</li>
<li>Sharpie (for etch resist)</li>
<li>Muriatic acid &#8211; 20 Baume 31.45% (the 14.5% junk doesn&#8217;t work). Also take care not to murder yourself with this stuff.</li>
<li>Hydrogen peroxide &#8211; 3%</li>
<li>A glass container with a lid. Make sure that the lid is <strong>not</strong> airtight. If it is airtight, it can explode&#8230; acid everywhere&#8230; bad news.</li>
<li>Nerd goggles (safety first)</li>
<li>Particle respirator mask</li>
<li>Automotive rubbing compound (from the auto parts store)</li>
</ul>
<p><a href="http://justpushbuttons.com/blog/?page_id=111">Read more&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=6</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using pocket programmer with ATMega328P</title>
		<link>http://justpushbuttons.com/blog/?p=68</link>
		<comments>http://justpushbuttons.com/blog/?p=68#comments</comments>
		<pubDate>Mon, 21 Mar 2011 02:02:11 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=68</guid>
		<description><![CDATA[I thought that I would have to learn AVR code in order to program my ATMega328P micro. Then I got to reading on the arduino.cc website and found out that by changing a setting in the arduino software’s preferences.txt file I could simply use the arduino software and arduino code for programming my chip. Read <a href='http://justpushbuttons.com/blog/?p=68' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg"><img class="aligncenter size-full wp-image-74" title="atmega328" src="http://justpushbuttons.com/blog/wp-content/uploads/2011/03/atmega328.jpg" alt="" width="350" height="173" /></a></p>
<p>I thought that I would have to learn AVR code in order to program my ATMega328P micro. Then I got to reading on the arduino.cc website and found out that by changing a setting in the arduino software’s preferences.txt file I could simply use the arduino software and arduino code for programming my chip.</p>
<p><a href="http://justpushbuttons.com/blog/?page_id=103">Read more&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=68</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infrared Gap Counter</title>
		<link>http://justpushbuttons.com/blog/?p=20</link>
		<comments>http://justpushbuttons.com/blog/?p=20#comments</comments>
		<pubDate>Mon, 07 Mar 2011 01:17:53 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justpushbuttons.com/blog/?p=20</guid>
		<description><![CDATA[I wanted to enable my robot with a sense of distance. Luckily my robot has build in distance markers in its tank treads. There are little gaps in the treads which I can put infrared emitters and detectors on either side of. This will allow my arduino to count the number of gaps that have passed by while <a href='http://justpushbuttons.com/blog/?p=20' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-53 alignleft" title="large_tank_treads" src="http://justpushbuttons.com/blog/wp-content/uploads/2011/03/large_tank_treads.jpg" alt="" width="286" height="213" />I wanted to enable my robot with a sense of distance. Luckily my robot has build in distance markers in its <a style="color: #0066cc; font-family: Georgia, 'Bitstream Charter', serif; line-height: 1.5;" href="http://www.sparkfun.com/products/321" target="_blank">tank treads</a>. There are little gaps in the treads which I can put <a style="color: #0066cc; font-family: Georgia, 'Bitstream Charter', serif; line-height: 1.5;" href="http://www.sparkfun.com/products/241" target="_blank">infrared emitters and detectors</a> on either side of. This will allow my arduino to count the number of gaps that have passed by while the robot is moving.</p>
<p>The number of gaps is a constant and so I will be able to count the number of revolutions of the track and measure the distance that the robot has traveled. Furthermore, by putting a gap counter (an emitter and a detector) on both the right and left tracks I will be able to calculate the angle that the robot has turned when it does so.</p>
<p><a href="http://justpushbuttons.com/blog/?page_id=99">Read more&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://justpushbuttons.com/blog/?feed=rss2&#038;p=20</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

