<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;Dk4GRn48cSp7ImA9WhRUFE0.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090</id><updated>2012-01-24T17:05:27.079+05:30</updated><category term="mobile" /><category term="laser" /><category term="processing" /><category term="control" /><category term="engineer" /><category term="parallel port" /><category term="vehicle" /><category term="inside" /><category term="light" /><category term="ai2" /><category term="ping" /><category term="robot" /><category term="self" /><category term="recognition" /><category term="ashish" /><category term="surveillance" /><category term="phone" /><category term="stroustrup" /><category term="c#" /><category term="home" /><category term="detection" /><category term="mouse" /><category term="clap" /><category term="intelligence" /><category term="AI" /><category term="electrical" /><category term="whistle" /><category term="karpfinger" /><category term="keyboard" /><category term="video" /><category term="multi" /><category term="morse" /><category term="stepper" /><category term="line" /><category term="tone" /><category term="door" /><category term="harry potter" /><category term="opener" /><category term="pong" /><category term="appliance" /><category term="camera" /><category term="lock" /><category term="shooting" /><category term="poston" /><category term="tracking" /><category term="object" /><category term="webcam" /><category term="volume" /><category term="rc" /><category term="lynxmotion" /><category term="robots" /><category term="2007" /><category term="pointer" /><category term="machine" /><category term="servo" /><category term="bjarne" /><category term="follow" /><category term="frequency" /><category term="microcontroller" /><category term="karnataka" /><category term="asimov1" /><category term="color" /><category term="national" /><category term="coding4fun" /><category term="led" /><category term="turret" /><category term="projector" /><category term="detector" /><category term="op-amp" /><category term="automation" /><category term="defcon" /><category term="artifical" /><category term="motion" /><category term="technology" /><category term="hd44780" /><category term="autonomous" /><category term="drive" /><category term="dual" /><category term="warwick" /><category term="floppy" /><category term="box" /><category term="intensity" /><category term="rangefinder" /><category term="controlled" /><category term="iguanaworks" /><category term="dtmf" /><category term="rpm" /><category term="port. led" /><category term="switch" /><category term="emitting" /><category term="kevin" /><category term="institute" /><category term="real" /><category term="tachometer" /><category term="sound" /><category term="suratkhal" /><category term="shell" /><category term="computer" /><category term="scream" /><category term="phidgets" /><category term="parallel" /><category term="touch typing" /><category term="code" /><category term="image" /><category term="port" /><category term="timothy" /><category term="telephone" /><category term="nitk" /><category term="car" /><category term="gesture" /><category term="linux" /><category term="arduino" /><category term="hack" /><category term="directx" /><category term="radio" /><category term="vision" /><category term="derhgawen" /><category term="drawing" /><category term="usb" /><category term="robotics" /><category term="connect" /><category term="opto-isolated" /><category term="optoisolation" /><category term="relay" /><category term="tutorial" /><category term="panner" /><category term="remote" /><category term="edge" /><category term="sketch" /><category term="stepper motor" /><category term="motor" /><category term="based" /><category term="directsound" /><category term="cell" /><category term="time" /><category term="solenoid" /><category term="reed" /><category term="viper" /><category term="stay" /><category term="i-bot" /><category term="obstacle" /><category term="navigating" /><category term="wireless" /><category term="sensor" /><category term="pattern" /><category term="latch" /><category term="microphone" /><category term="article" /><category term="pan tilt" /><category term="writing" /><category term="lcd" /><category term="colin" /><category term="microbric" /><category term="lm324" /><category term="diode" /><title>Ashish's Programming Journal</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://ashishrd.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AshishDerhgawen" /><feedburner:info uri="ashishderhgawen" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by/3.0/" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>AshishDerhgawen</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry gd:etag="W/&quot;AkUDQHs5fyp7ImA9WhZXGUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4489801165226281839</id><published>2011-05-09T20:30:00.013+05:30</published><updated>2011-05-09T21:54:31.527+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-09T21:54:31.527+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="arduino" /><category scheme="http://www.blogger.com/atom/ns#" term="robot" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="wireless" /><category scheme="http://www.blogger.com/atom/ns#" term="shell" /><title>Building a computer controlled wireless robot</title><content type="html">&lt;span style="font-family:verdana;"&gt;For a long time, I have been trying to find the cheapest and easiest way to control electronic devices wirelessly using a computer. It can open up a lot of possibilities. For example, you could build a radio controlled &lt;a href="http://ashishrd.blogspot.com/2007/01/parallel-port-relay-for-playing-with.html"&gt;relay board&lt;/a&gt;, and control it from your computer. You could even control the board with a "small" computer such as an Arduino (or any microcontroller for that matter). If your Arduino has an &lt;a href="http://www.nuelectronics.com/estore/index.php?main_page=product_info&amp;amp;cPath=1&amp;amp;products_id=4"&gt;Ethernet shield&lt;/a&gt;, you could &lt;a href="http://sheepdogguides.com/arduino/art5serv.htm"&gt;use it as a Web server&lt;/a&gt; and control your relay board from anywhere in the world (as long as you have access to the Internet of course). There are many things that you could do without creating a mess with wires. I am mainly interested in this because I need a computer controlled wireless robot. A little background -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I have been working on a project at the Mobile Robotics Lab of IISc (Indian Institute of Science), Bangalore, in which I have to design a vision based obstacle avoidance algorithm for robots. What does that mean? Well, I basically have to design a robot that uses nothing but a small camera to identify obstacles in its path. Since image processing and computer vision stuff is usually quite CPU intensive, it is difficult to implement this code on a small robot. Small microcontrollers can't handle that stuff. So, the solution I came up with involves a wireless camera that transmits video to a nearby "big" computer. This big computer runs all the dirty computer vision codes, identifies the obstacles, and then somehow tells the robot how to avoid them. This is where wireless communication comes in.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;To create a wireless link, you could rip the guts of a cheap RC car and use its transmitter and receiver to control your robot. That's one technique. I did &lt;a href="http://ashishrd.blogspot.com/2007/02/computer-controlled-rc-car.html"&gt;something similar&lt;/a&gt; a few years ago . This time, I wanted to do things a little more elegantly, without destroying an RC car. I found this really inexpensive RF transmitter/receiver pair at a local electronics shop in Bangalore:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-sKJSRnM7so0/TcfjgVpLCHI/AAAAAAAAAas/jTD6-zLsKzk/s1600/tx-rx.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-sKJSRnM7so0/TcfjgVpLCHI/AAAAAAAAAas/jTD6-zLsKzk/s400/tx-rx.jpg" alt="" id="BLOGGER_PHOTO_ID_5604698405991024754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-zv3T9FhXMeM/TcfjvzR-jiI/AAAAAAAAAa0/zpviuWcec10/s1600/DSC09282.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/-zv3T9FhXMeM/TcfjvzR-jiI/AAAAAAAAAa0/zpviuWcec10/s400/DSC09282.JPG" alt="" id="BLOGGER_PHOTO_ID_5604698671644839458" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;They cost only 200 INR (about 4 USD)...both transmitter and receiver. What a steal!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;You can also find these online at Sparkfun:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Transmitter - &lt;a href="http://www.sparkfun.com/products/8945"&gt;http://www.sparkfun.com/products/8945&lt;/a&gt;&lt;/span&gt;  &lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Receiver - &lt;a href="http://www.sparkfun.com/products/8948"&gt;http://www.sparkfun.com/products/8948&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;They cost a little more on Sparkfun, but they're still inexpensive. The ones on Sparkfun operate at 315 Mhz, but the ones I have, operate at 434 Mhz (like &lt;a href="http://www.sunrom.com/rf-wireless/rf-remote-control/rf-transmitter-433-mhz-for-remote-control"&gt;this&lt;/a&gt; one). I don't think that would make any difference in how you connect them.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;To use these cheap RF modules, you could either connect them directly to your microcontroller/computer, or connect them with the help of parallel - serial encoder/decoder ICs.&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;I used the &lt;a href="http://www.ipic.co.jp/Pdffiles/ht12e.pdf"&gt;HT12E&lt;/a&gt; (parallel to serial encoder) and the &lt;a href="http://courses.cit.cornell.edu/ee476/FinalProjects/s2008/cl457_yft2/cl457_yft2/datasheets/HT12D.pdf"&gt;HT12D&lt;/a&gt; (serial to parallel decoder) ICs. The HT12E is a 12 bit parallel to serial encoder. Of those 12 bits, 8 bits are the address code, and the remaining 4 bits are data. To send a signal, the address bits on the transmitter and receiver should be the same. It's like a password. You can use a single RF transmitter to control different RF receivers (at the same frequency) by configuring the address bits appropriately. All receivers would have to be set to different addresses. With 8 bits, you can create a total of 256 combinations.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Here's what the serial data coming out of the encoder looks like, in an oscilloscope:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-RAxfPHRtJvo/TcfkFEIzxMI/AAAAAAAAAa8/5Xye_lwkWpE/s1600/oscilloscope.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 149px;" src="http://1.bp.blogspot.com/-RAxfPHRtJvo/TcfkFEIzxMI/AAAAAAAAAa8/5Xye_lwkWpE/s400/oscilloscope.jpg" alt="" id="BLOGGER_PHOTO_ID_5604699036947039426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you look closely, you'll notice that there are 13 peaks (instead of 12). I'm not sure what the first bit is for. (Probably a parity bit?) The 8 bits coming after the first bit make the address, and the last four make the data being sent.&lt;/span&gt;  &lt;span style="font-family:verdana;"&gt;You connect your microcontroller's (or computer's) parallel output to the 4 input channels on the encoder. With 4 bits, you can create 16 unique commands. That is enough for my purpose.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;For more on how to use these ICs with the Tx/Rx, check out this excellent article - &lt;a href="http://www.botskool.com/tutorials/electronics/general-electronics/building-rf-remote-control"&gt;http://www.botskool.com/tutorials/electronics/general-electronics/building-rf-remote-control&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Here's a flowchart of my system:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-vylozJVVcqA/Tcf_dXuJtEI/AAAAAAAAAbU/pdFw4VfsEGA/s1600/rf-module-flowchart.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 279px;" src="http://4.bp.blogspot.com/-vylozJVVcqA/Tcf_dXuJtEI/AAAAAAAAAbU/pdFw4VfsEGA/s400/rf-module-flowchart.png" alt="" id="BLOGGER_PHOTO_ID_5604729141334750274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I've connected an Arduino to my computer which acts as an interface between the encoder and my computer. Here's the Arduino that I'm using:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-geGTbzLPe8c/TcfkZaqD0II/AAAAAAAAAbE/83XieRlS7TM/s1600/Arduino.JPG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/-geGTbzLPe8c/TcfkZaqD0II/AAAAAAAAAbE/83XieRlS7TM/s400/Arduino.JPG" alt="" id="BLOGGER_PHOTO_ID_5604699386589466754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It's a &lt;a href="http://shop.moderndevice.com/products/bbb-kit"&gt;ModernDevice BBB&lt;/a&gt; Arduino Clone that I received from my friend &lt;a href="http://www.arunet.co.uk/tkboyd/index2.htm"&gt;Tom Boyd&lt;/a&gt;. I've been hooked to it ever since I got it! You should definitely get an Arduino if you don't already have one. It's the perfect tool for the programmer who enjoys playing with electronics. And it's also very easy and fun to use!&lt;br /&gt;&lt;br /&gt;Tom has some excellent tutorials on electronics and programming on his website that keeps inspiring me! Check out some of his awesome Arduino projects - &lt;a href="http://sheepdogguides.com/arduino/ahttoc.htm"&gt;http://sheepdogguide&lt;/a&gt;&lt;/span&gt;&lt;a href="http://sheepdogguides.com/arduino/ahttoc.htm"&gt;&lt;span style="font-family:verdana;"&gt;cool&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://sheepdogguides.com/arduino/ahttoc.htm"&gt;s.com/arduino/ahttoc.htm&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The robot I am using is a &lt;a href="http://www.microbric.com/p/4179707/viper-robot-kit.html"&gt;Microbric Viper&lt;/a&gt; robot that I received from Microbric a few years ago. The Microbric Viper comes with an IR module which can be used to communicate with a computer wirelessly. Although I've used it in the &lt;a href="http://ashishrd.blogspot.com/2007/04/self-navigating-microbric-viper-robot_25.html"&gt;past&lt;/a&gt;, it's kind of difficult to set up because infrared communication requires line-of-sight. Moreover, the range is quite limited.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-rs-EaZDe5q4/Tcfkmg40_5I/AAAAAAAAAbM/dXiBZU_PQjg/s1600/Viper.jpg"&gt;&lt;img style="cursor: pointer; width: 300px; height: 400px;" src="http://4.bp.blogspot.com/-rs-EaZDe5q4/Tcfkmg40_5I/AAAAAAAAAbM/dXiBZU_PQjg/s400/Viper.jpg" alt="" id="BLOGGER_PHOTO_ID_5604699611600322450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I'm not going to get into the details of connecting the encoders/decoders with the RF modules because it is already covered in detail in the article I mentioned earlier. I am however, going to share some difficulties I have faced in using these RF modules.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;When I was testing the receiver on a breadboard, I was powering it with an AC to DC adapter. The voltage was fine, but the decoder did not work at all. Why? When I was debugging the circuit with an oscilloscope, I realized that the signal at the encoder side was fine, with 13 distinct peaks. However, when I checked the data at the receiver side, I realized that there was some sort of noise, and the peaks were not distinct. The address bits were too close together and sometimes even merging together. Since the address bits on the decoder side did not match with this noisy data, it rejected it. I figured that this noise could be caused by radio interference noise from the AC to DC adapter. So, I removed it and powered each of them (Tx and Rx) with two AA batteries.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The other thing I noticed is that if you connect the third pin of the RF receiver (which is either marked as "Data" or "CE") to the data-IN pin of the decoder , the circuit won't work. Leave it unconnected.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I'm using a 1/4 wave monopole antenna (6.8 inches) with the RF modules. It's just a single core wire. The range I get is amazing. I think I get about 100-120 ft (through walls), and 1000+ ft outside (line-of-sight)! More than enough for my purpose. When I test it outside, it just keeps working no matter how far I go. So, I don't really know its limit yet!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The Arduino communicates with my computer through a USB to Serial cable. If I want to make the robot move forward, I would send the character '1' to the Arduino. It would recognize this as a command and forward it to the transmitter. I can send four commands to the Arduino - '1', '2', '3' and '4'. On receiving these characters, it sets the appropriate data bits on the encoder and transmits the signal.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Arduino code:&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: csharp"&gt;&lt;![CDATA[&lt;br /&gt;//Digital pins 2-5 are connected to pins A8-A11 of the HT12E encoder&lt;br /&gt;&lt;br /&gt;//Digital pin 6 is connected to the Transmit Enable (TE) pin of HT12E&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int serialInput = 0;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;int ledPin = 13;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void setup()&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  Serial.begin(9600);&lt;br /&gt;&lt;br /&gt;  pinMode(2, OUTPUT); //connected to A8 of HT123&lt;br /&gt;&lt;br /&gt;  pinMode(3, OUTPUT); //connected to A9 of HT123&lt;br /&gt;&lt;br /&gt;  pinMode(4, OUTPUT); //connected to A10 of HT123&lt;br /&gt;&lt;br /&gt;  pinMode(5, OUTPUT); //connected to A11 of HT123&lt;br /&gt;&lt;br /&gt;  pinMode(6, OUTPUT); //connected to TE pin (Transmit Enable) of HT12E&lt;br /&gt;&lt;br /&gt;  pinMode(ledPin, OUTPUT);&lt;br /&gt;&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;  digitalWrite(6, HIGH); //TE pin high (disable transmit)  &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void loop()&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;  if (Serial.available())&lt;br /&gt;&lt;br /&gt;  {&lt;br /&gt;&lt;br /&gt;    digitalWrite(ledPin, HIGH);&lt;br /&gt;&lt;br /&gt;    int serialInput = Serial.read();&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    switch(serialInput)&lt;br /&gt;&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;      case '1':&lt;br /&gt;&lt;br /&gt;        PORTD = B00000100;&lt;br /&gt;&lt;br /&gt;        delay(250);&lt;br /&gt;&lt;br /&gt;        break;&lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;&lt;br /&gt;      case '2':&lt;br /&gt;&lt;br /&gt;        PORTD = B00001000;&lt;br /&gt;&lt;br /&gt;        delay(250);&lt;br /&gt;&lt;br /&gt;        break;&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;       case '3':&lt;br /&gt;&lt;br /&gt;        PORTD = B00010000;&lt;br /&gt;&lt;br /&gt;        delay(250);&lt;br /&gt;&lt;br /&gt;        break;&lt;br /&gt;&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;       case '4':&lt;br /&gt;&lt;br /&gt;        PORTD = B00100000;&lt;br /&gt;&lt;br /&gt;        delay(250);&lt;br /&gt;&lt;br /&gt;        break;         &lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    digitalWrite(6, HIGH); //TE pin high (disable transmit)  &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;    digitalWrite(ledPin, LOW);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;On Windows, I use a C# application to send these commands to the Arduino. On Linux, I just use the terminal. My Arduino shows up as /dev/ttyUSB0. To send the command '1', I write...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;echo -n "1" &amp;gt; /dev/ttyUSB0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This makes the robot move forward.&lt;/span&gt;  &lt;span style="font-family:verdana;"&gt;For a more interactive session, you can use the screen command:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;screen /dev/ttyUSB0 9600&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;More on this here - &lt;a href="http://www.arduino.cc/playground/Interfacing/LinuxTTY"&gt;http://www.arduino.cc/playground/Interfacing/LinuxTTY&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;And finally, the thing you were probably waiting for...a video! -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://www.youtube.com/embed/XCPWYiKda0I" allowfullscreen="" width="425" frameborder="0" height="349"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I hope you enjoyed this post. My next step would be to put a wireless camera on this robot and test my obstacle avoidance algorithm. Wish me luck.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I hope the information I've shared helps you build your own radio controlled electronic devices and robots!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So what did you think? I'd love to hear your feedback in the section below.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Ashish&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4489801165226281839?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=uBKeReYMXvo:-X5gV1bJEY0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=uBKeReYMXvo:-X5gV1bJEY0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4489801165226281839/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4489801165226281839" title="50 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4489801165226281839?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4489801165226281839?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/uBKeReYMXvo/building-computer-controlled-wireless.html" title="Building a computer controlled wireless robot" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-sKJSRnM7so0/TcfjgVpLCHI/AAAAAAAAAas/jTD6-zLsKzk/s72-c/tx-rx.jpg" height="72" width="72" /><thr:total>50</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2011/05/building-computer-controlled-wireless.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AHSX89fyp7ImA9WhZWEEw.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-8439242003822115491</id><published>2010-02-13T11:19:00.016+05:30</published><updated>2011-05-10T13:52:18.167+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T13:52:18.167+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="microcontroller" /><category scheme="http://www.blogger.com/atom/ns#" term="relay" /><category scheme="http://www.blogger.com/atom/ns#" term="servo" /><category scheme="http://www.blogger.com/atom/ns#" term="usb" /><title>Homemade USB interface board using a PIC</title><content type="html">&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;Hello folks,&lt;br /&gt;
&lt;br /&gt;
Here's what I've been working on for the last couple of weeks:&lt;/span&gt;  &lt;span style="font-family:arial;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/S3Zbb5il9nI/AAAAAAAAAYg/MsThk6IqUEg/s1600-h/18f4550_board.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/S3Zbb5il9nI/AAAAAAAAAYg/MsThk6IqUEg/s400/18f4550_board.jpg" alt="" id="BLOGGER_PHOTO_ID_5437634134956963442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;
&lt;br /&gt;
This is a USB interface board I've built around a PIC 18f4550 microcontroller from Microchip. As many of you probably know, I've used my computer's parallel port to connect many things to my computer. However, most laptops don't have parallel ports these days, so I needed a way to connect things without a parallel port. This board does exactly that (and actually much, much more). I found a really nice tutorial on building this board here - &lt;a href="http://eegeek.net/content/view/13/32/"&gt;http://eegeek.net/content/view/13/32/&lt;/a&gt;&lt;/span&gt;    &lt;span style="font-family:arial;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/S3ZTB7oD9zI/AAAAAAAAAYY/efnit-tzCIA/s1600-h/18f4550_usb_proto_basic.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 251px;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/S3ZTB7oD9zI/AAAAAAAAAYY/efnit-tzCIA/s400/18f4550_usb_proto_basic.png" alt="" id="BLOGGER_PHOTO_ID_5437624892747151154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/S3ZclhWUz8I/AAAAAAAAAYo/3Qj-rgljAbY/s1600-h/18f4550_bboard.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/S3ZclhWUz8I/AAAAAAAAAYo/3Qj-rgljAbY/s400/18f4550_bboard.jpg" alt="" id="BLOGGER_PHOTO_ID_5437635399773376450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
You can make your C#, VB, C++ programs communicate with the chip using the open-source &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;amp;nodeId=2680&amp;amp;dDocName=en537044"&gt;MCHPFSUSB Framework&lt;/a&gt; from Microchip, or the Window's HID drivers. The framework comes with lots of samples to get you started.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family:arial;"&gt;I've put a bootloader on the chip for the sake of convenience. With a bootloader, you don't have to take the chip off the board and put it in a separate programmer for programming. I have to sometimes re-program the chip every 10-15 minutes during development (especially when there's a hard to find bug), and the bootloader really makes it easy.&lt;br /&gt;
&lt;br /&gt;
No project is compete until you record a video! So here's one:&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tNxBJbiav8Y&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/tNxBJbiav8Y&amp;amp;hl=en_US&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Please excuse the background noise in the video. There was some construction work going on while I was recording this. Anyway, I'm using the board to control some LEDs, a servo, and reading the value of a potentiometer. Controlling the servo was the trickiest part because servo's are sensitive to timing. They expect to receive a pulse every 20 ms, and the duration of the pulse determines how much they will turn. The length of the pulse usually varies between 1-2 ms. Setting up the timers on the chip to work properly was a bit challenging, but I finally got it working. This sound card based oscilloscope really helped! - &lt;a href="http://www.zeitnitz.de/Christian/scope_en"&gt;http://www.zeitnitz.de/Christian/scope_en&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Hope you enjoyed this post. I will be using this board in future projects. Keep checking!&lt;br /&gt;
&lt;/span&gt;&lt;a href="http://www.zeitnitz.de/Christian/scope_en"&gt; &lt;/a&gt;  &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-8439242003822115491?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=HRUMDZuxKZw:RJ6js1mLhZE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=HRUMDZuxKZw:RJ6js1mLhZE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/8439242003822115491/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=8439242003822115491" title="29 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/8439242003822115491?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/8439242003822115491?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/HRUMDZuxKZw/homemade-usb-interface-board-using-pic.html" title="Homemade USB interface board using a PIC" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_R7o3lst9P4U/S3Zbb5il9nI/AAAAAAAAAYg/MsThk6IqUEg/s72-c/18f4550_board.jpg" height="72" width="72" /><thr:total>29</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2010/02/homemade-usb-interface-board-using-pic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IBR3wzfip7ImA9Wx9XEE4.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-2023499199659268907</id><published>2010-01-29T00:12:00.022+05:30</published><updated>2011-01-03T12:55:56.286+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-03T12:55:56.286+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="hd44780" /><category scheme="http://www.blogger.com/atom/ns#" term="lcd" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel port" /><title>Adding a small HD44780 LCD display to my PC</title><content type="html">&lt;span style="font-family:arial;"&gt;I've always felt the need to have a small screen on my computer to show some "extra" information which I don't usually want on my screen all the time. By extra information I mean - news headlines, RSS feeds from my favorite blogs, weather updates, CPU usage information, new e-mail notifications, etc. So, to fulfill this humble need of mine, I bought a small (16x2 character) LCD screen for Rs.90 (approximately USD $2). Very inexpensive!:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOHCFsExI/AAAAAAAAAXg/T41rQQp5FJA/s1600-h/DSC08074.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431849245800665874" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOHCFsExI/AAAAAAAAAXg/T41rQQp5FJA/s400/DSC08074.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/S2HPIIGKr8I/AAAAAAAAAYA/2xEzFkB7s2A/s1600-h/DSC08143.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431850364104781762" border="0" alt="" src="http://2.bp.blogspot.com/_R7o3lst9P4U/S2HPIIGKr8I/AAAAAAAAAYA/2xEzFkB7s2A/s400/DSC08143.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;(I've received an e-mail from &lt;a href="http://www.sheepdogsoftware.co.uk/"&gt;TK Boyd&lt;/a&gt;! He's the man who inspired me to connect all sorts of things to my computer!)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This LCD is based on the popular Hitachi HD44780 controller. You can find lots of information about how to communicate with this LCD on the Internet. I connected it to my computer's parallel port and fixed it to my computer's case:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOp9Vlz_I/AAAAAAAAAXo/qQ2OxFHqFgg/s1600-h/DSC08103.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431849845820608498" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOp9Vlz_I/AAAAAAAAAXo/qQ2OxFHqFgg/s400/DSC08103.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOqLt8_II/AAAAAAAAAXw/SMh94XlzD1M/s1600-h/DSC08113.jpg"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431849849680886914" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOqLt8_II/AAAAAAAAAXw/SMh94XlzD1M/s400/DSC08113.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOqi5mc-I/AAAAAAAAAX4/s-fBT2rQeI8/s1600-h/DSC08146.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431849855903757282" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOqi5mc-I/AAAAAAAAAX4/s-fBT2rQeI8/s400/DSC08146.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I created this panel by drilling holes into the case, and adding two switches (for the LCD and backlight), and a pot for contrast adjustment. The LCD is powered by 5V from the SMPS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Here is the pinout for the LCD:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HFqb_PWrI/AAAAAAAAAWo/XfWJ6wUeNuw/s1600-h/LCD16_PINOUT_.JPG"&gt;&lt;img style="WIDTH: 290px; HEIGHT: 400px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431839958443711154" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HFqb_PWrI/AAAAAAAAAWo/XfWJ6wUeNuw/s400/LCD16_PINOUT_.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;DB0-DB7 is the data bus.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;'E' is the enable line. This is used to indicate the start of a transmission of a data byte to the LCD controller. When we start a transmission, this line is brought high. When transmission is complete, this line is brought low.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;'RS' is the register select line. This line indicates to the LCD controller whether the data byte is to be treated as a command or as text data to be displayed on the screen. If it is high, the data sent to the LCD displayed on the screen. If it is low, the data is treated as a command.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;'R/W' is the read/write line. If it is low, information can be written to the LCD controller. If it is high, data can be read from the LCD. I've kept it permanently low in my circuit.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Here's a screenshot from the HD44780's datasheet (click on the image to enlarge it):&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HHrIhMi2I/AAAAAAAAAXA/BfnVgbROCyw/s1600-h/44780_datasheet2.JPG"&gt;&lt;img style="WIDTH: 393px; HEIGHT: 400px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431842169420548962" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HHrIhMi2I/AAAAAAAAAXA/BfnVgbROCyw/s400/44780_datasheet2.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/S2HIS9RAS_I/AAAAAAAAAXI/nQQbcPWSbeM/s1600-h/datasheet3.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 153px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431842853594614770" border="0" alt="" src="http://3.bp.blogspot.com/_R7o3lst9P4U/S2HIS9RAS_I/AAAAAAAAAXI/nQQbcPWSbeM/s400/datasheet3.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;So, this is how a typical command would be executed:&lt;/span&gt;&lt;br /&gt;&lt;ol style="FONT-FAMILY: arial"&gt;&lt;li&gt;Make 'RS' and 'R/W' low ('R/W' is always low in my circuit).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Set 'E' high to indicate the start of the command.&lt;/li&gt;&lt;li&gt;Make DB7-DB0 equal to binary "00000001" (decimal: 1). This is the clear display command.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Make 'E' low again to execute the command (which in this case would clear the display).&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:arial;"&gt;In code, this would look like:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: csharp"&gt;&lt;![CDATA[&lt;br /&gt;//Make RS low (this is a command), and E high&lt;br /&gt;PortAccess.Output(control, 0);&lt;br /&gt;&lt;br /&gt;//Set data pins on parallel port&lt;br /&gt;PortAccess.Output(data, 1);&lt;br /&gt;&lt;br /&gt;//Make E low&lt;br /&gt;PortAccess.Output(control, 1);&lt;br /&gt;&lt;br /&gt;//Give the LCD controller some time to process the command&lt;br /&gt;Thread.Sleep(1);&lt;br /&gt;]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I'm using &lt;a href="http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html"&gt;Inpout32&lt;/a&gt; to access my parallel port. Another point I should mention here is that the 'E' pin on my LCD is connected to C0 on my parallel port and 'RS' is connected to C2. A weird thing I noticed about C0 is that you have to send "1" to it to make it low (and vice versa). This is why I'm&lt;/span&gt; &lt;span style="font-family:arial;"&gt;sending "1" in the last line of the the code. I have no idea why this is happening. Have any clues?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;To write characters on the LCD, you just have to send the ASCII code of the character to the LCD:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: csharp"&gt;&lt;![CDATA[&lt;br /&gt;char char1 = 'A';&lt;br /&gt;&lt;br /&gt;//Make RS high (this is not a command), and E high&lt;br /&gt;PortAccess.Output(control, 4);&lt;br /&gt;&lt;br /&gt;//Send the ASCII code of 'A' (= 65)&lt;br /&gt;PortAccess.Output(data, (int)char1);&lt;br /&gt;&lt;br /&gt;//Make E low&lt;br /&gt;PortAccess.Output(control, 5);&lt;br /&gt;&lt;br /&gt;Thread.Sleep(1);&lt;br /&gt;]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold;font-family:arial;" &gt;Creating custom characters:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HPdwQR8SI/AAAAAAAAAYI/QnSr3p6fTvA/s1600-h/DSC08149.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431850735661871394" border="0" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HPdwQR8SI/AAAAAAAAAYI/QnSr3p6fTvA/s400/DSC08149.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Most characters on the LCD (I think there are a total of 248) are stored in what's called a CGROM. This&lt;/span&gt; &lt;span style="font-family:arial;"&gt;is an acronym for "Character Generator Read Only Memory". Characters inside this memory location are&lt;/span&gt; &lt;span style="font-family:arial;"&gt;pre-defined, and cannot be changed. So how do we create our own characters if we can't change &lt;/span&gt;&lt;span style="font-family:arial;"&gt;anything here? Well, there's a 64-byte hunk of RAM called CGRAM in the LCD, and it is write-able! &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Characters on an LCD can be up to 8 pixels high, and 5 pixels wide. Each row consumes 1 byte of&lt;/span&gt; &lt;span style="font-family:arial;"&gt;memory. Since there are 8 rows, one character takes up 8 bytes. So, a total of 8 custom characters &lt;/span&gt;&lt;span style="font-family:arial;"&gt;can be defined in 64 bytes. Here's the pixel map of a bell pattern I created:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/S2HJMZ_KIaI/AAAAAAAAAXQ/CITyWCDAi-0/s1600-h/bell.JPG"&gt;&lt;img style="WIDTH: 332px; HEIGHT: 243px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431843840556933538" border="0" alt="" src="http://3.bp.blogspot.com/_R7o3lst9P4U/S2HJMZ_KIaI/AAAAAAAAAXQ/CITyWCDAi-0/s400/bell.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I have written the decimal and hex values for each row. To store this custom character in the CGRAM, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;I would have to go to the CGRAM address (see the "Set CGRAM address" command in the datasheet) and&lt;/span&gt; &lt;span style="font-family:arial;"&gt;write these values. The address of the first byte of the first character is 64 (hex: 0x40). How in the world did &lt;/span&gt;&lt;span style="font-family:arial;"&gt;I get that value? Well if you look at the command for setting the CGRAM address in the datasheet, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;it says we have to set DB6 to "1". The rest of the bits, DB0-DB5, determine the CGRAM address. If we&lt;/span&gt; &lt;span style="font-family:arial;"&gt;were to set DB0 to DB5 "0", we would be able to set the first first byte of the first character. The &lt;/span&gt;&lt;span style="font-family:arial;"&gt;complete command would be binary "1000000" (DB6-DB0). This is equal to 64 in decimal. Similarly, the&lt;/span&gt; &lt;span style="font-family:arial;"&gt;address of the first bye of the second character would be 64 + 8 = 72 (remember each character &lt;/span&gt;&lt;span style="font-family:arial;"&gt;consumes 8 bytes).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Here's a code sample to draw this bell character on the LCD:&lt;br /&gt;&lt;br /&gt;&lt;script type="syntaxhighlighter" class="brush: csharp"&gt;&lt;![CDATA[&lt;br /&gt;int[] bellBytes = { 4, 14, 14, 14, 31, 0, 4, 0 };&lt;br /&gt;&lt;br /&gt;//Set CGRAM address&lt;br /&gt;PortAccess.Output(control, 0);&lt;br /&gt;PortAccess.Output(data, 64);&lt;br /&gt;PortAccess.Output(control, 1); Thread.Sleep(1);&lt;br /&gt;&lt;br /&gt;//Write character data&lt;br /&gt;for (int i = 0; i &lt; bellBytes.Length; i++)&lt;br /&gt;{&lt;br /&gt; PortAccess.Output(control, 4); &lt;br /&gt; PortAccess.Output(data, bellBytes[i]);&lt;br /&gt; PortAccess.Output(control, 5);&lt;br /&gt; Thread.Sleep(1);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Set DDRAM address&lt;br /&gt;PortAccess.Output(control, 0);&lt;br /&gt;PortAccess.Output(data, 128);&lt;br /&gt;PortAccess.Output(control, 1); Thread.Sleep(1);&lt;br /&gt;&lt;br /&gt;//Display custom character&lt;br /&gt;PortAccess.Output(control, 4); &lt;br /&gt;PortAccess.Output(data, 0);&lt;br /&gt;PortAccess.Output(control, 5);&lt;br /&gt;Thread.Sleep(1);&lt;br /&gt;&lt;br /&gt;]]&gt;&lt;/script&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;I need to do some explaining here! Well, first we define the bytes for the bell character in an&lt;/span&gt; &lt;span style="font-family:arial;"&gt;array. Then we set the CGRAM address to 64 (first byte of the first custom character). Then we write&lt;/span&gt; &lt;span style="font-family:arial;"&gt; the values in the array to the CGRAM in the for-loop. Notice that we don't have to set the &lt;/span&gt;&lt;span style="font-family:arial;"&gt;CGRAM address every time we have to go to a different byte (65,66,67 etc). The LCD controller auto&lt;/span&gt; &lt;span style="font-family:arial;"&gt;increments the CGRAM address everytime we write a byte. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;To display this newly created character, we first have to switch back from the CGRAM to the display&lt;/span&gt; &lt;span style="font-family:arial;"&gt;area. We do this by setting the DDRAM address to 128 (first character of the first line). 129 would&lt;/span&gt; &lt;span style="font-family:arial;"&gt;be the second character, and so on. The second line starts at DDRAM address 192.&lt;/span&gt;&lt;span style="font-family:arial;"&gt; We display the&lt;/span&gt; &lt;span style="font-family:arial;"&gt;custom character by displaying ASCII code "0". ASCII codes 0 through 7 are for custom characters. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;They normally serve as control codes for marking the beginning of a serial transmission, but since&lt;/span&gt; &lt;span style="font-family:arial;"&gt;these have no meaning to an LCD module, the designers reserved them for CGRAM characters. It took me&lt;/span&gt; &lt;span style="font-family:arial;"&gt;a long time to figure that out!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/S2HJobOhqVI/AAAAAAAAAXY/MBXavQuBYLc/s1600-h/base_address.JPG"&gt;&lt;img style="WIDTH: 228px; HEIGHT: 225px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431844321926162770" border="0" alt="" src="http://2.bp.blogspot.com/_R7o3lst9P4U/S2HJobOhqVI/AAAAAAAAAXY/MBXavQuBYLc/s400/base_address.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I find it convenient to create custom characters on a sheet of graph paper before I begin coding:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/S2HQRAoJvCI/AAAAAAAAAYQ/HBKrUf-LIcY/s1600-h/DSC08132.JPG"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 300px; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5431851616230292514" border="0" alt="" src="http://1.bp.blogspot.com/_R7o3lst9P4U/S2HQRAoJvCI/AAAAAAAAAYQ/HBKrUf-LIcY/s400/DSC08132.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-WEIGHT: bold;font-family:arial;" &gt;A note on creating animations:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You can create animation by rapidly printing custom characters. If you have a custom character on your LCD, and you modify it's bytes by going to the CGRAM, the character will change. In fact, all occurrences of that character will change. Here's another cool thing. You can create more frames for your animation than the eight character limit. This is because you can load new bit patterns from your computer without having to store it in the LCD's memory. Neat!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;This post is getting long, so I'll end my discourse here. :) My LCD project is a WIP right now. I'm still adding more features. Anyway, I hope you find this post helpful in your projects. Have fun!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Links:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://home.iae.nl/users/pouweha/lcd/lcd0.shtml"&gt;How to control a HD44780-based Character-LCD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dinceraydin.com/lcd/custom.htm"&gt;Defining Custom Characters&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.8051projects.net/lcd-interfacing/lcd-custom-character.php"&gt;Creating custom characters tutorial&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/KB/cs/cspplcds.aspx"&gt;CodeProject article on controlling LCDs using C#&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-2023499199659268907?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=t3DyzGak7PQ:fmjKwMfVj0Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=t3DyzGak7PQ:fmjKwMfVj0Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/2023499199659268907/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=2023499199659268907" title="20 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/2023499199659268907?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/2023499199659268907?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/t3DyzGak7PQ/adding-small-hd44780-lcd-display_29.html" title="Adding a small HD44780 LCD display to my PC" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/S2HOHCFsExI/AAAAAAAAAXg/T41rQQp5FJA/s72-c/DSC08074.jpg" height="72" width="72" /><thr:total>20</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2010/01/adding-small-hd44780-lcd-display_29.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08ARHo9eSp7ImA9WhZWEEw.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-398255541807157918</id><published>2009-07-27T20:29:00.013+05:30</published><updated>2011-05-10T13:54:05.461+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-10T13:54:05.461+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="motor" /><category scheme="http://www.blogger.com/atom/ns#" term="rpm" /><category scheme="http://www.blogger.com/atom/ns#" term="reed" /><category scheme="http://www.blogger.com/atom/ns#" term="port" /><category scheme="http://www.blogger.com/atom/ns#" term="switch" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><category scheme="http://www.blogger.com/atom/ns#" term="tachometer" /><title>Reed Switch Motor and Parallel Port Tachometer</title><content type="html">&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1lB3NvehdOM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/1lB3NvehdOM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;color1=0x2b405b&amp;amp;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Hello readers! I'm posting a project here after quite some time. After moving to Bangalore, I had slowed down. Well, now I am building stuff again so I'll be posting much more often!&lt;br /&gt;
&lt;br /&gt;
A few days ago, my brother &lt;a href="http://amritd.blogspot.com/"&gt;Amrit Derhgawen&lt;/a&gt;, cousin Anand Karpatne,  and I decided to make a simple reed switch motor. My brother is a character animator at DreamWorks, but he also happens to be good with electronic things. So, after a few hours of construction and troubleshooting, he finally got the motor working. JOY!&lt;br /&gt;
&lt;br /&gt;
A reed switch motor consists of a rotor made up of 2 (or 4) permanent magnets. An electromagnet and reed switch are placed close to the rotor on opposite sides. I got my electromagnet by stripping a relay. When a magnet on the rotor gets close to the reed switch, the reed switch gets magnetized and allows current to pass through and turn on the electromagnet. The electromagnet pushes the magnet closest to it, and makes the rotor turn. The electromagnet is switched off when there is no magnet close to the reed switch, and this allows the rotor to spin freely from inertia. When the other magnet gets in working range of the reed switch, the electromagnet pushes again.&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/Sm3LeRd51-I/AAAAAAAAAWU/-hd-crgPiQk/s1600-h/reed-switch-motor.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 213px;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/Sm3LeRd51-I/AAAAAAAAAWU/-hd-crgPiQk/s400/reed-switch-motor.gif" alt="" id="BLOGGER_PHOTO_ID_5363166452213471202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After making the motor, I decided to measure it's RPM (Revolutions Per Minute) using my computer for the fun of it. So, I connected another reed switch to my computer's parallel port as shown here:&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/Sm3CM1bWyaI/AAAAAAAAAV8/1rqXzkFchIc/s1600-h/Connection.gif"&gt;&lt;img style="cursor: pointer; width: 320px; height: 155px;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/Sm3CM1bWyaI/AAAAAAAAAV8/1rqXzkFchIc/s320/Connection.gif" alt="" id="BLOGGER_PHOTO_ID_5363156257024166306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
By default, status port 7 (S7) is high on my computer. When a magnet comes close to the reed switch, S7 becomes low. I placed  this reed switch very close to the motor's rotor. The software is a C# Console Application which uses &lt;a href="http://logix4u.net/Legacy_Ports/Parallel_Port/Inpout32.dll_for_Windows_98/2000/NT/XP.html"&gt;Inpout32.dll&lt;/a&gt; to read the parallel port. For about every 60 revolutions of the motor, it estimates its RPM.&lt;br /&gt;
&lt;br /&gt;
The motor usually spins at around 3000 to 4000 RPM depending on voltage. Here is a graph I generated using values from the program:&lt;br /&gt;
&lt;br /&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/Sm3tnCtrrvI/AAAAAAAAAWc/X2ks1K2bj5k/s1600-h/motor-chart.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 263px;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/Sm3tnCtrrvI/AAAAAAAAAWc/X2ks1K2bj5k/s400/motor-chart.jpg" alt="" id="BLOGGER_PHOTO_ID_5363203986267287282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I turned the motor off and on 3 times quickly, and also played with the voltage. You can see all this in the graph!&lt;br /&gt;
&lt;br /&gt;
Do watch the video to see it in action!&lt;br /&gt;
&lt;br /&gt;
For more information on how to make reed switch motors, check out this wonderful tutorial - &lt;a href="http://www.simplemotor.com/rsmotor.htm"&gt;http://www.simplemotor.com/rsmotor.htm&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
Ashish :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-398255541807157918?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=PgLRpBXgCSw:qUUc5J8zatI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=PgLRpBXgCSw:qUUc5J8zatI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/398255541807157918/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=398255541807157918" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/398255541807157918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/398255541807157918?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/PgLRpBXgCSw/reed-switch-motor-and-parallel-port.html" title="Reed Switch Motor and Parallel Port Tachometer" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_R7o3lst9P4U/Sm3LeRd51-I/AAAAAAAAAWU/-hd-crgPiQk/s72-c/reed-switch-motor.gif" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2009/07/reed-switch-motor-and-parallel-port.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMFQ30-cCp7ImA9WhZVGEg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-5083460409529153123</id><published>2008-07-12T09:56:00.009+05:30</published><updated>2011-05-31T21:26:52.358+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-31T21:26:52.358+05:30</app:edited><title>A new place, a new beginning...</title><content type="html">My family has just moved from Delhi to Bangalore after a tiring 36 hour train journey. Wow..can you even believe that? That's the longest I've ever been on a train! Our movers haven't arrived yet, and our apartment is pretty much empty. There's no refrigerator, no TV, and no bed to sleep on! Well, hopefully everything should arrive within a day or two. The weather here is so much better compared to Delhi (which was very hot and humid when we left).&lt;br /&gt;
&lt;br /&gt;
Moving can be stressful, especially since you have to part with lots of people and friends. Thankfully, this isn't anything new to me as I've always been wandering and on the move. If I remember correctly, I've moved a total of 10 times across 2 countries (U.S. and India), and 6 cities in the 20 years of my existence in this life. I wonder what's after Bangalore! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-5083460409529153123?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=jSpNKsyntFQ:momPZHlDoAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=jSpNKsyntFQ:momPZHlDoAg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/5083460409529153123/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=5083460409529153123" title="22 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/5083460409529153123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/5083460409529153123?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/jSpNKsyntFQ/i-have-moved.html" title="A new place, a new beginning..." /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><thr:total>22</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2008/07/i-have-moved.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMBQnc7fyp7ImA9WhZVGEg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-3375445707603155095</id><published>2008-04-11T22:18:00.010+05:30</published><updated>2011-05-31T21:27:33.907+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-31T21:27:33.907+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding4fun" /><title>Coding4Fun: Webcam Based Laser Tracking for Human-Computer Interaction</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href=""&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/R_-ln7agHhI/AAAAAAAAAOs/LX1thQZZpkw/s200/dfjshpww_104g57b4rgc.jpg" alt="" id="BLOGGER_PHOTO_ID_5188047401136430610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;
Here's a new Coding4Fun article I did -&lt;a href="http://blogs.msdn.com/coding4fun/archive/2008/04/10/8377477.aspx"&gt; &lt;/a&gt;&lt;a href="http://blogs.msdn.com/coding4fun/archive/2008/04/10/8377477.aspx"&gt;Webcam Based Laser Tracking for Human-Computer Interaction&lt;/a&gt;.&lt;br /&gt;
&lt;blockquote&gt;In this article, we will put together a program which will allow us to move the mouse cursor on our computers with a laser pointer, and even generate mouse clicks using only a webcam for computer vision. &lt;/blockquote&gt;&lt;br /&gt;
You can also use it for impressing your friends by drawing things on your computer with a laser.&lt;br /&gt;
&lt;br /&gt;
Enjoy! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-3375445707603155095?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=nwlRRbtrYmM:a7JeK6qSLC4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=nwlRRbtrYmM:a7JeK6qSLC4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/3375445707603155095/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=3375445707603155095" title="17 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3375445707603155095?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3375445707603155095?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/nwlRRbtrYmM/coding4fun-webcdam-webcam-based-laser.html" title="Coding4Fun: Webcam Based Laser Tracking for Human-Computer Interaction" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_R7o3lst9P4U/R_-ln7agHhI/AAAAAAAAAOs/LX1thQZZpkw/s72-c/dfjshpww_104g57b4rgc.jpg" height="72" width="72" /><thr:total>17</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2008/04/coding4fun-webcdam-webcam-based-laser.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMDRn47fSp7ImA9WhZVGEg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-420827936733790231</id><published>2008-03-16T23:25:00.012+05:30</published><updated>2011-05-31T21:27:57.005+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-31T21:27:57.005+05:30</app:edited><title>Laser Tracking with webcam for Human-Computer Interaction</title><content type="html">&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ggsqsDXyiR0&amp;amp;hl=en"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/ggsqsDXyiR0&amp;amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
This post should have been written two months ago, in January, but with all sorts of things keeping me busy, I just couldn't get enough time to shoot videos and write about the project. Anyway, now that I do have time (and a video), here's what the whole thing's about: While writing an email to &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; on January 29th, 2007, I thought - Wouldn't it be cool if I could control my mouse cursor with a laser pointer, and even draw things  with it. I had tried doing &lt;a href="http://ashishrd.blogspot.com/2006/12/lasersketch-doodling-with-lasers.html"&gt;something similar&lt;/a&gt; in 2006, but it had some serious speed issues. This time, after rewriting the code and introducing some neat image processing techniques,  the code is much faster than before. I was surprised that I had a working prototype within 3-4 days of coding.&lt;br /&gt;
&lt;br /&gt;
The idea is pretty much similar to Johnny Lee's &lt;a href="http://www.cs.cmu.edu/%7Ejohnny/projects/wii/"&gt;Wii Whiteboard&lt;/a&gt; project, except that I'm using a webcam instead of a Nintendo Wii remote. The program uses the webcam to track a laser dot in its FOV. With a projector, you can select its projected area, and the program would map its coordinates to your screen. Then, for opening a file, you'd just have to point on the file with a laser pointer and your computer would open it for you!&lt;br /&gt;
&lt;br /&gt;
Oh, and by the way, while sending my next email to Scott, I didn't use a mouse for clicking the "Send" button. :)&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-style: italic;"&gt;Source code and details coming soon!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Cheers,&lt;br /&gt;
Ashish&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-420827936733790231?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=WvHr_D7Qoc4:_lXSeIOpoLE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=WvHr_D7Qoc4:_lXSeIOpoLE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/420827936733790231/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=420827936733790231" title="49 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/420827936733790231?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/420827936733790231?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/WvHr_D7Qoc4/laser-tracking-with-webcam-for-human.html" title="Laser Tracking with webcam for Human-Computer Interaction" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><thr:total>49</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2008/03/laser-tracking-with-webcam-for-human.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEESXY9eCp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-2082155284709101186</id><published>2008-02-23T21:19:00.010+05:30</published><updated>2008-11-13T10:00:08.860+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:08.860+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="phidgets" /><category scheme="http://www.blogger.com/atom/ns#" term="pan tilt" /><category scheme="http://www.blogger.com/atom/ns#" term="servo" /><category scheme="http://www.blogger.com/atom/ns#" term="lynxmotion" /><title>Having fun with Phidgets!</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/R8BWYEOReYI/AAAAAAAAAOQ/9WR0aCfw8Fk/s1600-h/Phidgts-PanTilt.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/R8BWYEOReYI/AAAAAAAAAOQ/9WR0aCfw8Fk/s400/Phidgts-PanTilt.jpg" alt="" id="BLOGGER_PHOTO_ID_5170227343671785858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(Click image to enlarge)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've just got a &lt;a href="http://www.trossenrobotics.com/store/p/3137-Pan-and-Tilt-Kit.aspx"&gt;Lynxmotion - Pan and Tilt Kit&lt;/a&gt; from &lt;a href="http://www.phidgets.com/"&gt;Phidgets&lt;/a&gt; (thanks to Microsoft!). The kit comes with two servos, a pan/tilt assembly, a &lt;span id="ctl40_Desc1_lblLongDescription"&gt;&lt;a href="http://www.phidgets.com/products.php?product_id=1001"&gt;Phidgets USB 4-Servo Controller&lt;/a&gt;, and lots of fun. :) The Phidgets controller connects to a USB port, and can control up to four servos  simultaneously.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.phidgets.com/images/1001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.phidgets.com/images/1001.jpg" alt="" border="0" /&gt;&lt;/a&gt;Here's a video - I'm controlling the pan/tilt of my webcam with a mouse:&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gDLwBgZjkJU&amp;amp;rel=1"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/gDLwBgZjkJU&amp;amp;rel=1" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I am really impressed by how easy it is to program and control the servos with the Phidgets controller. You don't need to have any knowledge of electronics or USB communication protocols for using it.&lt;br /&gt;&lt;br /&gt;If you're interested in buying one , you can find it here - &lt;a href="http://www.trossenrobotics.com/store/p/3137-Pan-and-Tilt-Kit.aspx"&gt;http://www.trossenrobotics.com/store/p/3137-Pan-and-Tilt-Kit.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-2082155284709101186?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=Vq4NxfQq2Rc:R4FrzJDD544:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=Vq4NxfQq2Rc:R4FrzJDD544:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/2082155284709101186/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=2082155284709101186" title="12 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/2082155284709101186?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/2082155284709101186?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/Vq4NxfQq2Rc/having-fun-with-phidgets.html" title="Having fun with Phidgets!" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/R8BWYEOReYI/AAAAAAAAAOQ/9WR0aCfw8Fk/s72-c/Phidgts-PanTilt.jpg" height="72" width="72" /><thr:total>12</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2008/02/having-fun-with-phidgets.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEESH0zfSp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4568995967871484927</id><published>2008-02-17T12:30:00.005+05:30</published><updated>2008-11-13T10:00:09.385+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:09.385+05:30</app:edited><title>New hobby - R/C airplanes!</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/R72vKkOReQI/AAAAAAAAANQ/_BX71YfIfk8/s1600-h/DSC04474.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/R72vKkOReQI/AAAAAAAAANQ/_BX71YfIfk8/s400/DSC04474.JPG" alt="" id="BLOGGER_PHOTO_ID_5169480543348291842" border="0" /&gt;&lt;/a&gt;I've got a new &lt;a href="http://www.silverlit-flyingclub.com/xtwin.htm"&gt;Silverlit X-Twin Eagle Wing&lt;/a&gt; R/C airplane for Rs. 1700 (about $40).  Having a wingspan of only 9 inches, the plane is small enough to fly in your backyard, or in an indoor hall. Out of the box, I noticed that the plane was a bit tail-heavy. However, after I taped a dime to its nose, it flew like a dream! Overall, the plane will give at least 15-20 minutes of flight on a single charge. However, since I never fly continuously for more than 5 minutes, I usually enjoy several hours of flying before it has to be charged! Speaking of charging, the plane has a lightweight LiPo  power supply, which can be charged by plugging the plane to its remote. It takes approximately 15 minutes for a full charge. Thrust comes from two pager motors mounted under the upper wing. Flying the plane is very easy, but it can be quite a challenge if its windy. It's  a good thing that the plane is made up of tough EPP foam - it seems almost indestructible.&lt;br /&gt;&lt;br /&gt;I'll try to  shoot videos of the plane. However, it's a bit difficult to shoot videos and fly the airplane at the same time.....but I'll try. :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/R72vK0OReRI/AAAAAAAAANY/Zav7E8mdzyY/s1600-h/DSC04475.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/R72vK0OReRI/AAAAAAAAANY/Zav7E8mdzyY/s400/DSC04475.JPG" alt="" id="BLOGGER_PHOTO_ID_5169480547643259154" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4568995967871484927?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ZJ2eBKCXkk0:NLlC1XG1lOo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ZJ2eBKCXkk0:NLlC1XG1lOo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4568995967871484927/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4568995967871484927" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4568995967871484927?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4568995967871484927?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/ZJ2eBKCXkk0/new-hobby-rc-airplanes.html" title="New hobby - R/C airplanes!" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_R7o3lst9P4U/R72vKkOReQI/AAAAAAAAANQ/_BX71YfIfk8/s72-c/DSC04474.JPG" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2008/02/new-hobby-rc-airplanes.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4FSXs8eCp7ImA9WxZTEEo.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-3796005712748552805</id><published>2008-01-10T18:27:00.000+05:30</published><updated>2008-01-11T23:05:18.570+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-11T23:05:18.570+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="laser" /><category scheme="http://www.blogger.com/atom/ns#" term="coding4fun" /><category scheme="http://www.blogger.com/atom/ns#" term="stepper" /><category scheme="http://www.blogger.com/atom/ns#" term="motor" /><category scheme="http://www.blogger.com/atom/ns#" term="camera" /><category scheme="http://www.blogger.com/atom/ns#" term="tracking" /><title>Coding4Fun: Laser Tracking Camera</title><content type="html">&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/uvUMp14blfI&amp;amp;rel=0&amp;amp;color1=0xd6d6d6&amp;amp;color2=0xf0f0f0&amp;amp;border=0"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/uvUMp14blfI&amp;amp;rel=0&amp;amp;color1=0xd6d6d6&amp;amp;color2=0xf0f0f0&amp;amp;border=0" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I've finally finished creating Part 2 of my article on &lt;a href="http://blogs.msdn.com/coding4fun/archive/2007/11/02/5848155.aspx"&gt;controlling stepper motors with a computer&lt;/a&gt;. This time I have built a &lt;a href="http://blogs.msdn.com/coding4fun/archive/2008/01/07/7019142.aspx"&gt;laser tracking camera panner&lt;/a&gt; by extending Andrew Kirillov's &lt;a href="http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx"&gt;motion detection code&lt;/a&gt; (with permission) to control the motor.&lt;br /&gt;&lt;/span&gt;&lt;ul style="font-weight: bold;"&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Part 1 - &lt;a href="http://blogs.msdn.com/coding4fun/archive/2007/11/02/5848155.aspx"&gt;Article&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Part 2 - &lt;a href="http://blogs.msdn.com/coding4fun/archive/2008/01/07/7019142.aspx"&gt;Article&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;Now that I think of it, I've done lots of projects with lasers. And as a matter of fact, I'm working on another project with lasers, right now! I'll shoot some videos soon, so stay tuned. And till then, have fun building a laser tracking camera!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Ashish&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-3796005712748552805?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=8fstX4Mgw6c:t8dv3M2XEn8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=8fstX4Mgw6c:t8dv3M2XEn8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/3796005712748552805/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=3796005712748552805" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3796005712748552805?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3796005712748552805?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/8fstX4Mgw6c/coding4fun-laser-tracking-camera.html" title="Coding4Fun: Laser Tracking Camera" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><thr:total>5</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2008/01/coding4fun-laser-tracking-camera.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEESHg7cCp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-399383373120966064</id><published>2007-12-31T22:34:00.000+05:30</published><updated>2008-11-13T10:00:09.608+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:09.608+05:30</app:edited><title>Happy New Year, 2008</title><content type="html">&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/R3kyt35N1aI/AAAAAAAAANI/_WTl0NKMWlo/s1600-h/newyear2008final2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/R3kyt35N1aI/AAAAAAAAANI/_WTl0NKMWlo/s400/newyear2008final2.jpg" alt="" id="BLOGGER_PHOTO_ID_5150203412554306978" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(102, 102, 102);font-size:85%;" &gt;&lt;span style="font-style: italic;"&gt;This image was created by my brother, &lt;a href="http://amritd.blogspot.com/"&gt;Amrit Derhgawen&lt;/a&gt; (he's a character animator) :)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;I wish all of my readers, be they regulars or new ones, a wonderful New Year with lots of whatever they like. May the year 2008 be in every aspect a better year than 2007.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;Have fun! See you in 2008!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;Best Wishes,&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-family:verdana;" &gt;Ashish&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-399383373120966064?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ZqIqua9UH6E:wipX3_ZhUCA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ZqIqua9UH6E:wipX3_ZhUCA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/399383373120966064/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=399383373120966064" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/399383373120966064?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/399383373120966064?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/ZqIqua9UH6E/happy-new-year-2008.html" title="Happy New Year, 2008" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/R3kyt35N1aI/AAAAAAAAANI/_WTl0NKMWlo/s72-c/newyear2008final2.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/12/happy-new-year-2008.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08GRX04fSp7ImA9WB9VEkg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-3988036452256845795</id><published>2007-11-27T19:54:00.000+05:30</published><updated>2007-11-28T17:40:24.335+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-11-28T17:40:24.335+05:30</app:edited><title>Possibility of misuse?</title><content type="html">Here's a comment I received on my &lt;a href="http://ashishrd.blogspot.com/2007/07/cell-phone-controlled-door-latch.html"&gt;Cell Phone Controlled Door Latch&lt;/a&gt; post the other day:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;Anonymous said:&lt;br /&gt;&lt;br /&gt;Nice....wonder how many innocent people died because&lt;br /&gt;you posted these easy&lt;br /&gt;to follow directions for any Islamic Extremist to&lt;br /&gt;build a command IED on your&lt;br /&gt;site. You are obviously a very intelligent&lt;br /&gt;person with either, no common sense&lt;br /&gt;or no&lt;/em&gt;&lt;em&gt; sense of&lt;br /&gt;responsibility.&lt;/em&gt; &lt;/blockquote&gt;&lt;p&gt;I appreciate his/her concerns, and they are valid to some extent. To be honest, I was aware that my "easy to follow directions" could be followed for doing much more than just opening a door. Then why did I write about it? Well, like a coin, everything has two sides - one is the good side, and the other is the not so good side. There is already tons of information on the Internet on making bombs and weapons of mass destruction. Does this mean that the Internet should be shut-down..and people should stop sharing ideas with each other? I don't think so. If we stop sharing ideas to stop terrorists from misusing them, no one will be able to make good use of them either. Besides, this is what terrorists want..they want to create an atmosphere of insecurity, mistrust and terror. If we stop sharing our ideas to keep them from getting into the wrong hands, they will succeed in their mission. Moreoever, there are several scientists and engineers who work for these extremist groups. I'm sure that building a simple DTMF decoder wouldn't be difficult for them.&lt;/p&gt;&lt;p&gt;So relax, and be happy. My little door opener cannot worsen the already dire situation of our planet, let alone killing innocent people. :)&lt;/p&gt;&lt;p&gt;- Ashish&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-3988036452256845795?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=Eu-65G04CCU:MAjMw0Og290:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=Eu-65G04CCU:MAjMw0Og290:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/3988036452256845795/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=3988036452256845795" title="13 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3988036452256845795?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3988036452256845795?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/Eu-65G04CCU/possibility-of-misuse.html" title="Possibility of misuse?" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><thr:total>13</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/11/possibility-of-misuse.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQX44fyp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-6169170495348836088</id><published>2007-11-07T20:09:00.000+05:30</published><updated>2008-11-13T10:00:10.037+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:10.037+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="laser" /><category scheme="http://www.blogger.com/atom/ns#" term="stepper" /><category scheme="http://www.blogger.com/atom/ns#" term="motor" /><category scheme="http://www.blogger.com/atom/ns#" term="camera" /><category scheme="http://www.blogger.com/atom/ns#" term="object" /><category scheme="http://www.blogger.com/atom/ns#" term="panner" /><category scheme="http://www.blogger.com/atom/ns#" term="tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="edge" /><category scheme="http://www.blogger.com/atom/ns#" term="detection" /><title>Object Tracking using Camera and Lasers</title><content type="html">&lt;object height="355" width="425"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/LHMiD4DAVaU" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Hey folks! Here's a little something I built about a month ago, but couldn't get enough time from college to write about it. Well, it's an object tracking camera panner which tracks any object moving in close range. Unlike my &lt;a href="http://ashishrd.blogspot.com/2007/01/real-time-color-based-object-tracking.html"&gt;previous method&lt;/a&gt; for object tracking, this technique will track almost any moving object, irrespective of its color, using two lasers for edge detection. Depending on which laser is focused on the object, the computer decides which direction to drive. I came up with this idea after watching a video on &lt;a href="http://www.societyofrobots.com/robot_sumo.shtml"&gt;SoR (Society of Robots)&lt;/a&gt; of a sumo robot, called Stampy. Stampy uses a single IR rangefinder for edge detection. Watch the video below:&lt;br /&gt;&lt;br /&gt;&lt;object height="355" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/vbhMuPF0Qj4"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/vbhMuPF0Qj4" type="application/x-shockwave-flash" wmode="transparent" height="355" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;I used lasers instead of IR rangefinders. My initial plan was to use a single laser..but then it occurred to me that I would have to shake the laser left/right continuously for tracking the trailing edge of an object. So, I decided to go with two lasers instead of one.  :)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/RzILAZ5tHSI/AAAAAAAAANA/1Aynve5wmDg/s1600-h/objectTracker.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/RzILAZ5tHSI/AAAAAAAAANA/1Aynve5wmDg/s320/objectTracker.jpg" alt="" id="BLOGGER_PHOTO_ID_5130175027109240098" border="0" /&gt;&lt;/a&gt;Well, I guess I've finally put my &lt;a href="http://ashishrd.blogspot.com/2007/09/computer-controlled-stepper-motor.html"&gt;computer controlled stepper&lt;/a&gt;&lt;a href="http://ashishrd.blogspot.com/2007/09/computer-controlled-stepper-motor.html"&gt; motor&lt;/a&gt; to some use. I might be using this object tracking technique in my future projects as it's working very nicely. If you're interested in controlling stepper motors with your computer, read my &lt;a href="http://blogs.msdn.com/coding4fun/archive/2007/11/02/5848155.aspx"&gt;new article on Coding4Fun&lt;/a&gt;. Enjoy! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-6169170495348836088?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=YsRNZgBUXVs:hUT97gIsqAQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=YsRNZgBUXVs:hUT97gIsqAQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/6169170495348836088/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=6169170495348836088" title="24 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/6169170495348836088?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/6169170495348836088?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/YsRNZgBUXVs/object-tracking-using-camera-and-lasers.html" title="Object Tracking using Camera and Lasers" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_R7o3lst9P4U/RzILAZ5tHSI/AAAAAAAAANA/1Aynve5wmDg/s72-c/objectTracker.jpg" height="72" width="72" /><thr:total>24</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/11/object-tracking-using-camera-and-lasers.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQXg4cSp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4250971029342452974</id><published>2007-10-12T11:35:00.000+05:30</published><updated>2008-11-13T10:00:10.639+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:10.639+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="keyboard" /><category scheme="http://www.blogger.com/atom/ns#" term="touch typing" /><title>I type a LOT...</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/Rw8SHA6CVRI/AAAAAAAAAMw/qCy417PgUsA/s1600-h/myKeyboard.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/Rw8SHA6CVRI/AAAAAAAAAMw/qCy417PgUsA/s400/myKeyboard.jpg" alt="" id="BLOGGER_PHOTO_ID_5120331213055350034" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;...and I type fast. That's why you can't see most of the alphabets on my keyboard. Like most of you reading this, I can touch type. People who believe in two-finger-poke typing, always complain how difficult it is to use my computer.&lt;br /&gt;&lt;br /&gt;You can learn a lot about letter frequencies by studying my keyboard. If you look closely, you'll notice that "P", "V", "G", "Z", "X", "V", "W", "Q"  and "B" are the least commonly used letters. I compared my observations against the &lt;a href="http://en.wikipedia.org/wiki/Letter_frequencies#Relative_frequencies_of_letters_in_the_English_language"&gt;letter frequency chart on Wikipedia&lt;/a&gt; to check if my observations were correct..but I realized that  "J" and "K" were  also very rarely used.  However, on my keyboard, these two letters have been wiped off completely! Why?? Well, the answer is simple..my index finger and middle finger rest on those keys when I'm not typing.&lt;br /&gt;&lt;br /&gt;If you click on the picture below, you'll notice some more startling facts:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/Rw8XzQ6CVSI/AAAAAAAAAM4/YbZqUY6Ra1g/s1600-h/myKeyboard2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/Rw8XzQ6CVSI/AAAAAAAAAM4/YbZqUY6Ra1g/s400/myKeyboard2.jpg" alt="" id="BLOGGER_PHOTO_ID_5120337470822700322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I guess I use the Enter, Backspace and Delete keys a lot too. It also seems that I use the right Shift key more than the left one. Humm..I wonder if everyone does that.&lt;br /&gt;&lt;br /&gt;Well, it all comes down to this...I should buy a new keyboard.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;UPDATE: &lt;/span&gt;&lt;span style="font-style: italic;"&gt;I did some experiments today to check which Shift key I use more often. Here are the results:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="font-style: italic;" border="1" cellpadding="3" cellspacing="0"&gt;&lt;thead&gt;&lt;tr style="background-color: rgb(224, 224, 224);"&gt;&lt;td&gt;Activity&lt;/td&gt;&lt;td&gt;Left Shift Key&lt;br /&gt;&lt;/td&gt;&lt;td&gt;Right Shift Key&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;  &lt;tr&gt;&lt;td&gt;Writing  E-mails&lt;br /&gt;&lt;/td&gt;&lt;td&gt;54.3%&lt;br /&gt;&lt;/td&gt;&lt;td&gt;45.6%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;Programming (C#)&lt;br /&gt;&lt;/td&gt;&lt;td&gt;66.6%&lt;br /&gt;&lt;/td&gt;&lt;td&gt;33.3%&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;When I'm writing e-mails, I use both of the Shift keys. However, I use the left one more while writing code. The right shift key on my keyboard is slightly smaller than the left one..and I'm pretty sure this is the reason why its entire surface has been wiped clean by my pinky.&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4250971029342452974?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=_GQzLL2KWPg:_j5nSHUxBt0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=_GQzLL2KWPg:_j5nSHUxBt0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4250971029342452974/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4250971029342452974" title="15 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4250971029342452974?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4250971029342452974?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/_GQzLL2KWPg/i-type-lot.html" title="I type a LOT..." /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/Rw8SHA6CVRI/AAAAAAAAAMw/qCy417PgUsA/s72-c/myKeyboard.jpg" height="72" width="72" /><thr:total>15</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/10/i-type-lot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQHcyfSp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-5196910452162083842</id><published>2007-09-13T22:31:00.001+05:30</published><updated>2008-11-13T10:00:11.995+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:11.995+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="stepper" /><category scheme="http://www.blogger.com/atom/ns#" term="motor" /><category scheme="http://www.blogger.com/atom/ns#" term="controlled" /><category scheme="http://www.blogger.com/atom/ns#" term="port" /><category scheme="http://www.blogger.com/atom/ns#" term="mouse" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><title>Computer Controlled Stepper Motor</title><content type="html">&lt;object height="366" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/cp/vjVQa1PpcFMi4uFm7OLxKGC5GfgwxtGaCWkfTnOC40Y="&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/cp/vjVQa1PpcFMi4uFm7OLxKGC5GfgwxtGaCWkfTnOC40Y=" type="application/x-shockwave-flash" wmode="transparent" height="366" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;A few months ago, I bought a stepper motor for only Rs.75 (about USD $1.50). I had almost forgotten about that motor until I found it lying in a secluded corner of my bedroom, collecting dust the other day. I searched the internet for information on controlling stepper motors with a computer and I was surprised at how easy it was! My stepper motor has five wires, and it is a unipolar stepper motor with a step angle of 7.5 degrees.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/RuufH6GWv8I/AAAAAAAAAMY/shnBCORJqg0/s1600-h/DSC04061.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/RuufH6GWv8I/AAAAAAAAAMY/shnBCORJqg0/s400/DSC04061.JPG" alt="" id="BLOGGER_PHOTO_ID_5110353160385773506" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/RuufIKGWv9I/AAAAAAAAAMg/QDYdZTwgHZ8/s1600-h/DSC04062.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/RuufIKGWv9I/AAAAAAAAAMg/QDYdZTwgHZ8/s400/DSC04062.JPG" alt="" id="BLOGGER_PHOTO_ID_5110353164680740818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here's the simple circuit I had used for controlling it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/RuufTKGWv-I/AAAAAAAAAMo/qRzU-yvUcSg/s1600-h/stepper_circuit.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/RuufTKGWv-I/AAAAAAAAAMo/qRzU-yvUcSg/s400/stepper_circuit.png" alt="" id="BLOGGER_PHOTO_ID_5110353353659301858" border="0" /&gt;&lt;/a&gt;(Note: If you can't find ULN2003, you can simply use use a single transistor for each winding as shown &lt;a href="http://neil.fraser.name/hardware/stepper/cpu.html"&gt;here&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;As you can see in the diagram, each successive coil in the motor is connected to successive data pins on the parallel port. If the coils are not connected in the correct sequence, the motor will not rotate, but will only wiggle from side to side. Identifying the wires on the stepper motor was probably the only time consuming step. Click &lt;a href="http://wwwhomes.doc.ic.ac.uk/%7Eih/doc/stepper/others/"&gt;here&lt;/a&gt; for information on how to do this.&lt;br /&gt;&lt;br /&gt;Now, since each coil can be programatically controlled, you can experiment with different types of stepping modes. The simplest stepping mode is called Single-Stepping. In this mode, each successive coil is energized and the motor moves one full step at a time. For example, my motor will make a full step of 7.5 degrees whenever the coils are energized in the following sequence (D0 - D3 represent parallel port data pins):&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;thead&gt;&lt;tr style="background-color: rgb(224, 224, 224);"&gt;&lt;td&gt;Step No.&lt;/td&gt;&lt;td&gt;D0&lt;/td&gt;&lt;td&gt;D1&lt;/td&gt;&lt;td&gt;D2&lt;/td&gt;&lt;td&gt;D3&lt;/td&gt;&lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;  &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Another interesting stepping mode is Half-Stepping. The difference between single-stepping and half-stepping is that for the same step rate, half-stepping gives you half the speed but twice the resolution of a single step. Since my motor has a step angle of 7.5 degrees, half-stepping it would result in approximately 3.75 degrees of rotation. Here's the sequence in which coils are energized for half-stepping:&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;thead&gt;&lt;tr style="background-color: rgb(224, 224, 224);"&gt;&lt;td&gt;Step No.&lt;/td&gt;&lt;td&gt;D0&lt;/td&gt;&lt;td&gt;D1&lt;/td&gt;&lt;td&gt;D2&lt;/td&gt;&lt;td&gt;D3&lt;/td&gt;&lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;  &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;5&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;7&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;You can achieve other types of steps by energizing the coils in different ways. For example, here's how high torque stepping works:&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0"&gt;&lt;thead&gt;&lt;tr style="background-color: rgb(224, 224, 224);"&gt;&lt;td&gt;Step No.&lt;/td&gt;&lt;td&gt;D0&lt;/td&gt;&lt;td&gt;D1&lt;/td&gt;&lt;td&gt;D2&lt;/td&gt;&lt;td&gt;D3&lt;/td&gt;&lt;/tr&gt;  &lt;/thead&gt;  &lt;tbody&gt;  &lt;tr&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;  &lt;tr&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;For more information on these stepping modes, read &lt;a href="http://fsugtsr.org/magazine/issue3/divya/motor.htm"&gt;this article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My program allows me to control the motor with the scroll wheel on my mouse and I can press the right mouse button to switch between different stepping modes. Watch the video above to see it working. I'm still thinking of ways to use this stepper motor with my projects. I guess I could use it as a camera panner. It would be better, efficient and more compact than my &lt;a href="http://ashishrd.blogspot.com/2006/11/camera-panning-using-parallel-port.html"&gt;floppy drive camera panner&lt;/a&gt;. My floppy drive camera panner could only rotate through an angle of 45 degrees because of mechanical limitations. This stepper motor can rotate a camera through 360+ degrees!&lt;br /&gt;&lt;br /&gt;Here's something interesting I found while googling - Neil Fraser's &lt;a href="http://neil.fraser.name/hardware/etch/"&gt;"Computerized Etch A Sketch"&lt;/a&gt;. Neil has used two computer controlled stepper motors for turning the horizontal and vertical knobs on an&lt;a href="http://www.etch-a-sketch.com/"&gt; Etch A Sketch&lt;/a&gt;. His work is just amazing! I just wish he posted some videos of the device in action.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-5196910452162083842?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=u7kwKLiehxk:BJvxrYpmoEI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=u7kwKLiehxk:BJvxrYpmoEI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/5196910452162083842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=5196910452162083842" title="62 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/5196910452162083842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/5196910452162083842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/u7kwKLiehxk/computer-controlled-stepper-motor.html" title="Computer Controlled Stepper Motor" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_R7o3lst9P4U/RuufH6GWv8I/AAAAAAAAAMY/shnBCORJqg0/s72-c/DSC04061.JPG" height="72" width="72" /><thr:total>62</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/09/computer-controlled-stepper-motor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQ3gzeip7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4923201342922878704</id><published>2007-08-26T22:58:00.000+05:30</published><updated>2008-11-13T10:00:12.682+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:12.682+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="whistle" /><category scheme="http://www.blogger.com/atom/ns#" term="volume" /><category scheme="http://www.blogger.com/atom/ns#" term="switch" /><category scheme="http://www.blogger.com/atom/ns#" term="sensor" /><category scheme="http://www.blogger.com/atom/ns#" term="directsound" /><category scheme="http://www.blogger.com/atom/ns#" term="directx" /><category scheme="http://www.blogger.com/atom/ns#" term="control" /><category scheme="http://www.blogger.com/atom/ns#" term="sound" /><category scheme="http://www.blogger.com/atom/ns#" term="intensity" /><category scheme="http://www.blogger.com/atom/ns#" term="microphone" /><category scheme="http://www.blogger.com/atom/ns#" term="harry potter" /><category scheme="http://www.blogger.com/atom/ns#" term="clap" /><category scheme="http://www.blogger.com/atom/ns#" term="scream" /><title>Whistle (or scream) to control your computer!</title><content type="html">Hello Readers!&lt;br /&gt;&lt;br /&gt;It has been a long time since I wrote my last blog post. Well, I had been busy with a lot of things – like college, harmonica playing, meeting people, (and not to mention a whole host of fun, yet unproductive things I had been doing). Oh, and I was also busy reading, discussing and &lt;span style="font-style: italic;"&gt;thinking&lt;/span&gt; over the last Harry Potter book by J.K. Rowling. &lt;span style="font-style: italic;"&gt;Harry Potter and the Deathly Hallows&lt;/span&gt; is stunningly beautiful. I loved it. :)&lt;br /&gt;&lt;br /&gt;Well, anyway … I’m always in search for alternate ways to communicate with computers, and ever since I built a &lt;a href="http://ashishrd.blogspot.com/2007/05/viper-ear-sound-sensor-for-microbric.html"&gt;sound sensor for my Viper robot&lt;/a&gt;, I was thinking of ways to communicate with my computers using sound as a medium. I figured out how to use &lt;a href="http://msdn2.microsoft.com/en-us/library/bb206261.aspx"&gt;DirectSound&lt;/a&gt; to read the levels of my computer’s available sound capture devices thanks to a &lt;a href="http://www.codeproject.com/cs/media/volumemeter.asp"&gt;wonderful example by Jacob Klint&lt;/a&gt; over at &lt;a href="http://www.codeproject.com/"&gt;CodeProject&lt;/a&gt;. I’ve written code to count the number of times the sound level of my microphone exceeds a certain threshold for controlling a few things on my computer. Say, for example, if I whistle two times (loudly), the software would check my email. If I whistle three times, it would turn off my computer, and so on.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/RtG6hE30mSI/AAAAAAAAALc/JvVrvIZLaW0/s1600-h/WhistleControl.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/RtG6hE30mSI/AAAAAAAAALc/JvVrvIZLaW0/s400/WhistleControl.jpg" alt="" id="BLOGGER_PHOTO_ID_5103064930193807650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The drawback is that it won’t be long before everyone in your house will be irritated by your whistling! That’s why I still prefer &lt;a href="http://ashishrd.blogspot.com/2006/12/gesture-recognition-using-webcam-and.html"&gt;laser gesture recognition&lt;/a&gt; for controlling things. :) However, if you’re interested in seeing the code, just let me know.&lt;br /&gt;&lt;br /&gt;Now, I’m thinking about capturing sound from two sources and perhaps even perform &lt;a href="http://en.wikipedia.org/wiki/Sound_localization"&gt;sound localization&lt;/a&gt;! That would be very cool. :) Keep visiting...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4923201342922878704?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=pqOjFJFJq00:yfV8OZez98U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=pqOjFJFJq00:yfV8OZez98U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4923201342922878704/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4923201342922878704" title="18 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4923201342922878704?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4923201342922878704?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/pqOjFJFJq00/whistle-or-scream-to-control-your.html" title="Whistle (or scream) to control your computer!" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/RtG6hE30mSI/AAAAAAAAALc/JvVrvIZLaW0/s72-c/WhistleControl.jpg" height="72" width="72" /><thr:total>18</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/08/whistle-or-scream-to-control-your.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFQngyeCp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-3404606224306078336</id><published>2007-07-17T16:23:00.000+05:30</published><updated>2008-11-13T10:00:13.690+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:13.690+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="latch" /><category scheme="http://www.blogger.com/atom/ns#" term="tone" /><category scheme="http://www.blogger.com/atom/ns#" term="telephone" /><category scheme="http://www.blogger.com/atom/ns#" term="dtmf" /><category scheme="http://www.blogger.com/atom/ns#" term="lock" /><category scheme="http://www.blogger.com/atom/ns#" term="door" /><category scheme="http://www.blogger.com/atom/ns#" term="frequency" /><category scheme="http://www.blogger.com/atom/ns#" term="phone" /><category scheme="http://www.blogger.com/atom/ns#" term="cell" /><category scheme="http://www.blogger.com/atom/ns#" term="mobile" /><category scheme="http://www.blogger.com/atom/ns#" term="solenoid" /><category scheme="http://www.blogger.com/atom/ns#" term="dual" /><category scheme="http://www.blogger.com/atom/ns#" term="opener" /><category scheme="http://www.blogger.com/atom/ns#" term="multi" /><title>Cell Phone Controlled Door Latch</title><content type="html">&lt;object type="application/x-shockwave-flash" width="460" height="345" data="http://vimeo.com/moogaloop.swf?clip_id=243080&amp;amp;server=vimeo.com&amp;amp;fullscreen=1&amp;amp;video_info=1"&gt; &lt;param name="quality" value="best" /&gt; &lt;param name="allowfullscreen" value="true" /&gt; &lt;param name="scale" value="showAll" /&gt; &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=243080&amp;amp;server=vimeo.com&amp;amp;fullscreen=1&amp;amp;video_info=1" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/download/video:3096416"&gt;Download Video (1.78 MB)&lt;/a&gt;&lt;br /&gt;&lt;p style="font-family: verdana;" class="MsoNormal"&gt;I’ve been reading a lot on how &lt;a href="http://en.wikipedia.org/wiki/Dual-tone_multi-frequency"&gt;DTMF (Dual Tone Multi Frequency)&lt;/a&gt; tones work over the last couple of weeks. I’m sure you’ve noticed that when you press the keys on a standard telephone keypad, an audible ‘beep’ is generated. These beeps are actually the combination of two distinct frequencies. For example, the tone you hear when you press the number ‘9’ on a telephone, is actually a combination of a 1447 Hz and 852 Hz signal. In a telephone exchange, these signals are decoded by a computer which finally connects the dialer to the designated phone line. For example, the tone of 1447 Hz and 852 Hz will be decoded as binary ‘1001’. In this project, I have designed a simple DTMF decoder circuit which allows me to control appliances in my house from any place on Earth using a telephone.&lt;/p&gt; &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/RpygkiU0l8I/AAAAAAAAAKk/f6HKGdZg5yU/s1600-h/dtmfChart.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/RpygkiU0l8I/AAAAAAAAAKk/f6HKGdZg5yU/s320/dtmfChart.gif" alt="" id="BLOGGER_PHOTO_ID_5088118228571690946" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I always wanted to be able to control things such as air-conditioners, lights, etc, remotely…but I never thought about putting the front door of my house under remote control until I saw this &lt;a href="http://spritesmods.com/?art=knock2open"&gt;“knock to open”&lt;/a&gt; door hack on &lt;a href="http://www.hackaday.com/"&gt;Hackaday&lt;/a&gt;. It’s a door that will unlock when the correct knock pattern is performed. After being inspired by the mechanical door opening system in that hack, I decided to do something similar to allow me to open my door with a cell phone! I mean c’mon, door locks with keys are obsolete..everyone uses them..they’re so old fashioned! They’ve been around for over 4,000 years. Yikes! It’s time for a little change.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;This project would have been much simpler if I had an electronic door lock…but I didn’t! They’re expensive, so I didn’t want to buy a new electronic door lock. I wanted to open the front door of my house without “seriously” modifying/replacing any door components. I thought about using a servo/stepper motor to twist the door knob on the door, but their control circuitry is slightly complicated if you’re not using a microcontroller. So, I decided to use a simple, 24VDC, “pull solenoid”. They don’t have any complicated control circuitry and you just have to supply the required voltage to make them work. I simply fastened the solenoid to the door knob with a metal wire. When the solenoid is switched on, its linear motion twists the door knob and opens the door. Positioning the solenoid properly was probably the only mechanical challenge in building this door opener because the force applied by a solenoid, is theoretically inversely proportional the square of the length of the air gap. Thus, strongest force is generated when the air gap is smallest.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/RpzkGiU0mCI/AAAAAAAAALU/pXzP1d9bWmM/s1600-h/pict5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/RpzkGiU0mCI/AAAAAAAAALU/pXzP1d9bWmM/s400/pict5.jpg" alt="" id="BLOGGER_PHOTO_ID_5088192479966304290" border="0" /&gt;&lt;/a&gt; &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;The second part of this project was to build a DTMF decoder circuit. I used a CM8870PI tone decoder IC for doing this. The circuit I have built is fairly simple, and can be used for controlling  up to four devices. If you want to control more than four devices, &lt;a href="http://www.members.tripod.com/electronicsworld/remotecontrolsimages/remotecontrolsckt2.html"&gt;check out this circuit&lt;/a&gt;. I had a Nokia 1100 cell phone lying around with a hands-free accessory which was rarely used. So, I hacked its hands-free accessory and connected it to the circuit (I just cut the wires which went into the earpiece). That’s about it! To control things in the house, you just dial into the base station and the Nokia 1100 auto-answers the phone call. Each function is just a matter of pressing the appropriate number on the phone and the DTMF chip decodes it and sends output to a transistor which controls a relay. To open my door,  I just dial the phone, enter the magic code and voila - &lt;span style="font-style: italic;"&gt;Alohomora&lt;/span&gt;! Watch the video above. :)&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/RpyhxiU0l-I/AAAAAAAAAK0/xjPVrxl1dbQ/s1600-h/cellPhoneDiagram.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/RpyhxiU0l-I/AAAAAAAAAK0/xjPVrxl1dbQ/s400/cellPhoneDiagram.gif" alt="" id="BLOGGER_PHOTO_ID_5088119551421618146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/RpyiMSU0l_I/AAAAAAAAAK8/PnK7gqDyyTY/s1600-h/DSC03843.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/RpyiMSU0l_I/AAAAAAAAAK8/PnK7gqDyyTY/s320/DSC03843.JPG" alt="" id="BLOGGER_PHOTO_ID_5088120010983118834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/RpyiMiU0mAI/AAAAAAAAALE/e0LxwRzMxWU/s1600-h/DSC03851.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/RpyiMiU0mAI/AAAAAAAAALE/e0LxwRzMxWU/s320/DSC03851.JPG" alt="" id="BLOGGER_PHOTO_ID_5088120015278086146" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now I’m thinking about building a password protected door by placing a keypad outside my house which will generate DTMF tones. A circuit on the other side of the door will check the numbers entered, and if the password is correct, it will open the door. However, there’s one little snag. Any nasty programmer would just love to use a computer to generate DTMF tones and crack the password using brute force…I would. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-3404606224306078336?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=P3ejx45Ilco:WLQNtuDbJHo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=P3ejx45Ilco:WLQNtuDbJHo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/3404606224306078336/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=3404606224306078336" title="179 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3404606224306078336?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/3404606224306078336?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/P3ejx45Ilco/cell-phone-controlled-door-latch.html" title="Cell Phone Controlled Door Latch" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_R7o3lst9P4U/RpygkiU0l8I/AAAAAAAAAKk/f6HKGdZg5yU/s72-c/dtmfChart.gif" height="72" width="72" /><thr:total>179</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/07/cell-phone-controlled-door-latch.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFRH89cSp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4778570245545043991</id><published>2007-06-12T08:44:00.000+05:30</published><updated>2008-11-13T10:00:15.169+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:15.169+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="AI" /><category scheme="http://www.blogger.com/atom/ns#" term="machine" /><category scheme="http://www.blogger.com/atom/ns#" term="ping" /><category scheme="http://www.blogger.com/atom/ns#" term="vision" /><category scheme="http://www.blogger.com/atom/ns#" term="camera" /><category scheme="http://www.blogger.com/atom/ns#" term="artifical" /><category scheme="http://www.blogger.com/atom/ns#" term="pong" /><category scheme="http://www.blogger.com/atom/ns#" term="intelligence" /><category scheme="http://www.blogger.com/atom/ns#" term="computer" /><title>Pong Playing Computer playing against another computer using a webcam as an eye!</title><content type="html">&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=211010" quality="best" scale="exactfit" type="application/x-shockwave-flash" height="300" width="400"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/download/video:18182532"&gt;Download video (5.54 MB)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Several years ago, when I was a stupid little schoolboy, I created a really fun and addictive game called Ping Pong. It was based on the classic arcade game, &lt;a href="http://en.wikipedia.org/wiki/PONG"&gt;PONG&lt;/a&gt;, and had some cool features like gradual speed increase, two game modes, and some neat sound effects.&lt;br /&gt;&lt;/span&gt;&lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/Rm4QFCA3_KI/AAAAAAAAAKM/sXglYeGICj8/s1600-h/pong.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/Rm4QFCA3_KI/AAAAAAAAAKM/sXglYeGICj8/s320/pong.jpg" alt="" id="BLOGGER_PHOTO_ID_5075011508719058082" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p style="font-family: verdana;" class="MsoNormal"&gt;I had almost forgotten about that game until I saw this &lt;a href="http://www.lildumpo.com/projects/autowoodchopper/"&gt;auto wood-chopper project&lt;/a&gt; in which a computer plays a simple game on a PSP using only a webcam to view its screen. I thought the idea was pretty good. So, I decided to make my own computer play that old pong game of mine on another computer using a webcam for vision! I fired up my code editor, and after several hours of coding and experimentation, my image recognition code started looking good. It uses edge detection to determine the boundaries of the ball and the bat in the webcam’s field of view. The area of the ball is more than the bat, so that’s how it differentiates between the two. The other steps are more or less similar to the things I did for my &lt;a href="http://ashishrd.blogspot.com/2007/01/real-time-color-based-object-tracking.html"&gt;object tracking app&lt;/a&gt;. Like the auto wood-chopper dude, I thought about using motors to press the keyboard keys on my laptop. However, I thought it would be overkill when I could write a simple TCP client/server program to establish communication between the two computers.&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;    &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/Rm4RCCA3_MI/AAAAAAAAAKc/RAU2YxKizPY/s1600-h/setup.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/Rm4RCCA3_MI/AAAAAAAAAKc/RAU2YxKizPY/s320/setup.jpg" alt="" id="BLOGGER_PHOTO_ID_5075012556691078338" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/Rm4RByA3_LI/AAAAAAAAAKU/sUXnFANjluY/s1600-h/UI.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/Rm4RByA3_LI/AAAAAAAAAKU/sUXnFANjluY/s320/UI.jpg" alt="" id="BLOGGER_PHOTO_ID_5075012552396111026" border="0" /&gt;&lt;/a&gt;&lt;p style="font-family: verdana;" class="MsoNormal"&gt;Be sure to watch the video above! I’d love to hear what you think. Oh and here’s a similar project in which a computer &lt;a href="http://codeninja.de/sweeperki"&gt;plays Minesweeper on another computer using a webcam&lt;/a&gt; – wow!&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;You can download my fun Pong game from &lt;a href="http://www.ashsoftech.com/mygames/ping-pong.exe"&gt;here&lt;/a&gt;. (1.20 MB)&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;" class="MsoNormal"&gt;This was a very exciting project. In my opinion, one of the coolest webcam based projects I’ve done so far. I entered the world of webcams after working on &lt;a href="http://ashishrd.blogspot.com/2006/10/camcapture.html"&gt;CamCapture&lt;/a&gt; – a project based on a Coding4Fun article by Scott Hanselman. :) Webcams are fun but I sometimes wonder why they’re called &lt;span style="font-weight: bold;"&gt;Web&lt;/span&gt;cams. I never use them for online video conversations! In my opinion, they should be simply called USB cameras. :)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4778570245545043991?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=elnWv8XAR4k:BBkknnMqAqs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=elnWv8XAR4k:BBkknnMqAqs:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4778570245545043991/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4778570245545043991" title="40 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4778570245545043991?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4778570245545043991?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/elnWv8XAR4k/pong-playing-computer-playing-against.html" title="Pong Playing Computer playing against another computer using a webcam as an eye!" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/Rm4QFCA3_KI/AAAAAAAAAKM/sXglYeGICj8/s72-c/pong.jpg" height="72" width="72" /><thr:total>40</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/06/pong-playing-computer-playing-against.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFRHg7eip7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4697326520345571235</id><published>2007-06-12T08:16:00.000+05:30</published><updated>2008-11-13T10:00:15.602+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:15.602+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="port" /><category scheme="http://www.blogger.com/atom/ns#" term="relay" /><category scheme="http://www.blogger.com/atom/ns#" term="optoisolation" /><category scheme="http://www.blogger.com/atom/ns#" term="parallel" /><category scheme="http://www.blogger.com/atom/ns#" term="opto-isolated" /><title>Opto-isolated Parallel Port Driven Relays</title><content type="html">&lt;span style="font-family:verdana;"&gt;A few months back, I made a parallel port driven relay box for &lt;a href="http://ashishrd.blogspot.com/2007/03/engineer-2007.html"&gt;Engineer 2007&lt;/a&gt; with four outputs which were opto-isolated from my PC. Since I didn't have opto-isolators, I built my own by taping LED/photoresistor pairs together. It worked perfectly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/Rm4LpSA3_II/AAAAAAAAAJ8/3gpKf_pi3ho/s1600-h/Picture+005.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/Rm4LpSA3_II/AAAAAAAAAJ8/3gpKf_pi3ho/s320/Picture+005.jpg" alt="" id="BLOGGER_PHOTO_ID_5075006633931177090" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/Rm4LpiA3_JI/AAAAAAAAAKE/c-1KqpfI128/s1600-h/Picture+007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/Rm4LpiA3_JI/AAAAAAAAAKE/c-1KqpfI128/s320/Picture+007.jpg" alt="" id="BLOGGER_PHOTO_ID_5075006638226144402" border="0" /&gt;&lt;/a&gt;(Circuit details: &lt;a href="http://www.epanorama.net/circuits/parallel_output.html"&gt;http://www.epanorama.net/circuits/parallel_output.html&lt;/a&gt;)&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;I also combined it with laser gesture recognition to turn four appliances on or off using a laser pointer for Engineer 2007. I guess everyone loved it. :)&lt;/span&gt;  &lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;If you can make pcbs, and are interested in a simple little circuit &lt;/span&gt; &lt;span style="font-family:verdana;"&gt;to provide opto-isolator protection to 4 parallel port inputs, and &lt;/span&gt; &lt;span style="font-family:verdana;"&gt;relays on the other 4 bits, as outputs, then check the offer on....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;a href="http://www.arunet.co.uk/tkboyd/ele1pp.htm"&gt;http://www.arunet.co.uk/tkboyd/ele1pp.htm&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.arunet.co.uk/tkboyd/ele1pp.htm"&gt;  &lt;/a&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;... which is a little way down the page, next to the Google panel, in &lt;/span&gt; &lt;span style="font-family:verdana;"&gt;the paragraph starting "I have a third generatino, inexpensive...".&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4697326520345571235?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=6haztzQaLCo:-BSxF8mbXYk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=6haztzQaLCo:-BSxF8mbXYk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4697326520345571235/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4697326520345571235" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4697326520345571235?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4697326520345571235?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/6haztzQaLCo/opto-isolated-parallel-port-driven.html" title="Opto-isolated Parallel Port Driven Relays" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_R7o3lst9P4U/Rm4LpSA3_II/AAAAAAAAAJ8/3gpKf_pi3ho/s72-c/Picture+005.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/06/opto-isolated-parallel-port-driven.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFR345eip7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-5565006160242866238</id><published>2007-05-31T11:08:00.000+05:30</published><updated>2008-11-13T10:00:16.022+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:16.022+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="lm324" /><category scheme="http://www.blogger.com/atom/ns#" term="robot" /><category scheme="http://www.blogger.com/atom/ns#" term="sound" /><category scheme="http://www.blogger.com/atom/ns#" term="control" /><category scheme="http://www.blogger.com/atom/ns#" term="op-amp" /><category scheme="http://www.blogger.com/atom/ns#" term="microphone" /><category scheme="http://www.blogger.com/atom/ns#" term="sensor" /><category scheme="http://www.blogger.com/atom/ns#" term="microbric" /><category scheme="http://www.blogger.com/atom/ns#" term="clap" /><category scheme="http://www.blogger.com/atom/ns#" term="viper" /><title>Viper Ear: Sound Sensor for Microbric Viper Robot</title><content type="html">&lt;embed src="http://www.youtube.com/v/Dmvr1PWPmcY" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hello readers!&lt;/span&gt;&lt;o:p style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;p class="MsoNormal"  style="font-family:verdana;"&gt;It’s been a long time since my last blog post. I was a bit busy and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;wasn&lt;/span&gt;’t getting time for blogging. Anyway, I did something cool and thought you people would like it. I’&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ve&lt;/span&gt; been working mostly with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;webcams&lt;/span&gt; over the last couple of months. I wanted to do something different for a little change and found sound a very interesting way of communicating with robots/computers. I created a sound sensor for my &lt;a href="http://www.microbric.com/page.php?sId=1"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Microbric&lt;/span&gt; Viper Robot&lt;/a&gt; to give it the ability to respond to claps and whistles. I had to work extra hard on this project as things &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;weren&lt;/span&gt;’t getting done as quickly as they usually do. The basic idea was that the sensor would send the PIC a logic 1 if the loudness of the sound coming in to the microphone exceeds a certain threshold and 0 otherwise. So, the sensor compares the microphone voltage to a reference voltage, and sends a logic 1 if the microphone output is higher (however, my signal is inverted because of the way I set up the op-amp as a comparator in my circuit). I had to experiment a lot on a breadboard before I had the circuit working perfectly. Here’s the final circuit I ended up with:&lt;/p&gt;&lt;p class="MsoNormal" style="font-family: verdana;"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/Rl5nk4IwYKI/AAAAAAAAAJc/MyaVjrh5ceE/s1600-h/SoundSensorCircuit.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070604113707819170" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/Rl5nk4IwYKI/AAAAAAAAAJc/MyaVjrh5ceE/s400/SoundSensorCircuit.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/Rl5nlIIwYMI/AAAAAAAAAJs/3VjSKYbI74k/s1600-h/AcousticSensor.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070604118002786498" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://1.bp.blogspot.com/_R7o3lst9P4U/Rl5nlIIwYMI/AAAAAAAAAJs/3VjSKYbI74k/s400/AcousticSensor.jpg" border="0" /&gt;&lt;/a&gt;&lt;/o:p&gt;&lt;br /&gt;Since I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;didn&lt;/span&gt;’t have an oscilloscope at home, I turned my computer into an oscilloscope by using &lt;a href="http://www.zeitnitz.de/Christian/Scope/Scope_en.html"&gt;PC-Oscilloscope by Christian &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Zeitnitz&lt;/span&gt;&lt;/a&gt;. This software works with a sound card. It &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;doesn&lt;/span&gt;’t have a fast sampling rate, but it’s good enough for testing this circuit. &lt;a href="http://scopeonpc.tripod.com/index.htm"&gt;Parallel port based oscilloscopes&lt;/a&gt; are probably a little faster, but I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;didn&lt;/span&gt;’t have time to make one. In the oscilloscope, the signal from the sensor is a nice series of sharp spikes.&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/Rl5qq4IwYNI/AAAAAAAAAJ0/lBTDCjVa8QE/s1600-h/SensorOscilloscope.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5070607515321917650" style="margin: 0px auto 10px; display: block; cursor: pointer; text-align: center;" alt="" src="http://4.bp.blogspot.com/_R7o3lst9P4U/Rl5qq4IwYNI/AAAAAAAAAJ0/lBTDCjVa8QE/s400/SensorOscilloscope.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In the video, you’ll notice that I clap several times to control the robot. The first clap I make is only for initializing the clap counting algorithm in the program. After the first clap, the robot counts the number of times I clap my hands during an interval of 2-3 seconds. For example, if I clap once (after the initializing clap), the robot either moves forward or stops, depending on its state. If I clap twice, the robot turns left. Three claps make it turn right. Sometimes, the sensor also gets triggered from motor noise. So, I have to adjust the preset in the circuit to get things working perfectly. For extra reliability, the robot moves forward slowly to keep motor noise as low as possible. I think that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;programmatically&lt;/span&gt; distinguishing between a clap and motor noise or electronically filtering it out could also be worth a try.&lt;/span&gt;&lt;o:p&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:verdana;"&gt;This was a fairly simple project, but it took much longer than usual. Well, I have some more cool ideas for sound sensors. ;) Keep visiting!&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-5565006160242866238?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=I0jhK164Acw:KjLVmCY_6Sk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=I0jhK164Acw:KjLVmCY_6Sk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/5565006160242866238/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=5565006160242866238" title="16 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/5565006160242866238?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/5565006160242866238?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/I0jhK164Acw/viper-ear-sound-sensor-for-microbric.html" title="Viper Ear: Sound Sensor for Microbric Viper Robot" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/Rl5nk4IwYKI/AAAAAAAAAJc/MyaVjrh5ceE/s72-c/SoundSensorCircuit.JPG" height="72" width="72" /><thr:total>16</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/05/viper-ear-sound-sensor-for-microbric.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFR3YzcCp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-6438094750932502804</id><published>2007-05-03T22:15:00.000+05:30</published><updated>2008-11-13T10:00:16.888+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:16.888+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="shooting" /><category scheme="http://www.blogger.com/atom/ns#" term="robot" /><category scheme="http://www.blogger.com/atom/ns#" term="turret" /><category scheme="http://www.blogger.com/atom/ns#" term="defcon" /><category scheme="http://www.blogger.com/atom/ns#" term="autonomous" /><category scheme="http://www.blogger.com/atom/ns#" term="colin" /><category scheme="http://www.blogger.com/atom/ns#" term="asimov1" /><title>ASIMOV1</title><content type="html">&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Sovf6UxKL5E"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/Sovf6UxKL5E" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/RjoSWG1pjgI/AAAAAAAAAJE/UCd85erI3Jg/s1600-h/complete.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/RjoSWG1pjgI/AAAAAAAAAJE/UCd85erI3Jg/s200/complete.jpg" alt="" id="BLOGGER_PHOTO_ID_5060377302306229762" border="0" /&gt;&lt;/a&gt;&lt;a style="font-family: verdana;" href="http://www.colinkarpfinger.com/"&gt;Colin&lt;/a&gt;&lt;span style="font-family:verdana;"&gt; has built a &lt;a href="http://www.colinkarpfinger.com/projects/defcon/"&gt;fully functional prototype&lt;/a&gt; for the &lt;/span&gt;&lt;a style="font-family: verdana;" href="http://defconbots.org/"&gt;Defcon competition&lt;/a&gt;&lt;span style="font-family:verdana;"&gt;, ASIMOV1, using two high torque, serial port controlled servos! He’s also got a cool circle detection code working which identifies white circles against a black background and shoots them down. Trust me, you wouldn't want to go in front of that robot in a white underwear! Check out the video above. You’ll also see a video clip in which ASIMOV1 is working as a simple laser guided gun! We’ve procured sponsorship from &lt;a href="http://www.pololu.com/"&gt;Pololu&lt;/a&gt; and &lt;a href="http://www.servocity.com/"&gt;ServoCity&lt;/a&gt;. Now, its time to get a more powerful &lt;/span&gt;&lt;s style="font-family: verdana;"&gt;shotgun&lt;/s&gt; &lt;span style="font-family:verdana;"&gt;airsoft gun for this autonomous robot! :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/RjoTPW1pjiI/AAAAAAAAAJU/clf9hFRPWZA/s1600-h/april20+%2818%29.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/RjoTPW1pjiI/AAAAAAAAAJU/clf9hFRPWZA/s400/april20+%2818%29.jpg" alt="" id="BLOGGER_PHOTO_ID_5060378285853740578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-6438094750932502804?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ZNehHX5aMus:kZDSFAeWHE8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ZNehHX5aMus:kZDSFAeWHE8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/6438094750932502804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=6438094750932502804" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/6438094750932502804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/6438094750932502804?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/ZNehHX5aMus/asimov1.html" title="ASIMOV1" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_R7o3lst9P4U/RjoSWG1pjgI/AAAAAAAAAJE/UCd85erI3Jg/s72-c/complete.jpg" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/05/asimov1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFRno8cSp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-7964081908363764976</id><published>2007-04-25T09:52:00.001+05:30</published><updated>2008-11-13T10:00:17.479+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:17.479+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="navigating" /><category scheme="http://www.blogger.com/atom/ns#" term="laser" /><category scheme="http://www.blogger.com/atom/ns#" term="self" /><category scheme="http://www.blogger.com/atom/ns#" term="robot" /><category scheme="http://www.blogger.com/atom/ns#" term="camera" /><category scheme="http://www.blogger.com/atom/ns#" term="obstacle" /><category scheme="http://www.blogger.com/atom/ns#" term="autonomous" /><category scheme="http://www.blogger.com/atom/ns#" term="microbric" /><category scheme="http://www.blogger.com/atom/ns#" term="viper" /><category scheme="http://www.blogger.com/atom/ns#" term="detector" /><title>Self Navigating Microbric Viper Robot</title><content type="html">&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/5_nGnjVByCw"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/5_nGnjVByCw" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Hey folks,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;After several days of hard work, I've managed to turn my &lt;a href="http://www.microbric.com/page.php?sId=17"&gt;Microbric Viper robot&lt;/a&gt; into an intelligent mobile robot, which moves around my house and avoids obstacles along its way! This time, I've mounted a &lt;a href="http://ashishrd.blogspot.com/2006/11/obstacle-detector-using-webcam-and.html"&gt;laser based obstacle detector&lt;/a&gt; on top of a servo. So, now the robot is able to scan its surroundings before making a move. This project is still based on the principles working behind my &lt;a href="http://ashishrd.blogspot.com/2007/02/autonomous-rc-car-with-laser-based.html"&gt;autonomous RC car&lt;/a&gt; project. However, unlike the autonomous RC car, now more than half of the robot's brain resides within the robot itself. The part of the brain which lies in my computer makes only one crucial decision of whether it is safe to move forward or not. Based on this Yes/No decision, the robot decides how it should maneuver itself in order to avoid the obstacle in front of it. For example, if the computer detects an obstacle, it tells the robot to stop. Then, the robot starts scanning the area by rotating the obstacle detector. During the scan, if the computer finds a place with no obstacles in close range, it tells the robot to move forward again. Check out the video above to see it in action!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/Ri583RhvRMI/AAAAAAAAAIk/rmuyhBlxsmo/s1600-h/ViperLaserMod2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/Ri583RhvRMI/AAAAAAAAAIk/rmuyhBlxsmo/s400/ViperLaserMod2.JPG" alt="" id="BLOGGER_PHOTO_ID_5057116720623207618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/Ri583RhvRNI/AAAAAAAAAIs/ryCcr3H9TY8/s1600-h/ViperMod.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/Ri583RhvRNI/AAAAAAAAAIs/ryCcr3H9TY8/s400/ViperMod.jpg" alt="" id="BLOGGER_PHOTO_ID_5057116720623207634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I've made some hardware modifications on the Viper robot for attaching the laser pointer. Watch the video below. In this video, I'm controlling the Viper robot (and its laser pointer), with a TV remote!:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/FgBQZ54nQho"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/FgBQZ54nQho" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The &lt;a href="http://iguanaworks.net/ir/serial/"&gt;Iguanaworks IR transmitter&lt;/a&gt; I used in my &lt;a href="http://ashishrd.blogspot.com/2007/04/laser-following-microbric-viper-robot.html"&gt;previous project&lt;/a&gt; charges up a  capacitor in order to provide a range of up to 10-meters. This time, however, I wasn't getting very good mileage with the computer I was using. So, I built my own parallel port controlled IR transmitter using a DVD remote which came with my PS2. :) I'm using a simple, parallel port controlled &lt;a href="http://www.rason.org/Projects/transwit/transwit.htm"&gt;transistor switch&lt;/a&gt; for turning the remote on and off. On receiving any IR pulse from the computer, the robot takes action. Yeah, I admit that its a bit of an overkill, but I had to do it!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/Ri57shhvRKI/AAAAAAAAAIU/tHRtPLKUN4w/s1600-h/Remot2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/Ri57shhvRKI/AAAAAAAAAIU/tHRtPLKUN4w/s320/Remot2.JPG" alt="" id="BLOGGER_PHOTO_ID_5057115436427986082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/Ri57sxhvRLI/AAAAAAAAAIc/Ha4Pf2Dc398/s1600-h/Remote1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/Ri57sxhvRLI/AAAAAAAAAIc/Ha4Pf2Dc398/s320/Remote1.JPG" alt="" id="BLOGGER_PHOTO_ID_5057115440722953394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Wow..this project was kinda difficult! I really had to work hard on it and my ass is really burning.....AARRRRGGHHHH.....I feel tired..I think I'll be taking a short break. :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Keep sending me your thoughts and ideas. I really appreciate them. &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;In the meantime, I'll be enjoying life... :)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/Ri59bhhvRPI/AAAAAAAAAI8/26HjMTZxGiY/s400/puffinBilly.JPG" alt="" id="BLOGGER_PHOTO_ID_5057117343393465586" border="0" /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;- Ashish&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-7964081908363764976?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=poGsryGTOc8:chuO9Ndd7qo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=poGsryGTOc8:chuO9Ndd7qo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/7964081908363764976/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=7964081908363764976" title="38 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/7964081908363764976?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/7964081908363764976?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/poGsryGTOc8/self-navigating-microbric-viper-robot_25.html" title="Self Navigating Microbric Viper Robot" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_R7o3lst9P4U/Ri583RhvRMI/AAAAAAAAAIk/rmuyhBlxsmo/s72-c/ViperLaserMod2.JPG" height="72" width="72" /><thr:total>38</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/04/self-navigating-microbric-viper-robot_25.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFSX48fip7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-7592480913510367558</id><published>2007-04-05T22:42:00.000+05:30</published><updated>2008-11-13T10:00:18.076+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:18.076+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="laser" /><category scheme="http://www.blogger.com/atom/ns#" term="robot" /><category scheme="http://www.blogger.com/atom/ns#" term="controlled" /><category scheme="http://www.blogger.com/atom/ns#" term="camera" /><category scheme="http://www.blogger.com/atom/ns#" term="follow" /><category scheme="http://www.blogger.com/atom/ns#" term="tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="wireless" /><category scheme="http://www.blogger.com/atom/ns#" term="microbric" /><category scheme="http://www.blogger.com/atom/ns#" term="computer" /><category scheme="http://www.blogger.com/atom/ns#" term="viper" /><title>Laser Following Microbric Viper Robot</title><content type="html">&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M-8yqBHnJYA"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;embed src="http://www.youtube.com/v/M-8yqBHnJYA" type="application/x-shockwave-flash" wmode="transparent" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:14;"  &gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;I've been playing around with the &lt;a href="http://www.microbric.com/page.php?sId=17"&gt;Microbric Viper&lt;/a&gt; robot construction kit over the last couple of days. The Viper uses a &lt;a href="http://www.microbric.com/page.php?sId=26"&gt;Basic Atom&lt;/a&gt; microcontroller which can be programmed in BASIC. &lt;a href="http://msdn.microsoft.com/coding4fun/hardware/robotics/article.aspx?articleid=1192168"&gt;These robots can also be controlled with a computer using an IR transmitter&lt;/a&gt;. I'm using an &lt;a href="http://iguanaworks.net/ir/serial/"&gt;Iguanaworks IR tranceiver&lt;/a&gt; which works with a serial port for my projects.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style=""&gt;&lt;span style=";font-family:Arial;font-size:14;"  &gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;Well, since I love webcams, I decided to turn my Viper into a simple laser following robot! I've mounted a small wireless webcam on top of the robot. The webcam, transmits video to my computer. My computer determines the position of the laser in the camera's field of view and tries to move the robot towards it.&lt;span style=""&gt;  &lt;/span&gt;As far as the software is concerned, I'm using a modified version of my &lt;a href="http://ashishrd.blogspot.com/2007/02/autonomous-rc-car-with-laser-based.html"&gt;Autonomous RC Car&lt;/a&gt; code. Watch the video above. I think the next step could be to mount the camera on a servo motor. That way, the robot would be able to scan its surroundings by rotating the camera! I also plan to try &lt;a href="http://ashishrd.blogspot.com/2007/01/real-time-color-based-object-tracking.html"&gt;object tracking&lt;/a&gt; with this robot. That would be fun!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;span style=";font-family:Arial;font-size:14;"  &gt;&lt;span style=";font-family:verdana;font-size:100%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/RhUxDDNcRXI/AAAAAAAAAG8/3ty16qfNC7U/s1600-h/DSC03500.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/RhUxDDNcRXI/AAAAAAAAAG8/3ty16qfNC7U/s320/DSC03500.jpg" alt="" id="BLOGGER_PHOTO_ID_5049996485636932978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/RhUxDjNcRYI/AAAAAAAAAHE/O4fvorHweaE/s1600-h/DSC03463.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/RhUxDjNcRYI/AAAAAAAAAHE/O4fvorHweaE/s320/DSC03463.jpg" alt="" id="BLOGGER_PHOTO_ID_5049996494226867586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_R7o3lst9P4U/RhUxDzNcRZI/AAAAAAAAAHM/Fsq0ZNbaRQk/s1600-h/DSC03466.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_R7o3lst9P4U/RhUxDzNcRZI/AAAAAAAAAHM/Fsq0ZNbaRQk/s320/DSC03466.jpg" alt="" id="BLOGGER_PHOTO_ID_5049996498521834898" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-7592480913510367558?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=BJ2SUVglwvc:Tk8SRWjvek8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=BJ2SUVglwvc:Tk8SRWjvek8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/7592480913510367558/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=7592480913510367558" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/7592480913510367558?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/7592480913510367558?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/BJ2SUVglwvc/laser-following-microbric-viper-robot.html" title="Laser Following Microbric Viper Robot" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_R7o3lst9P4U/RhUxDDNcRXI/AAAAAAAAAG8/3ty16qfNC7U/s72-c/DSC03500.jpg" height="72" width="72" /><thr:total>9</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/04/laser-following-microbric-viper-robot.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk4ERHk6cCp7ImA9WBFWGUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-4967788580796758806</id><published>2007-03-25T14:23:00.000+05:30</published><updated>2007-04-07T19:38:25.718+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-04-07T19:38:25.718+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="follow" /><category scheme="http://www.blogger.com/atom/ns#" term="stay" /><category scheme="http://www.blogger.com/atom/ns#" term="tracking" /><category scheme="http://www.blogger.com/atom/ns#" term="autonomous" /><category scheme="http://www.blogger.com/atom/ns#" term="light" /><category scheme="http://www.blogger.com/atom/ns#" term="microbric" /><category scheme="http://www.blogger.com/atom/ns#" term="box" /><category scheme="http://www.blogger.com/atom/ns#" term="iguanaworks" /><category scheme="http://www.blogger.com/atom/ns#" term="inside" /><category scheme="http://www.blogger.com/atom/ns#" term="line" /><category scheme="http://www.blogger.com/atom/ns#" term="i-bot" /><category scheme="http://www.blogger.com/atom/ns#" term="robots" /><category scheme="http://www.blogger.com/atom/ns#" term="viper" /><category scheme="http://www.blogger.com/atom/ns#" term="ai2" /><title>Microbric Robots!</title><content type="html">&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=158936" quality="best" scale="exactfit" type="application/x-shockwave-flash" height="300" width="400"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I've got my hands on some cool &lt;a href="http://www.microbric.com/page.php?sId=1"&gt;Microbric Robots&lt;/a&gt;, thanks to &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; and Josh Richards (Microbric Pty Ltd, Australia). Scott Hanselman sent Josh over to my blog, and he got interested in the work I'm doing. He sent me two &lt;a href="http://www.microbric.com/ibot/page.php?sId=1"&gt;i-bot kits&lt;/a&gt;, two &lt;a href="http://www.microbric.com/ai2/page.php?sId=1"&gt;Ai2 kits&lt;/a&gt;, a &lt;a href="http://www.saelig.com/miva/merchant.mvc?Screen=PROD&amp;Product_Code=RO001&amp;amp;Category_Code="&gt;Viper kit&lt;/a&gt; (with some add on packs) along with an &lt;a href="http://iguanaworks.net/ir/serial/"&gt;Iguanaworks IR Transmitter/Receiver&lt;/a&gt;. This IR tranceiver works with a serial port and can be used with &lt;a href="http://winlirc.sourceforge.net/"&gt;WinLIRC&lt;/a&gt; to send and receive IR codes used by most televisions, DVD players, and other devices. &lt;a href="http://msdn.microsoft.com/coding4fun/hardware/robotics/article.aspx?articleid=1192168"&gt;It could also be used for controlling the Microbric Robots using a computer&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The Microbric robot kits consist of soldereless, interconnecting parts, and all you have to do is screw everything (switches, motors, sensors etc), directly into the mainboard, and thats it. I built the i-bot first, because I found it the easiest to build. After everything was ready, I made the robot do some simple things like line tracking and bump detection. I-bot can be programmed by scanning barcodes, or by using its own, icon/picture based programming language. Well, after doing some quick programming, I was able to make the i-bot do some cool things like light tracking. Watch the video above!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;These robots are really fun to play with and I can't wait to get started on building the Microbric Viper and the Ai2! I plan to do several fun projects with these robots once I'm comfortable using them.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;Scott Hanselman has some nice Coding4Fun articles on controlling the Microbric Viper using .NET &lt;a href="http://msdn.microsoft.com/coding4fun/hardware/robotics/article.aspx?articleid=1192168"&gt;here&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/coding4fun/hardware/robotics/article.aspx?articleid=1720128&amp;amp;title=Part+2%3a+Controlling+a+Microbric+Viper+Robot+with+an+IR+Serial+Port+using+.NET+and+PowerShell"&gt;here&lt;/a&gt;. Check them out!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-4967788580796758806?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=2zNTN4uIrzI:YzHkUb_we5o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=2zNTN4uIrzI:YzHkUb_we5o:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/4967788580796758806/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=4967788580796758806" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4967788580796758806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/4967788580796758806?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/2zNTN4uIrzI/microbric-robots.html" title="Microbric Robots!" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><thr:total>0</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/03/microbric-robots.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkEFSH85fSp7ImA9WxRVFUg.&quot;"><id>tag:blogger.com,1999:blog-8143136393464413090.post-8162009751816641886</id><published>2007-03-21T15:52:00.000+05:30</published><updated>2008-11-13T10:00:19.125+05:30</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-13T10:00:19.125+05:30</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="webcam" /><category scheme="http://www.blogger.com/atom/ns#" term="vehicle" /><category scheme="http://www.blogger.com/atom/ns#" term="laser" /><category scheme="http://www.blogger.com/atom/ns#" term="controlled" /><category scheme="http://www.blogger.com/atom/ns#" term="camera" /><category scheme="http://www.blogger.com/atom/ns#" term="car" /><category scheme="http://www.blogger.com/atom/ns#" term="obstacle" /><category scheme="http://www.blogger.com/atom/ns#" term="rc" /><category scheme="http://www.blogger.com/atom/ns#" term="detection" /><category scheme="http://www.blogger.com/atom/ns#" term="autonomous" /><category scheme="http://www.blogger.com/atom/ns#" term="computer" /><title>Autonomous RC Car II (with wireless camera!)</title><content type="html">&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/3hB3LRviglo"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/3hB3LRviglo" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I've finally got a nice and cheap wireless camera! It cost me around Rs. 1200 (USD $24). I quickly fixed this camera to my &lt;a href="http://ashishrd.blogspot.com/2007/02/autonomous-rc-car-with-laser-based.html"&gt;autonomous RC car&lt;/a&gt; and now the connection between the RC car and my computer, is completely wireless. As before, the 'brain' of this robot still resides in my computer. If the computer sees the the car approaching an obstacle, it stops it and turns it around. Check out the video above to see it in action!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/RgEJzcXIfRI/AAAAAAAAAGQ/J-dl65zvGZM/s1600-h/DSC03377.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/RgEJzcXIfRI/AAAAAAAAAGQ/J-dl65zvGZM/s320/DSC03377.jpg" alt="" id="BLOGGER_PHOTO_ID_5044323837022862610" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_R7o3lst9P4U/RgEJzsXIfSI/AAAAAAAAAGY/HFGotDcRe-Q/s1600-h/DSC03378.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_R7o3lst9P4U/RgEJzsXIfSI/AAAAAAAAAGY/HFGotDcRe-Q/s320/DSC03378.jpg" alt="" id="BLOGGER_PHOTO_ID_5044323841317829922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_R7o3lst9P4U/RgEJ0MXIfTI/AAAAAAAAAGg/q4-dy-jSv4I/s1600-h/DSC03379.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_R7o3lst9P4U/RgEJ0MXIfTI/AAAAAAAAAGg/q4-dy-jSv4I/s320/DSC03379.jpg" alt="" id="BLOGGER_PHOTO_ID_5044323849907764530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_R7o3lst9P4U/RgEJ0cXIfUI/AAAAAAAAAGo/RGllfya9xLI/s1600-h/DSC03381.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_R7o3lst9P4U/RgEJ0cXIfUI/AAAAAAAAAGo/RGllfya9xLI/s320/DSC03381.jpg" alt="" id="BLOGGER_PHOTO_ID_5044323854202731842" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8143136393464413090-8162009751816641886?l=ashishrd.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ViU9y9IpWug:u0GrnvO4II0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/AshishDerhgawen?a=ViU9y9IpWug:u0GrnvO4II0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/AshishDerhgawen?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://ashishrd.blogspot.com/feeds/8162009751816641886/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8143136393464413090&amp;postID=8162009751816641886" title="33 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/8162009751816641886?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8143136393464413090/posts/default/8162009751816641886?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AshishDerhgawen/~3/ViU9y9IpWug/autonomous-rc-car-ii-with-wireless.html" title="Autonomous RC Car II (with wireless camera!)" /><author><name>Ashish Derhgawen</name><uri>http://www.blogger.com/profile/16949464781799641662</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp1.blogger.com/_R7o3lst9P4U/SF9YvC-EX2I/AAAAAAAAAO4/yjg-yYvs2bw/S220/AmritAvtarBigHead2.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_R7o3lst9P4U/RgEJzcXIfRI/AAAAAAAAAGQ/J-dl65zvGZM/s72-c/DSC03377.jpg" height="72" width="72" /><thr:total>33</thr:total><feedburner:origLink>http://ashishrd.blogspot.com/2007/03/autonomous-rc-car-ii-with-wireless.html</feedburner:origLink></entry></feed>

