Showing posts with label hardware. Show all posts
Showing posts with label hardware. Show all posts


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.


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="">

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


Last post for a week or so, moving to new location!

So we are moving into a new apartment on Tuesday, so robot building and blogging will be suspended to sometime next week, when all has settled down. Here's some more pictures of the Rover 5 project and some pictures and links.

Update: 01-11-12: Some corrections

Resistor calculator (at
Michaels electronics lessons

I think I am going to attach this breadboard to this
Hoist/Metal Elements frame I came up with.

Setting up a frame for attaching various stuff.

Latest shipment from
2000x resistor package
200x capacitor package
10x diodes (not pictured)
20x F/F cables

So far, the main parts of the robot is:

  • 4-motor Rover 5 with encoders
  • Dagu 4 channel 2.5A controller (credits to Dev Donkey for good pictures of wiring and setup)
  • Arduino Mega ADK with TX to an Arduino Uno R3 (slave)
  • Samsung Galaxy S2 with CM9 (planning to get some pan/tilt kits to mount this as a HD camera as well using it for it's CPU power & WiFi/BT)
  • Dagu AREXX IR compound eye
  • Maxbotix LV EZ1 ultra sound sonar (good tutorial here) on a separate 5v circuit for minimum interference. I made a thread on the Sparkfun forum, lots of input there. Thanks guys!
  • Linear temperature sensor + 2 simple temp sensors
  • 16x2 LCD
  • 128x64 LCD on separate 9v course (draws quite a bit of power, trying to avoid dip)
  • Humidity sensor
  • Dew point sensor
  • 2x QRD1114 phototransistors (for rear proximity) (tutorial, same page as EZ1)
  • 2x IR RX/TX transmitters
  • 2x Dual channel 2A motor controllers
  • Pan/tilt arm
  • 2x mini breadboards, one of them mainly for buttons to control OS
  • DFRobot Protoboard

Most of it has been up and running at some point, I am working on the OS to control everything. Lots of code to organize.

I'm trying to build some form of exoskeleton around
fragile parts, like the LCD. It's not that easy, considering
the pan/tilt arm has quite a bit of turning range and
will easily crash into something if the controlling code
has bugs!

Here you can see the Dagu controller mounted beneath the servo too,
as well as IR compound eyes mounted in front.

Top view. Adding more rails and brackets to further extend


DFRobot Robot basis plates, Rover 5 mounting hacks

Adding stuff to your robot with 'nonstandard' parts.

'Builder Center - Metal Elements'

Updated 11-21-2012: Minor edits.

I've found that the Hoist sets (mentioned in earlier post) and  these ones are really useful for Arduino/DFrobot/Rover 5 units.

Some of the screws from these kits doesn't fit the basis plate, but all you have to do is to mount an angled bracket from the Hoist/BCME kits with standard DFrobot screws, and then build on the metal parts with the included Hoist/BCME screws. Just be sure that you have a bunch of standard DFRobot screw sets.

Just to give you an idea, an angled bracket (4-40) costs about a dollar at my retailer. This set includes 691 parts (not sure if it that includes the immense amount of screws and nuts as well) and costs about 35 bucks.  

But here are a huge load of beams, plates, brackets of different shapes and configurations. I was able to mount sensors, motors etc. with this kit. Go buy it, you wont regret! They have many different sets, this one with 691 parts are the biggest one they had.

I am not sure Meccano parts fit, they look like they do, but they also cost 4-6 times as much.

Click on images to enlarge!

- Professor Falken

That is a LOT of parts!

Trying out some parts on the back of the Rover

Dagu IR compound eye mounted using these kits.


Robots and Hoist kits ('Intelligent building toys series')

Robots and Hoist kits

 ('Intelligent Building Toys Series')

Updated 11-21-2012: Fixed some typos, some small edits.

This is their smallest kit (atleast in my store) and it costs around 10 bucks.
I bought this first, but I'm going to get their biggest set tomorrow. It has 650 piceces or so. The little one on the picture has 45 peces.

Losts of metal plates and brackets + some tools.
Some of the stuff does not 100% fit DFrobot stuff, but most do.
You will easily find a workaround if you encounter a problem.

Inckuded kit of screws, big and small. The big ones did not fit the
robot basis plate. Havent tried the Hoist screws with DFrobot
screws of standoffts yet, BUT Dfrobot screws and standoff fit with
all the metal parts!

Current revision of my Rover 5, nothing working still....
This revision is based on scavenged PC hardware still.
I will post new pictures as soon as the new mounting options are utilized.


Rover 5 with Dagu 4 motor controller

Controller does not fit rover holes and does not pass trough the
chassis standoffs on the Rover.

Good selection of standoffs, 4x of each type, plus screws and nuts.

Without card mounted

Card mounted under the servo

Encoder wires hooked up. Hope thats the right order!

Dagu Cur/Dir/PWM/GND pins trough an ABIT IDE cable rated 150V and 105 degrees.
Should hold!


Rover 5, mounting old PC parts as chassis

Some more Rover 5 updates! I dismounted some old PC gear and found some stuff I could incorporate.

2 servos mounted and working. (standard DFRobot Pan/Tilt Kit

Rewired the project for easier cable management and handling!

Added som more pushbuttons, which gives better flexibility
using menus

Currently using 4 buttons to operate the OS

Dismounted DVD drives and PC chassis parts are pretty useful now

Here mounted on the Rover 5

Back view


More Rover 5 building

Got some new parts today from Robonor: (ty for quick shipping!)

* 9V to barrel adapters
* Breadboard buttons
* 10 and 50mm standoffs
* Breadboard cables
* Breadboard

Now I can mount both my Uno and Mega with separate breadboards on the Rover 5, and power them both from 9V, as well as having the built-in separate battery pack for the Rover. With two breadboards, I can now add more buttons and sensors too :)

The previous version of my Rover OS used a potmeter for menu selection, so this will make it a lot easier.

Now I just need to wait for some supplies from Robosavvy in the UK....

1 x IR compound eye 
1 x Dagu - 4 Channel DC Motor Controller with Encoder Support 
2 x SparkFun - Optical Detector / Phototransistor - QRD1114

....which should be here in around 2 weeks or so :) Then the Rover will actually be able to run!

Mean while, I have a ton of literally screwing around to do to get the optimal design and layout.


More Rover 5 progress

As you can see, short stand-offs are too small to mount the servo in the hole.

This is as far down as possible with battery mounted

So while there are still nothing moving here, I'm working on a little OS to control the rover. It will be a breadboard button system:

Here the two buttons are essentially a
2-button keyboard for my Rover 5 OS
Menu selection using a potmeter!

OS screenshot
Clicking button 1 will activate temperature readouts to the LCD
Clicking button 2 works as a 'back' button

Pre-broken pushbutton from the Sparkfun Inventors Kit.
I still managed to get it working with some creative wiring :/

Here's the setup so far. It's basically half the SIK projects on the
same breadboard, all rolled into one 7K 'OS'
As you can see, that is all on an Uno, using all digital PWR but #7. So I just moved the project over to my new Android Mega ADK board, and it worked just the same. Both the Uno and the Mega will run the Rover eventually.


Setting up an Android development environment

Books to read

Apress, Beginning Android 4 (2012) - Comes with source code available here
Although it says it's for Android 4.0, the book uses 2.2 but also tells the reader how to adapt to frameworks you don't actually develop for. Very clear and informational, and had me writing code in just a few minutes.

Addison-Wesley, The Android Developers Cookbook (2011)
Has the same clear style as the above one, with simple XML snippets and the code to support just that. I don't like tech books that wants you to build a huge application, when all you needed was an explanation for how to use a certain GUI element on page 76.

Software to get

Decide if you want Eclipse SDK 3.8 or 4.2. The 4.x series will eventually be better, but 4.3 won't be out until June 2013. 4.2 has a new internal UI engine. Meanwhile, the 3.x series is more than sufficient and also very fast. I also  keep my OS on an SSD drive, and my development stuff on a RAID0 disk. That does help when you are dealing with large Java environments. 

Setting up the environment

Download Android SDK here. This is the toolkit needed to link Eclipse to you Android phone, or to start up an emulator. You can set most Androids up to push debug messages trough the USB. These messages will appear in the debug console in Eclipse. This is generally not needed during normal app development. If you look trough the log you will see hundreds of notices about battery state, memory and the likes.

From the SDK Manger, you can download the API's and tools you want to target for. Some of the API's for the more esoteric phones require that you have a login at their respective manufacturers development network. You can safely cancel the ones you cannot download.

In the AVD (Android Virtual Device) Manager, you set up virtual machines that emulate the platform you want to develop for.

You create the project in File->New->Other->Android Application Project.

Now, all you have to do is to make a Run-configuration for your Android project. 

If you got this far, you should pretty much be able to run a skeleton application on your own USB connected phone 

Hardware and specs

I use a Samsung Galaxy Xcover GTS5690 for development. That is pretty much an S2 stripped of a CPU core and has less memory and smaller screen (a 'medium' class screen in phone terms, 320x480 or 480x320 rotated). Some programs even identify it as an S2. This phone has 512MB RAM, single core Marvell ARMv7 @ 800Mhz and a Marvell GLES2.0 chip as well as some yet unknown hardware for video playback of some formats. I have a 8GB SDcard stuck in it as well. 

While not high end, a quick survey among friends suggest the 2.x series Androids will be around for a long time. Samsung is even still making BIOS updates to this phone as this were written, and a mid-end dev system could be a good exercise in resourse management. Many people out there has low-end older phones as well as mid-end ones.

Flexibility across devices

Android was written with the fact in mind that devices will be different, so it has built in flexibility to handle this. Some things can be done even better with minor effort from the developer, such as simply targeting for a higher level API will enable functionality for adapting to 4.x enhances features.

Targeting a 2.2 device would cover 93% of the market. It seems the 1.x series is pretty much obsolete. Also, the changes from the 2.x to the 3.x and 4.x series seems to be smaller compared to the leap that was from 1.x to 2.x. Not having developed on 1.x, I cannot say for sure, but telling from the literature, most of the features people were missing in 1.x got generously implemented in 2.x. 

Messing up is easy

It's really easy to mess up an Android project, so keep your CVS up and running.

Plans for dual controller Rover5

So this is how I plan to wire the 2x dual motor controllers. It might not work, still discussing this on No one has replied yet :/

I am using two of these with an Uno, which should be fine since I'm not going to do step counting.

DFRobot 4.8-46V, 2A Dual Motor Controller


Update on Rover 5 project

Got some new wires, a "Helping Hand" and a 2A motor controller today. Which means I have the parts I need to get the Rover running on all 4 motors according to who recommended these two. I am going to need to get a some standoffs and screws to mount the Arduino and the two motor controllers. Here's some pic for today:
Rover5 with top plate mounted. I have no idea if i did this the right
way, but atleast it sits there. I have no idea how one are supposed to
get a servo motor in that hole, the battery pack is impossible to get
far enough down.

2A motor controller already hooked with the needed wires
Pan&tilt kit
Helping Hand, Comes prebuilt, very... handy..

Sortiment of screws and standoffs


Robot hobbyist laboratory

Heres's some pics of my new lab. Had to make a fitting space to build the robot !

Laptop dedicated to Arduino, with appropiate tools.
Multimeter, soldering, and about anything else need  to tinker!

Assembling Rover 5

Rover5 inside view, 6xAA battery pack and steppers