My Experience with the Geeetech Arduino GSM/GPRS Shield

I'm documenting my experience in successfully bringing up the Geeetech Arduino GPRS Shield on the T-Mobile network in hopes that it will help others trying to do the same thing. At times, I will be referencing the Geeetech Wiki (http://www.geeetech.com/wiki/index.php/Arduino_GPRS_Shield).

NOTE: I have only confirmed the functions of making voice calls, receiving voice calls, and receiving text messages. These are the only functions I was interested in at the time.

The Components

1. SIMCOM SIM900 Quad-band GSM GPRS Shield Development Board for Arduino/Iduino (http://www.amazon.com/SIMCOM-SIM900-Quad-band-Development-Arduino/dp/B00A8DDYB6/)

2. SainSmart UNO R3 ATmega328P Development Board + USB Cable Compatible With Arduino UNO R3 Mega 2560 Nano Robot (http://www.amazon.com/gp/product/B00E5WJSHK/)

3. Standard size prepaid sim card from T-Mobile (http://prepaid-phones.t-mobile.com/sim-card)

4. Power supply (5 volt 2 amp). I took one from an old USB 1.1 hub that I no longer used.

5. CR1220 battery

The Software

1. Arduino IDE (version 1.0.5) for windows computer (see http://arduino.cc/en/Main/Software)

2. Serial Terminal (See Geeetech Wiki). I used sscom32.

The Assembly

1. Inserted battery into GPRS shield (positive side up).

2. Inserted sim card into GPRS shield.

3. Set Serial Port Select jumpers on GPRS shield for Software Serial (See Geeetech Wiki)

4. Set Power Select switch on GPRS shield for external power (see Geeetech Wiki)

5. Attached GPRS shield to Arduino board.

6. Attached USB cable from Arduino board to computer

7. Entered the Serial Relay sketch (see Geeetech Wiki) into the Arduino IDE

8. Uploaded the sketch into the Arduino board

9. Attached power supply to GPRS shield

10. Launched Serial Terminal program on computer

11. Pushed and held Power Key on GPRS shield for at least two seconds

The Operation

1. Unsolicited Result Codes (URCs) at start up

€ÿÿÿÿÿÿÿÿ

RDY

+CFUN: 1

+CPIN: READY

+PACSP: 1

Call Ready

2a. Network status (NetLight on GPRS shield blinking every 800 milliseconds)

AT+CREG?

+CREG: 0,0

OK

AT+COPS=?

+COPS: ,,(0,1,4),(0,2)

OK

AT+CSQ

+CSQ: 0,0

OK

2b. Why?

Obviously, no carrier was detected, but my house is near T-Mobile cell towers. However, a view of T-Mobile's 2G, 3G, and 4G cell coverage (courtesy of http://opensignal.com/network-coverage-maps/t-mobile-coverage-map.php) showed that the nearest tower providing 2G coverage was more than 3.5 miles away.

[How would you find that out? The coverage map provides the GPS coordinates of the cell towers, you can find your house's coordinates at http://www.satsig.net/maps/lat-long-finder.htm, and you can calculate the distance between them at http://www.nhc.noaa.gov/gccalc.shtml.]

3. Took my setup outside the house and tried again

4a. New network status (NetLight blinking every 3 seconds)

AT+COPS=?

+COPS: (2,"T-Mobile","T-Mobile","310260"),,(0,1,4),(0,1,2)

OK

AT+CSQ

+CSQ: 4,0

OK

4b. A signal strength of 4 out of 31 doesn't seem terribly good. However, I don't know what I should expect from a cell tower at a distance of 3.5+ miles.

5a. Activate the Sim card

I made multiple attempts to do this at T-Mobile's web site, but I always got stuck at a "we're working on it" message. However, I was able to do it successfully over their automated phone system. I believe the problem was that the web site was offering me (and I selected) an area code which T-Mobile didn't have available numbers for. When I tried to select that area code in the automated phone system, it notified me that there were no available numbers. When I picked a different area code, the activation worked.

SIDE NOTE: I chose T-Mobile's Pay-By-The-Day plan to test out the Sim card.

5b. The result

Received two text messages from T-Mobile. However, they were garbled.

6a. Changed the baud rate in the sketch from 19200 to 4800 on both the Serial line (between the Arduino and the computer) and the Softserial line (between the Arduino and the GPRS shield).

6b. The result

+CMGL: 1,"REC READ","456","","14/07/13,17:45:57-16"

Free T-Mobile Msg: Some phones may access the web without you knowing. To learn how to prevent unintended daily usage & charges, visit www.t-mobile.com/daypre

+CMGL: 2,"REC READ","1511","","14/07/13,17:45:51-16"

Welcome to T-Mobile! Dial #BAL# to check your balances. Your T-Mobile number is 1XXXYYYZZZZ

AT+CREG?

+CREG: 0,1

OK

NOTE: I didn't try other baud rates to see whether one higher than 4800 would work.

7. Receive a voice call with callerid, answer it, and hang up

AT+CLIP=1

OK

[Called the GPRS shield from another phone.]

RING

+CLIP: "1XXXYYYZZZZ",129,"",,"",0

RING

+CLIP: "1XXXYYYZZZZ",129,"",,"",0

ATA

OK

[Audio conversation taking place with decent voice quality.]

ATH

OK

8. Enter a number into the next available slot in the phone book and make a voice call to it

AT+CPBW=,"+14105004450",145,"NOAA Weather"

OK

AT+CPBR=3

+CPBR: 3,"+14105004450",145,"NOAA Weather"

OK

ATD>3;

OK

[Listening to recorded announcement with decent voice quality.]

ATH

OK

The Conclusion

The system performs admirably on voice calls considering how weak a signal it was working with. Possibly, a different antenna might produce better results.

For those who want to see the top and bottom views of my GPRS shield, see the subpages below. Warning: Very large images.