members
Basics: Project 070a SIM900 GSM GPRS Quad-Band Development Board Shield
of Acoptex.com in UNO
Basics: Project 070a
Project name: SIM900 GSM GPRS Quad-Band Development Board Shield
Tags: Arduino, Arduino Uno, SIM900 GSM GPRS Quad-Band Development Board, SIM900 GSM GPRS module, 531619133647-3, B01IBGDDVM, UN970HL11PMG0NAFAMZ, SIM900 GSM GPRS Shield
Attachments: ATcommandssketch; SendingSMSsketch, ReadingSMSsketch, MakingCallsketch, AnsweringCallSketch, AllinOnesketch
In this project, you needed these parts :
1.Aruduino Uno R3 (you can also use the other version of Arduino)
2.SIM900 GSM GPRS Quad-Band Development Board Shield with GSM/GPRS antenna 1 pc
3.Arduino IDE (you can download it from here)
4.Jumper cables M-M, F-M
5.Standard SIM card 1 pc (unlocked). If you have micro or nano you may consider getting a SIM card size adapter.
6. USB to TTL/Serial adaptor/converter 1 pc
7. To power module: 4.8~5VDC 2A power adapter
8. SIM card size adapter 1pc (optional)
In this project we will learn how to connect SIM900 GSM GPRS Quad-Band Development Board to Arduino board and use it to call, write SMS.
Understanding the USB to TTL converter
You can read more about them here.
Understanding the SIM900 GSM GPRS Quad-Band Development Board
The GPRS Shield provides you a way to communicate using the GSM cell phone network. The shield allows you to achieve SMS, MMS, GPRS and Audio via UART by sending AT commands (GSM 07.07 ,07.05 and SIMCOM enhanced AT Commands). The shield also has the 12 GPIOs, 2 PWMs and an ADC of the SIM900 module(They are all 2V8 logic) present onboard.
Features:
- Quad-Band 850 / 900/ 1800 / 1900 MHz – would work on GSM networks in all countries across the world.
- GPRS multi-slot class 10/8
- GPRS mobile station class B
- Compliant to GSM phase 2/2+
- Class 4 (2 W @ 850 / 900 MHz)
- Class 1 (1 W @ 1800 / 1900MHz)
- Control via AT commands – Standard Commands: GSM 07.07 & 07.05 | Enhanced Commands: SIMCOM AT Commands.
- Short Message Service – so that you can send small amounts of data over the network (ASCII or raw hexadecimal).
- Embedded TCP/UDP stack – allows you to upload data to a web server.
- RTC supported.
- Selectable serial port.
- Speaker and Headphone jacks
- Low power consumption – 1.5mA(sleep mode)
- Industrial Temperature Range – -40°C to +85 °C
- Size:8.5×5.7x2cm(approx)
Specifications for Fax
•Group 3, class 1
Specifications for GPRS Data
•GPRS class 10: max. 85.6 kbps (downlink)
•PBCCH support
•Coding schemes CS 1, 2, 3, 4
•PPP-stack
Specifications for CSD Data
•USSD
•Non transparent mode
Specifications for SMS via GSM/GPRS
•Point to point MO and MT
•SMS cell broadcast
•Text and PDU mode
Software features
•0710 MUX protocol
•Embedded TCP/UDP protocol
•FTP/HTTP
Special firmware
•Embedded AT
•Java (cooperate with Iasolution)
•FOTA
•MMS
Specifications for Voice
•Tricodec
– Half rate (HR)
– Full rate (FR)
– Enhanced Full rate (EFR)
•AMR
– Half rate (HR)
– Full rate (FR)
•Hands-free operation
(Echo suppression)
Interfaces
•Interface to external SIM 3V/ 1.8V
•Analog audio interface
•RTC backup
•SPI interface (option)
•Serial interface
•Antenna pad
•I2C
•GPIO
•PWM
•ADC
Compatibility
•AT cellular command interface
Certifications:
•CE
•FCC
•ROHS
•PTCRB
•GCF
•IC
•ICASA
•REACH
Carrier Approvals:
•NCC
•Anatel
•Rogers
•Orange
•AT&T
•Vodafone
The product is provided as is without an insulating enclosure. Please observe ESD precautions specially in dry (low humidity) weather.
Application:
- M2M (Machine 2 Machine) Applicatoions.
- Remote control of appliances.
- Remote Weather station or a Wireless Sensor Network.
- Vehicle Tracking System with a GPS module.
Indicator LEDs
There are three indicator LEDs(PWR(Green), Staus(Blue), Netlight(Red)) on the GPRS Shield, users can know about the working state of the shield based on the three indicator LEDs. Detailed information please refer to the following table:

