

The GSM SIM 900A is a versatile GSM/GPRS module designed for communication over mobile networks. It supports a wide range of communication protocols, including SMS, voice calls, and GPRS for internet connectivity. This module is widely used in IoT applications, remote monitoring systems, home automation, and other projects requiring wireless communication. Its compact size and reliable performance make it a popular choice for developers and engineers.








Below are the key technical details of the GSM SIM 900A module:
| Parameter | Specification |
|---|---|
| Operating Voltage | 3.2V - 4.8V (Typical: 4.2V) |
| Operating Current | Idle: ~20mA, Active: ~200mA, Peak: ~2A |
| Frequency Bands | Dual-band GSM 900/1800 MHz |
| Communication Protocols | GSM, GPRS (Class 10) |
| Baud Rate | Configurable (Default: 9600 bps) |
| SIM Card Support | 1.8V and 3V SIM cards |
| Operating Temperature | -40°C to +85°C |
| Dimensions | 24mm x 24mm x 3mm |
The GSM SIM 900A module typically has the following pin configuration:
| Pin Name | Description |
|---|---|
| VCC | Power supply input (3.2V - 4.8V) |
| GND | Ground |
| TXD | Transmit data (UART communication) |
| RXD | Receive data (UART communication) |
| DTR | Data Terminal Ready (used for sleep mode control) |
| RST | Reset pin (active low) |
| MIC+ | Microphone input positive |
| MIC- | Microphone input negative |
| SPK+ | Speaker output positive |
| SPK- | Speaker output negative |
| NET | Network status indicator (blinking LED connection) |
Below is an example of how to send an SMS using the GSM SIM 900A module and Arduino UNO:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial gsm(10, 11); // RX = Pin 10, TX = Pin 11
void setup() {
// Initialize serial communication
Serial.begin(9600); // For debugging with PC
gsm.begin(9600); // For communication with GSM module
Serial.println("Initializing GSM module...");
delay(1000);
// Send AT command to check communication
gsm.println("AT");
delay(1000);
if (gsm.available()) {
Serial.println("GSM module is ready.");
} else {
Serial.println("Failed to communicate with GSM module.");
}
// Send SMS
sendSMS("+1234567890", "Hello from GSM SIM 900A!");
}
void loop() {
// Nothing to do in the loop
}
void sendSMS(String phoneNumber, String message) {
gsm.println("AT+CMGF=1"); // Set SMS mode to text
delay(1000);
gsm.print("AT+CMGS=\""); // Command to send SMS
gsm.print(phoneNumber); // Recipient's phone number
gsm.println("\"");
delay(1000);
gsm.print(message); // SMS content
delay(1000);
gsm.write(26); // ASCII code for CTRL+Z to send SMS
delay(5000);
Serial.println("SMS sent successfully!");
}
+1234567890 with the recipient's phone number.Module Not Responding to AT Commands:
Frequent Resets or Unstable Operation:
No Network Connection:
SMS Not Sending:
Q: Can the GSM SIM 900A module be used for internet connectivity?
A: Yes, the module supports GPRS for internet connectivity. You can use AT commands like AT+SAPBR and AT+HTTP to establish a GPRS connection and perform HTTP requests.
Q: Does the module support 4G networks?
A: No, the GSM SIM 900A is a 2G module and supports GSM 900/1800 MHz frequency bands.
Q: How can I reduce power consumption?
A: Use the DTR pin to enable sleep mode when the module is idle. This significantly reduces power consumption.
Q: Can I use the module with a 5V microcontroller?
A: Yes, but you need a logic level converter to interface the 5V microcontroller with the module's 3.3V UART pins.