I’ve built a project using a SIM900 GSM/GPRS dev card. It works fine, but that dev card is too big to fit in the project case and kind of expensive (comparatively speaking).
I went looking for another solution and found the SIM800L:
Looking thru the manual, it supports all of the AT commands I implemented on the SIM900 in my project. It is also quad-band, so it should work in the U.S.
I found a SIM800L dev card on ebay for $10 so I bought a couple. The downside was it came from China and took a month to get here. Much slower than most of the stuff I have purchased from China in the past.
This schematic seems to match up with the particular SIM800L dev board I have:
The SIM800L Datasheet:
and the AT commands:
Getting It Running
The first thing I wanted to do was get the card connected to my PC so I could verify I could access it, then make sure that it works with my cellular carrier. To do this, I connected the SIM800L dev board to a standard 5V FTDI cable such as:
I am using a 5V FTDI cable. The dev board needs 5V and the tx/rx lines are 5V tolerant.
Connecting the cable to the devboard is very simple using male/female jumper cables:
and here is the final test setup:
If you’ve not used an FTDI cable before, it needs drivers. I believe in Windows 7 and on these will be located automatically. If not, the provider should make drivers available to you.
Once the cable is plugged in, you should see RING diode light continously and the NET diode will flash.
To connect to the dev board, I am using putty. First I need to determine the COM port that was assigned to the FTDI cable which can be found in the device manager:
Now start up putty, select Serial for the connection type, enter the COM port from device manager, and speed is most likely 9600 baud:
Type AT and press enter (the first time I do this, I don’t see the AT echo back). Once you press ENTER, you should see the AT followed by OK.
If you don’t get anything, make sure the wires between your TX/RX lines are correct. Tx goes to Rx and vice versa. If you see garbage, chances are you need to try a different baud rate.
Once AT by itself works, I tried a few other commands to verify operation:
AT+CGMM SIMCOM_SIM800L AT+cgmr Revision:1308B08SIM800L16 AT+CPIN? ERROR
AT+CPIN? is supposed to report SIM card status. Since it hasn’t been installed yet, I guess this ERROR is OK.
Obtaining the SIM Card
To make this device work, you will need a functioning GSM SIM card. Fastest way to take care of this problem is to go to a store and get a pay as you go SIM card. If you don’t have a phone that can make use of that card, you might want to pickup a cheap unlocked GSM cell phone for testing as well.
My normal carrier is a GSM carrier (AT&T, T-Mobile, or any of a host of other carriers that use AT&T or T-Mobile’s networks). I can request an additional line and they just send me a free SIM card. I pay $10 / mo for the additional line and it shares my existing data/text plan.
As already mentioned, it is easier to activate the SIM card if you put it in a phone first. Once you can place calls/texts on the test phone you are sure the SIM card works and any problems you might encounter will not likely be due to the SIM card or carrier.
Inserting the SIM Card
The SIM card is inserted with the contacts towards the PCB and the notched end sticking OUT!
Now the SIM card status command returns ready:
AT+CPIN? +CPIN: READY
The AT+CNUM reports the correct phone number:
at+cnum +CNUM: "","1xxxyyyzzzz",129,7,4
AT+CSQ reports roughly 50% signal quality (max is 31):
AT+CSQ +CSQ: 17,0
Obtaining Current Time
By default, the SIM800L is not set up to track time status messages coming from the carrier. So if you request the time via AT+CCLK?, it will be wrong. To fix this, type these commands:
ATZ OK AT+CLTS=1 OK AT&W OK
Now cycle power on the SIM800. If you connect to the serial port fast enough, you’ll actually see the time ‘commands’ coming from the carrier:
AT OK Call Ready SMS Ready +CTZV: -28,1 *PSUTTZ: 2016,3,26,17,49,24,"-28",1 DST: 1
and now if you request the time, it will be correct:
AT+CCLK? +CCLK: "16/03/26,10:49:36-28"
Using the RESET Pin
There are 2 downsides to the SIM900 DEV board I have – it will not come up without you manually pressing the POWER KEY and there is no way to force it to reset. Supposedly there are ways to solder connections to handle these issues, but that is still a bit clumsy.
The SIM800L holds the POWER KEY on for you so as soon as it gets power it is running. That is what I need for my project.
The next question is how does the RESET pin work?
Like one would expect – I grounded RESET and it forced the SIM800L to restart. Perfect!
Apr 2016 Update:
I purchased 2 of these to use in a project. They are both so unreliable they are worthless. Regularly they reset. This is an indication there is not enough power – they need 2A of clean power. Well, I have put them both on a 5A bench power supply and still have issues. Further, I followed the datasheet regarding filtering and that didn’t help either.
I’m trying a simpler board next (no onboard power circuitry nor a reset pin) to see if I can make it work. If it is any better, I’ll post an update.
Yep, much better luck with a different board. Click here to see it.