Old Sony Ericsson phone as GSM shield, clock, display, keyboard, BT, audio, more

There are at least three ways to send an SMS message using Sony Ericsson phone:

1.method – use AT+CMGS command (send message) like described here: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1290601471/all In this method it is often necessary to convert somehow text to PDU format (some very old phones have ordinary “text” mode). You can use online converter if you want to use limited amount of predetermined messages, but if you want to send for example data from a senor - write Arduino code to convert to PDU.

  1. method – use AT+CMSS command (send message form memory) like implemented here: http://www.riccibitti.com/tinyplanet/tiny_article.htm - very easy and simple way to send predetermined message, can take one line of code in Arduino like: Serial.println(“AT+CMSS=1”); // send message which is stored in memory under number 1. It doesn’t take any resources or specialized programming skills to send message this way.

  2. method – use ATEAPP command (sign””, not”+”). By this command you can avoid PDU conversion entirely and you can send any “normal” text from Arduino – it will pop up in the phone as ready to send SMS message (MMS, e-mail, or note) – and next use button press emulation to send it – it will be automatically converted by the phone to PDU and divided to many messages if the text is very long (if phone supports this).

There is a ATEAPP certain command to send a message to the predefined phone book entry – but this command doesn’t seem to work in reality, neither on K700i, nor on W810i, K510i (last two phones doesn’t work directly with Arduino’s serial) – so key press emulation is the solution to make it finally sent. This way it takes two lines of code like that: Serial.println(“ATEAPP=0,0,\”text message\””); // make appear ready-to-send message in the phone.
Serial.println(AT+CKPD=”\”:J:J^:J:J:J\”,2,2”); //this emulates joystick’s action (2 times joystick press, one up, and 3 times press again) of going to the first phonebook entry and send (can be different sequence on different phones).

Note: Before you use "^" or "[" keys for joystick emulation you have to change to different character set by using simple command AT+CSCS. Also there is a possibility that in the meantime the phone receives a message or do some other action – and in this case if you want to sent message this way you will not start from the main menu – therefore it is good idea to initiate this entire procedure by emulating long press “<-“ key – which will bring phone back to main menu form any possible submenu. This is only appropriate to the method when phone’s interface is used (like key press emulation)– any other AT command can be send anytime, no matter what the interface is doing.

Please refer to “SE Developers guidelines” on how specifically to use AT commands.

If you send AT commands by serial (Pin0 and Pin1) – Arduino must be disconnected from the computer cable – otherwise it will interfere. You can use NewSoftSerial library to emulate additional serial connection on any Arduino pins, but I have found, that when I use last versions of NewSoftSerial (v.1.0 and v.1.1) – I can read short responses from the phone – but if I need to read stored SMS message – I can only get 63 bytes - while the message in reality is much longer. There is no problem to read it if in place of NewSoftSerial I use native Serial. For now I don’t know what causes that – any idea?

There is one more interesting capability of SE mobile phones – Sony Ericsson has „Bluetooth remote control” application (ready available in late phones like k700) and application to download and run on computer – so the phone can control computer by Bluetooth. I haven’t try this but most probably it should also work with AT commands (key press emulation).

It would be nice if somebody could write library for Arduino to communicate with newer phones or Java application for microcontroller communication on any java-capable phone – many new phones have GPS and other interesting functions…