SIM900 IC module
Designed for global market, SIM900 is a quad-band GSM/GPRS module that works on frequencies GSM 850MHz, EGSM 900MHz, DCS 1800MHz and PCS 1900MHz. SIM900 features GPRS multi-slot class 10/ class 8 (optional) and supports the GPRS coding schemes CS-1, CS-2, CS-3 and CS-4. With a tiny configuration of 24*24*3mm, SIM900 can meet almost all the space requirements in user applications, such as M2M, smart phone, PDA and other mobile devices. SIM900 has 68 SMT pads, and provides all hardware interfaces between the module and customers’ boards.
- Serial port and debug port can help user easily develop user’s applications.
- Audio channel which includes a microphone input and a receiver output.
- Programmable general purpose input and output.
- The keypad and SPI display interfaces will give users the flexibility to develop customized applications.
SIM900 is designed with power saving technique so that the current consumption is as low as 1.0mA in sleep mode. SIM900 integrates TCP/IP protocol and extended TCP/IP AT commands which are very useful for data transfer applications.
Operating Modes:
1.Normal operation
GSM/GPRS SLEEP. Module will automatically go into sleep mode if the conditions of sleep mode are enabling and there is no on air and no hardware interrupt (such as GPIO interrupt or data on serial port). In this case, the current consumption of module will reduce to the minimal level. In sleep mode, the module can still receive paging message and SMS.
GSM IDLE. Software is active. Module registered to the GSM network, and the module is ready to communicate.
GSM TALK. Connection between two subscribers is in progress. In this case, the power consumption depends on network settings such as DTX off/on, FR/EFR/HR, hopping sequences, antenna.
GPRS STANDBY. Module is ready for GPRS data transfer, but no data is currently sent or received. In this case, power consumption depends on network settings and GPRS configuration.
GPRS DATA. There is GPRS data transfer (PPP or TCP or UDP) in progress. In this case, power consumption is related with network settings (e.g. power control level); uplink/downlink data rates and GPRS configuration (e.g. used multi-slot settings).
2.Power down
Normal power down by sending the AT command “AT+CPOWD=1” or using the PWRKEY. The power management unit shuts down the power supply for the baseband part of the module, and only the power supply for the RTC is remained. Software is not active. The serial port is not accessible. Power supply (connected to VBAT) remains applied.
3. Minimum functionality mode
AT command “AT+CFUN” can be used to set the module to a minimum functionality mode without removing the power supply. In this mode, the RF part of the module will not work or the SIM card will not be accessible, or both RF part and SIM card will be closed, and the serial port is still accessible. The power consumption in this mode is lower than normal mode.
You can find more information about SIM900 here, SIM900D here, SIM900R here. Check for SIM900 Schematics here, SIM900 datasheet here.
The factory default setting for the SIM900 GSM GPRS Quad-Band Development Board UART is 19200 bps 8-N-1. (Can be changed using AT commands).
You can find the AT commands list here.
Signals and connections of the USB to TTL converter
You can read more about them here.
Signals and connections of the SIM900 GSM GPRS Quad-Band Development Board
D9 of Arduino - Used for software control the power up or down of the SIM900
A4 and A5 of Arduino - connected to the I2C pins on the SIM900. The SIM900 however cannot be accessed via the I2C
Power jack - connected to external 4.8~5VDC power supply
Power select switch - select the power supply for GPRS shield (external power or 5VDC of Arduino board)
Serial port select - select either software serial port or hardware serial port to be connected to GPRS Shield
Hardware Serial - D0/D1 of Arduino
Software serial - D7/D8 of Arduino
EN - module power control enable pin (can control power switch, default high level enable)
4.1V - external power supply pin (4.2VDC).
GND - ground pin.
RXD - serial port for AT commands (receive pin)
TXD - serial port for AT commands (transmit pin)
Microphone - to answer the phone call
Speaker - to answer the phone call
Wiring
The following picture shows the needed connections with the Arduino Uno
1. Using Arduino board
2. Using USB to TTL converter
Step by Step instruction
1. Configuring the SIM900 GSM GPRS Quad-Band Development Board
Preparations:
- You must have coverage on a GSM 850 MHz, GSM 900 MHz, DCS 1800 MHz or PCS 1900 MHz network. GSM means 2G.
- Use a prepaid plan or a plan with unlimited SMS for testing purposes. Otherwise, if something goes wrong, you may need to pay a lot for SMS text messages sent by mistake.
- SIM900 GSM GPRS Quad-Band Development Board uses the original SIM card size. If you have micro or nano you will need to get a SIM card size adapter.
- Make sure your SIM card is unlocked. To use the SIM card with the SIM900 GSM GPRS Quad-Band Development Board, you need to turn off the pin lock. The easiest way to do this - insert the SIM card in your smartphone and turn off the pin lock in the phone security settings.
- You can automatically turn on the SIM900 GSM GPRS Quad-Band Development Board via software too.
- Do wiring.
- Attach GSM/GPRS antenna to SIM900 GSM GPRS Quad-Band Development Board. Make sure the antenna is well connected. A miniature coaxial RF connector is present on the SIM900 GSM GPRS Quad-Band Development Board to connect with a GSM/GPRS Antenna.The connector present on the GPRS Shield is called a U.FL connector. The GSM Antenna supplied with the SIM900 GSM GPRS Quad-Band Development Board has an SMA connector (and not an RP-SMA connector) on it. A patch cord is also supplied with the SIM900 GSM GPRS Quad-Band Development Board to interface the antenna to the board.
- Insert a valid unlocked SIM card to SIM Card Holder (slot) - 6 Pin Holder for SIM Cards. Both 1.8 volts and 3.0 volts SIM Cards are supported by SIM900 - the SIM card voltage type is automatically detected..
- On the Serial port select, make sure the jumper cap is connected as shown in figure below to use software serial.
- You can power up SIM900 GSM GPRS Quad-Band Development Board with power supply adapter (5VDC 2A) POWER JACK interface.
- We used the 5V DC 2A power adapter. Next to the power jack there is a toggle switch to select the power source. Next to the toggle switch on the board, there is an arrow indicating the toggle position to use an external power supply – move the toggle switch to use the external power supply as shown above.When the module powered on, the green LED power on indication (PWR) will be ON.
- To power up/down the shield press the POWER KEY for about 2 seconds.
- Then, the Status LED (blue) will light up and the NetLight LED (red) will blink every 800 ms until it finds the network. When it finds the network, the NetLight LED will start blinking every three seconds.
- Open Arduino IDE.
- Plug your Adruino Uno board into your PC and select the correct board and com port
- Verify and upload this sketch to your Adruino Uno
- Open up serial monitor and set your baud to 19200 baud and select Both NL&CR.
- First you need to check if AT commands are working - enter “AT” and press Send button.This would print "OK" which signifies of working connection and operation of the module.
- Enter “AT+GMI” and press Send button. Returns the Manufacturer Identification of the module: “SIMCOM_Ltd OK”
- Enter “AT+GSN” and press Send button. Returns the TA Serial Number Identification (IMEI) of the module: “814527024419031 OK”
- Enter “AT+GMM” and press Send button. Returns the TA Model Identification of the module: “SIMCOM_SIM900A OK”
- Call Control Commands. If you call the cell number of Sim Card then message RING will be shown. 1) Answer a call. Enter "ATA" and press Send button; 2) Make a call. Enter number to call "ATDP+37163055289" and press Send button; 3) Disconnect existing call. Enter "ATH" and press Send button.
- SMS Commands. Set the SIM900 to text mode: "AT+CMGF=1r". Send SMS to a number: "AT+CMGS=PHONE_NUMBER" (in international format). Read the first SMS from the inbox: "AT+CMGR=1r". Read the second SMS from the inbox: "AT+CMGR=2r" . Read all SMS from the inbox: "AT+CMGR=ALLr".
- Check the list of all AT commands here.
2. Configuring the GSM GPRS GPS Bluetooth module USB to TTL converter
For using this USB to UART Converter you need a software tool. Most of the development tools like MikroC Pro, Arduino has a UART Tool along with it. You can use different software tools: Terminal, USR-TCP232-Test V1.4, AiThinker_Serial_Tool_V1.2.3, coolterm, sscom3.2 , KiTTY, putty,tera term, Access port and so on. We recommend you to use AiThinker_Serial_Tool_V1.2.3 or sscom3.2, as you can save your AT commands and it's very easy to use.
- Do wiring.
- Attach GSM/GPRS antenna to SIM900 GSM GPRS Quad-Band Development Board. Make sure the antenna is well connected. A miniature coaxial RF connector is present on the SIM900 GSM GPRS Quad-Band Development Board to connect with a GSM/GPRS Antenna.The connector present on the GPRS Shield is called a U.FL connector. The GSM Antenna supplied with the SIM900 GSM GPRS Quad-Band Development Board has an SMA connector (and not an RP-SMA connector) on it. A patch cord is also supplied with the SIM900 GSM GPRS Quad-Band Development Board to interface the antenna to the board.
- Insert a valid unlocked SIM card to SIM Card Holder (slot) - 6 Pin Holder for SIM Cards. Both 1.8 volts and 3.0 volts SIM Cards are supported by SIM900 - the SIM card voltage type is automatically detected..
- On the Serial port select, make sure the jumper cap is connected as shown in figure below to use software serial.
- You can power up SIM900 GSM GPRS Quad-Band Development Board with power supply adapter (5VDC 2A) POWER JACK interface.
- We used the 5V DC 2A power adapter. Next to the power jack there is a toggle switch to select the power source. Next to the toggle switch on the board, there is an arrow indicating the toggle position to use an external power supply – move the toggle switch to use the external power supply as shown above.When the module powered on, the green LED power on indication (PWR) will be ON.
- To power up/down the shield press the POWER KEY for about 2 seconds.
- Then, the Status LED (blue) will light up and the NetLight LED (red) will blink every 800 ms until it finds the network. When it finds the network, the NetLight LED will start blinking every three seconds.
- Plug your USB to TTL converter into your PC USB port.
- Download and install driver for your USB to TTL converter.
- Download, install and open software tool.
- Set the baud rate 19200, data bits 8, parity bits none,stop bits one.
- First you need to check if AT commands are working - enter “AT” and press Send button.This would print "OK" which signifies of working connection and operation of the module.
- First you need to check if AT commands are working - enter “AT” and press Send button.This would print "OK" which signifies of working connection and operation of the module.
- Enter “AT+GMI” and press Send button. Returns the Manufacturer Identification of the module: “SIMCOM_Ltd OK”
- Enter “AT+GSN” and press Send button. Returns the TA Serial Number Identification (IMEI) of the module: “814527024419031 OK”
- Enter “AT+GMM” and press Send button. Returns the TA Model Identification of the module: “SIMCOM_SIM900A OK”
- Call Control Commands. If you call the cell number of Sim Card then message RING will be shown. 1) Answer a call. Enter "ATA" and press Send button; 2) Make a call. Enter number to call "ATDP+37163055289" and press Send button; 3) Disconnect existing call. Enter "ATH" and press Send button.
- SMS Commands. Set the SIM900 to text mode: "AT+CMGF=1r". Send SMS to a number: "AT+CMGS=PHONE_NUMBER" (in international format). Read the first SMS from the inbox: "AT+CMGR=1r". Read the second SMS from the inbox: "AT+CMGR=2r" . Read all SMS from the inbox: "AT+CMGR=ALLr".
- Check the list of all AT commands here.
3. Automatically turn on the SIM900 GSM GPRS Quad-Band Development Board
Instead of manually pressing the POWER KEY to turn on the SIM900 GSM GPRS Quad-Band Development Board, you can automatically turn on the SIM900 GSM GPRS Quad-Band Development Board via software.
- You need to solder R13 connections on the SIM900 GSM GPRS Quad-Band Development Board.
- Connect D9 on the SIM900 GSM GPRS Quad-Band Development Board to the digital pin 9 of Arduino board.
- Add the following code snippet in the setup() function. This is the equivalent of pressing the SIM900 GSM GPRS Quad-Band Development Board POWER KEY:
digitalWrite(9, HIGH);
delay(1000);
digitalWrite(9, LOW);
delay(5000);
Code
Making a CALL. Don’t forget to change in the code the phone number you want to call.To make the call, you use the callSomeone() function that uses the ATD command. SIM900.println("ATD + +XXXXXXXXX;"); You need to replace the X‘s (highlighted in red) with the phone number you want to call. Don’t forget to connect a microphone and earphones to make the call. In this code example, the call is hang up after 30 seconds, using the ATH command: SIM900.println("ATH"); Hanging up after 30 seconds is not very useful, but it works well for an example. The idea is that you use the ATH command when an event is triggered. For example, connect a push button to the Arduino, that when pressed sends the ATH command to hang up the phone.
Answering a Call. When someone calls the SIM900 number, it sends a message saying “RING”. To know if someone is calling you, you can wait for incoming characters from the SIM900 and then, compare if it was a RING message. That’s what is done in this code. When it receives a RING message, you send the ATA command to answer the phone.
Sending SMS. In this code, you start by including the SoftwareSerial.h library and create a software serial port on pins 7 and 8 (Pin 7 is being set as RX and 8 as TX). The sendSMS() function created is what actually sends the SMS. This function uses the AT commands: AT+CMGF=1r and AT + CMGS. You need to change the recipient’s mobile number at: (replace the X‘s with the recipient’s phone number). The recipient’s mobile number should be in international format. Then you can edit the text you want to send.
Reading SMS. After uploading, wait 20 seconds for the SIM900 GSM GPRS Quad-Band Development Board to establish communication. Then, test the script by sending an SMS to the SIM900 GSM GPRS Quad-Band Development Board SIM card number. The SMS is shown on the Arduino serial monitor – baud rate: 19200. In this code, you set the module to send the SMS data to the serial output: SIM900.print("AT+CNMI=2,2,0,0,0r"); You store the incoming characters from the SMS message on the incoming_char variable. You read the chars using the SIM900.read() function.
Summary
We have learnt how to connect SIM900 GSM GPRS Quad-Band Development Board to Arduino board and use it to call, write SMS.
Notes:
- It happens in some case that it is unable to detect the data that might be the issue with antenna, so unplug the antenna( if it is detachable) and attach it again.
- If, code says “Check Connection”, then you should definitely check it twice, before giving up. Also, sometimes interchanging the TX and RX pins is preferable and surprisingly works.
- If SIM900 GSM GPRS Quad-Band Development Board doesn’t respond with OK. Check your TX and RX connections to the Arduino. Try repeating the process by changing the TX with the RX pins. Also check if you have selected the software serial by placing the jumper cap on the appropriate place on the serial selector.
- If you cannot see messages in the serial monitor. To see the messages in the serial monitor, the SIM900 GSM GPRS Quad-Band Development Board and the Arduino’s serial port baud rate should be the same. The SIM900 GSM GPRS Quad-Band Development Board default baud rate is 19200. So, select the Arduino’s baud rate to 19200. However, if you need to change the shield baud rate, you can send the following AT command to change it to 19200 or other appropriate baud rate. AT+IPR=19200
Libraries:
- SoftwareSerial library included in Arduino IDE. The library has the following known limitations:If using multiple software serial ports, only one can receive data at a time.Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).Not all pins on the Leonardo and Micro support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).On Arduino or Genuino 101 the current maximum RX speed is 57600bpsOn Arduino or Genuino 101 RX doesn't work on Pin 13 The library has the following known limitations: If using multiple software serial ports, only one can receive data at a time;Not all pins on the Mega and Mega 2560 support change interrupts, so only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69);Not all pins on the Leonardo and Micro support change interrupts, so only the following can be used for RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI);On Arduino or Genuino 101 the current maximum RX speed is 57600bps; On Arduino or Genuino 101 RX doesn't work on Pin 13. You can read about it here.
Sketch:
- See attachment on the begining of this project description.
Other projects of Acoptex.com










Viewed: 5858 times