When you are building independent device connected to internet you should consider to connect over GSM when there is no Wi-Fi. I did the same and choosed SIM900 module but unfortunatelly bought SIM900A.

They wrote it is working in 900 / 1800 MHz networks (compared to 850 / 900 / 1800 / 1900 MHz for SIM900) which is what we use here in Europe. What I missed was information that it is locked to these regions: China, India, Singapore, Malaysia, Thailand, Indonesia, Cambodia, Vietnam, Laos, Burma, Brunei, Philippines and East Timor. Thanks to Per Jensen's blog post about that.

I thought I have a brick but fortunatelly there were rummors about flashing SIM900 firmware to remove country lock.

SIM900A module

Communicating with SIM900A Mini module

This module provide two ways how to communicate: RS232 and TTL level pins. I got in package also TTL to USB level convertor with CP2102 chipset.

CP2102 TTL to USB convertor

RS232

RS232 interface is placed under SIM Card slot and it's pins are named by pins to connect to in DB-9 connector:

  • DB9-2 to 2nd pin
  • DB9-3 to 3rd pin
  • GND to 5th pin
RS232

I started with this connector because it was clearly described how to connect to this port and I had also Serial - USB cable. Problem was that flashing software wasn't able to flash firmware. I am suspitious that it was because MAX232 convertor.

TTL

I wasn't sure how to connect delivered convertor to the board because seller description was ambiguous because he provided this table

MCUSIM900A MOULE
TXD5VR
RXD5VT
DCVCC_MCU
GNDGND
POWER(4.6-5.2v)VCC5

and description:

Use the TTL interface connect with a MCU

MCU -> SIM900A MOULE TXD -> 5VR
RXD -> 5VT
GND GND

Notice that:

  1. The pin of VCC_MCU is used for compatible the TTL interface. When the high level of the MCU is 5v like the 51 MCU, we should connect the DC5V to VCC_MCU, when controller is 3.3V like the stm32 MCU, the VCC_MCU should connect the DC3.3V.
  2. The 3VR 3VT pins are reserved for future.

Problem was that the board has pins described below and connection as mentioned above didn't work.

3VR3VT
5VR5VT
GNDVCC_MCU

So what to connect where? On one page I found some info about flahsing but what was more important also a image how to connect the TTL convertor.

How to connect TTL convertor

My setup was:

ConvertorSIM900A
TX3VR
RX3VT
GNDGND

Finaly I was able to connect to it:


>AT
OK

Important is to use as first command capital letters because they are used by module to determine a communication speed.

Firmware flashing

We need two pieces, firmware and flasher. You can download flasher from page Geekonfire.com, see step 1.

You need also firmware. There is page of Dost Shah where he collects all available firmwares.

How to pick a right firmware? Fist run command


>at+cgmr
Revision:1137B01SIM900A64_ST_MMS
OK

to know which firmware you have in. Most important is that there is SIM900A firmware and it's size is 64bit. If you have in only 32bit you are doomed because all SIM900 firmwares are 64bit.

Regarding page http://amichalec.net/2014/08/sim900a-fixed-for-europe/ you can follow these steps:

  1. Power up your SIM900A module to respond to AT commands in auto-baud mode (AT+IPR=0).
  2. Setup flashing tool — connect it to SIM900A, set default speed of 460800 baud, choose firmware to flash from unpacked RAR file, select “don’t check file name” check-box and press “start download” button to see “Power On/Reset Target” message.
  3. Short NRESET (pin 16) to GND for a moment. Right after it reboots flashing tool will start pushing data.
  4. When flashing ends with “Download complete” power off SIM900A module. Note that reset will not work, disconnect power line and start power-on sequence once again.

Step 3 means that you can put jump wire to RST hole and for a fraction of second to short it to GND. See instrctables.com but no soldering is needed.

After flashing and restart at+cgmr command can show you that there is SIM900 firmware loaded in.

Testing basic functionality

When you have everything prepared you can try to use online Java applet to test your modem.

If you don't want to run Java applet you can try to send SMS which is quite simple:


>AT+CMGF=1                   // sending in text format
at+cmgs="+xxxxxxxxx"         // phone number 
text of SMS
1A // CTRL+Z in HEX format

Done. I would like to warn you that these steps worked for me and your conditions could be different and you must find your own solution. I am not responsible for what you are doing and if you bricked or burned your device.