<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mohammad &#187; Featured</title>
	<atom:link href="http://robotics.reefat.com/category/featured/feed/" rel="self" type="application/rss+xml" />
	<link>http://robotics.reefat.com</link>
	<description>Robotics Blog</description>
	<lastBuildDate>Wed, 17 Nov 2010 07:27:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Ardumouse: Arduino Micromouse</title>
		<link>http://robotics.reefat.com/2010/02/ardumouse-arduino-micromouse/</link>
		<comments>http://robotics.reefat.com/2010/02/ardumouse-arduino-micromouse/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 21:14:53 +0000</pubDate>
		<dc:creator>Mohammad</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[micromouse]]></category>

		<guid isPermaLink="false">http://robotics.reefat.com/?p=230</guid>
		<description><![CDATA[Micromouse is an event where small robot mice solve a 16&#215;16 maze. The maze is made up of a 16 by 16 grid of cells, each 180 mm square with walls 50 mm high. The mice are completely autonomous robots that must find their way from a predetermined starting position to the central area of [...]]]></description>
			<content:encoded><![CDATA[<p>Micromouse is an event where small robot mice solve a 16&#215;16 maze. The maze is made up of a 16 by 16 grid of cells, each 180 mm square with walls 50 mm high. The mice are completely autonomous robots that must find their way from a predetermined starting position to the central area of the maze unaided. The mouse will need to keep track of where it is, discover walls as it explores, map out the maze and detect when it has reached the goal. Having reached the goal, the mouse will typically perform additional searches of the maze until it has found an optimal route from the start to the center. Once the optimal route has been found, the mouse will run that route in the shortest possible time.</p>
<p><strong>Solving Mazes using Floodfill Algorithm:</strong></p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/nTX44-l8Qd0&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/nTX44-l8Qd0&#038;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>IEEE Micromouse Competition, April 2010:</strong></p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/mqCTc3tOn6k&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/mqCTc3tOn6k&#038;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><strong>Micromouse Maze Editor &#038; Simulator:</strong></p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/WrIGVnxso4M&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/WrIGVnxso4M&#038;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The current demo of the simulator can be accessed from here: <a href="http://micromouse.reefat.com/simulator/" target="_blank">http://micromouse.reefat.com/simulator/</a></p>
<p>I was working for last couple of months to build one like this, and finally came up with the the following:</p>
<h3>Ardumouse v.1</h3>
<p><img class="alignnone size-full wp-image-256" title="ardunouse-v1" src="http://robotics.reefat.com/wp-content/uploads/2010/02/ardunouse-v1.jpg" alt="" width="470" height="430" /></p>
<h3>Ardumouse v.2</h3>
<p><img class="alignnone size-full wp-image-257" title="ardunouse-v2" src="http://robotics.reefat.com/wp-content/uploads/2010/02/ardunouse-v2.jpg" alt="" width="470" height="370" /></p>
<h3>Ardumouse v.3 (Final Version)</h3>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2010/02/ardumouse-complete.jpg"><img class="alignnone size-full wp-image-235" title="ardumouse-complete" src="http://robotics.reefat.com/wp-content/uploads/2010/02/ardumouse-complete.jpg" alt="" width="470" height="470" /></a></p>
<p>I&#8217;ve been programming it to follow right wall and it worked perfectly:</p>
<p><object width="480" height="360"><param name="movie" value="http://www.dailymotion.com/swf/video/xcf3kl"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xcf3kl" width="480" height="360" allowfullscreen="true" allowscriptaccess="always"></embed></object><br /><b><a href="http://www.dailymotion.com/video/xcf3kl_ardumouse-arduino-micromouse-right_tech">Ardumouse: Arduino Micromouse &#8211; Right Wall Follower</a></b><br /><i>Uploaded by <a href="http://www.dailymotion.com/reefat">reefat</a>. &#8211; <a href="http://www.dailymotion.com/us/channel/tech">Videos of the latest science discoveries and tech.</a></i></p>
<p>Here&#8217;s another video that shows how the micromouse sends debug information to a remote computer through wireless:</p>
<p><object width="480" height="360"><param name="movie" value="http://www.dailymotion.com/swf/video/xcf3y8"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed type="application/x-shockwave-flash" src="http://www.dailymotion.com/swf/video/xcf3y8" width="480" height="360" allowfullscreen="true" allowscriptaccess="always"></embed></object><br /><b><a href="http://www.dailymotion.com/video/xcf3y8_ardumouse-arduino-micromouse-wirele_tech">Ardumouse: Arduino Micromouse &#8211; Wireless Debugger</a></b><br /><i>Uploaded by <a href="http://www.dailymotion.com/reefat">reefat</a>. &#8211; <a href="http://www.dailymotion.com/us/channel/tech">Technology reviews and science news videos.</a></i></p>
<p>And this the birth place of the micromouse, my bedroom. Don&#8217;t mind, it&#8217;s a little messy:</p>
<p><img class="alignnone size-full wp-image-262" title="ardumouse-workshop-room1" src="http://robotics.reefat.com/wp-content/uploads/2010/02/ardumouse-workshop-room1.jpg" alt="" width="470" height="350" /></p>
]]></content:encoded>
			<wfw:commentRss>http://robotics.reefat.com/2010/02/ardumouse-arduino-micromouse/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Arduino Based Wireless Joypad</title>
		<link>http://robotics.reefat.com/2009/01/arduino-based-wireless-joypad/</link>
		<comments>http://robotics.reefat.com/2009/01/arduino-based-wireless-joypad/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 02:59:55 +0000</pubDate>
		<dc:creator>Mohammad</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://robotics.reefat.com/?p=128</guid>
		<description><![CDATA[I was thinking about designing a Wireless Joypad to control my Robot, and finally came up with an idea to make it out of a cheap Gigaware PS2 Joypad found at Radioshack, which was only $9.99. It has: 2 Joysticks 1 8-way D-Pad (Direction Pad) 8 Action Buttons, and 4 Extra Buttons (Select, Start, Macro, [...]]]></description>
			<content:encoded><![CDATA[<p>I was thinking about designing a Wireless Joypad to control my Robot,  and finally came up with an idea to make it out of a cheap <strong><a title="Gigaware PS2 Joypad" href="http://www.radioshack.com/product/index.jsp?productId=3014538" target="_blank">Gigaware PS2 Joypad</a></strong> found at <em>Radioshack</em>,  which was only $9.99. It has:</p>
<ul>
<li>2 Joysticks</li>
<li>1 8-way D-Pad (Direction Pad)</li>
<li>8 Action Buttons, and</li>
<li>4 Extra Buttons (Select, Start, Macro, Mode)</li>
</ul>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/gigaware-ps2-joypad.jpg"><img class="alignnone size-full wp-image-131" title="gigaware-ps2-joypad" src="http://robotics.reefat.com/wp-content/uploads/2009/01/gigaware-ps2-joypad.jpg" alt="" /></a></p>
<p>So, I was searching on web, how to interface this PS2 Controller with  Arduino, and finally found an Arduino compatible library called <strong><a title="Arduino PSX Library" href="http://www.arduino.cc/playground/Main/PSXLibrary" target="_blank">PSX  Library</a></strong>. I used it with my Arduino and it didn’t work. I  guess, it didn’t work because this library was for PlayStation 1, but my  controller was PS2 compatible. So, I gave up this idea of using any  library. It’s the time for me to come up with my own library.</p>
<p>Thereafter, I cut off the PS2 connector along with the long cable.  This will be wireless, so why bother with this annoying cable/connector?  This time I am not using any circuitry inside the Joypad. The only  things I need are the <strong>Push Buttons</strong>, <strong>LEDs</strong> and the <strong>Joystick Potentiometer</strong>. Then I figured out the  schematic of the two joysticks:</p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/gigaware-joystick-schematic.gif"><img class="alignnone size-full wp-image-130" title="gigaware-joystick-schematic" src="http://robotics.reefat.com/wp-content/uploads/2009/01/gigaware-joystick-schematic.gif" alt="" /></a></p>
<p>The approximate value for each Potentiometer is <strong>5.2K</strong>.  So, those 4 points will be used as Arduino Analog Input ( Pin 1 to 4  respectively). There was not really enough space inside the joypad,  that’s why I had to use wire wrap wires to solder the connectors of  buttons, potentiometers and LEDs. I was able to solder only 8 buttons,  out of all 16; because the other 8 were so compact that they were almost  impossible to solder. This 8 buttons and 2 LEDs will be connected to 10  Digital I/O pins on Arduino.</p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/gigaware-ps2-joypad-labeled.jpg"><img class="alignnone size-full wp-image-132" title="gigaware-ps2-joypad-labeled" src="http://robotics.reefat.com/wp-content/uploads/2009/01/gigaware-ps2-joypad-labeled.jpg" alt="" /></a></p>
<p>Here’re some pictures of the Modified Joypad, the Arduino board, and  the Transmitter and Receiver modules:</p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/modified-joypad-01.jpg"><img class="alignnone size-thumbnail wp-image-135" title="modified-joypad-01" src="http://robotics.reefat.com/wp-content/uploads/2009/01/modified-joypad-01-150x150.jpg" alt="" /></a> <a href="http://robotics.reefat.com/wp-content/uploads/2009/01/modified-joypad-02.jpg"><img class="alignnone size-thumbnail wp-image-136" title="modified-joypad-02" src="http://robotics.reefat.com/wp-content/uploads/2009/01/modified-joypad-02-150x150.jpg" alt="" /></a></p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/modified-joypad-02.jpg"></a> <a href="http://robotics.reefat.com/wp-content/uploads/2009/01/arduino-duemilanove.jpg"><img class="alignnone size-thumbnail wp-image-129" title="arduino-duemilanove" src="http://robotics.reefat.com/wp-content/uploads/2009/01/arduino-duemilanove-150x150.jpg" alt="" /></a><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/tlp434-rf-transmitter.jpg"><img class="alignnone size-thumbnail wp-image-138" title="tlp434-rf-transmitter" src="http://robotics.reefat.com/wp-content/uploads/2009/01/tlp434-rf-transmitter-150x150.jpg" alt="" /></a> <a href="http://robotics.reefat.com/wp-content/uploads/2009/01/rlp434-rf-receiver.jpg"><img class="alignnone size-thumbnail wp-image-137" title="rlp434-rf-receiver" src="http://robotics.reefat.com/wp-content/uploads/2009/01/rlp434-rf-receiver-150x150.jpg" alt="" /></a></p>
<p>I found some reference article on how to interface these RF Modules  with Microcontroller. Here they are:</p>
<blockquote><p><a href="http://winavr.scienceprog.com/example-avr-projects/running-tx433-and-rx433-rf-modules-with-avr-microcontrollers.html" target="_blank">Running TX433 and RX433 RF modules with AVR  microcontrollers</a><br />
<a href="http://www.sparkfun.com/datasheets/RF/KLP_Walkthrough.pdf" target="_blank">KLP/KLPA Module Walkthrough by Sparkfun</a><br />
<a href="http://narobo.com/articles/rfmodules.html" target="_blank">Implementing  RF Modules</a></p></blockquote>
<p style="padding-left: 30px;">So, I followed the first reference (Running TX433 … …), and it worked  without any problem. By the way, that example module was using <strong>4-Bytes  Packet Transmission Protocol</strong> at 1200 bps. I modified the code  for Arduino, and as it worked with 2400 bps (because my RF Modules were  little faster, 4800 bps).</p>
<p>My joypad has 2 joysticks and each of them has 2-axis (X and Y). So,  it gives 4 analog inputs to the microcontroller and each input has a  resolution of 1024 (0 to 1023), which requires 2 byes (integer) for  each. And 2 joysticks needs 8 bytes (4 x 2 bytes). The 8 push buttons  can be represented as 1 byte (1 bit for each button). The data  transmission packet itself has 1 Synchronization byte, 1 address byte,  and 1 Checksum word (2 bytes). So the length of the complete packet is  13 (8+1+1+1+2) bytes.</p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2009/01/transmission-data-packet.gif"><img class="alignnone size-full wp-image-139" title="transmission-data-packet" src="http://robotics.reefat.com/wp-content/uploads/2009/01/transmission-data-packet.gif" alt="" /></a></p>
<p>This time my code went real crazy. I tried to keep it clean and  well-commented almost everything I could. As there are two separate  circuits: the transmitter (joypad itself) and the receiver (Arduino  Duemilanove); so there will be two separate scripts. But, I made the <strong>WirelessDataPacket</strong> class common for both. Here are both sketch source files:</p>
<blockquote><p><a title="Transmitter Sketch Source" href="http://robotics.reefat.com/wp-content/uploads/2009/01/joypad_transmitter.txt" target="_blank">Transmitter Sketch Source</a></p>
<p><a title="Receiver Sketch Source" href="http://robotics.reefat.com/wp-content/uploads/2009/01/joypad_receiver.txt" target="_blank">Receiver Sketch Source</a></p></blockquote>
<p>Everything was working cool when I was using 4-Bytes Transmission  Protocol (as mentioned in the example reference). But when I am using  13-Bytes Packet, it became a lot slower and more than 50% (approximate)  data is losing at the time of transmission.</p>
<p>I calculate the speed this way,</p>
<blockquote><p>2400 bps = (2400/8) bytes per second = 300 Bps</p>
<p>300 Bps = (300/13) packets per second = 23 pps</p></blockquote>
<p>Arduino uses 16.0000 MHz crystal (instead of 9.216 or 11.0592 or  18.432 MHz etc.) which can produce 0.1% error (ref: <a title="AVR BAUD  Rate Calculator" href="http://www.wormfood.net/avrbaudcalc.php" target="_blank">AVR BAUD Rate Calculator</a>). And including some other  circumstances (hardware+software) 5% error is acceptable. But for my  case, the error rate is so huge that the transmission is breaking up and  becomes too much slow. I guess, this can improve if the BAUD Rate of  the RF Modules can be improvised and some other programming technique  (which I don’t know yet) can me implemented.</p>
]]></content:encoded>
			<wfw:commentRss>http://robotics.reefat.com/2009/01/arduino-based-wireless-joypad/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Differential Drive Robot – ver.2</title>
		<link>http://robotics.reefat.com/2008/09/differential-drive-robot-ver-2/</link>
		<comments>http://robotics.reefat.com/2008/09/differential-drive-robot-ver-2/#comments</comments>
		<pubDate>Sun, 21 Sep 2008 02:49:35 +0000</pubDate>
		<dc:creator>Mohammad</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://robotics.reefat.com/?p=90</guid>
		<description><![CDATA[Hi everyone, this is the improved version of my previous Differential Drive Robot. I didn’t think about any name yet; but will figure out one soon. Anyway, this improved prototype has an IR Rangefinder attached to it which can detect distance of any object in front of it within a range of 10cm to 80cm. [...]]]></description>
			<content:encoded><![CDATA[<p>Hi everyone, this is the improved version of my previous Differential  Drive Robot. I didn’t think about any name yet; but will figure out one  soon. Anyway, this improved prototype has an IR Rangefinder attached to  it which can detect distance of any object in front of it within a  range of 10cm to 80cm. And an extra servo is added to this new version  to rotate the sensor left or right. Let’s take a closer look at the new  prototype.</p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2008/09/my-first-robot-v2.jpg"><img class="alignnone size-full wp-image-191" title="my-first-robot-v2" src="http://robotics.reefat.com/wp-content/uploads/2008/09/my-first-robot-v2.jpg" alt="" width="420" height="336" /></a></p>
<p>Whenever the robot faces an obstacle in front of it, it looks left  and right, and thinks about which side has enough space to go for. Then  it turns to that side and moves forward. Check out the following video  to see how the robot moves.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/s9aAY5zDuLo&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/s9aAY5zDuLo&#038;fs=1" type="application/x-shockwave-flash" width="480" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://robotics.reefat.com/2008/09/differential-drive-robot-ver-2/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>ATmega AVR Development Board</title>
		<link>http://robotics.reefat.com/2008/09/atmega-avr-development-board/</link>
		<comments>http://robotics.reefat.com/2008/09/atmega-avr-development-board/#comments</comments>
		<pubDate>Sun, 14 Sep 2008 22:26:16 +0000</pubDate>
		<dc:creator>Mohammad</dc:creator>
				<category><![CDATA[Featured]]></category>

		<guid isPermaLink="false">http://robotics.reefat.com/?p=83</guid>
		<description><![CDATA[Today I have just completed building the brain of my Robot, the MCU Board using ATmega8 AVR Microcontroller. This MCU Board can be powered by 6V Adapter or 5 1.2V NiMH Rechargable Batteries. ATmega8 AVR runs on 5V, and thet’s the reason I used National Semiconductor’s Low Dropout Voltage Regulator LM2940T. For programming the AVR, [...]]]></description>
			<content:encoded><![CDATA[<p>Today I have just completed building the brain of my Robot, the MCU  Board using <a title="ATmega8 AVR Microcontroller" href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2004" target="_blank">ATmega8</a> AVR Microcontroller. This MCU Board can be  powered by 6V Adapter or 5 1.2V NiMH Rechargable Batteries. ATmega8 AVR  runs on 5V, and thet’s the reason I used National Semiconductor’s Low  Dropout Voltage Regulator <a title="LM2940 - Low Dropout Voltage  Regulator" href="http://www.national.com/mpf/LM/LM2940.html" target="_blank">LM2940T</a>.</p>
<p><a href="http://robotics.reefat.com/wp-content/uploads/2008/09/atmega8-mcu-board.jpg"><img class="alignnone size-full wp-image-194" title="atmega8-mcu-board" src="http://robotics.reefat.com/wp-content/uploads/2008/09/atmega8-mcu-board.jpg" alt="" width="420" height="310" /></a></p>
<p>For programming the AVR, I am using <a title="AVRISP mkII In-System  Programmer" href="http://www.atmel.com/dyn/products/tools_card.asp?family_id=607&amp;family_name=AVR%AE+8%2DBit+RISC+&amp;tool_id=3808" target="_blank">AVRISP mkII In-System Programmer</a> and <a title="AVR  Studio" href="http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725" target="_blank">AVR Studio</a> Development IDE. The MCU Board has two  I/O Ports – 8-Bit PORTD and 6-Bit PORTB, and 6-channel ADC. For PORTD  and PORTB headers, the Vcc can be selected as either 5V or 6V, using the  two yellow jumpers (red-marked). The board also provides 5V output  headers to power up external device(s).</p>
<p><strong>Supported AVRs:</strong> ATmega8, ATmega48, ATmega88,  ATmega168.</p>
]]></content:encoded>
			<wfw:commentRss>http://robotics.reefat.com/2008/09/atmega-avr-development-board/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced (User agent is rejected)

Served from: robotics.reefat.com @ 2012-02-07 18:24:54 -->
