Vision of the Arduino Dalek

Ok, so that post title isn’t based on a Doctor Who episode title. Sue me.

Recently I’ve bought two Sharp GP2Y0A21YK Infrared Proximity Sensors from RoboSavvy. These little things can detect object in a range of 10cm to 80cm.

irsensorSo, the task now is to wire them up, and use them to detect when the Dalek get within 20 cm of an obstacle.

The circuitry is fairly easy. The Red wire goes to the 5v connection, the Black goes to GND, and the yellow wire goes to one of the Analogue inputs on the Arduno. I’m using pins A2 and A3, one for each sensor.

My soldering is, as ever, attrocious, so we’ll not have a picture of of that. Instead, here is a picture of the sensors Blu-Taked on to the front of the thing.

irmounted

And, as a bonus, a picture of the button that I’ve also fitted (and wired to Digital Pin 8).

dalekbutton

So, what we are going to do now is have the Dalek spin left if detects an obstable to the right, and spin right if it sees something to the left.

Also, if the button on the back is pressed, it will sleep for five seconds.

Portions of this code come from Lucky Larry’s website.

// Project: Dalek control system
// Version 0.3 - IR Sernsors
// Tony Blews tony@tonyblews.co.uk

int ButtonPin       = 8;
int MotorDirectionR = 10;
int MotorDirectionL = 11;
int MotorPowerR     = 12;
int MotorPowerL     = 13;
int IRPinLeft       = 2;
int IRPinRight      = 3;

void setup()
{
 pinMode(MotorDirectionR, OUTPUT);
 pinMode(MotorDirectionL, OUTPUT);
 pinMode(MotorPowerR, OUTPUT);
 pinMode(MotorPowerL, OUTPUT);
 pinMode(ButtonPin, INPUT);    // declare pushbutton as input

 Serial.begin(9600);
 Serial.println("Serial control Dalek system starting...");

}

float check_distance(int IRpin) {
 float volts = analogRead(IRpin)*0.0048828125;   // value from sensor * (5/1024) - if running 3.3.volts then change 5 to 3.3
 float distance = 30*pow(volts, -1.10);          // worked out from graph 65 = theretical distance / (1/Volts)S - luckylarry.co.uk
 return(distance);                               // http://luckylarry.co.uk/arduino-projects/arduino-using-a-sharp-ir-sensor-for-distance-calculation/     
}

// modes for the motor control
// convention here is modeXX - where X is F for forward, S for stationary and B for backwards
// first X is the left motor, second X is the right one
// for direction control, the LOW if forward and HIGH is backward
// for power control, LOW is off and HIGH is on

// all stop
void modeSS()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,LOW);
 digitalWrite(MotorPowerL,LOW);
}

// move straight ahead
void modeFF()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

// move straight backwards
void modeBB()
{
 digitalWrite(MotorDirectionR, HIGH);
 digitalWrite(MotorDirectionL, HIGH);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

// spin left
void modeBF()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, HIGH);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

