Archive

Archive for the ‘Tech’ Category

Samsung Galaxy Europa

January 9th, 2012 2 comments

I recently bought a Samsung Galaxy Europa from 3, to replace my old Sony Ericsson W595 which had become increasingly unreliable following a freak rollercoaster accident back in September.

The Europa, AKA the  GT-I 5500 is an alleged smartphone, running Android 2.2. It cost me 50 quid, plus 15 quid pre-loaded  on a SIM card. Not too bad, unless you want to keep your old number, in which case you end up with a spare SIM with 15 quid on it, which expires within one month.

One of the reasons, besides the obvious need of a phone replacement,  that I bought the thing was my desire to replace my current “smartphone” combination of an old 3rd generation iPod and MiFi dongle thing. Carrying the pair of them around was a pain, considering the battery life of each, so I was looking for something about the same size that wouldn’t entail a pocket full of cables and mains adapters.

As you can see, the Europa is smaller than the iPod, with a considerably smaller screen, so consequently the on-screen keyboard is far too small and fiddly for a normal sized human to use, let alone a giant ham-fisted oaf like me.

The Europa has a 2 mega-pixel camera, which is crap. Any more information about it would be superfluous.

The processor is woefully underpowered, and apps keep crashing. A particular problem is the WiFi system failing to work and the settings page just reporting “Error!”. Useful.

If by some arcane magic the Wifi system does work and the Europa is used as a mobile hotspot, the data rate is deplorable:

Note that I was is Stafford at the time, which is considerably more than 50 miles from Morecambe. Hence I could not see the Chinese Synchonized Swimming Team practicing.

Also, using the phone as a hotspot causes you to fall foul of Three’s piss-awful censorship. Most URL shorteners seem to be blocked.

So it looks like I’ll be keeping the MiFi for a while yet. And, considering how ropey the phone is, (despite my hatred of Apple) the iPod too.

Share
Categories: Computers, Mobile Internet, Phones, Reviews, Tech Tags:

High Tech Rizla Game

January 9th, 2012 2 comments

An old mate of mine has released his first iPhone app, a sort of modern take on the Rizla Game, a popular game for potheads.

You know the game, I’m sure. Someone writes the name of some famous celebrity/character/serial killer on a Rizla and sticks it to your forehead. You then have to work out who “you” are by asking questions that have yes/no answers. Sort of like Akinator, but for people who have friends.

Pete’s version has the name come up on the iPhone screen, along with a timer. As iPhones and iPods generally don’t come pre-gummed, unlike Rizlas, you’ll need to affix it to your face somehow. Blu-Tack works fine for at least the minute and a half that you need, unless you have super slimy skin in which case you’ll probably need Gaffer Tape.

Either way, you’ll look a bit of a knob…

So, if you want to look like a dickhead, here is the link to the App: http://itunes.apple.com/gb/app/hoozat/id492001248?mt=8

Share

The Arduino Dalek Master Plan

January 2nd, 2012 No comments

All has been quiet on the Arduino Dalek front for a while now, as I’ve stopped all work on it pending the release of the Raspberry Pi credit card sized sub-£20 computer

For those not in the know, the Raspberry Pi will be an ARM11 700Mhz based computer running Debian Linux and capable of operating from 4 AA batteries. The “Model B” will have 2 USB ports and on-board ethernet.

There will be plenty of space inside the Dalek to accommodate one of these, along with the extra battery packs required.

So, assuming that they start shipping these things soon, the Master Plan (oh just guess where the title of this post is derived from) is:

  • Strip down the existing code for the Arduino version so that it just accepts commands to drive the motors and read the sensor data (pretty much like version 0.1 did).
  • Work up a protocol for the Raspberry and Arduino to communicate with. Then implement it.
  • Fit the Dalek with all the connectors for the Raspberry (RCA, HDMI, Ethernet, USB via an unpowered hub, Audio jack and micro-USB power)
  • Recode the current “free-roaming” software to run on the Raspberry.
  • Source a suitable USB WiFi dongle and camera to install.
  • Jig up a web based “Control Panel” for the beastie.

The above list includes “USB via an unpowered hub”, as I currently envision needing more than 2 USB ports:

  • USB connection to the Arduino (direct)
  • USB WiFi dongle (via hub)
  • USB Keyboard  (via hub on case exterior)
  • USB Mouse (via hub on case exterior)
  • USB Memory stick/Disk interface (via hub on case exterior)

Now why, you may be thinking, would I be needing the keyboard, mouse and storage (and video outputs)?

Well, the objectives are now two-fold. Primarily I still want to build the original free-roaming robot idea, but I also want it to double as a cool set-top box to connect to our stupidly large television which has been gathering dust since the Digital Switchover (our TV aerial is really shite and Freeview is UNWATCHABLE).

I could do that using a second Raspberry as a dedicated set-top box, but that would not be as cool.

Imagine: The Dalek is connected to the TV, playing a copy of an old Doctor Who episode featuring Daleks. The on-board camera is pointing at the TV, relaying the images to a web server. So a Dalek is watching a Dalek on a Dalek (not in that way). Open up another window and the Dalek is also watching itself. Thats the kind of thing that Christopher H. Bidmead could only dream about.

I’ll be buying a second one anyway, to it inside one of these keyboards.

But as I said, it is all on hold until the Raspberry Pi ships (and I remember how to program in C again).

Then maybe I can actually make use of the contrived acronyms DAVROS (Dalek Automatic Roving Vehicle Operating System), and SKARO (Stupid Kludged Arduino Remote Operation).

 

Share

Dalek Invasion Of The Kitchen

December 15th, 2010 No comments

I decided to Blu-Tac my mobile phone to the front of the Arduino Dalek and let it wander around the kitchen.

At one point it does get confused and tries to run under a cupboard, but that is only because it tries to detect things which are about an inch above the floor,  and there is a big gap under that cupboard.

Enough waffle, here is the video:

Share
Categories: Arduino, Computers, Dalek, Robots, Tech, Toys, Video, Youtube Tags:

Vision of the Arduino Dalek

November 4th, 2010 No comments

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.

Here is one

So, 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.

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

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.

Share