Oleh Muhammad Ilyasaa dalam Tutorial Arduino
Tahap Kesukaran : Baru Mula Belajar

>> Pengenalan <<

Modul GSM SIM900A direka menggunakan modul SIM900A dari SIMCOM dan sesuai digunakan bersama sama dengan Arduino. Modul GSM ini membolehkan pengguna untuk berkomunikasi menggunakan rangkaian telefon bimbit GSM. Modul ini membolehkan anda untuk menggunakan fungsi khidmat pesanan ringkas atau SMS melalui komunikasi UART dengan menghantar AT Command. Dalam tutorial ini, kita akan belajar cara menggunakan Modul GSM SIM900A dengan menggunakan papan Arduino uno. Dengan fungsi komunikasi UART yang terdapat pada modul GSM ini, kita akan dapat menyambung modul GSM kepada papan Arduino Uno dengan hanya menggunakan dua pin iaitu pin SoftwareSerial TX dan pin SoftwareSerial RX.

>> Komponen Apa yang anda perlukan <<

Untuk tutorial ini, anda perlukan :

>> JOM KITA MULAKAN TUTORIAL <<

Ambil modul GSM anda dan letakkannya dihadapan anda. Secara kasarnya, modul GSM anda adalah seperti gambar di atas. Mungkin sesetengah modul GSM mempunyai warna header yang lain atau warna pemegang kad SIM yang berlainan, abaikan perkara tersebut kerana ianya hanya sekadar perbezaan warna asalkan modul GSM yang digunakan adalah masih jenis SIM900A.

Gambar di atas menunjukkan label pin pin di atas modul GSM SIM900A yang boleh kita manfaatkan. Beri perhatian pada pin 5V transmit dan 5V receive, pin ini adalah pin yang mempunyai fungsi komunikasi UART. Kita akan gunakan pin pin ini untuk dihubungkan pada papan Arduino Uno.

>> Litar sambungan <<

Gambar di atas adalah litar sambungan di antara papan Arduino Uno dan modul GSM SIM900A, lengkapkan litar di atas. Pin 7 di papan Arduino Uno yang berfungsi sebagai SoftwareSerial RX dihubungkan pada pin 5V Transmit di papan modul GSM. Pin 8 di Arduino Uno yang berfungsi sebagai SoftwareSerial TX dihubungkan pada pin 5V Receive di papan modul GSM.

Selepas selesai membuat sambungan litar, masukkan kad SIM anda. Pastikan kad SIM anda mempunyai baki kredit dan masih aktif. Jika kad SIM anda tidak aktif atau tiada kredit, modul GSM tidak akan berjaya membuat penghantaran SMS. Kemudian, sambungkan bekalan kuasa luar 9V ke papan Arduino Uno. Keseluruhan litar akan mula hidup apabila bekalan kuasa dihidupkan, perhatikan Status LED pada modul GSM anda. Untuk modul ini, Status LED akan berkelip kelip dengan dua jenis corak yang dipanggil sebagai fast blink dan heart beat blink.

Jika Status LED berkelip secara fast blink, ini menandakan kad SIM tidak dapat disambungkan pada rangkaian GSM. Ini akan menyebabkan modul GSM gagal untuk menghantar SMS. Antara penyelesaian yang boleh dilakukan bagi masalah ini adalah dengan mengeluarkan kad SIM, menggosok bahagian emas kad SIM dan memasukkan kembali kad SIM pada tempatnya. Jika Status LED berkelip secara heart beat blink pula, ini menandakan kad SIM telah berjaya disambungkan pada rangkaian GSM bagi membolehkan modul GSM menghantar mesej.

>> Kod arduino <<

/* Programmer : Muhammad Ilyasaa Bin Abdul Rahman
 * More info at https://www.nadieleczone.com.my
 */

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;
}

Masukkan kod di atas ke perisian Arduino IDE anda dan tukar nombor telefon kepada nombor telefon penerima mesej. Kod arduino di atas akan menghantar SMS kepada nombor yang tertera di dalam kod Arduino.

Muat naik kod di atas ke papan Arduino Uno. Selepas berjaya memuat naik ke papan Arduino Uno, buka serial monitor pada perisian Arduino IDE.

Selepas membuka serial monitor, pastikan baud rate ditetapkan pada 9600 baud. Kalau tiada apa apa masalah, serial monitor anda akan memaparkan mesej seperti di bawah dan SMS akan dihantar kepada nombor yang telah dimasukkan ke dalam kod Arduino sebentar tadi. Jika SMS tidak diterima, cuba tekan butang reset di atas papan Arduino Uno.

>> SMS berjaya dihantar <<

>> Tahniah, anda hebat <<

Anda telah berjaya menyelesaikan tutorial modul GSM SIM900A dan kini anda sudah berjaya menggunakan modul GSM SIM900A dengan Arduino Uno.

Teruskan ke tahap yang lebih mencabar >> 9 Sensor Gas Membentuk Sistem Pengesan Kebocoran Gas Arduino

TINGGALKAN JAWAPAN BALAS ANDA

Sila masukkan ulasan anda!
Sila masukkan nama anda di sini