{"id":538,"date":"2009-03-04T03:24:52","date_gmt":"2009-03-04T07:24:52","guid":{"rendered":"http:\/\/www.underwater.ca\/blog\/?p=538"},"modified":"2018-09-22T01:33:16","modified_gmt":"2018-09-22T05:33:16","slug":"connecting-vdp1-to-arduino","status":"publish","type":"post","link":"https:\/\/www.underwater.ca\/blog\/connecting-vdp1-to-arduino\/","title":{"rendered":"Reading and Writing to the VDIP1 USB Host Controller using Arduino"},"content":{"rendered":"<p><a href=\"\/blog\/wp-content\/uploads\/2009\/09\/vdip1_arduino_lg.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1339\" title=\"vdip1_arduino_thumb\" src=\"\/blog\/wp-content\/uploads\/2009\/09\/vdip1_arduino_lg.jpg\" alt=\"\" width=\"624\" height=\"468\" \/><\/a><\/p>\n<p>The <a href=\"http:\/\/www.saelig.com\/miva\/merchant.mvc?Screen=PROD&amp;Product_Code=UI1E3&amp;Category_Code=\">VDIP1 USB host controller<\/a> is a worthwhile extension module for anyone working with the <a href=\"http:\/\/www.arduino.cc\">Arduino microcontroller<\/a>. The ability to integrate USB inputs\/outputs with your Arduino microcontroller means that you can interface it with practically any USB device, creating even more exciting possibilities with Arduino. Another valuable integration feature that the module can provide is the ability to increase Arduino&#8217;s memory capacity using any USB memory drive.<\/p>\n<p><!--more Read More \u00bb --><\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2009\/03\/1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-545\" title=\"1\" src=\"\/blog\/wp-content\/uploads\/2009\/03\/networked-arduino.jpg\" alt=\"\" width=\"624\" height=\"468\" \/><\/a><\/p>\n<p>For this lab in my <a href=\"http:\/\/www.faludi.com\/teaching\/networked-objects\">Networked Objects<\/a> class taught by professor <a href=\"http:\/\/www.faludi.com\">Robert Faludi<\/a> at <a href=\"http:\/\/itp.nyu.edu\/itp\">ITP<\/a>, I was assigned to work with a USB host controller to receive and send a secret espionage message across an array of other networked devices that other students in the class were working with. Connecting the VDIP1 controller to Arduino was fairly straightforward. There were four simple connections I had to make to quickly start working with the module:<\/p>\n<ol>\n<li>Connect the module to power and ground on the breadboard (pins: 5V and GND).<\/li>\n<li>Connect\u00a0the CTS and RTS pins to each other with a wire for flow control. (pins: A03 to A04)<\/li>\n<li>Attach the RXD and TXD pins to the RX and TX inputs onto the Arduino. (RX pin: A00, TX pin: A01)<\/li>\n<li>Place the jumpers onto the configuration bus interface so that the USB host controller can handle serial communication from your Arduino. (refer to diagram below)<\/li>\n<\/ol>\n<p>I found this clear semantic diagram from <a href=\"http:\/\/www.rogercom.com\">rogercom.com<\/a> extremely helpful in helping me to get my connection to run properly:<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2009\/03\/diagrama2circuito.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-551\" title=\"diagrama2circuito\" src=\"\/blog\/wp-content\/uploads\/2009\/03\/diagrama2circuito-300x140.gif\" alt=\"\" width=\"624\" height=\"291\" \/><\/a><\/p>\n<p>Next, I powered up the Arduino with one of the USB ports on my computer. The USB host controller\u2019s LEDs immediately began to blink indicating that all the module&#8217;s properties were functioning properly. After a few seconds, the LED connected to LED1 was the only light that remained illuminated. To ensure that I was able to properly communicate with the VDP1 module, I established a serial connection with the COMM port that my Arduino was connected to using my\u00a0telnet client (MACs: ZTerm, PCs: I recommend <a href=\"http:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\">putty<\/a>, it\u2019s free!). Once I had a connection established, the device sent a string \u2018IPA\u2019 to my terminal window. This feedback gave me enough confidence that I would be able to send to and receive from my USB module and begin reading and writing to text files onto my USB key.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2009\/03\/putty.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-588\" title=\"putty_window\" src=\"\/blog\/wp-content\/uploads\/2009\/03\/putty.jpg\" alt=\"\" width=\"624\" height=\"509\" \/><\/a><\/p>\n<p>I successfully used <a href=\"http:\/\/www.arduino.cc\/playground\/Main\/UsbMemory\">Nick\u2019s Arduino code<\/a> to begin reading from and writing to text files with my USB key. His program functions by sending numbered commands from your serial monitor directly from the Arduino interface.<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2009\/03\/arduino.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-587\" title=\"arduino\" src=\"\/blog\/wp-content\/uploads\/2009\/03\/arduino-228x300.jpg\" alt=\"\" width=\"624\" height=\"589\" \/><\/a><\/p>\n<p>You can access the syntax and clear documentation for his program from the <a href=\"http:\/\/www.arduino.cc\/playground\/Main\/UsbMemory\">Arduino Playground<\/a> web site.<\/p>\n<p>&#8211; Jason<\/p>\n<p><a href=\"\/blog\/wp-content\/uploads\/2009\/03\/3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-547\" title=\"3\" src=\"\/blog\/wp-content\/uploads\/2009\/03\/3-300x225.jpg\" alt=\"\" width=\"624\" height=\"468\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The VDIP1 USB host controller is a worthwhile extension module for anyone working with the Arduino microcontroller. The ability to integrate USB inputs\/outputs with your Arduino microcontroller means that you can interface it with practically any USB device, creating even more exciting possibilities with Arduino. Another valuable integration feature that the module can provide is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,27,12],"tags":[],"class_list":["post-538","post","type-post","status-publish","format-standard","hentry","category-net-objects","category-technology","category-tutorials"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/posts\/538","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/comments?post=538"}],"version-history":[{"count":73,"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/posts\/538\/revisions"}],"predecessor-version":[{"id":2632,"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/posts\/538\/revisions\/2632"}],"wp:attachment":[{"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/media?parent=538"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/categories?post=538"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.underwater.ca\/blog\/wp-json\/wp\/v2\/tags?post=538"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}