

The SIM900A GSM is a versatile GSM/GPRS module designed for communication over mobile networks. Manufactured by Ardino with the part ID "UNO," this module supports a wide range of communication protocols, including SMS, voice calls, and GPRS for internet connectivity. It is widely used in IoT applications, remote monitoring systems, and embedded projects requiring wireless communication.








The SIM900A GSM module is designed to operate efficiently in embedded systems. Below are its key technical details:
The SIM900A GSM module has a standard pinout for easy integration into circuits. Below is the pin configuration:
| Pin Name | Pin Number | Description |
|---|---|---|
| VCC | 1 | Power supply input (3.2V to 4.8V) |
| GND | 2 | Ground |
| TXD | 3 | UART Transmit pin (connect to RX of microcontroller) |
| RXD | 4 | UART Receive pin (connect to TX of microcontroller) |
| DTR | 5 | Data Terminal Ready (used for sleep mode control) |
| RST | 6 | Reset pin (active low) |
| SIM_VDD | 7 | SIM card power supply |
| SIM_DATA | 8 | SIM card data line |
| SIM_CLK | 9 | SIM card clock line |
| SIM_RST | 10 | SIM card reset line |
| NETLIGHT | 11 | Network status indicator (LED output) |
| PWRKEY | 12 | Power on/off control (active low) |
The SIM900A GSM module is straightforward to use in embedded systems. Below are the steps and best practices for integrating it into your project.
Power Supply:
UART Communication:
Powering On:
SIM Card:
Antenna:
Below is an example code to send an SMS using the SIM900A GSM module with an Arduino UNO:
#include <SoftwareSerial.h>
// Define RX and TX pins for SoftwareSerial
SoftwareSerial SIM900A(7, 8); // RX = Pin 7, TX = Pin 8
void setup() {
// Initialize serial communication with the SIM900A module
SIM900A.begin(9600); // Default baud rate for SIM900A
Serial.begin(9600); // Serial monitor for debugging
// Wait for the module to initialize
delay(1000);
Serial.println("Initializing SIM900A...");
// Send AT command to check communication
SIM900A.println("AT");
delay(1000);
if (SIM900A.available()) {
Serial.println("SIM900A is ready!");
} else {
Serial.println("Failed to communicate with SIM900A.");
}
// Send an SMS
sendSMS("+1234567890", "Hello from SIM900A!");
}
void loop() {
// Nothing to do in the loop
}
void sendSMS(String phoneNumber, String message) {
// Set SMS mode to text
SIM900A.println("AT+CMGF=1");
delay(1000);
// Specify the recipient's phone number
SIM900A.print("AT+CMGS=\"");
SIM900A.print(phoneNumber);
SIM900A.println("\"");
delay(1000);
// Send the message
SIM900A.print(message);
delay(1000);
// End the message with Ctrl+Z (ASCII 26)
SIM900A.write(26);
delay(5000);
Serial.println("SMS sent successfully!");
}
Module Not Responding to AT Commands:
No Network Connection:
SMS Not Sending:
Module Restarts During Operation:
Q: Can the SIM900A work with 5V microcontrollers like Arduino UNO?
A: Yes, but you need to use level shifters or voltage dividers for the UART pins, as the SIM900A operates at 3.3V logic levels.
Q: Does the SIM900A support 4G networks?
A: No, the SIM900A only supports GSM 900/1800 MHz bands and GPRS for data communication.
Q: How can I check the signal strength?
A: Use the AT command AT+CSQ. The module will return a signal strength value (e.g., +CSQ: 20,0).
Q: Can I use the SIM900A for GPS tracking?
A: The SIM900A does not have built-in GPS functionality, but it can be paired with a GPS module for tracking applications.