1) Anda boleh dapatkan module SIM900A di sini.

>> Dapatkan Sim900 GSM Module Di Sini <<

2) Di bawah adalah label untuk pin pin di atas modul SIM900A. Beri perhatian pada pin 5V transmit dan 5V receive. Kita akan gunakan pin pin ini untuk dihubungkan pada arduino.

3) Di bawah adalah connection di antara arduino dan module SIM900A.

Arduino RX –> Sim900 TX
Arduino TX –> Sim900 RX

Status LED (fast blink) –> SIM Card tidak dapat disambungkan pada network
Status LED (heart beat blink) –> SIM Card berjaya disambungkan pada network

4) Selepas selesai membuat connection (pastikan anda menggunakan adapter 9V atau 12V), masukkan kad SIM anda. Pastikan kad SIM anda membunya baki kredit dan masih aktif. Code arduino adalah seperti di bawah.

/*

  Note: this code is a demo for how to using gsm shield to send sms message
  
  Replace the following items in the code:
  1.Phone number, don't forget add the country code

*/

int debug = 0;  // 1=disableDebugMode , 0=enableDebugMode

#include <SoftwareSerial.h>
#include <String.h>

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

void setup()
{
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
  gsmSerial.begin(19200);  //Connect to SIM900  
  Serial.begin(9600);    //Connect to computer 
  delay(10000); //10s

  powerOn();
  sendTextMessage();
  Serial.println("Done, sms should be sent to the number written in the code.");
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);  
}

void loop()
{

}
void powerOn()
{
    uint8_t answer=0;
    
    while(1)
    {    
      answer = sendATcommand("AT", "OK", 2000);          // checks if the module is started
      if( debug == 0 )  Serial.println();
      if (answer == 0);
      else  break;
    }
    if( debug == 0 )  Serial.println("Succesful ON");
}

void sendTextMessage()
{
  gsmSerial.print("AT+CMGF=1\r");    //Because we want to send the SMS in text mode
  delay(500);
  gsmSerial.println("AT + CMGS = \"+60194339489\"");//send sms message, be careful need to add a country code before the cellphone number
  delay(500);
  gsmSerial.println("A test message!");//the content of the message
  delay(500);
  gsmSerial.println((char)26);//the ASCII code of the ctrl+z is 26
  delay(500);
}

int8_t sendATcommand(char* ATcommand, char* expected_answer, unsigned int timeout)
{
    uint8_t x=0,  answer=0;
    char response[100];
    unsigned long previous;
    memset(response, '\0', 100);
    delay(500);              
    
    while( gsmSerial.available() > 0) gsmSerial.read();    // Clean the input buffer
    gsmSerial.println(ATcommand);    // Send the AT command 
    if( debug == 0 )  Serial.println(ATcommand); 
    
    x = 0;
    previous = millis();
    // this loop waits for the answer
    do
    {
        // if there are data in the UART input buffer, reads it and checks for the asnwer
        if(gsmSerial.available() != 0)
        {    
            response[x] = gsmSerial.read();
            if( debug == 0 )  Serial.write(response[x]); 
            x++;
            // check if the desired answer is in the response of the module
            if (strstr(response, expected_answer) != NULL)    
            {
                answer = 1;
                if( debug == 0 )  Serial.println(); 
                for( int count = 0; count < x ; count++)
                {
                   if( debug == 0 )  Serial.write(response[count]); 
                }
            }
        }
        // Waits for the asnwer with time out
    }while((answer == 0) && ((millis() - previous) < timeout));    
    return answer;
}

Di dalam code, tukar nombor telefon kepada nombor telefon penerima mesej.

5) Muat naik code. Selepas selesai muat naik code, buka serial monitor.

6) Pastikan baud rate ditetapkan pada 9600 baud. Kalau tiada apa apa masalah, sms akan dihantar pada nombor yang telah di set kan seperti dalam code. Kalau sms tidak diterima, cuba tekan butang reset di atas Arduino.

7) SMS berjaya dihantar.

LEAVE A REPLY

Please enter your comment!
Please enter your name here