About

5/3/13

USB3.0 vs USB.2.0

[Updated Aug. 26 2013]

I had bought a new Seagate 2TB USB3.0 disk and gave it a spin. Here's some results that I wrote at the time; and some updates.

This was done on the Gigabyte FX990-UD7 mainboard which has an Eltron USB3.0 controller and I have it set up with two 250GB 3Gbit SATA2 disks on the Marvell RAID controller on the board, and an Intel 80 GB SSD disk.

USB2.0 is mostly limited to around 20-25MB second, depending on your controller. Remember, if you want network speeds over 10MB/sec you will have want to upgrade to a Gigabit home network. Then you can achieve speeds around 100 MB/sec.

So, it would be pretty clear that the days of 100 MBit networks are over. To accommodate these now ubiqous technologies as RAID, SSD and USB3, I expect gigabit switches to sell good the coming year.

Update:

Added one Kingston 120 GB SSD SATA3.0 drive.
From the USB3.0 to the new SATA3.0, I achieved around 310 MB per second accoring to the Resource Monitor, but the file dialog claimed substantially less.

One of the reasons I had to get the new SSD was ofcourse that the 3 year old 80 GB Intel drive was full, as it is the main system drive, so I have had no SSD to actually put stuff I use. The first thing I did was to move everything Java-related onto the new disk: JRE, JDK, Eclipse and the Android SDK. I noticed an immidiate 2x speedup, and before this, the software was located on the RAID0 drive in this test'

Also 'added' was a 4 GB ' AMD Radeon RAM disk'. This disk is used for Chrome and Windows temporary files. The disk is loaded very early in the boot sequence, and can probably host more interesting things.

Using a single test file of ~4 GB, except for when testing the 4 GB RAM disk, I used a 2.3 GB file.
These values are the observed max values under the Windows transfer dialog.

RAID0 2x3Gbit to USB3: 150MB/sec
USB to RAID0 2x3Gbit: 190MB/sec
SSD SATA2 to USB3: 180MB/sec
USB3 to SSD SATA2: 190MB/sec
SSD SATA2 to RAID0 2x3Gbit: 225MB/sec
RAID0 2x3Gbit to SSD SATA2: 135MB/sec


USB3 to SSD SATA3: 210MB/sec
SSD SATA3 to USB3: 215MB/sec
SSD SATA3 to SSD SATA 2: 266MB/sec
SSD SATA2 to SSD SATA 3: 180MB/sec
SSD SATA3 to RAMDISK: 506MB/sec <--- font="">
SSD SATA2 to RAMDISK: 220MB/sec

The Kingston SSD packaging claimed max 450 read speed, so caching probably caused those 506 :)

1/26/13

Ultraviolet LED's

So I got a pack of Sparkfun LED's and some UV LED's on the side. A little investigation led to the conclusion that the separate LED's are rather superflous. It turns out the 'violet' LED's in the Sparkfun pack have the exact same wavelength as the LED's sold separately.

They are both of the class called 'UVA' which goes from 400 – 315 nm. The separate LED's do however seem to be a bit brigther. Also the construction itself of the two differ a tiny bit - we are talking sub-millimetre and fractions of degrees.

Here's a table of UV wavelengths, ripped right out of Wikipedia.
UltravioletUV400 – 100 nm3.10 – 12.4 eV
Ultraviolet AUVA400 – 315 nm3.10 – 3.94 eVlong wave, black light
Ultraviolet BUVB315 – 280 nm3.94 – 4.43 eVmedium wave
Ultraviolet CUVC280 – 100 nm4.43 – 12.4 eVshort wave, germicidal
Near UltravioletNUV400 – 300 nm3.10 – 4.13 eVvisible to birds, insects and fish
Middle UltravioletMUV300 – 200 nm4.13 – 6.20 eV
Far UltravioletFUV200 – 122 nm6.20 – 10.16 eV
Hydrogen Lyman-alphaH Lyman-α122 – 121 nm10.16– 10.25 eV
Extreme UltravioletEUV121 – 10 nm10.25 – 124 eV
Vacuum UltravioletVUV200 – 10 nm6.20 – 124 eV

Using a TV remote to control an Arduino

I had bought a couple of pairs of these IR emitters/receivers and wondered if the wavelength of the light would be the same as for standard IR remote controllers for TV sets.

So instead of trying to hook up the emitters, I went straight for the TV remote. I had two available; one universal remote and one Panasonic DVD/TV remote.

The red one is the LTR301 (reciever) and the yellow one is the emitter. (LTR302).

Using IRremote.h, I was able to collect the raw IR codes from the remote control. This required me to remove the file Tone.cpp from the Arduino IDE's /cores folder. The reason for this was that IRremote.h library was implementing the same interrupt handlers. I am not using the tone generation functions in this library, so I just moved it outside the root folder and then IRremote.h would compile eventually :)

Having no use for the actual functions of the remote, I don't bother to translate them. I just made a lookup-table of what to do for each code, and drew out a sketch on paper what button produces what code. An obvious use of some buttons, like the 'center joystick-like pad', usually consisting of four identical left-right and up-down buttons for channel and volume, respectively, was ideal for forward-backward and turning control.

I hooked the IR sensor up with a 10k resistor, this gave me a detection range of about 50cm, straight angeled on the side of the sensor. Not very practical for a remote controlled device, but some modificationm of this could extend the range.

On the other hand, I do have the both the IO shield and the Mega ADK and a spare Android phone, so this could be controlled over BlueTooth or Wifi too. This could be a low level fail-safe input channel, in case the robot has to be shut down at a moments notice, regardless of the potential fickles of BT and WiFi reliability on an Arduino system.