<?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>Robo Penguins</title>
	<atom:link href="http://www.robopenguins.com/wordpress/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.robopenguins.com/wordpress</link>
	<description>Project Listing</description>
	<lastBuildDate>Sat, 11 May 2013 22:42:46 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Simple Doorbell Switch</title>
		<link>http://www.robopenguins.com/wordpress/simple-doorbell-switch/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=simple-doorbell-switch</link>
		<comments>http://www.robopenguins.com/wordpress/simple-doorbell-switch/#comments</comments>
		<pubDate>Sat, 11 May 2013 22:42:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=364</guid>
		<description><![CDATA[Here&#8217;s a quick hack I through together to prevent jerks from ringing my doorbell late at night. &#160; At first I wanted to do something complicated like setting up a timer or light sensor. In the end I decided to do the simplest thing possible. As illustrated all I did was attach a switch to [...]]]></description>
				<content:encoded><![CDATA[<div>Here&#8217;s a quick hack I through together to prevent jerks from ringing my doorbell late at night.</div>
<div></div>
<div><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/05/2013-05-11-11.06.07.jpg"><img class="alignleft size-medium wp-image-365" alt="Doorbell Switch" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/05/2013-05-11-11.06.07-300x225.jpg" width="300" height="225" /></a></div>
<div><span id="more-364"></span></div>
<p>&nbsp;</p>
<div>At first I wanted to do something complicated like setting up a timer or light sensor. In the end I decided to do the simplest thing possible. As illustrated all I did was attach a switch to the doorbell. In practice we leave it off most of the time, so it would be nice for a little automation to keep us from forgetting about it. Aside from that it gets the job done.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/simple-doorbell-switch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blinky Statues</title>
		<link>http://www.robopenguins.com/wordpress/blinky-statues/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=blinky-statues</link>
		<comments>http://www.robopenguins.com/wordpress/blinky-statues/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 07:09:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=323</guid>
		<description><![CDATA[Over the holidays I wanted to come up with a simple project that could be somewhat streamlined for &#8220;mass production&#8221;. I&#8217;ve always liked working with clay and decided to make figurines with some circuitry embedded in them. Of course the circuit had to be functional , so I decided to go with a simple breathing LED controlled [...]]]></description>
				<content:encoded><![CDATA[<p>Over the holidays I wanted to come up with a simple project that could be somewhat streamlined for &#8220;mass production&#8221;. I&#8217;ve always liked working with clay and decided to make figurines with some circuitry embedded in them. Of course the circuit had to be functional , so I decided to go with a simple breathing LED controlled with a 555 timer.</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/-osvq248tfs?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><span id="more-323"></span></p>
<p>I&#8217;ve wanted to do a 555 timer project for awhile since they&#8217;re cheap and it&#8217;s been a long while since I&#8217;ve done a project with absolutely no programming. After looking at a few circuits online and messing around with the parts that I had on hand I ended up making the following schematic:</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/schematic.png"><img class="alignleft size-medium wp-image-340" title="schematic" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/schematic-300x233.png" alt="" width="300" height="233" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The parts list is:</p>
<ul>
<li>R1 &#8211; 47 ohm resistor</li>
<li>R2 &#8211; 4700 ohm resistor</li>
<li>C2 &#8211; 470 micro-farad capacitor</li>
<li>U1 &#8211; 555 timer</li>
<li>Q1 &#8211; BC547C NPN transistor</li>
<li>D1 &#8211; an LED</li>
<li>V1 &#8211; a 5 volt power source. I made some figures powered by 5V wall warts, and others I made USB powered.</li>
</ul>
<div>The circuit prototyped on the breadboard is shown below</div>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/breadboard.jpg"><img class="alignleft size-medium wp-image-334" title="breadboard" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/breadboard-300x178.jpg" alt="" width="300" height="178" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Here&#8217;s a video of it in action</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/R1yaNOilRSE?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Once the circuit was tested and working I had to figure out how to stick it into a clay figure. As I saw it there were two options. I could build the circuit and then cover it in clay, or I could build the clay figure and then stick the components into it. I ended up having better luck building the circuit first, since it was easier to test that it was working before sticking it in the clay. To do this I soldered all the components together &#8220;dead bug style&#8221;. This entails soldering the components together without using any sort of circuit board as a base. Here are a few examples:</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbug2.jpg"><img class="alignleft size-medium wp-image-335" title="deadbug2" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbug2-300x195.jpg" alt="" width="300" height="195" /></a><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbugwithusb.jpg"><img class="alignleft size-medium wp-image-327" title="deadbugwithusb" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbugwithusb-300x175.jpg" alt="" width="300" height="175" /></a><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbug3.jpg"><img class="alignleft size-medium wp-image-325" title="deadbug3" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbug3-300x181.jpg" alt="" width="300" height="181" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>I then built the clay figures around these circuits taking care not to short anything. I used a cheap skulpty like material that dried in air without the need for a kiln. Initially, I found that the circuits would stop working when encased in clay. It appears that the wet clay is a weak conductor, and that these &#8220;shorts&#8221; were enough to prevent the circuits from functioning correctly. I even tried to encase the entire circuit in heat shrink and insulation, but not even that worked.</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbug4.jpg"><img class="alignleft size-medium wp-image-326" title="deadbug4" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/deadbug4-300x256.jpg" alt="" width="300" height="256" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>It turned out that I just needed to be patient, after waiting about a week the clay dried and my figures worked perfectly. Here are a few more pictures and videos of the results.</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/golem2.jpg"><img class="alignleft size-medium wp-image-328" title="golem2" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/golem2-289x300.jpg" alt="" width="289" height="300" /></a></p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/golemfig.jpg"><img class="alignleft size-medium wp-image-329" title="golemfig" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/golemfig-223x300.jpg" alt="" width="223" height="300" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/groupback.jpg"><img class="alignleft size-medium wp-image-330" title="groupback" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/groupback-300x196.jpg" alt="" width="300" height="196" /></a><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/bearfig.jpg"><img class="alignleft size-medium wp-image-333" title="bearfig" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/bearfig-300x289.jpg" alt="" width="300" height="289" /></a><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/penguinfig.jpg"><img class="alignleft size-medium wp-image-331" title="penguinfig" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/penguinfig-248x300.jpg" alt="" width="248" height="300" /></a><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/quokkafig.jpg"><img class="alignleft size-medium wp-image-332" title="quokkafig" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2013/01/quokkafig-201x300.jpg" alt="" width="201" height="300" /></a></p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/oX1NSCA6_ck?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/blinky-statues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outlaw Star Gillium II Clock</title>
		<link>http://www.robopenguins.com/wordpress/outlaw-star-gillium-ii-clock/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=outlaw-star-gillium-ii-clock</link>
		<comments>http://www.robopenguins.com/wordpress/outlaw-star-gillium-ii-clock/#comments</comments>
		<pubDate>Tue, 25 Dec 2012 03:17:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=300</guid>
		<description><![CDATA[My brother and I used to watch the anime Outlaw Star together as kids, so I decided to get him something based on the show as a gift this year. Being a relatively unpopular show that hasn&#8217;t been on the air in years, there was basically no merchandise available. So I decided to make my own. This is [...]]]></description>
				<content:encoded><![CDATA[<p>My brother and I used to watch the anime Outlaw Star together as kids, so I decided to get him something based on the show as a gift this year. Being a relatively unpopular show that hasn&#8217;t been on the air in years, there was basically no merchandise available. So I decided to make my own. This is a clock made to look like the computer Gillium II from the show.</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/2012-12-16-21.51.22.jpg"><img class="alignleft size-medium wp-image-301" title="finished clock front" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/2012-12-16-21.51.22-265x300.jpg" alt="" width="265" height="300" /></a><br />
Vs<br />
<a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/gillum.png"><img class="alignleft size-full wp-image-305" title="gillum" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/gillum.png" alt="" width="300" height="215" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span id="more-300"></span></p>
<p>Parts list:</p>
<ul>
<li>Fruit Cake Tin &#8211; Any round tin would work for the enclosure, I got this one from the thrift store for 50 cents</li>
<li>Clock Radio &#8211; Something that is reasonably close to being able to fit in the tin. I also got mine from the thrift store for $3</li>
<li>Piece of Plastic &#8211; I bought a 11&#8243;x14&#8243; piece from home depot, for $4 making this the most expensive component</li>
</ul>
<div>The hardest part of this project was making the blank face of the clock. I should have spent more time trying to find a tin with a clear plastic front and saved myself a whole bunch of effort, but I ended up making one myself. First, I cut a large circle out of the top of the tin. Next I cut the piece of plastic into a rough circle that I could fit into the top of the tin and glued it into place.</div>
<p>Next I dissected the clock radio. Originally I was hoping to drive some blinking lights with some of the clocks circuitry, but it turns out that the clock that I found used a fairly interesting scheme for controlling the LEDs. The clock chip was a lm8560. The AC power coming in goes through a transformer which steps the voltage down to 20V peak-to-peak. As the power oscillates from +10 to -10 the controller switches which segments of the display are being powered. In any case I decided that I would leave well enough alone and concentrate on fitting the circuit into the tin.</p>
<p>The clock radio I used looked like this</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/Digital-clock-radio-basic.jpg"><img class="alignleft  wp-image-312" title="Digital-clock-radio-basic" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/Digital-clock-radio-basic.jpg" alt="" width="600" height="400" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>In order to fit the board into the tin I needed to rotate the display 90 degrees so that it faced upward. This meant that there was no way that I could reuse the original set of controls. I didn&#8217;t feel the need to preserve all of the radio and alarm functionality so I decided to make the only input the time setting controls.</p>
<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/inside-clock.jpg"><img class="alignleft size-medium wp-image-304" title="inside clock" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/inside-clock-300x268.jpg" alt="" width="300" height="268" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>First I removed a four position switch that was used to change the alarm/radio mode and hard wired the connections to the position that disabled the alarm. Next I spent some time figuring out how the buttons on the original panned were used to set the time. This clock had the scheme where you hold down a &#8220;time&#8221; button and then press a minute or hour button. Turns out the time button just connected the hour and minute buttons to their common ground. I ended up wiring the switch so it would switch between no connections, and connecting the minute and hour inputs to ground so you could get the original controls but in switch form.</p>
<p>Before I mounted the clock circuit into the tin I desoldered some of the extra parts like the speaker and the original input circuitry. The clock circuit was just barely to big to fit, so I had to cut off some of the corners which fortunately didn&#8217;t contain anything important. I screwed the clock circuit back onto the plastic bottom of the clock which I cut down to a size that would fit. To put everything together I had to I ended up gluing the switch, cables, and circuitry in place with epoxy. I cut a little chunk out of the tin for the cable to fit through and bent back the metal so the cord wouldn&#8217;t be sitting on a sharp edge. With all the done the tins lid could still be taken off and on giving access to the inner side of the plastic and the clock circuitry.</p>
<p>I painted the colored parts of the clock face on the inside of the plastic, and doing the black sections on the outside with a sharpy. I&#8217;m sure there&#8217;s a better way since the paint I used could be easily be chipped off if it rubbed against anything sharp, but still it ended up looking pretty nice.<br />
<a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/2012-12-16-21.51.29.jpg"><img class="alignleft size-medium wp-image-302" title="finished clock side" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/12/2012-12-16-21.51.29-257x300.jpg" alt="" width="257" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/outlaw-star-gillium-ii-clock/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A GPS Spoofing Work Project</title>
		<link>http://www.robopenguins.com/wordpress/a-gps-spoofing-work-project/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-gps-spoofing-work-project</link>
		<comments>http://www.robopenguins.com/wordpress/a-gps-spoofing-work-project/#comments</comments>
		<pubDate>Fri, 14 Dec 2012 16:27:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=294</guid>
		<description><![CDATA[One of my work projects from awhile back popped up on Ars Technica. http://arstechnica.com/security/2012/12/how-to-bring-down-mission-critical-gps-networks-with-2500/ I didn&#8217;t do too much of the actual meat of the software. My job was mostly to program the inter-board communication, set up the kernel and software on the main processor, and do some of the hardware development to connect everything together. This work previously [...]]]></description>
				<content:encoded><![CDATA[<p>One of my work projects from awhile back popped up on Ars Technica.</p>
<div class="wp-caption alignnone" style="width: 650px"><a href="http://arstechnica.com/security/2012/12/how-to-bring-down-mission-critical-gps-networks-with-2500/"><img class=" " title="PCSS" src="http://cdn.arstechnica.net/wp-content/uploads/2012/12/pcss-640x352.jpg" alt="" width="640" height="352" /></a><p class="wp-caption-text">My Baby!</p></div>
<p><a title="how-to-bring-down-mission-critical-gps-networks" href="http://arstechnica.com/security/2012/12/how-to-bring-down-mission-critical-gps-networks-with-2500/">http://arstechnica.com/security/2012/12/how-to-bring-down-mission-critical-gps-networks-with-2500/</a></p>
<p>I didn&#8217;t do too much of the actual meat of the software. My job was mostly to program the inter-board communication, set up the kernel and software on the main processor, and do some of the hardware development to connect everything together.</p>
<p>This work previously had a minor mention in Slashdot <a href="http://it.slashdot.org/story/12/12/10/0012217/researchers-find-crippling-flaws-in-global-gps">http://it.slashdot.org/story/12/12/10/0012217/researchers-find-crippling-flaws-in-global-gps</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/a-gps-spoofing-work-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scraping Google Maps for Traffic Data</title>
		<link>http://www.robopenguins.com/wordpress/scraping-google-maps-for-traffic-data/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=scraping-google-maps-for-traffic-data</link>
		<comments>http://www.robopenguins.com/wordpress/scraping-google-maps-for-traffic-data/#comments</comments>
		<pubDate>Mon, 19 Nov 2012 19:26:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=277</guid>
		<description><![CDATA[I have a daily commute that I drive down the US 101 highway. The length of the drive can vary immensely with traffic, and I&#8217;ve always been curious what the optimal departure times are. I decided to gather data to solve this empirically, and went on an adventure in finding the right tool for the job. I [...]]]></description>
				<content:encoded><![CDATA[<p>I have a daily commute that I drive down the US 101 highway. The length of the drive can vary immensely with traffic, and I&#8217;ve always been curious what the optimal departure times are. I decided to gather data to solve this empirically, and went on an adventure in finding the right tool for the job.</p>
<p><span id="more-277"></span></p>
<p>I thought about timing my drive, but that would only gather data about my current commute times. I decided that the easiest way to get a rough sense of the best drive time, and how much it mattered would be to get the traffic estimates from a web service. Unfortunately, I was unable to find any site that offered traffic estimates for any time besides the present. If I wanted to gather information about how the estimates changed over time I would have to collect the data myself.</p>
<p>At first I thought that I could just write a simple HTTP client that would query a web service with my commute information, and then parse out the traffic information. I quickly learned that Google Maps tries to prevent this sort of behavior. I may have been able to get around this, but even the on sites that did allow me to download the html I couldn&#8217;t parse out the traffic data since it was populated with the pages javascript.</p>
<p>I figured this out by playing with the developers console in chrome. I could pull the information out from the page loaded in chrome by writing javascript. Unfortunately, executed my custom javascript on a page turned out to be a little tricky. I could do it through the developers console, or by writing bookmarklets, but I wanted a more automated system that could easily be scheduled and produce file output.</p>
<p>My first instinct was to try to write some sort of (cross site scripting) XSS hack. What this would do is load my page with my javascript along with the page containing the traffic info. My code would then access the traffic information and do something with it. I quickly realized that this was a bad idea for all sorts of reasons. This is exactly the sort of behavior that a virus would have, and all of these sorts of operations are made nigh impossible by browser security features and language limitations on javascript.</p>
<p>I then remembered that there were special scripting plugins for browsers that were made to run custom code on pages as they load. The most popular is for Firefox and is called Greasemonkey. Well I was able to use Greasemonkey to access the traffic information on Google Maps, but I wasn&#8217;t able to write it to a file. This is an intentional limitation of Greasemonkey and is there for security reasons. In any case doing the kind of repeated automatic data collect that I was hoping for, wouldn&#8217;t have been particularly natural in Greasemonkey anyway.</p>
<p>I finally found a solution that worked nearly perfectly in an unusual place. Apparently, it&#8217;s not uncommon to use tools originally designed for automated web site testing to do the sort of javascript scraping that I was trying to accomplish. I quickly settled on Selenium as my system. The key feature that Selenium offered was its Firefox plugin. This IDE let me perform the query and select the data I wanted in a very natural way by using the browser. Once I got the commands I needed I was able to export this to python code to wrap a loop around and perform the logging of the information. Here&#8217;s my modified version of the generated code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">from</span> selenium <span style="color: #ff7700;font-weight:bold;">import</span> webdriver
<span style="color: #ff7700;font-weight:bold;">from</span> selenium.<span style="color: black;">webdriver</span>.<span style="color: black;">common</span>.<span style="color: black;">by</span> <span style="color: #ff7700;font-weight:bold;">import</span> By
<span style="color: #ff7700;font-weight:bold;">from</span> selenium.<span style="color: black;">webdriver</span>.<span style="color: black;">support</span>.<span style="color: black;">ui</span> <span style="color: #ff7700;font-weight:bold;">import</span> Select
<span style="color: #ff7700;font-weight:bold;">from</span> selenium.<span style="color: black;">common</span>.<span style="color: #dc143c;">exceptions</span> <span style="color: #ff7700;font-weight:bold;">import</span> NoSuchElementException
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">unittest</span><span style="color: #66cc66;">,</span> <span style="color: #dc143c;">time</span><span style="color: #66cc66;">,</span> <span style="color: #dc143c;">re</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">datetime</span>
&nbsp;
SLEEP_TIME<span style="color: #66cc66;">=</span><span style="color: #ff4500;">60</span>*<span style="color: #ff4500;">10</span>
END_TIME<span style="color: #66cc66;">=</span><span style="color: #ff4500;">9</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> MapTest<span style="color: black;">&#40;</span><span style="color: #dc143c;">unittest</span>.<span style="color: black;">TestCase</span><span style="color: black;">&#41;</span>:
	<span style="color: #ff7700;font-weight:bold;">def</span> setUp<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		<span style="color: #008000;">self</span>.<span style="color: black;">driver</span> <span style="color: #66cc66;">=</span> webdriver.<span style="color: black;">Firefox</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">driver</span>.<span style="color: black;">implicitly_wait</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">30</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">base_url</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">&quot;http://maps.google.com/&quot;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">verificationErrors</span> <span style="color: #66cc66;">=</span> <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> test_map<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		now<span style="color: #66cc66;">=</span><span style="color: #dc143c;">datetime</span>.<span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		driver <span style="color: #66cc66;">=</span> <span style="color: #008000;">self</span>.<span style="color: black;">driver</span>
		<span style="color: #ff7700;font-weight:bold;">with</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span>now.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%m_%d_%Y_%H_%M_&quot;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">&quot;trafficLog.txt&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'w'</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">as</span> f:
			<span style="color: #ff7700;font-weight:bold;">while</span> <span style="color: #dc143c;">datetime</span>.<span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">hour</span><span style="color: #66cc66;">&lt;</span>END_TIME:
				driver.<span style="color: black;">get</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">base_url</span> + <span style="color: #483d8b;">&quot;/&quot;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_launch&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">click</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_d&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">clear</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_d&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">send_keys</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;My Address, CA&quot;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_daddr&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">clear</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_daddr&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">send_keys</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Work Address, CA&quot;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_sub&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">click</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
				driver.<span style="color: black;">find_element_by_id</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;d_sub&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">click</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
				<span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">60</span><span style="color: black;">&#41;</span>:
					<span style="color: #ff7700;font-weight:bold;">try</span>:
						<span style="color: #ff7700;font-weight:bold;">if</span> driver.<span style="color: black;">find_element_by_css_selector</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;div.altroute-rcol.altroute-aux &gt; span&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">is_displayed</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>: <span style="color: #ff7700;font-weight:bold;">break</span>
					<span style="color: #ff7700;font-weight:bold;">except</span>: <span style="color: #ff7700;font-weight:bold;">pass</span>
					<span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
				<span style="color: #ff7700;font-weight:bold;">else</span>: <span style="color: #008000;">self</span>.<span style="color: black;">fail</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;time out&quot;</span><span style="color: black;">&#41;</span>
				variable1 <span style="color: #66cc66;">=</span> driver.<span style="color: black;">find_element_by_css_selector</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;div.altroute-rcol.altroute-aux &gt; span&quot;</span><span style="color: black;">&#41;</span>.<span style="color: black;">text</span>
				f.<span style="color: black;">write</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">datetime</span>.<span style="color: #dc143c;">datetime</span>.<span style="color: black;">now</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">strftime</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;%H:%M&quot;</span><span style="color: black;">&#41;</span>+<span style="color: #483d8b;">&quot; - &quot;</span>+variable1+<span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: black;">&#41;</span>
				f.<span style="color: black;">flush</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
				<span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span>SLEEP_TIME<span style="color: black;">&#41;</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> is_element_present<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: #66cc66;">,</span> how<span style="color: #66cc66;">,</span> what<span style="color: black;">&#41;</span>:
		<span style="color: #ff7700;font-weight:bold;">try</span>: <span style="color: #008000;">self</span>.<span style="color: black;">driver</span>.<span style="color: black;">find_element</span><span style="color: black;">&#40;</span>by<span style="color: #66cc66;">=</span>how<span style="color: #66cc66;">,</span> value<span style="color: #66cc66;">=</span>what<span style="color: black;">&#41;</span>
		<span style="color: #ff7700;font-weight:bold;">except</span> NoSuchElementException<span style="color: #66cc66;">,</span> e: <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">False</span>
		<span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span>
&nbsp;
	<span style="color: #ff7700;font-weight:bold;">def</span> tearDown<span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
		<span style="color: #008000;">self</span>.<span style="color: black;">driver</span>.<span style="color: black;">quit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
		<span style="color: #008000;">self</span>.<span style="color: black;">assertEqual</span><span style="color: black;">&#40;</span><span style="color: black;">&#91;</span><span style="color: black;">&#93;</span><span style="color: #66cc66;">,</span> <span style="color: #008000;">self</span>.<span style="color: black;">verificationErrors</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ <span style="color: #66cc66;">==</span> <span style="color: #483d8b;">&quot;__main__&quot;</span>:
	<span style="color: #dc143c;">unittest</span>.<span style="color: black;">main</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>I then scheduled this, and a slightly modified version of the script for my home commute, to run at the earliest I would consider starting my trips. The code runs until the hour specified by END_TIME, and makes a file with the start time in the name as an output. By collecting this and pulling out the specific traffic information I should have all the info I need.</p>
<p>This is still not a perfect solution. I in order to run this you at least need to have python and its Selenium client installed. Selenium must actually run the browser in order to do the data collection, so you can&#8217;t really have it run in the background. I decided to mitigate this issue by having it run on a virtual machine. All in all a much more complicated solution then I was expecting, but at least it was time better spent then sitting in traffic.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/scraping-google-maps-for-traffic-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Camera From a Webcam</title>
		<link>http://www.robopenguins.com/wordpress/security-camera-from-a-webcam/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=security-camera-from-a-webcam</link>
		<comments>http://www.robopenguins.com/wordpress/security-camera-from-a-webcam/#comments</comments>
		<pubDate>Mon, 19 Nov 2012 07:54:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=257</guid>
		<description><![CDATA[Here&#8217;s a quick project that came together the evening before a long vacation. In order to get a little piece of mind I wanted to set up a simple security camera on a network accessible storage (NAS) server that I had recently set up. What I wanted was a program that could connect to a USB webcam [...]]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a quick project that came together the evening before a long vacation. In order to get a little piece of mind I wanted to set up a simple security camera on a network accessible storage (NAS) server that I had recently set up. What I wanted was a program that could connect to a USB webcam and send me an email with a photo of any motion that occurred.</p>
<p><span id="more-257"></span></p>
<p>The NAS server was a QNAP which has some security center software built in. It was mainly focused on connecting to networked security cameras, but it did support some basic functionality for webcams. Unfortunately, it did not support any of the motion detection features.</p>
<p>The NAS server let you SSH and install packages with ipkg. I found a package called motion, here&#8217;s a forum post that led me through the basic setup <a href="http://forum.qnap.com/viewtopic.php?p=273345">http://forum.qnap.com/viewtopic.php?p=273345</a></p>
<p>Here&#8217;s a copy of the post for posterity:</p>
<blockquote><p>&nbsp;</p>
<p>There&#8217;s an Optware package called &#8220;motion&#8221;, which can do motion detection.</p>
<p>I installed it a day ago and so far it works very well together with a Logitech USB camera. It can take interval snapshots, and record jpg and/or avi once motion is detected. With a frame rate of 5 and a 640&#215;480 resolution my TS-212 uses around 30% CPU. With a lower frame rate the CPU usage is accordingly lower. In contrary to that, QUSBCam with firmware 3.7.1 took 100% all the time even at one frame per second and quarter VGA resolution.</p>
<p>To get it working just</p>
<ul>
<li>install the Optware QPKG</li>
<li>install the motion IPKG</li>
<li>install the nano IPKG (simple text editor for editing the config file)</li>
<li>Activate SSH, if not already active</li>
<li>Use ssh to log onto the NAS</li>
<li>edit the config file /opt/etc/motion.conf by typing
<dl>
<dd><code>nano /opt/etc/motion.conf</code></dd>
</dl>
<p>and change the output path to something reasonable, e.g.</p>
<dl>
<dd><code>target_dir /share/Recordings/MyUSBCam</code></dd>
</dl>
</li>
<li>if you want videos, then you have to activate the switch in the config file, there are lots of comments in the file. Find the entry ffmpeg_cap_new and change it from off to on
<dl>
<dd><code>ffmpeg_cap_new on</code></dd>
</dl>
</li>
<li>Save the file (Ctrl-O) and exit (Ctrl-X)</li>
<li>Run motion
<dl>
<dd><code>/opt/etc/init.d/S99motion</code></dd>
</dl>
</li>
</ul>
<p>If you want to start motion at system startup you have to apply the optware startup patch, that you can find somewhere in this forum.</p></blockquote>
<p>It took me a little bit of fiddling to get things working, but everything worked as advertised. Once a motion is detected for some configurable amount of time, it triggers an event. This event continues until no motion is detected for some amount of time and then the event ends. This would prevent my inbox from getting an inordinate amount of photos. There is a setting on_event_start that tells motion to run a command at the start of an event.</p>
<p>I wasted a decent amount of time trying to send an email with a bash command, but I wasn&#8217;t having any luck. I&#8217;m sure it easy if you know what you&#8217;re doing, but most of the packages seemed more geared toward running a mail server then a simple notifier. Eventually I went with a solution I had used in the past, Python.</p>
<p>I installed python and wrote up the following script:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code"><pre class="python" style="font-family:monospace;"><span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">smtplib</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">sys</span>  
&nbsp;
fromaddr <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">''</span> 
toaddrs <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">''</span> 
msg <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'There was a motion detected!'</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Credentials (if needed)</span>
username <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">''</span>
password <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">''</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># The actual mail send</span>
server <span style="color: #66cc66;">=</span> <span style="color: #dc143c;">smtplib</span>.<span style="color: black;">SMTP</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'smtp.gmail.com:587'</span><span style="color: black;">&#41;</span> 
server.<span style="color: black;">starttls</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
server.<span style="color: black;">login</span><span style="color: black;">&#40;</span>username<span style="color: #66cc66;">,</span>password<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#get the file name from stdin</span>
<span style="color: #008000;">file</span><span style="color: #66cc66;">=</span><span style="color: #483d8b;">'/share/Recordings/motion/'</span>+<span style="color: #dc143c;">sys</span>.<span style="color: black;">stdin</span>.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">strip</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'<span style="color: #000099; font-weight: bold;">\n</span>'</span><span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;"># Here are the email package modules we'll need</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">image</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEImage 
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">email</span>.<span style="color: black;">mime</span>.<span style="color: black;">multipart</span> <span style="color: #ff7700;font-weight:bold;">import</span> MIMEMultipart 
COMMASPACE <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">', '</span>
<span style="color: #808080; font-style: italic;"># Create the container (outer) email message.</span>
msg <span style="color: #66cc66;">=</span> MIMEMultipart<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> 
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'Subject'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'Detection'</span>
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'From'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> fromaddr
msg<span style="color: black;">&#91;</span><span style="color: #483d8b;">'To'</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">=</span> toaddrs
msg.<span style="color: black;">preamble</span> <span style="color: #66cc66;">=</span> <span style="color: #483d8b;">'Detection'</span>
<span style="color: #808080; font-style: italic;"># Assume we know that the image files are all in PNG format</span>
<span style="color: #808080; font-style: italic;"># Open the files in binary mode.  Let the MIMEImage class automatically guess the specific image type.</span>
fp <span style="color: #66cc66;">=</span> <span style="color: #008000;">open</span><span style="color: black;">&#40;</span><span style="color: #008000;">file</span><span style="color: #66cc66;">,</span> <span style="color: #483d8b;">'rb'</span><span style="color: black;">&#41;</span>
img <span style="color: #66cc66;">=</span> MIMEImage<span style="color: black;">&#40;</span>fp.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
fp.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
msg.<span style="color: black;">attach</span><span style="color: black;">&#40;</span>img<span style="color: black;">&#41;</span>
<span style="color: #808080; font-style: italic;"># Send the email via our own SMTP server.</span>
server.<span style="color: black;">sendmail</span><span style="color: black;">&#40;</span>fromaddr<span style="color: #66cc66;">,</span> toaddrs<span style="color: #66cc66;">,</span> msg.<span style="color: black;">as_string</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
server.<span style="color: black;">quit</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span></pre></td></tr></table></div>

<p>Of course you need to replace the from/to address ,the username, and  the password to the correct values. You would also need to set the file location to the same configuration you used in motion.conf</p>
<p>Then I edited on_event_start in motion.conf</p>
<dl>
<dd><code>on_event_start ls /share/Recordings/motion/ -tr|tail -1|python /home/test/sendtest.py</code></dd>
</dl>
<p>This took me a bit to write since I&#8217;m not a super wizard with bash scripting. What this setting does is run these commands when an event occurs. I configured motion to output the webcam images to the folder /share/Recordings/motion/, so this command lists all the files in this directory sorted by time and sends the name of the most recent image into the python script through stdin.</p>
<p>Once that was all done I had the solution that I wanted that worked like a charm while I was away. I would send a few false positives a day, which was actually kind of nice since it let me know things were still working.</p>
<p>All in all not the cleanest system in the world. Networked webcams aren&#8217;t that expensive and would have been much easier to deal with. The whole system isn&#8217;t that secure since of course the whole server could have been stolen and all I would end up with is a few pictures of the perp. Still for something that was thrown together after packing, it fulfilled it&#8217;s purpose.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/security-camera-from-a-webcam/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Evilution</title>
		<link>http://www.robopenguins.com/wordpress/evilution/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=evilution</link>
		<comments>http://www.robopenguins.com/wordpress/evilution/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 05:33:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=218</guid>
		<description><![CDATA[This is a very simple evolution simulator. Selecting a type (plant or animal) you can place creatures on the board by clicking on the white area. They will try to survive and reproduce with their genes represented by their color. Time can be sped or slowed by changing the time speed value. There is a [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/evilution.jpg"><img src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/evilution.jpg" alt="" title="evilution" width="274" height="233" class="alignleft size-full wp-image-219" /></a></p>
<p>This is a very simple evolution simulator.<br />
<span id="more-218"></span><br />
Selecting a type (plant or animal) you can place creatures on the board by clicking on the white area.<br />
They will try to survive and reproduce with their genes represented by their color. Time can be sped or slowed by changing the time speed value.<br />
There is a genome that encodes some of their traits that can be editted, but right now it is very primitive.</p>
<p><applet archive="../../evilutionbean.jar" code="Game.class" name="Evilution" width="800" height="500"></applet></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/evilution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Heart Monitoring</title>
		<link>http://www.robopenguins.com/wordpress/heart-monitoring/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=heart-monitoring</link>
		<comments>http://www.robopenguins.com/wordpress/heart-monitoring/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 05:16:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=190</guid>
		<description><![CDATA[A project at the Karlsruhe Institute of Technology, in Germany, to use accelerometers to track heart motion to aid in robotic surgery. The final design involved having MEMS 3 axis accelerometers on tiny custom PCBs connect to an arduino through a I2C multiplexer. The Arduino would transmit the data to a PC which would process [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0896.jpg"><img src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0896-300x225.jpg" alt="" title="DSCN0896" width="300" height="225" class="alignleft size-medium wp-image-197" /></a></p>
<p>A project at the Karlsruhe Institute of Technology, in Germany, to use accelerometers to track heart motion to aid in robotic surgery.</p>
<p><span id="more-190"></span></p>
<p><br clear="all"></p>
<p>The final design involved having MEMS 3 axis accelerometers on tiny custom PCBs connect to an arduino through a I2C multiplexer. The Arduino would transmit the data to a PC which would process it.</p>
<p>Here are some pictures of the project</p>

<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0887/' title='DSCN0887'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0887-300x225.jpg" class="attachment-medium" alt="DSCN0887" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0888/' title='DSCN0888'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0888-300x225.jpg" class="attachment-medium" alt="DSCN0888" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0891/' title='DSCN0891'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0891-300x225.jpg" class="attachment-medium" alt="DSCN0891" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0892/' title='DSCN0892'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0892-300x225.jpg" class="attachment-medium" alt="DSCN0892" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0895/' title='DSCN0895'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0895-300x225.jpg" class="attachment-medium" alt="DSCN0895" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0896/' title='DSCN0896'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0896-300x225.jpg" class="attachment-medium" alt="DSCN0896" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1027/' title='DSCN1027'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1027-300x225.jpg" class="attachment-medium" alt="DSCN1027" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1052/' title='DSCN1052'><img width="300" height="208" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1052-300x208.jpg" class="attachment-medium" alt="DSCN1052" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1053/' title='DSCN1053'><img width="300" height="211" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1053-300x211.jpg" class="attachment-medium" alt="DSCN1053" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1108/' title='DSCN1108'><img width="300" height="235" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1108-300x235.jpg" class="attachment-medium" alt="DSCN1108" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1109/' title='DSCN1109'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1109-300x225.jpg" class="attachment-medium" alt="DSCN1109" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1111/' title='DSCN1111'><img width="225" height="300" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1111-225x300.jpg" class="attachment-medium" alt="DSCN1111" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1116/' title='DSCN1116'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1116-300x225.jpg" class="attachment-medium" alt="DSCN1116" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn1118/' title='DSCN1118'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1118-300x225.jpg" class="attachment-medium" alt="DSCN1118" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0854/' title='DSCN0854'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0854-300x225.jpg" class="attachment-medium" alt="DSCN0854" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0855/' title='DSCN0855'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0855-300x225.jpg" class="attachment-medium" alt="DSCN0855" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0856/' title='DSCN0856'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0856-300x225.jpg" class="attachment-medium" alt="DSCN0856" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0857/' title='DSCN0857'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0857-300x225.jpg" class="attachment-medium" alt="DSCN0857" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0858/' title='DSCN0858'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0858-300x225.jpg" class="attachment-medium" alt="DSCN0858" /></a>
<a href='http://www.robopenguins.com/wordpress/heart-monitoring/dscn0859/' title='DSCN0859'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN0859-300x225.jpg" class="attachment-medium" alt="DSCN0859" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/heart-monitoring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autonomous Drifting RC Car</title>
		<link>http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=autonomous-drifting-rc-car</link>
		<comments>http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 05:05:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=173</guid>
		<description><![CDATA[As part of a project for the machine learning lab at Cornell, I did the hardware and some of the software to make a stock RC car autonomously drift though a track. The microcontroller that drove the car from the remote control was put on a switch with an Arduino. The Arduino was connected to [...]]]></description>
				<content:encoded><![CDATA[<p><iframe width="500" height="281" src="http://www.youtube.com/embed/videoseries?list=PL12E054C7D140E6BE" frameborder="0" allowfullscreen></iframe></p>
<p>As part of a project for the machine learning lab at Cornell, I did the hardware and some of the software to make a stock RC car autonomously drift though a track.<br />
<span id="more-173"></span></p>
<p>The microcontroller that drove the car from the remote control was put on a switch with an Arduino. The Arduino was connected to an XBEE wireless transceiver. The Arduino would process the sensor data and control the motors, relaying the information to a PC. The Arduino used a PID controller to navigate a pre-mapped course.</p>
<p>Here are some more pictures</p>

<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/dscn1313/' title='DSCN1313'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1313-300x225.jpg" class="attachment-medium" alt="DSCN1313" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/dscn1314/' title='DSCN1314'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1314-300x225.jpg" class="attachment-medium" alt="DSCN1314" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/dscn1315/' title='DSCN1315'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1315-300x225.jpg" class="attachment-medium" alt="DSCN1315" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/dscn1316/' title='DSCN1316'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1316-300x225.jpg" class="attachment-medium" alt="DSCN1316" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image001-2/' title='image001'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image001-300x225.jpg" class="attachment-medium" alt="image001" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image002-2/' title='image002'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image002-300x225.jpg" class="attachment-medium" alt="image002" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image003-2/' title='image003'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image003-300x225.jpg" class="attachment-medium" alt="image003" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image004-2/' title='image004'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image004-300x225.jpg" class="attachment-medium" alt="image004" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image005-2/' title='image005'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image005-300x225.jpg" class="attachment-medium" alt="image005" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image006-2/' title='image006'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image006-300x225.jpg" class="attachment-medium" alt="image006" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image007-2/' title='image007'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image007-300x225.jpg" class="attachment-medium" alt="image007" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/image008/' title='image008'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/image008-300x225.jpg" class="attachment-medium" alt="image008" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/dscn1311/' title='DSCN1311'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1311-300x225.jpg" class="attachment-medium" alt="DSCN1311" /></a>
<a href='http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/dscn1312/' title='DSCN1312'><img width="300" height="225" src="http://www.robopenguins.com/wordpress/wp-content/uploads/2012/04/DSCN1312-300x225.jpg" class="attachment-medium" alt="DSCN1312" /></a>

]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/autonomous-drifting-rc-car/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FPGA Localization of Robot from its Beeps</title>
		<link>http://www.robopenguins.com/wordpress/fpga-localization-of-robot-from-its-beeps/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=fpga-localization-of-robot-from-its-beeps</link>
		<comments>http://www.robopenguins.com/wordpress/fpga-localization-of-robot-from-its-beeps/#comments</comments>
		<pubDate>Mon, 09 Apr 2012 04:44:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Academic]]></category>
		<category><![CDATA[Hardware]]></category>

		<guid isPermaLink="false">http://www.robopenguins.com/wordpress/?p=160</guid>
		<description><![CDATA[Final project for ECE 576 at Cornell, click here for the project write up]]></description>
				<content:encoded><![CDATA[<p><img alt="" src="https://instruct1.cit.cornell.edu/Courses/ece576/FinalProjects/f2009/jmd242_aps243/576JonAllisite/site/images/CIMG0026.JPG" title="Display" class="alignnone" width="394" height="782" /></p>
<p>Final project for ECE 576 at Cornell, click <a href="https://instruct1.cit.cornell.edu/Courses/ece576/FinalProjects/f2009/jmd242_aps243/576JonAllisite/site/index.html">here</a> for the project write up</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robopenguins.com/wordpress/fpga-localization-of-robot-from-its-beeps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
