Zbotic Logo Zbotic Logo
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

  • Shop
  • About Us
  • Contact Us
  • Reseller
  • Blogs
020 69134444
1800 209 0998
[email protected]
Help Desk
Facebook Twitter Instagram Linkedin YouTube
Zbotic Logo Zbotic Logo
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

All departments
  • 3D Print Service
  • 3D Printer
  • Batteries & Chargers
  • Development Boards
  • Drone Parts
  • EBike parts
  • Sensor Modules
  • Electronic Components
  • Electronic Modules
  • IoT and Wireless
  • Mechanical Parts and Workbench Tools
  • Motors & Drivers & Pumps & Actuators
  • DIY and Robot Kits
  • Show more
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
Return to previous page
Home Communication & Wireless Modules

SIM900A GSM Module: Send SMS with Arduino Step-by-Step

SIM900A GSM Module: Send SMS with Arduino Step-by-Step

March 11, 2026 /Posted byJayesh Jain / 0

SIM900A GSM Module: Send SMS with Arduino Step-by-Step

Learning to use a SIM900A GSM Arduino send SMS setup is a milestone for every IoT maker — it opens the door to real-world alerting systems, remote monitoring, and cellular-connected devices that work anywhere in India where there is a mobile signal. In this step-by-step tutorial, we cover everything from powering the SIM900A correctly (the most common failure point) to writing robust Arduino code that sends an SMS with a sensor reading, and we include all the AT commands you need for complete cellular control.

Table of Contents

  1. SIM900A Module Overview
  2. Power Requirements (Critical!)
  3. SIM Card Selection for India
  4. Wiring SIM900A to Arduino Uno
  5. Key AT Commands Reference
  6. Arduino Code: Send an SMS
  7. Arduino Code: Receive & Parse SMS
  8. Practical Project Ideas
  9. Frequently Asked Questions

SIM900A Module Overview

The SIM900A is a quad-band GSM/GPRS module from SIMCom that supports 900/1800 MHz frequency bands — exactly the bands used by Indian operators like Airtel, Jio, Vi, and BSNL on their 2G/GSM networks. The module exposes a full AT command interface via UART, allowing you to send and receive SMS, make/receive voice calls, and establish GPRS data connections.

Key specifications:

  • Frequency bands: EGSM 900 MHz + DCS 1800 MHz (perfect for India)
  • Supply voltage: 3.4V – 4.4V (NOT 5V — this kills modules)
  • Peak current: Up to 2A during transmission burst
  • Typical current: ~50 mA idle, ~300 mA talking
  • UART baud rate: Auto-baud (default), typically 9600 or 115200
  • SIM type: Standard SIM (mini-SIM, 2FF) — not micro or nano
  • Temperature range: -40 to +85°C

Important: SIM900A vs SIM900 vs SIM800L

  • SIM900A: 900/1800 MHz only — designed for Asia. Works on Indian 2G networks.
  • SIM900: Quad-band 850/900/1800/1900 MHz — global coverage, slightly pricier
  • SIM800L: Smaller, 850/900/1800/1900 MHz — very popular for Indian makers, available at ₹150–250

Power Requirements (Critical!)

Incorrect power supply is responsible for 80% of SIM900A failures in the wild. Do not power from Arduino’s 5V pin — it cannot supply the 2A peak current the module demands during a transmission burst, causing the module to reset mid-send and produce mysterious failures.

Recommended power options:

  1. Dedicated buck converter: LM2596 or XL4016 step-down converter set to 4.0V, powered from a 7–12V adapter. This is the most reliable method for bench development.
  2. 18650 LiPo battery directly: A single fully charged 18650 cell (4.2V) can drive the SIM900A directly. Add a 100µF + 470µF capacitor bank across VCC-GND right at the module pins to handle the 2A spikes.
  3. Module board’s onboard regulator: Many SIM900A breakout boards include a micro-USB power input or DC jack — use this to feed regulated 5V, which the board steps down internally.

Capacitor rule of thumb: Always solder at least a 1000µF 10V electrolytic capacitor directly across VCC and GND pads of the SIM900A IC. This single step resolves most power-related reset loops.