//spin right
void modeFB()
{
 digitalWrite(MotorDirectionR, HIGH);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

//main program loop
void loop()
{
 if (digitalRead(ButtonPin) == HIGH)
 {
 modeSS();
 delay(5000); // sleep for 5 seconds if button pressed.
 }
 modeFF();
 if ((check_distance(IRPinLeft) <20) && (check_distance(IRPinLeft) <20) )
 {
 //back up a bit
 modeBB();
 delay(1000);
 //rotate on spot for 2 sec (approx timing for 180 degrees)
 modeFB();
 delay(2000);
 }

 if (check_distance(IRPinLeft) <20)
 {
 // rotate on spot for 1 second (approx timing for 90 degrees)
 modeFB();
 delay(1000);
 }
 if (check_distance(IRPinRight) <20)
 {
 // rotate on spot for 1 second (approx timing for 90 degrees)
 modeBF();
 delay(1000);
 }
}

Video coming soon, I promise.

Power of the Arduino Dalek

It has been a while since I’ve messed with the Dalek project, so this is just a brief update of the minor twiddling I’ve done.

Firstly, the Dalek now has a USB Type B socket on the rear of the casing replacing one of the “Dalek Bumps”, as shown:

dalekusbAcquired from Maplin (part no N57FL), this USB Panel Mount Socket is reversible, with a Type A socket on one side, and a Type B on the other.

As a PC generally has a Type A socket, and the Arduino I’m using has a Type B socket, I opted to have the Type B on the outside.

This will allow the use of a normal A-B cable to connect between the PC and the case socket, and require a short A-B cable to connect between the case socket and the Arduino (as having a 3m cable curled round inside the thing seems a bit stupid).

Sadly, getting a short USB A-B cable isn’t easy. So I had to chop up an existing cable and butcher it.

usb-cable1

usb-cable2

Now, the Arduino can be left inside the Dalek case, which can be screwed shut again.

However, when the Arduino isn’t connected via the USB link, it loses power (tenuous link to the title of the post). Luckily, the Arduino Duemilanove that I’m using has a 2.1mm socket, and will run from a 9v battery.

So we need a PP3 9V battery clip, and a 2.1mm DC power plug.

powerparts

Solder the battery clip’s black wire to the outside connection of the plug, and solder the battery clip’s red wire to the centre connection of the plug.

For clearer instructions, and clearer pictures (I have a crap camera), see the relevant page at Arduino Playground.

powerlead

The yellow tape is not being used to hide a massive solder disaster this time, but merely to keep the wires together.

So, now I have a Dalek with a battery pack for the motors (from the original casing), a battery pack for the Arduino (ok, a PP3 taped inside), and a USB socket on the casing.

Now it can be programmed, unplugged, and be left to trundle into things.

So here is some code to make it wait for five seconds, spin right for one second, wait for two seconds, spin left for one second, and repeat for ever (or until the power is removed):

// Project: Dalek control system
// Version 0.2 - Sit and spin
// Tony Blews tony@tonyblews.co.uk

int MotorDirectionR = 10;
int MotorDirectionL = 11;
int MotorPowerR     = 12;
int MotorPowerL     = 13;
long randNumber;

void setup()
{
 pinMode(MotorDirectionR, OUTPUT);
 pinMode(MotorDirectionL, OUTPUT);
 pinMode(MotorPowerR, OUTPUT);
 pinMode(MotorPowerL, OUTPUT);
   randomSeed(analogRead(0));

}

// modes for the motor control
// convention here is modeXX - where X is F for forward, 
//S for stationary and B for backwards
// first X is the left motor, second X is the right one
// for direction control, the LOW if forward and HIGH is backward
// for power control, LOW is off and HIGH is on

// all stop
void modeSS()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,LOW);
 digitalWrite(MotorPowerL,LOW);
}

// spin left
void modeBF()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, HIGH);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

