SIM808 GPRS/GSM+GPS Shield v1.1
Introduction¶
SIM808 module is a GSM/GPS/BT three-in-one function module. It is based on the latest GSM/GPS/BT module SIM808 from SIMCOM, supports GSM/GPRS Quad-Band network and combines GPS technology for satellite navigation.It has high GPS receive sensitivity with 22 tracking and 66 acquisition receiver channels. Besides, it supports A-GPS that available for indoor localization, and it also supports for Bluetooth 3.0.
The module is controlled by AT command via UART and supports 3.3V and 5V logical level.
Model: ACS80801S
Features¶
- Quad-band 850/900/1800/1900MHz.
- GPRS multi-slot class12 connectivity: max. 85.6kbps(down-load/up-load).
- GPRS mobile station class B.
- Controlled by AT Command (3GPP TS 27.007, 27.005 and SIMCOM enhanced AT Commands).
- Supports Real Time Clock.
- Supply voltage range 5V ~ 12V.
- Supports for Bluetooth 4.0.
- Integrated GPS/CNSS and supports A-GPS.
- Supports 3.0V to 5.0V logic level.
- Low power consumption, 1mA in sleep mode.
- Supports GPS NMEA protocol.
- Standard Micro SIM Card.
Application Ideas¶
- M2M (Machine 2 Machine) Applicatoions - To transfer control data using SMS or GPRS between two machines located at two different factories.
- Remote control of appliances - Send SMS while you are at your office to turn on or off your washing machine at home.
- Remote Weather station or a Wireless Sensor Network - Make it with [Crowduino v1.0|Crowduino v1.0] and create a sensor node capable of transferring sensor data (like from a weather station - temperature, humidity etc.) to a web server (like pachube.com).
- Vehicle Tracking System - Install GPRS+GSM+GPS Shield in your car and publish your location live on the internet. Can be used as a automotive burglar alarm.
Cautions¶
- Make sure your SIM card is unlocked.
- The product is provided as is without an insulating enclosure. Please observe ESD precautions specially in dry (low humidity) weather.
- The factory default setting for the GPRS Shield UART is autobaoding. It supports baud rate from 1200 bps to 115200bps. (Can be changed using AT commands).
Specifications¶
Item | Min | Typical | Max | Unit |
---|---|---|---|---|
Voltage | 4.8 | 5.0 | 12 | VDC |
Current | 2 | - | 500 | mA |
Dimension(with antenna) | 76.0(L)x55.0(W)x23.5(H) | mm | ||
Net Weight | 47±2 | g |
Interface Function¶
Power supply - Vin connected to external 5~9VDC power supply
Antenna interface - connected to external antenna
Serial port select - select either software serial port or hareware serial port to be connected to GPRS+GSM+GPS Shield Shield
Hardware Serial - D0/D1 of Arduino/Crowduino
Software serial - D7/D8 of Arduino/Crowduino
Status LED - tell whether the power of SIM808 is on
Net light - tell the status about SIM808 linking to the net
1PPS - tell the status about SIM808 get the location
UART of SIM808 - UART pins breakout of SIM808
Microphone - to answer the phone call
Speaker - to answer the phone call
GPIO,PWM and ADC of SIM808 - GPIO,PWM and ADC pins breakout of SIM808
Power key - power up and down for SIM808
Pins usage on Arduino¶
D0 - Unused if you select hardware serial port to communicate with GPRS+GSM+GPS Shield
D1 - Unused if you select hardware serial port to communicate with GPRS+GSM+GPS Shield
D2 - Unused
D3 - Unused
D4 - Unused
D5 - Unused
D6 - Unused
D7 - Used if you select software serial port to communicate with GPRS+GSM+GPS Shield
D8 - Used if you select software serial port to communicate with GPRS+GSM+GPS Shield
D9 - Used for software control the power up or down of the SIM808
D10 - Unused
D11 - Unused
D12 - Unused
D13 - Unused
D14(A0) - Unused
D15(A1) - Unused
D16(A2) - Unused
D17(A3) - Unused
D18(A4) - Unused
D19(A5) - Unused
Usage¶
Hardware installation¶
1.Insert an Micro SIM card to SIM Card Holder¶
6 Pin Holder for SIM Cards. Both 1.8 volts and 3.0 volts SIM Cards are supported by SIM808 - the SIM card voltage type is automatically detected.
2.Connect the Antenna¶
A miniature coaxial RF connector is present on the SIM808 GPRS/GSM+GPS Shield board to connect with a GSM Antenna. The connector present on the SIM808 GPRS/GSM+GPS Shield is called a U.FL connecto.The GSM Antenna supplied with the GPRS Shield has an SMA connector (and not an RP-SMA connector) on it.The connection topology is shown in the diagram below:
3.Plug to Arduino/Crowduino¶
The GPRS+GSM+GPS Shield, like any other well designed shield, is stackable as shown in the photo below.
Turn on the SIM808 GPRS/GSM+GPS shield¶
There is two ways to turn on the SIM808 GPRS/GSM+GPS Shield.
1. Turn on through Hardware. Press the the 'POWERKEY' for few seconds until Power-on indicator(Green) is on.
2. Turn on through Software. If the JP is soldered,run the following code, the SIM808 will POWER on or POWER off.
int Powerkey = 9;
void setup() {
pinMode(Powerkey, OUTPUT); // initialize the digital pin as an output.
power(); //power on the sim808 or power down the sim808
}
void loop()
{
}
void power(void)
{
digitalWrite(Powerkey, LOW);
delay(1000); // wait for 1 second
digitalWrite(Powerkey, HIGH);
}
Serial Port(UART) Communication¶
The SIM808 GPRS/GSM+GPS Shield is used UART protocol to communicate with an Arduino/Arduino clone; Users can use jumpers to connect (RX,TX) of the shield to either Software Serial(D8,D7) or Hardware Serial(D1,D0) of the Arduino.Detailed information is showed as the following picture:
Selectalbe GPRS+GSM+GPS Shield Communication Port
Power Down the GPRS Shield¶
The GPRS Shield can be turned off by following ways:
- 1, Normal power down procedure: Turn off the GPRS shield by using Hardware Triger; Press the ON/OFF Button about one seconds.
The power down scenarios illustrates as following figure:
Figure of Timing of turning off GPRS Shield using Hardware Triger
- 2, Normal power down procedure: If JP is soldered, then give Digital Pin 9 of the Arduino(act as Software Triger) a Turn off Impulse can turn off the GPRS Shield. The power down scenarios illustrates as following figure:
Figure of Timing of turning off GPRS Shield using Software Triger
The following code is power down subroutine for Arduino if using software triger:
int Powerkey = 9;
void setup() {
pinMode(Powerkey, OUTPUT); // initialize the digital pin as an output.
power(); //power on the sim808 or power down the sim808
}
void loop()
{
}
void power(void)
{
digitalWrite(Powerkey, LOW);
delay(1000); // wait for 1 second
digitalWrite(Powerkey, HIGH);
}
- 3, Normal power down procedure: Turn off the GPRS shield by sending AT command "AT+CPOWD=1" to SIM808 module.
When GPRS Shield power dowm in Normal power down procedure, the procedure lets the SIM808 log off from the network and allows the software to enter into a secure state and save data before completely disconnecting the power supply. Before the completion of the power down procedure the SIM808 will send out result code:
NORMAL POWER DOWN
- 4, Over-voltage or Under-voltage Power Down: The module software monitors VBAT voltage constantly.
①If the voltage ≤ 3.5V, the following URC will be reported:
UNDER-VOLTAGE WARNNING
②If the voltage ≥ 4.3V, the following URC will be reported:
OVER-VOLTAGE WARNNING
③If the voltage < 3.4V, the following URC will be reported,and the module will be automativally powered down.
UNDER-VOLTAGE POWER DOWN
④If the voltage > 4.4V, the following URC will be reported,and the module will be automativally powered down.
OVER-VOLTAGE POWER DOWN
- 5, Over-temperature or Under-temperature Power Down: SIM900 will constantly monitor the temperature of the module.
①If the temperature > +80℃, the following URC will be reported:
+CMTE:1
②If the temperature < -30℃, the following URC will be reported:
+CMTE:-1
③If the temperature > +85℃, the following URC will be reported,and the module will be automativally powered down.
+CMTE:2
④If the temperature < -40℃, the following URC will be reported,and the module will be automativally powered down.
+CMTE:-2
When the GPRS Shield encounters POWER DOWN scenario, the AT commands can not be executed. The SIM808 logs off from network and enters the POWER DOWN mode, only the RTC is still active. POWER DOWN can also be indicated by STATUS LED(Blue), which is off in this mode.
Note:
To monitor the temperature, users can use the “AT+CMTE” command to read the temperature when GPRS Shield is powered on.
Upload Sketch to Arduino¶
Data Stream among Computer, Arduino and GPRS Shield
The following sketch configures Arduino/Arduino clone as serial link between PC and the GPRS Shield(Jumpers on SWserial side). PC would need a serial terminal software to communicate with it - Window's built-in HyperTerminal, Arduino IDE's Serial Monitor, Serial Terminals(sscom32) or Bray++ Terminal.
After uploading the sketch to the Arduino board, press the ON/OFF button on the GPRS Shield to turn it on; Now you can see what you get on the serial terminal and the status of the three indicator LEDs, then communicate with your Shield.
//Serial Relay - Arduino will patch a
//serial link between the computer and the GPRS Shield
//at 19200 bps 8-N-1
//Computer is connected to Hardware UART
//GPRS Shield is connected to the Software UART
#include <SoftwareSerial.h>
SoftwareSerial GSMSerial(7, 8);
void setup()
{
GSMSerial.begin(19200); // the GPRS/GSM baud rate
Serial.begin(19200); // the GPRS/GSM baud rate
}
void loop()
{
if(Serial.available())
GSMSerial.print((char)Serial.read());
else if(GSMSerial.available())
Serial.print((char)GSMSerial.read());
}
Note:
The "AT" or "at" prefix must be set at the beginning of each Command line. To terminate a Command line enter
Set Baud and Enable Charging Function¶
It is recommended to execute this process when first time to use the module. In the Serial Monitor columns of following tables, input of AT commands are in back, module returns values are in orange.
Serial Monitor | Description |
---|---|
AT OK | Send command “AT” to synchronize baud rate. Serial port of module is by default set at auto-baud mode, and in this mode, it will not output any indications when the module is on. |
AT+IPR=9600 OK | Set baud rate at 9600bps, supports baud rate from 1200bps to 115200bps. |
AT+ECHARGE=1 OK | Send command “AT+ECHARGE=1” to enable battery charging function. By default the charging function is closed. |
AT&W OK | Save parameter setting. |
AT+CPOWD=1 NORMAL POWER DOWN | Power down the module. |
RDY +CFUN: 1 GPS Ready +CPIN: READY Call Ready SMS Ready | Turn on the module again by the power button, it will response status about GPS and GSM. |
AT+CBC +CBC: 1,96,4175 OK | Inquire charging status and remaining battery capacity. |
AT+CSQ +CSQ: 14,0 OK | Inquire GSM signal quality. |
Get location with GPS¶
Serial Monitor | Description |
---|---|
AT+CGPSPWR=1 OK | Open GPS |
AT+CGPSSTATUS? +CGPSSTATUS: Location Not Fix OK | Read GPS fix status, “Location Not Fix” means that positioning is not successful. For the first time to start, it will take at least 30s. GPS must be tested by the window or outdoor. |
AT+CGPSSTATUS? +CGPSSTATUS: Location 3D Fix OK | GPS has fixed with 3D status. |
AT+CGPSINF=0 +CGPSINF: 0,2234.931817,11357.122485, 92.461185,20141031041141.000, 88,12,0.000000,0.000000 | Get the current GPS location information. Parameters formate: |
AT+CGPSOUT=32 OK $GPRMC,043326.000,A, 2234.9414,N,11357.1187,E, 0.000,143.69,311014,,,A*50 | Read NMEA $GPRMC data, of which, “2234.9414 N, 11357.1187 E” is the location coordinates. For more details about NMEA sentences, check this site. |
AT+CGPSRST=0 OK | Reset GPS in Cold Start Mode. |
AT+CGPSRST=1 OK | Reset GPS in Hot Start Mode. |
AT+CGPSPWR=0 OK | Close GPS. |
GNSS AT Command¶
AT Command | Description |
---|---|
AT+CGNSPWR | GNSS power conntrol |
AT+CGNSSEQ | Define the last NMEA sentence that paresed |
AT+CGNSINF | GNSS navigation information parsed from NMEA sentences |
AT+CGNSURC | GNSS navigation, GEO-fences and speed alarm URC report |
AT+CGNSCMD | Send command to GNSS |
AT+CGNSTST | Send data received from GNSS to AT UART |
More information you can refer the SIM800 Series_GNSS_Application Note V1.00.
Examples¶
Sending SMS: using Software UART¶
#include <SoftwareSerial.h>
SoftwareSerial mySerial(7, 8);
void setup()
{
mySerial.begin(19200); //Default serial port setting for the GPRS modem is 19200bps 8-N-1
mySerial.print("\r");
delay(1000); //Wait for a second while the modem sends an "OK"
mySerial.print("AT+CMGF=1\r"); //Because we want to send the SMS in text mode
delay(1000);
//mySerial.print("AT+CSCA=\"+919032055002\"\r"); //Setting for the SMS Message center number,
//delay(1000); //uncomment only if required and replace with
//the message center number obtained from
//your GSM service provider.
//Note that when specifying a tring of characters
// " is entered as \"
mySerial.print("AT+CMGS=\"+9184460xxxx\"\r"); //Start accepting the text for the message
//to be sent to the number specified.
//Replace this number with the target mobile number.
delay(1000);
mySerial.print("Hello,Elecrow!\r"); //The text for the message
delay(1000);
mySerial.write(0x1A); //Equivalent to sending Ctrl+Z
}
void loop()
{
//We just want to send the SMS only once, so there is nothing in this loop.
//If we put the code for SMS here, it will be sent again and again and cost us a lot.
}