SIM Card Selection for India

For the SIM900A to work in India:

  • Use a standard (2FF) SIM — the large SIM. If you have a nano SIM, you need a nano-to-standard adapter.
  • Airtel, Vi (Vodafone-Idea), and BSNL have the best 2G coverage in India — they maintain 2G networks specifically for IoT/M2M. Jio is VoLTE only and does NOT work on SIM900A.
  • Activate the SIM with a basic voice plan — data is not needed for SMS.
  • Ensure the SIM is not blocked for corporate or bulk SMS (plain consumer SIMs are fine for personal projects).

Wiring SIM900A to Arduino Uno

We will use SoftwareSerial so the hardware serial (USB) remains free for debugging:

  • SIM900A TX → Arduino Digital Pin 7 (SoftwareSerial RX)
  • SIM900A RX → Arduino Digital Pin 8 (SoftwareSerial TX)
  • SIM900A GND → Arduino GND (AND external power supply GND — common ground is mandatory)
  • SIM900A VCC → External 4.0V supply (NOT Arduino 5V)
  • Arduino VCC (5V) → Arduino powered separately via USB

Note on the PWRKEY pin: Some SIM900A modules need a 1-second LOW pulse on the PWRKEY pin to power on. Check your module’s LED: a fast blink (64 ms on, 800 ms off) means it is registered on the network. A slow blink (64 ms on, 3 s off) means it is searching. If the module doesn’t respond to AT commands, toggle PWRKEY low for 1.2 seconds after power-up.

GSM PCB Antenna

15cm 3dBi GSM/GPRS PCB Antenna with IPEX Connector

Boost your SIM900A signal significantly with this 3 dBi GSM antenna. Essential for reliable SMS delivery in areas with weak signal or when the module is inside an enclosure.

View on Zbotic

Key AT Commands Reference

Open the Serial Monitor (or a terminal) at the module’s baud rate. Test connectivity first, then configure SMS mode:

AT Command Description Response
AT Test module OK
AT+CPIN? Check SIM status +CPIN: READY
AT+CREG? Network registration status +CREG: 0,1 (registered)
AT+CSQ Signal quality (RSSI) +CSQ: 18,0 (0–31, higher=better)
AT+CMGF=1 Set SMS text mode OK
AT+CMGS="+919876543210" Send SMS to number Prompts > for message
Ctrl+Z (0x1A) Send the SMS +CMGS: 5, OK
AT+CMGL="ALL" List all stored SMS List of messages
AT+CMGD=1,4 Delete all read SMS OK

Arduino Code: Send an SMS

#include <SoftwareSerial.h>

SoftwareSerial gsmSerial(7, 8); // RX, TX

void setup() {
  Serial.begin(9600);
  gsmSerial.begin(9600);
  delay(1000);

  Serial.println("Initializing GSM module...");
  sendCommand("AT", 1000);          // Test
  sendCommand("AT+CPIN?", 1000);   // Check SIM
  sendCommand("AT+CREG?", 1000);   // Check registration
  sendCommand("AT+CSQ", 1000);     // Signal strength
  sendCommand("AT+CMGF=1", 1000); // Text mode SMS

  Serial.println("Sending SMS...");
  sendSMS("+919876543210", "Hello from Arduino! Temp: 28C, Humidity: 65%");
}

void loop() { }