//spin right
void modeFB()
{
 digitalWrite(MotorDirectionR, HIGH);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

//main program loop
void loop()
{
delay (5000);
modeFB ();
delay (1000);
modeSS ();
delay(2000);
modeBF();
delay(1000);
modeSS();
}

The next step will be to install some sensors.

 

USB Panel Mount Socket

Return of the Ubisurfer

ubirev2-1

Back in January I bought a Datawind Ubisurfer, a small netbook running Linux. You can read my first impressions of it here.

It wasn’t too bad for the price, and I used it a lot at work and whenever I was stuck on a train.

Back in May, I attempted to upgrade the software on it and it went all wrong. The internal GPRS modem refused to be recognised, the MP3 player packed it, and it stopped recognising USB memory sticks.

After a few email exchanges and a bit of confusion (two tech support people with the same name!), I finally got around to sending it back to them at the end of July.

It’s back, and this time it’s WinCE!

Firstly, some hardware specs (again):

  • Display: 7 inch TFT – Wide screen display, 800 x 480 pixels (WVGA)
  • Memory: 128MB Ram; 1GB Flash
  • Networking: Embedded Cellular Modem,Wireless LAN WiFi IEEE 802.11 b/g, 10BaseT Ethernet Interface
  • Control: Touch Mouse Pad – Dual Button, Standard 80 Key Keyboard
  • Battery & Power: Lithium Polymer (Approximate Working Time: 3 hours), or External DC Adapter
  • Size/Weight: 222 x 165 x 29.5 m, 700 grams
  • Ports: Push-Push SD card socket, USB Port, Earphone & Ethernet jacks.

As for software, the thing is now running Windows Embedded CE 6.0 Core, which means that it goes from Off to Usable in about 7 seconds.

Softmaker Office 2008 comes pre-installed, which includes the usual suspects of a spreadsheet, wordprocessor, presentation maker and Outlook-a-like mail client.

Browsing is done with either the UbiSurfer browser, which works through the embedded cellular modem, and a somewhat restricted version of Internet Explorer 6.

ubirev2-2.

The UbiSurfer browser uses a proprietory protocol to have your pages rendered on one of Datawind’s servers and then sent ina compressed form to your machine. While this was painfully bad on the Linux version, it actuall seems to work fairly well this time. Once you’ve got the think connected, which takes about 30 seconds, and loaded the home page (above), it is reasonable speedy for a cell-phone connection. While taking longer than the 7 seconds quoted in the bumph, mine loads the BBC News page in a about 10 seconds. Sometimes it can be annoying and take a while to tab between fields, but generally it works.

Using a WiFi connection and Internet Explorer gives you pretty much what you expect, but ActiveX and Flash cause problems, making Facebook and Google Mail annoying. And it constantly asks if you really want to visit pages with outdated certificates. Pretty much par for the course with IE6.

With WiFi you can apparently also use the Chat program which I really can’t be bothered to test, and a YouTube viewer which I haven’t managed to get working yet.

There’s also a PDF viewer, general media player and ebook reader on there. They work fairly well, but the PDF reader is very slow.

Games wise you get Allure Xonix, one of those draw boxes and capture an area while avoiding bouncy things games, Tile Fall, one of those click on blocks to destroy them in the right order games, and Paint, one of those not real a game but lumped in with them games. A better menu title might have been Entertainment, but probably not.

Finally, there is a thing called Terminal, which seems to be neither use nor ornament. It seems to be written to access the on-board modem, but doesn’t seem to work. Neither does it support Telnet, which is a bit of a pain in the arse.

All in all, and it pains me to say this, the Windows CE version is miles better that the older Linux version. It’s actually usable for a start. Apart from the lack of a telnet client, obviously.

UPDATE:

The telnet problem is now solved, by installing PocketPuTTY.

Download “PocketPuTTY 2007-02-28 dev build for PPC2002 (release)” from the PocketPuTTY Downloads page, and copy the putty.exe file from the archive to your device. Either dump it on the desktop or put it somewhere else and create a shortcut to it.

Genesis of the Arduino Dalek

As previously mentioned here, I was recently given a broken toy Dalek, which I promptly took apart (in the name of Science).

Here it is before surgery commenced…

dalek-1

Having stripped the thing down, I found inside two perfectly good electric motors, and when you find two working motors inside a toy there is only one thing to do: Work out how to use a computer to control them!

So, figuring out that the easiest way of doing this was with an Arduino, I bought one.

I won’t bleat on about how good the Arduino is, or how easy it is to use. There are hundreds of sites that do that.

Instead, here is a list of things wot i dun to get a PC controlling the Dalek.

To start with, I think we’ll have a bit of circuit design. Below is a simple circuit that takes 2 inputs from the Arduino and runs a motor either forwards or backwards. One input decides the direction of the motor, the other whether it is on or off.

relay-circuit

All very nice and abstract, but to be of any use it’ll need to be built. The quickest and easiest way is on Veroboard. So here is the design for that:

relay-vero

The relays do the switching, and the diodes are there to protect the Arduino from back-emf currents when the relays toggle. Two of these circuits will be used, one for each motor. I built them on separate strips of board to make things easier for myself. This is what they look like when all connected up and dumped onto the Dalek chassis:

dalek-wired1

The small board in the top left of the picture is just a plug I bodged up to make connecting the thing easier.

The parts used are 4x 1A5VDC DPDT relays, 4x 1N4004 diodes, a 10×39 strip of Veroboard and some wires.

After all that soldering and burning my fingers, the next step is to write some code to make the thing move.

Each motor can be controlled to go backwards, forwards or stop. This gives nine possible movements, as this table shows:

dalek-matrix

And now its time to test this whole think by writing a program that takes keyboard commands (the letters in red, above) and sending signals to the circuitry to control the motors. Heres it is:

// Project: Dalek control system
// Version 0.1 - Written before my Arduino even arrived
// Tony Blews tony@tonyblews.co.uk

int MotorDirectionR = 10;
int MotorDirectionL = 11;
int MotorPowerR     = 12;
int MotorPowerL     = 13;

void setup()
{
 pinMode(MotorDirectionR, OUTPUT);
 pinMode(MotorDirectionL, OUTPUT);
 pinMode(MotorPowerR, OUTPUT);
 pinMode(MotorPowerL, OUTPUT);

 Serial.begin(9600);
 Serial.println("Serial control Dalek system starting...");

}

// modes for the motor control
// convention here is modeXX - where X is F for forward, S for stationary and B for backwards
// first X is the left motor, second X is the right one
// for direction control, the LOW if forward and HIGH is backward
// for power control, LOW is off and HIGH is on

// all stop
void modeSS()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,LOW);
 digitalWrite(MotorPowerL,LOW);
}

