{"id":161,"date":"2014-09-25T16:32:32","date_gmt":"2014-09-25T16:32:32","guid":{"rendered":"http:\/\/www.emtronics.co.uk\/wp_blog\/?p=161"},"modified":"2016-06-21T20:24:13","modified_gmt":"2016-06-21T20:24:13","slug":"quadbot-android-controlled-robot","status":"publish","type":"post","link":"http:\/\/www.emtronics.co.uk\/wp_blog\/?p=161","title":{"rendered":"QuadBot &#8211; Android Controlled Robot"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p><iframe loading=\"lazy\" title=\"QuadBot - Homemade Android controlled wifi robot with camera\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/syziFVRetFU?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h1 align=\"left\">Overview<\/h1>\n<p align=\"left\">Quad Bot is a small robot designed and built from scratch. It has a simple robot arm with 4 degress of freedom, and a small colour camera JPEG camera. It has evolved and is now controlled over Wifi, allowing control with any Android phone.<\/p>\n<p align=\"left\">There are 4 independently controlled wheels, allowing maximum control.<\/p>\n<p align=\"left\">Below is a system overview. At the heart is a Xilinx Spartan 3 FPGA, <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/?p=118\">using one of the boards I made here<\/a>. This is programmed with a Microblaze softcore which controls the rest of the system. I have memory mapped Uarts, servo controllers, LEDs etc to the Microblaze.<\/p>\n<p style=\"text-align: left;\">\u00a0<a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121336.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-282\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121336-300x255.jpg\" alt=\"OLYMPUS DIGITAL CAMERA\" width=\"300\" height=\"255\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121336-300x255.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121336.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>\u00a0<a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121339.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-283\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121339-300x225.jpg\" alt=\"OLYMPUS DIGITAL CAMERA\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121339-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121339.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>\u00a0<a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121340.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-284\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121340-300x239.jpg\" alt=\"OLYMPUS DIGITAL CAMERA\" width=\"300\" height=\"239\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121340-300x239.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121340.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>\u00a0<a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121341.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-285\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121341-300x240.jpg\" alt=\"OLYMPUS DIGITAL CAMERA\" width=\"300\" height=\"240\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121341-300x240.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121341.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/P3121336.jpg\"><br \/>\n<\/a><\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/system.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-165\" title=\"system\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/system.png\" alt=\"\" width=\"712\" height=\"750\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/system.png 712w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/system-284x300.png 284w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h1>Mechanical<\/h1>\n<h2>Drive<\/h2>\n<p>The drive consists of 4 independent wheels. Each wheel can be individually controlled &#8211; speed, direction and angle. This allows a great degree of movement and robust 4 wheel drive. Also the differential can be implemented electrically rather than mechanically.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/mech_turn.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-175\" style=\"border: 1px solid black;\" title=\"mech_turn\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/mech_turn.png\" alt=\"\" width=\"706\" height=\"710\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/mech_turn.png 706w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/mech_turn-150x150.png 150w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/mech_turn-298x300.png 298w\" sizes=\"auto, (max-width: 706px) 100vw, 706px\" \/><\/a><\/p>\n<h3>Parts<\/h3>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2496.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-179\" title=\"1200_IMG_2496\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2496-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2496-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2496-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2496.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>I used Pololu <a href=\"http:\/\/www.pololu.com\/catalog\/product\/992\">geared motors<\/a> and <a href=\"http:\/\/www.pololu.com\/catalog\/product\/1090\">wheels<\/a>. I used the 100:1 ratio motor, this provides good torque and still a high speed. The wheels fit the motor shaft, they also have teeth on the inside to allow an optical encoder to determine speed.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2509.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-181\" title=\"1200_IMG_2509\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2509-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2509-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2509-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2509.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The angle of each wheel is controlled with a metal geared servo &#8211; MG955. There are loads of these on <a href=\"http:\/\/shop.ebay.co.uk\/?_from=R40&amp;_trksid=m38&amp;_nkw=mg995\">ebay<\/a>, mostly from China\/Hong Kong.<\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2498.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-180\" title=\"1200_IMG_2498\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2498-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2498-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2498-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2498.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p align=\"left\">I got a pack of various nuts and bolts, and 0.6mm, 1mm, 2mm and 3mm aluminium sheet. All from ebay.<\/p>\n<h3 align=\"left\">Wheels<\/h3>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2512.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-182\" title=\"1200_IMG_2512\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2512-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2512-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2512-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2512.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2513.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-183\" title=\"1200_IMG_2513\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2513-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2513-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2513-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2513.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2516.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-184\" title=\"1200_IMG_2516\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2516-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2516-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2516-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2516.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>This is one of the 4 wheels. It is designed so the centre of the wheel rotates when the servo turns.<\/p>\n<h2>Base<\/h2>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2613.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-185\" title=\"1200_IMG_2613\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2613-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2613-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2613-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2613.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2617.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-186\" title=\"1200_IMG_2617\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2617-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2617-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2617-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2617.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00147.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-178\" title=\"1200_DSC00147\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00147-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00147-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00147-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00147.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2656.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-187\" title=\"1200_IMG_2656\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2656-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2656-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2656-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2656.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The main base is cut from 3mm aluminium. Each wheel is attached to 1mm aluminium to the base which gives a small amount of suspension. The aluminium is easy to work with and makes it easy to attach new components I think I got the aluminium from ebay.<\/p>\n<p>The wheels are also square, this makes it easier to calculate angles when turning.<\/p>\n<h2>Robot Arm<\/h2>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3133.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-194\" title=\"1200_IMG_3133\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3133-300x169.jpg\" alt=\"\" width=\"300\" height=\"169\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3133-300x169.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3133-1024x578.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3133.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3136.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-195\" title=\"1200_IMG_3136\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3136-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3136-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3136-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3136.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3137.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-196\" title=\"1200_IMG_3137\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3137-300x272.jpg\" alt=\"\" width=\"300\" height=\"272\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3137-300x272.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3137-1024x930.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3137.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3139.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-197\" title=\"1200_IMG_3139\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3139-300x213.jpg\" alt=\"\" width=\"300\" height=\"213\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3139-300x213.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3139-1024x729.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_3139.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>[NOTE, the grabber end is not finished]<\/p>\n<p>The robot arm is controlled with 4 servos (The 5th servo on there is for the camera). It is designed to keep the weight as close the base as possible.<\/p>\n<p>The base servo is a metal geared type as used in the wheels, as it needs the most torque, the next is an ordinary hobby servo, the last 2 which rotate and close the gripper are micro servos.<\/p>\n<p>&nbsp;<\/p>\n<h1>Electronics<\/h1>\n<p>&nbsp;<\/p>\n<h2>Brain &#8211; Homemade Xilinx FPGA board<\/h2>\n<p>The main control board is one of the FPGA boards I made a few years ago see Project:<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/?p=118\">FPGA Project Page<\/a><\/p>\n<figure id=\"attachment_133\" aria-describedby=\"caption-attachment-133\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/06\/IMG_1665.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-133\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/06\/IMG_1665-300x225.jpg\" alt=\"IMG_1665\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/06\/IMG_1665-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/06\/IMG_1665.jpg 800w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-133\" class=\"wp-caption-text\">FPGA board<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>Using the Xilinx EDK and ISE it&#8217;s possible to make a design with an embedded Microblaze 32bit CPU, then there there is enough space on the FPGA to add custom memory mapped peripherals.<\/p>\n<p>The program can be encoded into the bitstream on the FPGA and automatically run on startup. This limits the program size, but it is big enough for my needs.<\/p>\n<figure id=\"attachment_268\" aria-describedby=\"caption-attachment-268\" style=\"width: 300px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/FPGA_design1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-268\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/FPGA_design1-300x133.png\" alt=\"FPGA_design\" width=\"300\" height=\"133\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/FPGA_design1-300x133.png 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/FPGA_design1.png 969w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-268\" class=\"wp-caption-text\">FPGA RTL design<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<ul>\n<li>Microblaze CPU instantiated in FPGA<\/li>\n<li>Custom RTL Wheel speed detectors<\/li>\n<li>Custom RTL servo controllers, allowing 256 resolution<\/li>\n<li>Custom RTL PWM controller for the motors<\/li>\n<li>16MB SDRAM (Not used)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Power Supply<\/h2>\n<p>&nbsp;<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/battery.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-202\" title=\"battery\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/battery-300x160.jpg\" alt=\"\" width=\"300\" height=\"160\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/battery-300x160.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/battery.jpg 481w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/power.jpg\">\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-201\" title=\"power\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/power-300x226.jpg\" alt=\"\" width=\"300\" height=\"226\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/power-300x226.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/power.jpg 799w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>A 7.4v Lithium Polymer 4000mha battery is used for power. This give a range of about 7.0v-8.2v. The picture above shows the DC\/DC power supply unit it contains a 5.0v and 3.3v 1A\u00a0 DC\/DC IC. Most of the digital electronics runs off the 3.3v, the micro servos and Camera run from 5v, the large servos and wheel motors run directly off the battery.<\/p>\n<p>&nbsp;<\/p>\n<h2>\u00a0Wheels<\/h2>\n<p>The motors are driven by 2 x <a href=\"http:\/\/www.pololu.com\/catalog\/product\/713\">Dual Pololu Motor Driver<\/a> ,this allow up to 13v and 1A per motor. These give to full H bridge control to each motor.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/motor_driver.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-204\" title=\"motor_driver\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/motor_driver.jpg\" alt=\"\" width=\"200\" height=\"167\" \/><\/a><\/p>\n<p>On each wheel is a <a href=\"http:\/\/www.pololu.com\/catalog\/product\/958\">Pololu Reflective Sensor<\/a>, this enables speed measurement of each wheel. There is only one sensor per wheel, so only speed, not direction can be determined.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/reflec_sensor.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-205\" title=\"reflec_sensor\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/reflec_sensor.jpg\" alt=\"\" width=\"200\" height=\"173\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00148.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-207\" title=\"1200_DSC00148\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00148-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00148-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00148-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_DSC00148.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The output from the sensor is a varying analogue voltage, this is conditioned with a comparator with hysteresis.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2504.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-208\" title=\"1200_IMG_2504\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2504-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2504-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2504-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2504.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Above shows the trace while the wheel is turning. The top signal is the raw output from the sensor, the bottom signal is the digital output from the comparator.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/wheel_board.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-211\" title=\"wheel_board\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/wheel_board-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/wheel_board-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/wheel_board-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/wheel_board.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2750.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-209\" title=\"1200_IMG_2750\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2750-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2750-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2750-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2750.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a> <a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2751.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-210\" title=\"1200_IMG_2751\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2751-300x225.jpg\" alt=\"\" width=\"300\" height=\"225\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2751-300x225.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2751-1024x768.jpg 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2011\/12\/1200_IMG_2751.jpg 1200w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The circuit above drives all 4 wheels, connects the wheel angle servos and contains the comparators for the wheel speed sensors. It takes two powers supplies &#8211; 5v for the comparators and motor driver logic, 7v for the motor power and servo power.<\/p>\n<p>All this can be controlled by 3.3v logic via the ribbon cable.<\/p>\n<h2>AVR Servo control board<\/h2>\n<p>A special board was made to control the servos for the arm and camera. This reduced the number of control pins needed on the main FPGA board. This board provides power and signal to the servos, it allows you to set the servo position via an RS232 interface. An AVR ATMEGA64 microcontroller is used.<\/p>\n<ul>\n<li><span style=\"line-height: 13px;\">Controls 8 servos<\/span><\/li>\n<li>2 banks (4 servos in each) can be have their power controlled<\/li>\n<li>2 x high power switches controlled by MOSFET<\/li>\n<li>Can set max and min range for each servo , stored in EEPROM<\/li>\n<li>Max servo speed can be set<\/li>\n<li>Controlled by one wire (RS232)<\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-256\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board-300x213.png\" alt=\"servo_board\" width=\"300\" height=\"213\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board-300x213.png 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board-1024x729.png 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board.png 1472w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a>\u00a0\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-257\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board_brd-279x300.png\" alt=\"servo_board_brd\" width=\"279\" height=\"300\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board_brd-279x300.png 279w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board_brd.png 478w\" sizes=\"auto, (max-width: 279px) 100vw, 279px\" \/>\u00a0\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-258\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board-260x300.jpg\" alt=\"servo_board\" width=\"260\" height=\"300\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board-260x300.jpg 260w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board-887x1024.jpg 887w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/servo_board.jpg 1328w\" sizes=\"auto, (max-width: 260px) 100vw, 260px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h2>\u00a0STDIO Display<\/h2>\n<p>In order to debug and have a status output I salvaged an old project. The LCD is a 128 x 64 matrix display, connected to an ATMEGA128. I reprogrammed it to act as a serial terminal, it accepts a sub-set of escape sequences. There is no character generation built in to the LCD so I needed to generate text in the assembly code.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/main-thumb1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-262\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/main-thumb1.jpg\" alt=\"main thumb1\" width=\"300\" height=\"265\" \/><\/a>\u00a0\u00a0<a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/track_lcd_pcb.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-264\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/track_lcd_pcb-203x300.png\" alt=\"track_lcd_pcb\" width=\"203\" height=\"300\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/track_lcd_pcb-203x300.png 203w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/track_lcd_pcb-693x1024.png 693w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/track_lcd_pcb.png 1000w\" sizes=\"auto, (max-width: 203px) 100vw, 203px\" \/><\/a>\u00a0\u00a0<a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/pic3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-263\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/pic3-300x292.jpg\" alt=\"pic3\" width=\"300\" height=\"292\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/pic3-300x292.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/pic3.jpg 564w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2>Wireless<\/h2>\n<p>Wireless connection is done with a <a href=\"http:\/\/www.microchip.com\/wwwproducts\/Devices.aspx?product=RN131\">WifFly RN-131G<\/a> wifi module. I made a simple board to break out the required pins and mount the status LEDs.<\/p>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/wifi.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-275\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/wifi.jpg\" alt=\"wifi\" width=\"150\" height=\"97\" \/><\/a>\u00a0\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-271\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/wifly-279x300.jpg\" alt=\"wifly\" width=\"279\" height=\"300\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/wifly-279x300.jpg 279w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/wifly.jpg 800w\" sizes=\"auto, (max-width: 279px) 100vw, 279px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>The pins bring out power and the serial port. The device is configured to automatically connect to the adhoc network setup on the Android device. Once a connection is established all data is sent out the serial port to the FPGA to be read by the Microblaze core. Data sent from the Microblaze is relayed through the TCP wifi connection.<\/p>\n<h2>Camera<\/h2>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/LS_Y201_Infra_TTL__16444.1405330297.1280.1280.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-286\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/LS_Y201_Infra_TTL__16444.1405330297.1280.1280-300x258.jpg\" alt=\"LS_Y201_Infra_TTL__16444.1405330297.1280.1280\" width=\"300\" height=\"258\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/LS_Y201_Infra_TTL__16444.1405330297.1280.1280-300x258.jpg 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/LS_Y201_Infra_TTL__16444.1405330297.1280.1280.jpg 700w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The camera is a LinkSprite JPEG serial module. It has a maximum baud of 115200 so you can not get great FPS, but it&#8217;s almost good enough. at lowest res ox 160&#215;120 it produces images of about 3.5KB.<\/p>\n<p>The camera is connected to a UART generated in the FPGA which the Microblaze core has control over.<\/p>\n<p>&nbsp;<\/p>\n<h1>Software<\/h1>\n<h2>FGPA Microblaze core<\/h2>\n<p>The main software on the robot is running in the Microblaze softcore. The program is burned in the prom for the FPGA so no need to load it at run time, this limits the size but it&#8217;s enough for these needs.<\/p>\n<p>The main tasks of the software is to coordinate the UARTs, and to take pictures on the camera. The Wifi module sends a data stream to the FPGA, the core has to decode the stream and send back any picture data.<\/p>\n<p>Here are some example commands:<\/p>\n<p>enum rf_commands_e<br \/>\n{<br \/>\n\/\/Variable length commands<br \/>\nCOM_SEND_TEXT_MESSAGE = 0, \/\/NOTE, MUST stay at 0<br \/>\nCOM_SEND_PICTURE_DATA,<br \/>\n\/\/Sent from host to robot<br \/>\nCOM_SET_SPEED,<br \/>\nCOM_SET_ANGLE,<br \/>\nCOM_SET_DIR,<br \/>\nCOM_CAM_ARM_SERVO_DIRECT,<br \/>\nCOM_SET_CAM_ARM_SERVO,<br \/>\nCOM_WRITE_TO_MICROBLAZE,<br \/>\nCOM_TAKE_PICTURE,<br \/>\nCOM_SEND_PIC_PACKET,<br \/>\n\/\/Sent form robot to host<br \/>\nCOM_HARD_RESET=0x80,<br \/>\nCOM_CHILD_CONNECTED,<br \/>\nCOM_CHILD_DISCONNECTED,<br \/>\nCOM_PROG_PIECE_RECIVED,<br \/>\nCOM_PICTURE_SIZE,<br \/>\nCOM_PICTURE_SENT<br \/>\n};<\/p>\n<p>The wifi bandwidth is high BW, high latency from robot to Android, and low BW, low latency from Android to robot. The wifi module does not like data being sent in both directions at the same time, so it&#8217;s important to coordinate the data.<\/p>\n<p>The picture data is broken up in to 512byte chunks which gets sent to the Android device each time the robot receives motion data, this ensures they don&#8217;t both get sent at the same time.<\/p>\n<p>I had to make careful use of interrupts on the Microblaze core and ping-pong a buffer of data for the camera JPEG image. This meant the last image frame can be sent back at the SAME TIME as taking the next picture. This almost doubled the FPS over a simple loop.<\/p>\n<h2>\u00a0Android App<\/h2>\n<p><a href=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/device-2015-03-12-172354.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-288\" src=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/device-2015-03-12-172354-300x187.png\" alt=\"device-2015-03-12-172354\" width=\"300\" height=\"187\" srcset=\"http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/device-2015-03-12-172354-300x187.png 300w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/device-2015-03-12-172354-1024x640.png 1024w, http:\/\/www.emtronics.co.uk\/wp_blog\/wp-content\/uploads\/2012\/09\/device-2015-03-12-172354.png 1920w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>A very simple app was made to connect to the robot and control it. It connects over a TCP connection. It needs to send motion data, and receives the JPEG image and combines the 512byte chunks to display.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Overview Quad Bot is a small robot designed and built from scratch. It has a simple robot<\/p>\n","protected":false},"author":1,"featured_media":282,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-161","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-projects"],"_links":{"self":[{"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/posts\/161","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=161"}],"version-history":[{"count":47,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/posts\/161\/revisions"}],"predecessor-version":[{"id":300,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/posts\/161\/revisions\/300"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=\/wp\/v2\/media\/282"}],"wp:attachment":[{"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=161"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=161"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.emtronics.co.uk\/wp_blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=161"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}