Skip to content

Promake GSM SIM800C

Description

The ProMake GSM SIM800C helps to add wireless connectivity to your project using TTL UART interface. It is built with Quad Band GSM/GPRS engine – SIM800C, that works on 850/900/1800/1900 MHz frequencies.

APPLICATIONS

A wide range of communication protocols and connectivity options, packed in the compact size module, driven by the simple AT command interface via the UART bus, makes this module a complete solution for a wide range of M2M applications, such as:

  • mobile internet terminals
  • automatic meter reading (AMR)
  • remote monitoring automation and control (RMAC)
  • surveillance and security
  • road pricing
  • asset tracking
  • wireless points of service (POS)

and similar applications, which rely on a cellular network connection.

Features

  • Model: SIM800C
  • Input Voltage: VIN 5 VDC
  • Quadruplex 850/900/1800/1900MHz
  • GPRS multi-slot class 12/10
  • GPRS mobile station class B
  • Send and receive SMS messages
  • Send and receive GPRS data (TCP/IP, HTTP, FTP, email, etc.)
  • Support multimedia message
  • Support electronic mail box
  • Support DTMF
  • Support Bluetooth 3.0
  • UART interface, for connecting host MCU
  • Configurable Baud rate (9600-115200, factory default value: 9600)
  • Controlled via AT commands (3GPP TS 27.007, 27.005 and SIMCOM enhanced AT Commands)
  • Level shifting circuitry to make it Arduino-safe
  • Indicator LEDs for Power and connectivity
  • LED for indicating the module operating status
  • On-board SIM card slot for 1.8V/3V SIM card
  • Dedicated on-board button for PWRKEY
  • Operation temperature range: -40 ~+85 ℃
  • Breadboard-friendly

Important Notes

  • you need a proper GSM Antenna to start working with this module
  • Caution: Since GSM is impulse type transmitting power, and the average current is very low, but the instantaneous current can reach more than 1.5A, so the external power supply is used in the use of GSM module. USB port can only provide 5V@500mA, which cannot meet output of instantaneous power supply.

Resource

Module Pinout

Software

Developement using Arduino

To set up the hardware, Insert your sim card and easily plug this module into:

  • Module3 slot of your ProMake® Arduino Nano Kit

or

  • Module2 slot of your ProMake® Arduino Uno Shield

or

  • Use your breadboard to connect the Power and UART lines.

Make sure you have provided your development kit with proper power source that can provide the module with 2A current draw it needs during TX priod.

To start coding you need to install:

  • "NeoSWSerial" (by SlashDevin)

in your Arduino® IDE.

Sending SMS

Then use the code below to program the Arduino and open the "Serial Monitor" to see the readings:

#include <NeoSWSerial.h>

#if 1 //KIT
#define GSM_TX_PIN 4
#define GSM_RX_PIN 5
#define GSM_PWR_PIN 6
#else //SHIELD
#define GSM_TX_PIN 4
#define GSM_RX_PIN 7
#define GSM_PWR_PIN 9
#endif

//Create software serial object
NeoSWSerial serialGSM(GSM_TX_PIN,GSM_RX_PIN);

void gsm_send_serial(String command) {
  Serial.println("Send ->: " + command);
  serialGSM.println(command);
  long wtimer = millis();
  while (wtimer + 3000 > millis()) {
    while (serialGSM.available()) {
      Serial.write(serialGSM.read());
    }
  }
  Serial.println();
}

void setup() {
  //Begin serial communication with Arduino and Arduino IDE (Serial Monitor)
  Serial.begin(9600);
  //Begin serial communication with Arduino and GSM Module
  serialGSM.begin(9600);

  Serial.println("Powering Up ...");
  pinMode(GSM_PWR_PIN,OUTPUT);
  //GSM POWER ON
  digitalWrite(GSM_PWR_PIN,LOW);
  delay(1000);
  digitalWrite(GSM_PWR_PIN,HIGH);

  Serial.println("Initializing...");
  delay(5000);

  serialGSM.println("AT"); //Once the handshake test is successful, it will back to OK
  delay(300);
  updateSerial();
  delay(1000);
  updateSerial();
  delay(1000);
  updateSerial();
  delay(1000);
  updateSerial();
  delay(1000);
  updateSerial();

  Serial.println("Sending SMS...");               //Show this message on serial monitor
  gsm_send_serial("AT+CMGF=1");                   //Set the module to SMS mode
  delay(100);

  gsm_send_serial("AT+CSMP=17,168,2,25");  //Set SMS Text Mode Parameters
  delay(100);

  gsm_send_serial("AT+CSCS=\"UCS2\""); //Select TE Character Set
  delay(100);

  serialGSM.print("AT+CMGS=\"+981234567890\"\r");  //Your phone number don't forget to include your country code, example +212123456789"
  serialGSM.print("GSM modem is working");       //This is the text to send to the phone number, don't make it too long or you have to modify the SoftwareSerial buffer
  serialGSM.print((char)0x1A);// (required according to the datasheet)
  serialGSM.println();

  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
  delay(500);
  updateSerial();
}

void loop() {
  // put your main code here, to run repeatedly:
  updateSerial();
}

void updateSerial()
{
  while(serialGSM.available()) 
  {
    Serial.write(serialGSM.read());//Forward what Software Serial received to Serial Port
  }
}

Developement using Raspberry