// move straight ahead
void modeFF()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

// move straight backwards
void modeBB()
{
 digitalWrite(MotorDirectionR, HIGH);
 digitalWrite(MotorDirectionL, HIGH);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

// spin left
void modeBF()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, HIGH);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

//spin right
void modeFB()
{
 digitalWrite(MotorDirectionR, HIGH);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,HIGH);
}

// move forward left
void modeSF()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,LOW);
}

// move forward right
void modeFS()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,LOW);
 digitalWrite(MotorPowerL,HIGH);
}

// move backward left
void modeSB()
{
 digitalWrite(MotorDirectionR, HIGH);
 digitalWrite(MotorDirectionL, LOW);
 digitalWrite(MotorPowerR,HIGH);
 digitalWrite(MotorPowerL,LOW);
}

// move backward right
void modeBS()
{
 digitalWrite(MotorDirectionR, LOW);
 digitalWrite(MotorDirectionL, HIGH);
 digitalWrite(MotorPowerR,LOW);
 digitalWrite(MotorPowerL,HIGH);
}

//main program loop
void loop()
{
 if (Serial.available() >0)
 {
 char inByte = Serial.read();
 // this version uses the QWEASDZXC "square" on the keyboard
 // as my laptop doesn't have a numeric keypad
 switch (inByte)
 {
 case 'q':
 modeSF();
 break;
 case 'w':
 modeFF();
 break;
 case 'e':
 modeFS();
 break;
 case 'a':
 modeBF();
 break;
 case 's':
 modeSS();
 break;
 case 'd':
 modeFB();
 break;
 case 'z':
 modeBS();
 break;
 case 'x':
 modeBB();
 break;
 case 'c':
 modeSB();
 break;
 default:
 modeSS();
 break;
 }
 }
}

And with that done, I suppose all that is left to do is show a video of the bottom bit of the dalek trundling around under computer control…

… which have to wait until the next post.

Huawei E5830 Mifi Device

Another month brings another Gadget purchase. This time its the Huawei E5830 Mifi thingummy, a combined 3g mobile broadband modem and portable wifi hotspot. Once again it is on the 3 network.

mifisizeThe reasons for buy it are twofold. Firstly the internal GPRS modem in my Ubisurfer has gone down, rendering it useless without another means of connectivity (at least until Datawind’s tech support sort me out a replacement or fix); and secondly, my trust Huawei E220 USB broadband modem is being pressed into service as a permanet net connection for my Linux box running a game server (until Virgin can final get around to installing proper broadband for me).

That’s enough of me justifying the purchase, let’s have a look at the thing.

mifiOoh, shiny. So, pop in the sim card and battery, plug it in to the charger and wait for twelve hours. Thumb the power button for two seconds and on come the five lights.

Ah, you’re thinking, there are four lights! Well, the fifth light (in the middle, not shown) only comes on when you first power up the device or if you feel an irresistable pull to a a foreign land (roaming).

If you’re really insteresting in what the four status lights mean, I’m sure you can find out elsewhere.

Thumb the wifi button for two seconds, then the Saturn button (only my name for it, as it has a little picture of a ringed planet on it) for two seconds and if all is well you’ll be able to connect to the internet through the thing.

Assuming all it well, that is. Sometimes it isn’t. Even though i’m a bit of a 3 fanboy (nine phones and two modems over the years), I still have issues with them. Firstly 3 is a crap name for a company, Whampoa would have sounded cooler; and secondly the coverage where I currently live is ropey at times.

3gcoverageThe darker shade represents indoor/outdoor coverage, whilst the lighter shade shows outdoor coverage only. The pointer shows where I live. Not shown is a 3g modem gaffa taped to my window in order to get a good signal.