void sendSMS(String number, String message) {
  gsmSerial.print("AT+CMGS="");
  gsmSerial.print(number);
  gsmSerial.println(""");
  delay(1000);
  gsmSerial.print(message);
  delay(500);
  gsmSerial.write(26); // Ctrl+Z to send
  delay(5000);
  while (gsmSerial.available()) {
    Serial.write(gsmSerial.read());
  }
  Serial.println("nSMS sent (or error above).");
}

void sendCommand(String cmd, int timeout) {
  gsmSerial.println(cmd);
  long t = millis();
  while (millis() - t < timeout) {
    if (gsmSerial.available()) Serial.write(gsmSerial.read());
  }
}

Replace +919876543210 with the full international format of your Indian mobile number (country code +91 followed by the 10-digit number).

Arduino Code: Receive & Parse SMS

This sketch monitors incoming SMS and toggles an LED based on the content — a simple remote control over SMS:

#include <SoftwareSerial.h>

SoftwareSerial gsmSerial(7, 8);
String incomingData = "";
const int LED = 13;

void setup() {
  Serial.begin(9600);
  gsmSerial.begin(9600);
  pinMode(LED, OUTPUT);
  delay(1000);
  gsmSerial.println("AT+CMGF=1");   // Text mode
  delay(500);
  gsmSerial.println("AT+CNMI=2,2,0,0,0"); // Auto deliver new SMS to serial
  delay(500);
  Serial.println("Waiting for SMS...");
}

void loop() {
  if (gsmSerial.available()) {
    char c = gsmSerial.read();
    incomingData += c;
    if (incomingData.endsWith("n")) {
      incomingData.trim();
      Serial.println("Received: " + incomingData);
      if (incomingData.indexOf("LED ON") >= 0) {
        digitalWrite(LED, HIGH);
        Serial.println("LED turned ON");
      } else if (incomingData.indexOf("LED OFF") >= 0) {
        digitalWrite(LED, LOW);
        Serial.println("LED turned OFF");
      }
      incomingData = "";
    }
  }
}

Send “LED ON” or “LED OFF” as an SMS to the SIM in the module and the Arduino will respond accordingly. You can extend this to control relays, read sensor values on demand, or trigger alerts.

Adafruit FONA 808 GSM GPS

Adafruit FONA 808 – Mini Cellular GSM + GPS Breakout

Combines GSM/GPRS and GPS in one compact breakout board. Perfect for vehicle tracking, field asset monitoring, or any project needing both SMS alerts and location data.

View on Zbotic

DIY GSM GPRS M590E Module

DIY GSM/GPRS M590E Module Kit

An affordable alternative to SIM900A with similar AT command interface. Great for DIY SMS alert systems, remote monitoring, and GPRS data connectivity projects.

View on Zbotic

Practical Project Ideas

The ability to send SMS from Arduino opens up a whole world of useful, real-life projects for India:

  1. Home security alert: PIR motion sensor + SIM900A sends an SMS to your phone whenever motion is detected in your house while you are away.
  2. Water tank overflow alert: A float switch at the top of the overhead tank sends “Tank Full! Turn off pump” as an SMS when the water level is critical.
  3. Temperature alert for server room/cold storage: An LM35 or DHT22 sensor sends an SMS if temperature crosses a threshold — critical for medicine storage in Indian pharmacies.
  4. SMS-controlled relay: Control irrigation pumps or street lights remotely by sending an SMS command from your phone.
  5. Vehicle GPS tracker with SMS: Combine SIM900A with a GPS module — send “LOCATION” as an SMS and receive back GPS coordinates as a Google Maps link.
  6. Gas leak detector: MQ-2 gas sensor + SIM900A alerts family members via SMS when LPG or CNG gas levels are dangerous — highly relevant for Indian kitchens.
GPS NEO-6M Module

GPS NEO-6M Satellite Positioning Module for Arduino

Pair this NEO-6M GPS module with SIM900A to build a complete vehicle tracker that sends SMS location updates. Works indoors with the included ceramic patch antenna.

View on Zbotic

Frequently Asked Questions

Does SIM900A work with Jio SIM in India?

No. Jio is a VoLTE (4G LTE voice) only network — it has no 2G (GSM) network. The SIM900A is a 2G GSM module and cannot connect to Jio at all. Use Airtel, Vi (Vodafone-Idea), or BSNL SIM cards which maintain active 2G networks for IoT and machine-to-machine use.

Why does SIM900A keep resetting or not respond?

The most common cause is inadequate power supply. The SIM900A draws up to 2A in short bursts during GSM transmission. If your power supply cannot deliver this current, the module resets. Use a dedicated power supply capable of at least 2A at 4.0V and add a 1000µF capacitor directly across the module’s VCC and GND pins.

Why does AT+CMGS return ERROR?

Check these in order: (1) Did you set text mode with AT+CMGF=1? (2) Is AT+CREG? returning 0,1 (registered on network)? (3) Is the phone number in full international format (+91XXXXXXXXXX)? (4) Is the SIM card properly inserted and not PIN-locked? Run AT+CPIN? to check — it should return READY.

Can I use SIM900A to make phone calls?

Yes. Use ATD+919876543210; to dial a number and ATH to hang up. The module has audio codec support, but you need to connect a microphone and speaker to the module’s MIC and SPK pins for voice calls. SMS-based projects are far more common in maker applications.

Can SIM900A send data over GPRS to the internet?

Yes. The SIM900A supports GPRS Class 10 data at up to 85.6 kbps. You can post data to HTTP endpoints using AT+HTTPINIT, AT+HTTPPARA, and AT+HTTPACTION commands. This is suitable for sending sensor data to platforms like ThingSpeak or a custom cloud server at very low intervals.

Build Your Cellular IoT Project Today

Zbotic stocks GSM modules, GPS trackers, antennas, and complete Arduino project kits at the best prices in India. Get everything you need for your SMS alert or GPRS data project, delivered fast.

Shop GSM & Communication Modules

Tags: Arduino SMS, GSM Arduino tutorial, IoT alert SMS, send SMS Arduino, SIM900A GSM module
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
LM2596 vs XL4016: Step-Down Bu...
blog lm2596 vs xl4016 step down buck converter comparison 597389
blog nrf52840 vs esp32 ble 5 0 module comparison for wearables 597392
nRF52840 vs ESP32: BLE 5.0 Mod...

Related posts

Svg%3E
Read more

ESP-NOW: Direct ESP32-to-ESP32 Communication Without WiFi

April 1, 2026 0
ESP-NOW ESP32 communication is a game-changing protocol developed by Espressif that enables direct peer-to-peer wireless communication between ESP32 boards without... Continue reading
Svg%3E
Read more

SDR Getting Started: HackRF and RTL-SDR Projects India

April 1, 2026 0
Software Defined Radio (SDR) lets you explore the electromagnetic spectrum using your computer, replacing expensive hardware radios with affordable USB... Continue reading
Svg%3E
Read more

Zigbee vs WiFi vs BLE: Choosing the Right Wireless Protocol for IoT

April 1, 2026 0
Choosing between Zigbee vs WiFi vs BLE for your IoT project is one of the most important design decisions you... Continue reading
Svg%3E
Read more

RFID Module Guide: RC522, PN532, and Long-Range UHF Options

April 1, 2026 0
The RFID module RC522 Arduino combination is the starting point for thousands of access control, attendance, and inventory tracking projects... Continue reading
Svg%3E
Read more

RS485 Modbus Communication: Industrial Sensors with Arduino

April 1, 2026 0
RS485 Modbus Arduino interfacing opens the door to industrial-grade sensor communication. Unlike hobbyist I2C or SPI sensors, RS485 Modbus sensors... Continue reading

Add comment Cancel reply

Your email address will not be published. Required fields are marked

Facebook Twitter Instagram Pinterest Linkedin Youtube

Get the latest deals and more.

Download on Google Play Download on the App Store

Call us: 020 69134444 / 1800 209 0998

Monday - Saturday 09:30 AM - 06:00 PM
For Technical Supports Email: [email protected]
For Sales / Enquiries Email: [email protected]

  • My Account

    • Cart

    • Wishlist

    • Checkout

    • My Orders

    • Track Order

    • My Account

  • Information

    • FAQs

    • Blogs

    • Career

    • About Us

    • Contact Us

    • Payment Options

  • Policies

    • Privacy Policy

    • Terms & Conditions

    • GST Input Tax Credit

    • Shipping Return Policy

    • E-Waste Collection Points

    • Our Sitemap

© Zbotic.in is registered trademark of Moxie Supply Pvt Ltd – All Rights Reserved
Login
Use Phone Number
Use Email Address
Not a member yet? Register Now
Reset Password
Use Phone Number
Use Email Address
Register
Already a member? Login Now