Besides the device itself, the box contains a short USB lead and a charger. The charger is, obviously, for charging the thing, and the USB cable is for three things.

  1. using it as a storage device if a microSD card (not supplied) is inserted into it
  2. using it as a USB modem
  3. using the configuration program.

The configuation program (which installs straight from the device itself – nice) allows you to do all the usual wifi router based things: DHCP config, port forwarding, changing the SSID to something rude, changing the password to something you’ll actually remember.

Connecting to the thing is easy with any most wifi devices. So far I’ve managed to get two laptops (WinXP and Linux), the Ubisurfer and a borrowed iPod Touch running concurrently. I know the iPhone works ok (slightly faster that the phone’s built in 3g modem), and I’m sure the iPad will work. (Does anyone want to lend me one to test?)

Sadly, I could not get a laptop running Hexxeh’s Flow build of Chromium OS. But I put this down to Flow failing to recognised the Dell’s WiFi hardware.

Its a great little device. Go and buy one now. £49 from Three on their PAYG plan.

So, all that remains for me to do now are the customary speed test, using www.speedtest.net, as ever.

Firstly using the old E220 USB Modem:

E220 USB Results

And now using the E5830 Mifi:

E3850 Mifi Results

I clearly have a winner here, but your mileage may vary.

Finally, here are the frankly deplorable results taken recently from my sister’s Orange Home Broadband link recently:

Orange are shite

Dalek Autopsy

Daleks are great. I’ve wanted one for years. The idea of having a Dalek to order about appeals to me. I could have it make tea for me and then exterminate my enemies/co-workers.

Daleks instill fear in the weak and feeble. For example:

giant-dalekMy sister recently acquired a defunct radio control Dalek on a car boot sale and figured that I might be able to find something to do with it.

But first we need to see exactly what we’re dealing with.

autopsy1What we appear to have is a Doctor Who – 12″ Radio Control Black Dalek, missing its eyestalk and the relevant control unit.

Someone once said that once you break something to see how it works, you have left the path of wisdom. It might have been Merlin, or possibly Mr. Miyagi. In this case, the damn thing is broken and i left the path of wisdom years ago anyway.

So, off with the bottom!

autopsy2Here we see three things:

  • the base unit – which contains the RC receiver, speaker, battery unit and motors
  • the superstructure – which is what makes it look like a Dalek
  • some turkey mince – which would have been my supper, but was so far out of date that it was in danger of crawling away by itself.

Stripping off the burnt out RC receiver (and letting the mince run free) gives us a closer look at the base unit:

autopsy3An even closer look shows us the nubbin that connects to the drive shaft that rotates the head unit:

autopsy4Peering up the skirt of the Dalek shows us where the shaft connects to the nubbin, along with some wires that connect to the circuitry in the head:

autopsy5Just concentrating on the bottom we have:

  • a base unit with working motors that run off 6v
  • some duff circuitry which will be ignored
  • a piezo speaker which might come in handy later
  • nothing for my supper
  • a blog post which, having re-read the text, will probably rank quite highly in the results of porn searches.

Crewe, Gateway to Hell

According to figures published by the Strategic Rail Authority for the financial year 2002/3, 773969 people began their rail journeys from Crewe Railway Station, yet only 763846 people ended journeys there. This represents a net de-population of 10123 people in one year alone, by train alone. This is as close to 10000 people as makes no odds to me.

In the April 2001 census, Crewe had a recorded population of 67683 people. If we’re being generous we can round this up to a guestimate of 70000 people by April 2003.

Given these figures we see that within seven years of April 2003, in other words April 2010, Crewe will become a desolate no-mans-land inhabited only by temporary, transient people on their way to elsewhere.

I was there today. Its happened already.

If this is Voyaging, I’d rather stay put

Already this year I’ve travelled more rail miles that in the preceeding ten years. Two Stafford/Preston return trips has reminded me why I avoid the railways like the plague: The Virgin Voyager.

441200731_907ea18696_mSome people might say that they represent a giant leap forward in train technology. These people are probably short, have no sense of smell and enjoy rollercoasters. And are probably clinically insane.

Myself, I’m of above average height, can still smell despite a good few years chain-smoking and hate all fairground rides. I’ll neatly sidestep the sanity issue (I’m typing this on a Datawind Ubisurfer – I must have been bananas to buy it).

My first major moan about the Voyager concerns the piss-awful seats and lack of legroom. Now when I say that I am of above average height I mean that I am about six foot four. This doesn’t put me into the realm of basketball players or circus freaks, but it does stop me sitting in most of the seats on a Voyager. Table seats are fine, if you want to share a table with a drunken Scottish squaddie (are they all AWOL and hiding on the trains, or is it always the same one?), and the priority wheelchair users’ seating has sufficient room, but the majority of the seating would require me to undergo a leg-ectomy for me to use them. I suppose I could sit sideways across two seats, but that is uncouth, yobbish behaviour for the sort of folk who play their music loud in public.

When Charles Darwin designed the human olfactory organs he must have had quite a chuckle to himself when he put in the bits that enable you to smell the unique aroma of a Virgin Voyager. Is a whiff of flatulence combined with a hint of smoke? A solid leavening of used toilet with a dash of electrical burning? Or is it,as I suspect, a full blown massive turd secreted directly on to an electric heater full of cat hair? The reason for this is apparently that the toilet effluent tanks vent into the bodywork, and that the wiring is prone to going shonky. Not even the APT had these features!

103180317_c75db8702d_mBut these are just minor nit-picking flaws, I can almost hear you say. Surely the superior ride quality makes up for them? Well, yes, of course, assuming your idea of a nice journey involves lurching from side to side, up and down, and occassionally backwards and forwards. During the course of typing this, my netbook as been dislodged from the little wanky tray-table no less than three times. I’d have a smoother ride in a Land Rover. Across a bomb site. Under shelling.

2502984106_8cb81fd88e_mAnd let us not forget, the government spent millions between 1959 and 1974 to electrify the West Coast Main Line, and now Captain Beardy is pissing all over this by running diesel trains on it. Money well spent! Its like buying the entire run of Star Trek Voyager on DVD, and copying them on to ropey old VHS tapes, then scrubbing the tapes with magnets before watching them.

 

Datawind UbiSurfer first impressions

I’m trying to get to grips with my impulse purchase of the week. For reasons best left unexplored I’ve parted with about 120 quid for a Datawind UbiSurfer from Maplin. Its a ex-display model, hence the slight price reduction over the RRP of £149.99.

DSC00027

So, what is the UbiSurfer? In short, its a cheap netbook running an implementation of Linux. Oh, with a years free internet access thrown in.

More about that later, but first the specs:

  • 7 inch 800×400 TFT screen
  • 128MB RAM, 1GB Solid State disk
  • Full QWERTY keyboard and Touchpad mouse
  • Push-Push SD card socket and 2 USB ports (the box says 3, but I have 2 and a connector I’ve never seen before)
  • Measures 222x165x29.5mm, weighs 700g
  • Battery life provides 4 hours active use and 4 hours

Note the lack of a spec concerning the processor. Apparently it is some form of ARM 500Mhz job.

DSC00028

Applications wise you get the usual word processing and spreadsheet offerings, and a collections of email clients, PDF readers and the like, all GPLed programs.

For web browsing you have Mozilla IceWeasel (Firefox), which only works when connected via a Wifi hotspot, and the UbiSurfer browser itself.
And now we get to the main (only) reason that I bought this thing: free internet access. Included in the price of the device is 30 hours access per month (for a year) to Vodaphone’s GPRS network, via an onboard modem. As we all know, GPRS isn’t exactly lightening fast, but Datawind claim that any web page can be loaded in 7 seconds.

This is supposed to be achieved by Datawind pre-rendering the web pages on their servers (in Canada) and sending them on in a compressed form to the UbiSurfer browser, which then decodes and displays them.
Ok, that sounds fine in theory, but in practice its not so good.
Datawind’s own site (www.datawind.com) takes about fifteen seconds to load, and more complex site such a Google Mail can take up to a minute to fully render.
This pre-rendering process also throws up problems when entering data onto a web page. Tabbing between fields can take up to ten seconds.
Obviously these problems don’t occur when using IceWeasel and connecting via a Wifi hotspot.

DSC00026

But, oddly, my biggest complaint about the UbiSurfer browser is about the hideous splash screen which also comes up when you disconnect, thus preventing you from viewing pages offline. Here it is in all its glory.

splashJust look at the smug pissweasel. Those grass stains are going to raise questions in the office after lunch. Luckily you can overwrite the this image with something less irritating.

I shall continue to persevere with this thing, in the hope that I can find a use for it.

moan, moan, flippin' moan